|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
00001 /* 00002 Copyright (C) 2010 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 __exactTestN_h 00022 #define __exactTestN_h 1 00023 00024 #ifdef __cplusplus 00025 extern "C" 00026 { 00027 #endif 00028 00029 /* 00030 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 00031 ! exactTestN is a C implementation of the parabolic solution in 00032 ! Bodvardsson (1955), treated here as a manufactured exact solution to 00033 ! a steady-state SSA flow problem, including the mass continuity equation. 00034 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 00035 */ 00036 00037 int params_exactN(double *H0, double *L0, double *xc, 00038 double *a, double *Hela, double *k, 00039 double *H_xc, double *T_xc); 00040 /* outputs: H0 = dome thickness (m) 00041 L0 = full flow-line length from dome to margin where H->0 (m) 00042 xc = in Bueler interpretation, the location of the calving front (m) 00043 a = surface mass balance lapse rate, with elevation (s-1) 00044 Hela = elevation of equilibrium line (m) 00045 k = coefficient for sliding 00046 H_xc = thickness at calving front 00047 T_xc = vertically-integrated longitudinal stress at calving front */ 00048 00049 int exactN(double x, double *H, double *hx, double *u, double *M, double *B, double *beta); 00050 /* input : x (m; 0.0 <= x <= L0) 00051 00052 output : H = H(x) (m; ice thickness) 00053 hx = h_x(x) (; surface slope) 00054 u = u(x) (m s-1; ice horizontal velocity) 00055 M = M(x) (m s-1; surface mass balance) 00056 B = B(x) (Pa s^(1/3); ice hardness) 00057 beta = beta(x) (Pa s m-1; linear sliding coefficient) 00058 00059 Assumes n = 3. 00060 00061 In Bueler interpretation, M(x) and A(x) are constructed so that the 00062 solution in Bodvardsson (1955) can be thought of as solving mass continuity 00063 and SSA stress balance simultaneously: 00064 00065 M(x) - (u H)_x = 0 00066 00067 ( 2 H B(x) |u_x|^((1/n)-1) u_x )_x - beta(x) u = rho g H h_x 00068 00069 Here H = H(x) is ice thickness and u = u(x) is ice velocity. Also 00070 h(x) = H(x), up to a constant the user may choose, because the bed is flat. 00071 Following Bodvardsson, here is the equilibrium line altitude, surface 00072 mass balance, and the sliding coefficient: 00073 00074 Hela = H0 / 1.5 00075 M(x) = a (h(x) - Hela) 00076 beta(x) = k rho g H(x) 00077 00078 The boundary conditions are 00079 00080 H(0) = H0 00081 00082 and 00083 00084 T(xc) = 0.5 (1 - rho/rhow) rho g H(xc)^2 00085 00086 where T(x) is the vertically-integrated viscous stress, 00087 00088 T(x) = 2 H(x) B(x) |u_x|^((1/n)-1) u_x. 00089 00090 But B(x) is chosen so that this quantity is constant: T(x) = T0. 00091 00092 The boundary condition at x = xc implies that the calving front is 00093 exactly at the location where the ice sheet reaches flotation. 00094 00095 return value = 00096 0 if successful 00097 1 if x < 0 00098 2 if x > L0 00099 00100 */ 00101 00102 #ifdef __cplusplus 00103 } 00104 #endif 00105 00106 #endif /* __exactTestN_h */ 00107
1.7.3