PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
exactTestM.h
Go to the documentation of this file.
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 
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 
struct TestMParameters exactM(double r, double EPS_ABS, double EPS_REL, int ode_method)
Definition: exactTestM.c:176