54 subroutine boundary(time, dtime, dxi, deta, &
55 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
58 && (marine_ice_formation==2) \
59 && (marine_ice_calving==9))
67 real(dp),
intent(in) :: time, dtime, dxi, deta
69 real(dp),
intent(out) :: delta_ts, glac_index, dzsl_dtau, z_mar
70 real(dp),
intent(inout) :: z_sl
79 integer(i4b) :: i_gr, i_kl
81 real(dp) :: z_sl_min, t1, t2, t3, t4, t5, t6
82 real(dp) :: time_gr, time_kl
83 real(dp),
dimension(0:JMAX,0:IMAX) :: dist
85 logical,
dimension(0:JMAX,0:IMAX) :: check_point
86 logical,
save :: firstcall = .true.
105 delta_ts = sine_amplit &
106 *cos(2.0_dp*
pi*time/(sine_period*year_sec)) &
117 i_kl = floor(((time/year_sec) &
121 i_gr = ceiling(((time/year_sec) &
125 if (i_kl.eq.i_gr)
then 136 *(time-time_kl)/(time_gr-time_kl)
145 delta_ts = delta_ts * grip_temp_fact
164 t1 = -250000.0_dp *year_sec
165 t2 = -140000.0_dp *year_sec
166 t3 = -125000.0_dp *year_sec
167 t4 = -21000.0_dp *year_sec
168 t5 = -8000.0_dp *year_sec
169 t6 = 0.0_dp *year_sec
173 else if (time.lt.t2)
then 174 z_sl = z_sl_min*(time-t1)/(t2-t1)
175 else if (time.lt.t3)
then 176 z_sl = -z_sl_min*(time-t3)/(t3-t2)
177 else if (time.lt.t4)
then 178 z_sl = z_sl_min*(time-t3)/(t4-t3)
179 else if (time.lt.t5)
then 180 z_sl = -z_sl_min*(time-t5)/(t5-t4)
181 else if (time.lt.t6)
then 195 i_kl = floor(((time/year_sec) &
199 i_gr = ceiling(((time/year_sec) &
203 if (i_kl.eq.i_gr)
then 214 *(time-time_kl)/(time_gr-time_kl)
227 if ( z_sl_old > -999999.9_dp )
then 228 dzsl_dtau = (z_sl-z_sl_old)/dtime
237 #if (MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3) 239 #elif (MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5) 240 z_mar = fact_z_mar*z_sl
241 #elif (MARINE_ICE_CALVING==6 || MARINE_ICE_CALVING==7) 242 if (z_sl >= -80.0_dp)
then 245 z_mar = 10.25_dp*(z_sl+80.0_dp)-200.0_dp
247 z_mar = fact_z_mar*z_mar
259 check_point(j,i) = .false.
265 if (
maske(j,i).ge.2)
then 266 check_point(j ,i ) = .true.
267 check_point(j ,i+1) = .true.
268 check_point(j ,i-1) = .true.
269 check_point(j+1,i ) = .true.
270 check_point(j-1,i ) = .true.
277 if (check_point(j,i))
then 287 if (check_point(j,i))
then 328 && (marine_ice_formation==2) \
329 && (marine_ice_calving==9))
336 if (firstcall) firstcall = .false.
integer(i4b) grip_time_stp
grip_time_stp: Time step of the data values for the surface temperature anomaly
integer(i4b) ndata_specmap
ndata_specmap: Number of data values for the sea level
integer(i4b) specmap_time_max
specmap_time_max: Maximum time of the data values for the sea level
real(dp), dimension(0:jmax, 0:imax) calv_grounded
calv_grounded(j,i): Calving rate of grounded ice
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 ...
integer(i4b) specmap_time_min
specmap_time_min: Minimum time of the data values for the sea level
real(dp), dimension(0:jmax, 0:imax) as_perp
as_perp(j,i): Accumulation-ablation function at the ice surface (SMB)
real(dp), dimension(0:jmax, 0:imax) runoff
runoff(j,i): Runoff rate at the ice surface
integer(i2b) function, public mask_update_sea_level(z_sl, i, j)
Main function of mask_update_m: Update of the ice-land-ocean mask due to changes of the sea level...
real(dp), dimension(0:jmax, 0:imax) temp_s
temp_s(j,i): Ice surface temperature
integer(i4b) grip_time_max
grip_time_max: Maximum time of the data values for the surface temperature anomaly ...
real(dp) b_max
b_max: Maximum accumulation rate
Declarations of global variables for SICOPOLIS (for the ANT domain).
integer(i4b) ndata_grip
ndata_grip: Number of data values for the surface temperature anomaly
real(dp), dimension(0:jmax, 0:imax) calv_uw_ice
Calving of "underwater ice".
real(dp) b_min
b_min: Minimum accumulation rate
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) evap
evap(j,i): Evaporation rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) accum
accum(j,i): Accumulation rate at the ice surface (includes liquid precipitation = rainfall!) ...
real(dp), dimension(:), allocatable specmap_zsl
specmap_zsl(n): Data values for the sea level
real(dp), dimension(0:jmax, 0:imax) accum_present
accum_present(j,i): Present-day accumulation rate at the ice surface (for EISMINT, ISMIP HEINO and the north and south polar caps of Mars)
integer(i2b), dimension(0:jmax, 0:imax) maske_neu
maske_neu(j,i): New value of maske computed during an integration step
real(dp) s_t
s_t: Gradient of surface temperature change with horizontal distance
subroutine boundary(time, dtime, dxi, deta, delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
Main routine of boundary_m: Computation of the surface temperature (must be less than 0 deg C!) and o...
integer(i4b) specmap_time_stp
specmap_time_stp: Time step of the data values for the sea level
real(dp), parameter pi
pi: Constant pi
integer(i4b) grip_time_min
grip_time_min: Minimum time of the data values for the surface temperature anomaly ...
real(dp), dimension(0:jmax) eta
eta(j): Coordinate eta (= y) of grid point j
real(dp) temp_min
temp_min: Minimum surface temperature
real(dp), dimension(0:imax) xi
xi(i): Coordinate xi (= x) of grid point i
subroutine calving_underwater_ice(z_sl)
Main routine: Calving of "underwater ice".
Computation of the surface temperature (must be less than 0 deg C!) and of the accumulation-ablation ...
real(dp) rad
rad: Radius of the model domain
real(dp) y_hat
y_hat: Coordinate eta (= y) of the centre of the model domain
real(dp) x_hat
x_hat: Coordinate xi (= x) of the centre of the model domain
Update of the ice-land-ocean mask due to changes of the sea level.
integer, parameter dp
Double-precision reals.
Declarations of global variables for SICOPOLIS.
real(dp), dimension(:), allocatable griptemp
griptemp(n): Data values for the surface temperature anomaly