|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
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
1.7.3