PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
exactTestN.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2010, 2014, 2016, 2023 Ed Bueler
3 
4  This file is part of PISM.
5 
6  PISM is free software; you can redistribute it and/or modify it under the
7  terms of the GNU General Public License as published by the Free Software
8  Foundation; either version 3 of the License, or (at your option) any later
9  version.
10 
11  PISM is distributed in the hope that it will be useful, but WITHOUT ANY
12  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13  FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
14  details.
15 
16  You should have received a copy of the GNU General Public License
17  along with PISM; if not, write to the Free Software
18  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20 
21 #ifndef __exactTestN_h
22 #define __exactTestN_h 1
23 
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28 
29 /*
30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31 ! exactTestN is a C implementation of the parabolic solution in
32 ! Bodvardsson (1955), treated here as a manufactured exact solution to
33 ! a steady-state SSA flow problem, including the mass continuity equation.
34 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
35 */
36 
38  double H0; /* = dome thickness (m) */
39  double L0; /* = full flow-line length from dome to margin where H->0 (m) */
40  double xc; /* = in Bueler interpretation, the location of the calving front (m) */
41  double a; /* = surface mass balance lapse rate, with elevation (s-1) */
42  double H_ela; /* = elevation of equilibrium line (m) */
43  double k; /* = coefficient for sliding */
44  double H_xc; /* = thickness at calving front */
45  double T_xc; /* = vertically-integrated longitudinal stress at calving front */
46 };
47 
48 struct TestNConstants exactNConstants(void);
49 
52  double H; /* (m; ice thickness) */
53  double h_x; /* (; surface slope) */
54  double u; /* (m s-1; ice horizontal velocity) */
55  double M; /* (m s-1; surface mass balance) */
56  double B; /* (Pa s^(1/3); ice hardness) */
57  double beta; /* (Pa s m-1; linear sliding coefficient) */
58 };
59 
60 struct TestNParameters exactN(double x);
61  /* input : x (m; 0.0 <= x <= L0)
62 
63  Assumes n = 3.
64 
65  In Bueler interpretation, M(x) and A(x) are constructed so that the
66  solution in Bodvardsson (1955) can be thought of as solving mass continuity
67  and SSA stress balance simultaneously:
68 
69  M(x) - (u H)_x = 0
70 
71  (2 H B(x) |u_x|^((1/n)-1) u_x)_x - beta(x) u = rho g H h_x
72 
73  Here H = H(x) is ice thickness and u = u(x) is ice velocity. Also
74  h(x) = H(x), up to a constant the user may choose, because the bed is flat.
75  Following Bodvardsson, here is the equilibrium line altitude, surface
76  mass balance, and the sliding coefficient:
77 
78  Hela = H0 / 1.5
79  M(x) = a (h(x) - Hela)
80  beta(x) = k rho g H(x)
81 
82  The boundary conditions are
83 
84  H(0) = H0
85 
86  and
87 
88  T(xc) = 0.5 (1 - rho/rhow) rho g H(xc)^2
89 
90  where T(x) is the vertically-integrated viscous stress,
91 
92  T(x) = 2 H(x) B(x) |u_x|^((1/n)-1) u_x.
93 
94  But B(x) is chosen so that this quantity is constant: T(x) = T0.
95 
96  The boundary condition at x = xc implies that the calving front is
97  exactly at the location where the ice sheet reaches flotation.
98 
99  return value =
100  0 if successful
101  1 if x < 0
102  2 if x > L0
103 
104  */
105 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #endif /* __exactTestN_h */
111 
struct TestNParameters exactN(double x)
Definition: exactTestN.c:57
struct TestNConstants exactNConstants(void)
Definition: exactTestN.c:30
double H_ela
Definition: exactTestN.h:42