texactTestM.h - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
(HTM) git clone git://src.adamsgaard.dk/pism
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
texactTestM.h (2425B)
---
1 /*
2 Copyright (C) 2008, 2016 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 __exactTestM_h
22 #define __exactTestM_h 1
23
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28
29 /*
30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31 ! exactTestM is a C implementation of an isothermal "exact" solution
32 ! to the diagnostic SSA flow problem for a constant thickness annular
33 ! ice shelf, with calving front, attached to a grounded sheet and with
34 ! Dirichlet (prescribed velocity) condition at the grounding line. A
35 ! first order ODE in the radial coordinate is solved numerically, as with
36 ! test L, for example, so the solution is not exactly exact.
37 !
38 ! The velocity solution has
39 ! u(r) = alpha(r) \hat r + w(r,z) \hat z
40 ! alpha(r) is found for R_g=300km < r < R_c=600km. For r < R_g, a smoothly
41 ! decreasing to zero value is returned for alpha, while for r > R_c
42 ! alpha(r)=0 is returned.
43 !
44 ! A supporting preprint is in preparation.
45 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
46 */
47
48 struct TestMParameters {
49 int error_code; /* GSL_SUCCESS = 0 if successful */
50 double alpha; /* (m s^-1; always positive) */
51 double Drr; /* = alpha'(r) (s^-1; radial strain rate) */
52 };
53
54 struct TestMParameters exactM(double r,
55 double EPS_ABS, double EPS_REL, int ode_method);
56 /* input : r (m; r >= 0)
57 numerical: EPS_ABS (=1.0e-12 recommended)
58 EPS_REL (=0.0 recommended)
59 ode_method (=1 recommended; =Runge-Kutta-Cash-Karp)
60 */
61
62
63 #ifdef __cplusplus
64 }
65 #endif
66
67 #endif /* __exactTestM_h */
68