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