texactTestK.h - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
HTML git clone git://src.adamsgaard.dk/pism
DIR Log
DIR Files
DIR Refs
DIR LICENSE
---
texactTestK.h (2084B)
---
1 /*
2 Copyright (C) 2007-2011, 2016 Ed Bueler and Constantine Khroulev
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 __exactTestK_h
22 #define __exactTestK_h 1
23
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28
29 /*
30 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
31 ! This a C implementation of an exact solution to a time-dependent
32 ! pure conduction problem in a column of ice and bedrock in the preprint
33 !
34 ! Ed Bueler (2007). "An exact solution to the temperature
35 ! equation in a column of ice and bedrock", preprint arXiv:0710.1314
36 !
37 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
38 */
39
40 struct TestKParameters {
41 int error_code;
42 double T, F;
43 };
44
45 /* compute the exact solution TT = T(t,z); returns 0 for z >= -1000 m but returns
46 1 for z < -1000 m because eigenfunction is not valid there;
47 normally use bedrockIsIce_p = 0 (false); also returns heat flux
48 FF = - k \partial T / \partial z
49 where k = k_ice for z>0 and k=k_bed for z<=0; note the z=0 value is bedrock */
50 struct TestKParameters exactK(double t, double z, int bedrock_is_ice);
51
52 /* find the alpha_k values for the eigenfunction expansion in the exact
53 solution; these values are found by rigorous (bracketed) numerical
54 solution of a one-variable root-finding problem */
55 int print_alpha_k(const int N);
56
57 #ifdef __cplusplus
58 }
59 #endif
60
61
62 #endif /* __exactTestK_h */
63