SICOPOLIS V5-dev  Revision 1173
calc_temp_melt_bas_m.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Module : c a l c _ t e m p _ m e l t _ b a s _ m
4 !
5 !> @file
6 !!
7 !! Computation of the melting and basal temperatures.
8 !!
9 !! @section Copyright
10 !!
11 !! Copyright 2009-2017 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 !> Computation of the melting and basal temperatures.
34 !<------------------------------------------------------------------------------
36 
37  use sico_types_m
39  use sico_vars_m
40 
41  implicit none
42 
43  private
44  public :: calc_temp_melt, calc_temp_bas
45 
46 contains
47 
48 !-------------------------------------------------------------------------------
49 !> Computation of the melting temperatures.
50 !<------------------------------------------------------------------------------
51  subroutine calc_temp_melt()
52 
53  implicit none
54  integer(i4b) :: i, j, kc, kt
55  real(dp), dimension(0:KCMAX) :: atm1
56  real(dp), dimension(0:KTMAX) :: atm2
57 
58 !-------- Term abbreviations --------
59 
60  atm1 = beta*(1.0_dp-eaz_c_quotient)
61  atm2 = beta*(1.0_dp-zeta_t)
62 
63 !-------- Compute the melting temperatures --------
64 
65  do i=0, imax
66  do j=0, jmax
67 
68  do kt=0, ktmax
69  temp_t_m(kt,j,i) = -(beta*h_c(j,i)+atm2(kt)*h_t(j,i))
70  end do
71 
72  do kc=0, kcmax
73  temp_c_m(kc,j,i) = -atm1(kc)*h_c(j,i)
74  end do
75 
76  end do
77  end do
78 
79  end subroutine calc_temp_melt
80 
81 !-------------------------------------------------------------------------------
82 !> Computation of the basal temperatures.
83 !<------------------------------------------------------------------------------
84  subroutine calc_temp_bas()
85 
86  implicit none
87  integer(i4b) :: i, j
88 
89 !-------- Computation of the basal temperatures --------
90 
91  do i=0, imax
92  do j=0, jmax
93 
94  if ( (maske(j,i) == 0).or.(maske(j,i) == 3) ) then
95  ! glaciated land or floating ice
96 
97  if (n_cts(j,i) == -1) then ! cold ice base
98 
99  temp_b(j,i) = temp_c(0,j,i)
100  temph_b(j,i) = temp_c(0,j,i) - temp_c_m(0,j,i)
101  ! relative to the pressure melting point
102 
103  else ! n_cts(j,i) == 0 or 1, temperate ice base
104 
105  temp_b(j,i) = temp_t_m(0,j,i)
106  temph_b(j,i) = 0.0_dp
107  ! relative to the pressure melting point
108 
109  end if
110 
111  else ! maske(j,i) == 1 or 2, ice-free land or sea
112 
113  temp_b(j,i) = temp_c(0,j,i)
114  temph_b(j,i) = temp_c(0,j,i) - temp_c_m(0,j,i)
115  ! relative to the pressure melting point
116 
117  end if
118 
119  end do
120  end do
121 
122  end subroutine calc_temp_bas
123 
124 !-------------------------------------------------------------------------------
125 
126 end module calc_temp_melt_bas_m
127 !
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c
temp_c(kc,j,i): Temperature in the upper (kc) ice domain
integer(i2b), dimension(0:jmax, 0:imax) n_cts
n_cts(j,i): Mask for thermal conditions. -1: cold ice base, 0: temperate ice base with cold ice above...
integer(i2b), dimension(0:jmax, 0:imax) maske
maske(j,i): Ice-land-ocean mask. 0: grounded ice, 1: ice-free land, 2: ocean, 3: floating ice ...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) temp_t_m
temp_t_m(kt,j,i): Melting temperature in the lower (kt) ice domain
Declarations of global variables for SICOPOLIS (for the ANT domain).
Definition: sico_vars_m.F90:35
real(dp), dimension(0:jmax, 0:imax) temp_b
temp_b(j,i): Basal temperature
subroutine, public calc_temp_melt()
Computation of the melting temperatures.
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) h_c
H_c(j,i): Thickness of ice in the upper (kc) domain (thickness of the cold-ice layer for POLY...
subroutine, public calc_temp_bas()
Computation of the basal temperatures.
Computation of the melting and basal temperatures.
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c_m
temp_c_m(kc,j,i): Melting temperature in the upper (kc) ice domain
real(dp), dimension(0:kcmax) eaz_c_quotient
eaz_c_quotient(kc): Abbreviation for (eaz_c(kc)-1.0)/(ea-1.0)
real(dp), dimension(0:jmax, 0:imax) temph_b
temph_b(j,i): Basal temperature relative to the pressure melting point
real(dp) beta
BETA: Clausius-Clapeyron gradient of ice.
real(dp), dimension(0:ktmax) zeta_t
zeta_t(kt): Sigma coordinate zeta_t of grid point kt
real(dp), dimension(0:jmax, 0:imax) h_t
H_t(j,i): Thickness of ice in the lower (kt) domain (thickness of the temperate layer for POLY...
Declarations of global variables for SICOPOLIS.