PISM, A Parallel Ice Sheet Model stable 0.4.1779

src/verif/tests/exactTestM.h

Go to the documentation of this file.
00001 /*
00002    Copyright (C) 2008 Ed Bueler
00003   
00004    This file is part of PISM.
00005   
00006    PISM is free software; you can redistribute it and/or modify it under the
00007    terms of the GNU General Public License as published by the Free Software
00008    Foundation; either version 2 of the License, or (at your option) any later
00009    version.
00010   
00011    PISM is distributed in the hope that it will be useful, but WITHOUT ANY
00012    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
00013    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
00014    details.
00015   
00016    You should have received a copy of the GNU General Public License
00017    along with PISM; if not, write to the Free Software
00018    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00019 */
00020 
00021 #ifndef __exactTestM_h
00022 #define __exactTestM_h 1
00023 
00024 #ifdef __cplusplus
00025 extern "C"
00026 {
00027 #endif
00028 
00029 /*
00030 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00031 ! exactTestM is a C implementation of an isothermal "exact" solution
00032 ! to the diagnostic SSA flow problem for a constant thickness annular
00033 ! ice shelf, with calving front, attached to a grounded sheet and with
00034 ! Dirichlet (prescribed velocity) condition at the grounding line.  A
00035 ! first order ODE in the radial coordinate is solved numerically, as with
00036 ! test L, for example, so the solution is not exactly exact.
00037 !
00038 ! The velocity solution has
00039 !    u(r) = alpha(r) \hat r + w(r,z) \hat z
00040 ! alpha(r) is found for R_g=300km < r < R_c=600km.  For r < R_g, a smoothly
00041 ! decreasing to zero value is returned for alpha, while for r > R_c
00042 ! alpha(r)=0 is returned.
00043 !
00044 ! A supporting preprint is in preparation.
00045 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
00046 */
00047 
00048 int exactM(double r,
00049            double *alpha, double *Drr,
00050            const double EPS_ABS, const double EPS_REL, const int ode_method);
00051    /* input    : r                             (m;   r >= 0)
00052       output   : alpha(r)                      (m s^-1;  always positive)
00053                  Drr = alpha'(r)               (s^-1; radial strain rate)
00054       numerical: EPS_ABS                       (=1.0e-12 recommended)
00055                  EPS_REL                       (=0.0     recommended)
00056                  ode_method                    (=1       recommended; =Runge-Kutta-Cash-Karp)
00057 
00058       return value = GSL_SUCCESS = 0 if successful
00059    */
00060 
00061 #ifdef __cplusplus
00062 }
00063 #endif
00064 
00065 #endif  /* __exactTestM_h */
00066 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines