38 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
45 real(dp),
intent(in) :: time, dtime, dxi, deta
47 real(dp),
intent(out) :: delta_ts, glac_index, dzsl_dtau, z_mar
48 real(dp),
intent(inout) :: z_sl
56 integer(i4b) :: i_gr, i_kl
58 real(dp) :: z_sl_min, t1, t2, t3, t4, t5, t6
59 real(dp) :: time_gr, time_kl
60 real(dp),
dimension(0:JMAX,0:IMAX) :: dist
61 logical,
dimension(0:JMAX,0:IMAX) :: check_point
80 delta_ts = sine_amplit &
81 *cos(2.0_dp*pi*time/(sine_period*year_sec)) &
88 if (time/year_sec.lt.
real(grip_time_min,dp)) then
89 delta_ts = griptemp(0)
90 else if (time/year_sec.lt.
real(grip_time_max,dp)) then
92 i_kl = floor(((time/year_sec) &
93 -
real(grip_time_min,dp))/
real(grip_time_stp,dp))
96 i_gr = ceiling(((time/year_sec) &
97 -
real(grip_time_min,dp))/
real(grip_time_stp,dp))
98 i_gr = min(i_gr, ndata_grip)
100 if (i_kl.eq.i_gr)
then
102 delta_ts = griptemp(i_kl)
106 time_kl = (grip_time_min + i_kl*grip_time_stp) *year_sec
107 time_gr = (grip_time_min + i_gr*grip_time_stp) *year_sec
109 delta_ts = griptemp(i_kl) &
110 +(griptemp(i_gr)-griptemp(i_kl)) &
111 *(time-time_kl)/(time_gr-time_kl)
117 delta_ts = griptemp(ndata_grip)
120 delta_ts = delta_ts * grip_temp_fact
139 t1 = -250000.0_dp *year_sec
140 t2 = -140000.0_dp *year_sec
141 t3 = -125000.0_dp *year_sec
142 t4 = -21000.0_dp *year_sec
143 t5 = -8000.0_dp *year_sec
144 t6 = 0.0_dp *year_sec
148 else if (time.lt.t2)
then
149 z_sl = z_sl_min*(time-t1)/(t2-t1)
150 else if (time.lt.t3)
then
151 z_sl = -z_sl_min*(time-t3)/(t3-t2)
152 else if (time.lt.t4)
then
153 z_sl = z_sl_min*(time-t3)/(t4-t3)
154 else if (time.lt.t5)
then
155 z_sl = -z_sl_min*(time-t5)/(t5-t4)
156 else if (time.lt.t6)
then
166 if (time/year_sec.lt.
real(specmap_time_min,dp)) then
167 z_sl = specmap_zsl(0)
168 else if (time/year_sec.lt.
real(specmap_time_max,dp)) then
170 i_kl = floor(((time/year_sec) &
171 -
real(specmap_time_min,dp))/
real(specmap_time_stp,dp))
174 i_gr = ceiling(((time/year_sec) &
175 -
real(specmap_time_min,dp))/
real(specmap_time_stp,dp))
176 i_gr = min(i_gr, ndata_specmap)
178 if (i_kl.eq.i_gr)
then
180 z_sl = specmap_zsl(i_kl)
184 time_kl = (specmap_time_min + i_kl*specmap_time_stp) *year_sec
185 time_gr = (specmap_time_min + i_gr*specmap_time_stp) *year_sec
187 z_sl = specmap_zsl(i_kl) &
188 +(specmap_zsl(i_gr)-specmap_zsl(i_kl)) &
189 *(time-time_kl)/(time_gr-time_kl)
195 z_sl = specmap_zsl(ndata_specmap)
202 if ( z_sl_old > -999999.9_dp )
then
203 dzsl_dtau = (z_sl-z_sl_old)/dtime
212 #if ( MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3 )
214 #elif ( MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 )
215 z_mar = fact_z_mar*z_sl
216 #elif ( MARINE_ICE_CALVING==6 || MARINE_ICE_CALVING==7 )
217 if (z_sl >= -80.0_dp)
then
220 z_mar = 10.25_dp*(z_sl+80.0_dp)-200.0_dp
222 z_mar = fact_z_mar*z_mar
234 check_point(j,i) = .false.
240 if (maske(j,i).ge.2)
then
241 check_point(j ,i ) = .true.
242 check_point(j ,i+1) = .true.
243 check_point(j ,i-1) = .true.
244 check_point(j+1,i ) = .true.
245 check_point(j-1,i ) = .true.
252 if (check_point(j,i))
then
262 if (check_point(j,i))
then
263 maske(j,i) = maske_neu(j,i)
272 dist(j,i) = sqrt( (xi(i)-x_hat)**2 + (eta(j)-y_hat)**2 )
279 temp_s(j,i) = temp_min + s_t*dist(j,i)
280 temp_s(j,i) = temp_s(j,i) + delta_ts
282 if (temp_s(j,i).gt. -0.001_dp) temp_s(j,i) = -0.001_dp
285 accum_present(j,i) = b_max
286 accum(j,i) = accum_present(j,i)
288 as_perp(j,i) = s_b*(eld-dist(j,i))
289 if (as_perp(j,i).gt.accum(j,i)) as_perp(j,i) = accum(j,i)