SICOPOLIS V3.0
 All Classes Files Functions Variables Macros
creep.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Function : c r e e p
4 !
5 !> @file
6 !!
7 !! Creep response function for ice.
8 !!
9 !! @section Copyright
10 !!
11 !! Copyright 2009-2013 Ralf Greve
12 !!
13 !! @section License
14 !!
15 !! This file is part of SICOPOLIS.
16 !!
17 !! SICOPOLIS is free software: you can redistribute it and/or modify
18 !! it under the terms of the GNU General Public License as published by
19 !! the Free Software Foundation, either version 3 of the License, or
20 !! (at your option) any later version.
21 !!
22 !! SICOPOLIS is distributed in the hope that it will be useful,
23 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
24 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 !! GNU General Public License for more details.
26 !!
27 !! You should have received a copy of the GNU General Public License
28 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
29 !<
30 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
31 
32 !-------------------------------------------------------------------------------
33 !> Creep response function for ice.
34 !<------------------------------------------------------------------------------
35 function creep(sigma_val)
36 
37 use sico_types
39 
40 implicit none
41 
42 real(dp) :: creep
43 real(dp), intent(in) :: sigma_val
44 
45 #if (FLOW_LAW==4)
46 real(dp), parameter :: sm_coeff_1 = 8.5112e-15_dp, & ! s^-1 Pa^-1
47  sm_coeff_2 = 8.1643e-25_dp, & ! s^-1 Pa^-3
48  sm_coeff_3 = 9.2594e-12_dp ! Pa^-2
49 #endif
50 
51 #if (FIN_VISC==1)
52 
53 #if (FLOW_LAW==1)
54 
55 creep = sigma_val*sigma_val
56 ! Glen's flow law (n=3)
57 
58 #elif (FLOW_LAW==2)
59 
60 creep = sigma_val**0.8_dp * gr_size**(-1.4_dp)
61 ! Goldsby-Kohlstedt flow law (n=1.8, d=1.4)
62 
63 #elif (FLOW_LAW==3)
64 
65 creep = sigma_val*sigma_val*sigma_val
66 ! Durham's flow law (n=4)
67 
68 #endif
69 
70 #elif (FIN_VISC==2)
71 
72 #if (FLOW_LAW==1)
73 
74 creep = sigma_val*sigma_val + sigma_res*sigma_res
75 ! Glen's flow (n=3) with additional finite viscosity
76 
77 #elif (FLOW_LAW==2)
78 
79 creep = (sigma_val**0.8_dp + sigma_res**0.8_dp) * gr_size**(-1.4_dp)
80 ! Goldsby-Kohlstedt flow law (n=1.8, d=1.4)
81 ! with additional finite viscosity
82 
83 #elif (FLOW_LAW==3)
84 
85 creep = sigma_val*sigma_val*sigma_val + sigma_res*sigma_res*sigma_res
86 ! Durham's flow law (n=4) with additional finite viscosity
87 
88 #endif
89 
90 #endif
91 
92 #if (FLOW_LAW==4)
93 
94 creep = sm_coeff_1 &
95  + sm_coeff_2 * (sigma_val*sigma_val) &
96  * (1.0_dp + sm_coeff_3 * (sigma_val*sigma_val))
97 ! Smith-Morland (polynomial) flow law, normalised to a dimensionless
98 ! rate factor with A(-10C)=1.
99 
100 #endif
101 
102 end function creep
103 !