SICOPOLIS V3.2
 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-2016 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 use sico_vars
40 
41 implicit none
42 
43 real(dp) :: creep
44 real(dp), intent(in) :: sigma_val
45 
46 #if (FLOW_LAW==4)
47 real(dp), parameter :: sm_coeff_1 = 8.5112e-15_dp, & ! s^-1 Pa^-1
48  sm_coeff_2 = 8.1643e-25_dp, & ! s^-1 Pa^-3
49  sm_coeff_3 = 9.2594e-12_dp ! Pa^-2
50 #endif
51 
52 #if (FIN_VISC==1)
53 
54 #if (FLOW_LAW==1)
55 
56 creep = sigma_val*sigma_val
57 ! Glen's flow law (n=3)
58 
59 #elif (FLOW_LAW==2)
60 
61 creep = sigma_val**0.8_dp * gr_size**(-1.4_dp)
62 ! Goldsby-Kohlstedt flow law (n=1.8, d=1.4)
63 
64 #elif (FLOW_LAW==3)
65 
66 creep = sigma_val*sigma_val*sigma_val
67 ! Durham's flow law (n=4)
68 
69 #endif
70 
71 #elif (FIN_VISC==2)
72 
73 #if (FLOW_LAW==1)
74 
75 creep = sigma_val*sigma_val + sigma_res*sigma_res
76 ! Glen's flow (n=3) with additional finite viscosity
77 
78 #elif (FLOW_LAW==2)
79 
80 creep = (sigma_val**0.8_dp + sigma_res**0.8_dp) * gr_size**(-1.4_dp)
81 ! Goldsby-Kohlstedt flow law (n=1.8, d=1.4)
82 ! with additional finite viscosity
83 
84 #elif (FLOW_LAW==3)
85 
86 creep = sigma_val*sigma_val*sigma_val + sigma_res*sigma_res*sigma_res
87 ! Durham's flow law (n=4) with additional finite viscosity
88 
89 #endif
90 
91 #endif
92 
93 #if (FLOW_LAW==4)
94 
95 creep = sm_coeff_1 &
96  + sm_coeff_2 * (sigma_val*sigma_val) &
97  * (1.0_dp + sm_coeff_3 * (sigma_val*sigma_val))
98 ! Smith-Morland (polynomial) flow law, normalised to a dimensionless
99 ! rate factor with A(-10C)=1.
100 
101 #endif
102 
103 end function creep
104 !
Declarations of kind types for SICOPOLIS.
Definition: sico_types.F90:35
Declarations of global variables for SICOPOLIS (for the ANT domain).
Definition: sico_vars.F90:35
Declarations of global variables for SICOPOLIS.
real(dp) function creep(sigma_val)
Creep response function for ice.
Definition: creep.F90:35