Loading [MathJax]/jax/output/HTML-CSS/config.js
PISM, A Parallel Ice Sheet Model 2.2.1-cd005eec8 committed by Constantine Khrulev on 2025-03-07
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
25extern "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
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
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