43 integer(i4b),
intent(in) :: i, j
44 real(dp),
intent(in) :: z_sl
46 real(dp),
intent(out) :: q_bm_floating
48 real(dp) :: lon_d, lat_d, tmb, phi_par
49 real(dp) :: toc, omega, alpha, draft0, draft
50 real(dp) :: h_w_now, q_bm_scaling_factor
52 real(dp),
parameter :: c_sw = 3974.0_dp, &
56 real(dp),
parameter :: euler = 2.718281828459045_dp
58 phi_par = rho_sw*c_sw*g_t/(rho*l)
60 lon_d = lambda(j,i) *pi_180_inv
61 lat_d = phi(j,i) *pi_180_inv
63 lon_d = modulo(lon_d+180.0_dp, 360.0_dp)-180.0_dp
67 #if (defined(ANT)) /* Antarctic ice sheet */
71 if ((lon_d>=-10.0_dp).and.(lon_d<60.0_dp))
then
80 else if ((lon_d>=60.0_dp).and.(lon_d<80.0_dp))
then
89 else if ((lon_d>=80.0_dp).and.(lon_d<130.0_dp))
then
99 else if ( ((lon_d>=130.0_dp).and.(lon_d<159.0_dp)) &
101 ((lon_d>=159.0_dp).and.(lon_d<170.0_dp) &
102 .and.(lat_d>=-72.0_dp)) )
then
105 n_sector(j,i) = 4_i2b
112 else if ( (lon_d>=159.0_dp) &
116 ((lon_d>=-140.0_dp).and.(lon_d<-120.0_dp) &
117 .and.(lat_d<-77.0_dp)) )
then
119 n_sector(j,i) = 5_i2b
126 else if ( ((lon_d>=-140.0_dp).and.(lon_d<-120.0_dp) &
127 .and.(lat_d>=-77.0_dp)) &
129 ((lon_d>=-120.0_dp).and.(lon_d<-90.0_dp)) )
then
131 n_sector(j,i) = 6_i2b
138 else if ( ((lon_d>=-90.0_dp).and.(lon_d<-66.0_dp) &
139 .and.(lat_d>=-74.0_dp)) )
then
141 n_sector(j,i) = 7_i2b
150 n_sector(j,i) = 8_i2b
161 if (maske(j,i)==2_i2b)
then
163 h_w_now = max((z_sl-zl(j,i)), 0.0_dp)
164 else if (maske(j,i)==3_i2b)
then
165 draft = max((z_sl -zb(j,i)), 0.0_dp)
166 h_w_now = max((zb(j,i)-zl(j,i)), 0.0_dp)
168 write(6, fmt=
'(a)')
' sub_ice_shelf_melting_param:'
169 write(6, fmt=
'(a)')
' Routine should not be called for maske(j,i) < 2!'
173 tmb = -beta_sw*draft - delta_tm_sw
177 if (h_w_0 > eps)
then
178 q_bm_scaling_factor = tanh(euler*h_w_now/h_w_0)
180 q_bm_scaling_factor = 1.0_dp
184 q_bm_scaling_factor = 1.0_dp
187 q_bm_floating = q_bm_scaling_factor &
188 *phi_par*omega*(toc-tmb)*(draft/draft0)**alpha
190 #else /* not Antarctic ice sheet */
192 write(6, fmt=
'(a)')
' sub_ice_shelf_melting_param:'
193 write(6, fmt=
'(a)')
' Parameterisation only defined for Antarctica!'
Declarations of kind types for SICOPOLIS.
Declarations of global variables for SICOPOLIS (for the ANT domain).
subroutine sub_ice_shelf_melting_param(z_sl, i, j, Q_bm_floating)
Sub-ice-shelf melting parameterisation for Antarctica.
Declarations of global variables for SICOPOLIS.