46 #if (INITMIP_CONST_SMB==1) /* SMB held constant at its initial distribution */ 47 real(dp),
dimension(0:JMAX,0:IMAX),
save :: accum_save, evap_save, runoff_save
59 subroutine boundary(time, dtime, dxi, deta, &
60 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
62 #if defined(ALLOW_OPENAD) /* OpenAD */ 63 use ctrl_m, only: myceiling, myfloor
73 && (marine_ice_formation==2) \
74 && (marine_ice_calving==9))
87 real(dp),
intent(in) :: time, dtime, dxi, deta
89 real(dp),
intent(out) :: delta_ts, glac_index, dzsl_dtau, z_mar
90 real(dp),
intent(inout) :: z_sl
98 integer(i4b) :: i, j, n
99 integer(i4b) :: i_gr, i_kl
100 integer(i4b) :: nrec_temp_precip
101 integer(i4b),
save :: nrec_temp_precip_save = -1
103 real(dp) :: z_sl_min, t1, t2, t3, t4, t5, t6
104 real(dp) :: year_sec_inv, time_in_years
105 real(dp) :: time_gr, time_kl
106 real(dp) :: z_sle_present, z_sle_help
108 real(dp),
dimension(0:JMAX,0:IMAX,0:12) :: precip
109 real(dp),
dimension(0:JMAX,0:IMAX,12) :: temp_mm
110 real(dp),
dimension(0:JMAX,0:IMAX) :: temp_ma, temp_ampl
111 real(dp),
dimension(0:JMAX,0:IMAX) :: temp_ma_anom, temp_mj_anom, precip_ma_anom
112 real(dp),
dimension(0:IMAX,0:JMAX),
save :: temp_ma_anom_tra, temp_mj_anom_tra, &
117 real(dp),
dimension(12) :: temp_mm_help
118 real(dp) :: temp_jja_help
119 real(dp) :: theta_ma, theta_ma_offset, c_ma, kappa_ma, gamma_ma, &
120 theta_mj, theta_mj_offset, c_mj, kappa_mj, gamma_mj
121 real(dp) :: sine_factor
122 real(dp) :: gamma_p, zs_thresh, &
123 temp_rain, temp_snow, &
124 inv_delta_temp_rain_snow, coeff(0:5), inv_sqrt2_s_stat, &
125 precip_fact, frac_solid
126 real(dp) :: s_stat, &
127 phi_sep, temp_lt, temp_ht, inv_delta_temp_ht_lt, &
128 beta1_lt, beta1_ht, beta2_lt, beta2_ht, &
129 beta1, beta2, pmax, mu, lambda_lti, temp_lti
130 logical,
dimension(0:JMAX,0:IMAX) :: check_point
131 logical,
save :: firstcall = .true.
136 integer(i4b) :: nc3cor(3)
138 integer(i4b) :: nc3cnt(3)
142 real(dp),
parameter :: &
143 inv_twelve = 1.0_dp/12.0_dp, one_third = 1.0_dp/3.0_dp
145 character(len=64),
parameter :: thisroutine =
'boundary' 147 #if defined(ALLOW_OPENAD) /* OpenAD */ 148 integer(i4b) :: i_time_in_years
152 year_sec_inv = 1.0_dp/year_sec
153 time_in_years = time*year_sec_inv
172 delta_ts = sine_amplit &
173 *cos(2.0_dp*
pi*time_in_years/sine_period) &
184 #if !defined(ALLOW_OPENAD) /* Normal */ 185 i_kl = floor((time_in_years &
188 call myfloor((time_in_years &
190 #endif /* Normal vs. OpenAD */ 193 #if !defined(ALLOW_OPENAD) /* Normal */ 194 i_gr = ceiling((time_in_years &
197 call myceiling(((time_in_years &
199 #endif /* Normal vs. OpenAD */ 202 if (i_kl == i_gr)
then 213 *(time-time_kl)/(time_gr-time_kl)
222 delta_ts = delta_ts * grip_temp_fact
233 #if !defined(ALLOW_OPENAD)/* Normal */ 234 i_kl = floor((time_in_years &
237 call myfloor(((time_in_years &
239 #endif /* Normal vs. OpenAD */ 242 #if !defined(ALLOW_OPENAD)/* Normal */ 243 i_gr = ceiling((time_in_years &
246 call myceiling(((time_in_years &
248 #endif /* Normal vs. OpenAD */ 251 if (i_kl == i_gr)
then 262 *(time-time_kl)/(time_gr-time_kl)
274 #elif (TSURFACE==6 && ACCSURFACE==6) 285 if ( nrec_temp_precip < 0 )
then 286 errormsg =
' >>> boundary: nrec_temp_precip < 0, not allowed!' 290 //
'nrec_temp_precip > ndata_temp_precip, not allowed!' 294 if ( nrec_temp_precip /= nrec_temp_precip_save )
then 298 nc3cor(3) = nrec_temp_precip + 1
306 start=nc3cor, count=nc3cnt), thisroutine )
311 start=nc3cor, count=nc3cnt), thisroutine )
316 start=nc3cor, count=nc3cnt), thisroutine )
320 temp_ma_anom = transpose(temp_ma_anom_tra)
321 temp_mj_anom = transpose(temp_mj_anom_tra)
322 precip_ma_anom = transpose(precip_ma_anom_tra) &
323 *(1.0e-03_dp*year_sec_inv)*(
rho_w/
rho)
326 nrec_temp_precip_save = nrec_temp_precip
342 if (time_in_years <
real(glann_time_min,
dp)) then
344 else if (time_in_years <
real(glann_time_max,
dp)) then
346 #if !defined(ALLOW_OPENAD) /* Normal */ 347 i_kl = floor((time_in_years &
348 -
real(glann_time_min,
dp))/
real(glann_time_stp,
dp))
351 i_gr = ceiling((time_in_years &
352 -
real(glann_time_min,
dp))/
real(glann_time_stp,
dp))
353 i_gr = min(i_gr, ndata_glann)
355 call myfloor(((time_in_years &
356 -
real(glann_time_min,
dp))/
real(glann_time_stp,
dp)), i_kl)
359 call myceiling(((time_in_years &
360 -
real(glann_time_min,
dp))/
real(glann_time_stp,
dp)), i_gr)
361 i_gr = min(i_gr, ndata_glann)
362 #endif /* Normal vs. OpenAD */ 364 if (i_kl == i_gr)
then 370 time_kl = (glann_time_min + i_kl*glann_time_stp) *year_sec
371 time_gr = (glann_time_min + i_gr*glann_time_stp) *year_sec
374 +(dt_glann_climber(i_gr)-dt_glann_climber(i_kl)) &
375 *(time-time_kl)/(time_gr-time_kl)
381 dt_glann = dt_glann_climber(ndata_glann)
397 t1 = -250000.0_dp *year_sec
398 t2 = -140000.0_dp *year_sec
399 t3 = -125000.0_dp *year_sec
400 t4 = -21000.0_dp *year_sec
401 t5 = -8000.0_dp *year_sec
402 t6 = 0.0_dp *year_sec
406 else if (time < t2)
then 407 z_sl = z_sl_min*(time-t1)/(t2-t1)
408 else if (time < t3)
then 409 z_sl = -z_sl_min*(time-t3)/(t3-t2)
410 else if (time < t4)
then 411 z_sl = z_sl_min*(time-t3)/(t4-t3)
412 else if (time < t5)
then 413 z_sl = -z_sl_min*(time-t5)/(t5-t4)
414 else if (time < t6)
then 428 #if !defined(ALLOW_OPENAD) /* Normal */ 429 i_kl = floor((time_in_years &
433 i_gr = ceiling((time_in_years &
437 call myfloor(((time_in_years &
441 call myceiling(((time_in_years &
444 #endif /* Normal vs. OpenAD */ 446 if (i_kl == i_gr)
then 457 *(time-time_kl)/(time_gr-time_kl)
470 if ( z_sl_old > -999999.9_dp )
then 471 dzsl_dtau = (z_sl-z_sl_old)/dtime
480 #if (MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3) 482 #elif (MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5) 483 z_mar = fact_z_mar*z_sl
484 #elif (MARINE_ICE_CALVING==6 || MARINE_ICE_CALVING==7) 485 if (z_sl >= -80.0_dp)
then 488 z_mar = 10.25_dp*(z_sl+80.0_dp)-200.0_dp
490 z_mar = fact_z_mar*z_mar
502 check_point(j,i) = .false.
508 if (
maske(j,i) >= 2_i1b)
then 509 check_point(j ,i ) = .true.
510 check_point(j ,i+1) = .true.
511 check_point(j ,i-1) = .true.
512 check_point(j+1,i ) = .true.
513 check_point(j-1,i ) = .true.
520 if (check_point(j,i))
then 530 if (check_point(j,i))
then 538 #if (TEMP_PRESENT_PARA==1) /* Parameterization by Ritz et al. (1997) */ 540 #if (defined(TEMP_PRESENT_OFFSET)) 541 theta_ma_offset = temp_present_offset
542 theta_mj_offset = temp_present_offset
544 theta_ma_offset = 0.0_dp
545 theta_mj_offset = 0.0_dp
548 theta_ma = 49.13_dp + theta_ma_offset
549 gamma_ma = -7.992e-03_dp
553 theta_mj = 30.38_dp + theta_mj_offset
554 gamma_mj = -6.277e-03_dp
558 #elif (TEMP_PRESENT_PARA==2) /* Parameterization by Fausto et al. (2009) */ 560 #if (defined(TEMP_PRESENT_OFFSET)) 561 theta_ma_offset = temp_present_offset
562 theta_mj_offset = temp_present_offset
564 theta_ma_offset = 0.0_dp
565 theta_mj_offset = 0.0_dp
568 theta_ma = 41.83_dp + theta_ma_offset
569 gamma_ma = -6.309e-03_dp
571 kappa_ma = -0.0672_dp
573 theta_mj = 14.70_dp + theta_mj_offset
574 gamma_mj = -5.426e-03_dp
576 kappa_mj = -0.0518_dp
580 errormsg =
' >>> boundary: Parameter TEMP_PRESENT_PARA must be either 1 or 2!' 593 #if !defined(ALLOW_OPENAD) /* Normal */ 601 #endif /* Normal vs. OpenAD */ 608 #if !defined(ALLOW_OPENAD) /* Normal */ 616 #endif /* Normal vs. OpenAD */ 637 temp_ma(j,i) =
temp_ma_present(j,i) + temp_ma_anom_fact*temp_ma_anom(j,i)
638 temp_mm(j,i,7) =
temp_mj_present(j,i) + temp_mj_anom_fact*temp_mj_anom(j,i)
644 temp_ampl(j,i) = temp_mm(j,i,7) - temp_ma(j,i)
646 if (temp_ampl(j,i) <
eps)
then 657 sine_factor = sin((
real(n,
dp)-4.0_dp)*
pi/6.0_dp)
661 temp_mm(j,i,n) = temp_ma(j,i) + sine_factor*temp_ampl(j,i)
669 #if (INITMIP_CONST_SMB==1) /* SMB held constant at its initial distribution */ 675 gamma_p = gamma_p*1.0e-03_dp
677 zs_thresh = zs_thresh
681 #if (SOLID_PRECIP==1) /* Marsiat (1994) */ 688 inv_delta_temp_rain_snow = 1.0_dp/(temp_rain-temp_snow)
690 #elif (SOLID_PRECIP==2) /* Bales et al. (2009) */ 697 coeff(0) = 5.4714e-01_dp
698 coeff(1) = -9.1603e-02_dp
699 coeff(2) = -3.314e-03_dp
700 coeff(3) = 4.66e-04_dp
701 coeff(4) = 3.8e-05_dp
702 coeff(5) = 6.0e-07_dp
704 #elif (SOLID_PRECIP==3) /* Huybrechts and de Wolde (1999) */ 708 temp_snow = temp_rain
714 inv_sqrt2_s_stat = 1.0_dp/(sqrt(2.0_dp)*s_stat)
718 #if (ABLSURFACE==1 || ABLSURFACE==2) 727 inv_delta_temp_ht_lt = 1.0_dp/(temp_ht-temp_lt)
741 #elif (ABLSURFACE==3) 743 lambda_lti = lambda_lti *(0.001_dp*year_sec_inv)*(
rho_w/
rho)
753 #if (ABLSURFACE==1 || ABLSURFACE==2) 755 if (
phi(j,i) <= phi_sep)
then 762 if (temp_mm(j,i,7) >= temp_ht)
then 765 else if (temp_mm(j,i,7) <= temp_lt)
then 770 + (beta1_ht-beta1_lt) &
771 *inv_delta_temp_ht_lt*(temp_mm(j,i,7)-temp_lt)
773 + (beta2_lt-beta2_ht) &
774 *(inv_delta_temp_ht_lt*(temp_ht-temp_mm(j,i,7)))**3
791 #elif (ELEV_DESERT==1) 793 if (
zs_ref(j,i) < zs_thresh)
then 795 = exp(gamma_p*(max(
zs(j,i),zs_thresh)-zs_thresh))
798 = exp(gamma_p*(max(
zs(j,i),zs_thresh)-
zs_ref(j,i)))
802 errormsg =
' >>> boundary: Parameter ELEV_DESERT must be either 0 or 1!' 815 precip_fact = accfact
816 #elif (ACCSURFACE==2) 817 precip_fact = 1.0_dp + gamma_s*delta_ts
818 #elif (ACCSURFACE==3) 819 precip_fact = exp(gamma_s*delta_ts)
824 precip(j,i,0) = 0.0_dp
827 precip(j,i,n) = precip(j,i,n)*precip_fact
828 precip(j,i,0) = precip(j,i,0) + precip(j,i,n)*inv_twelve
832 #elif (ACCSURFACE==5) 834 precip(j,i,0) = 0.0_dp
838 #if (PRECIP_ANOM_INTERPOL==1) 841 #elif (PRECIP_ANOM_INTERPOL==2) 847 precip(j,i,0) = precip(j,i,0) + precip(j,i,n)*inv_twelve
851 #elif (ACCSURFACE==6) 855 precip(j,i,0) = 0.0_dp
859 + precip_anom_fact*precip_ma_anom(j,i)
862 precip(j,i,0) = precip(j,i,0) + precip(j,i,n)*inv_twelve
870 accum(j,i) = precip(j,i,0)
876 #if (SOLID_PRECIP==1) /* Marsiat (1994) */ 878 if (temp_mm(j,i,n) >= temp_rain)
then 880 else if (temp_mm(j,i,n) <= temp_snow)
then 883 frac_solid = (temp_rain-temp_mm(j,i,n))*inv_delta_temp_rain_snow
886 #elif (SOLID_PRECIP==2) /* Bales et al. (2009) */ 888 if (temp_mm(j,i,n) >= temp_rain)
then 890 else if (temp_mm(j,i,n) <= temp_snow)
then 893 frac_solid = coeff(0) + temp_mm(j,i,n) * ( coeff(1) &
894 + temp_mm(j,i,n) * ( coeff(2) &
895 + temp_mm(j,i,n) * ( coeff(3) &
896 + temp_mm(j,i,n) * ( coeff(4) &
897 + temp_mm(j,i,n) * coeff(5) ) ) ) )
901 #elif (SOLID_PRECIP==3) /* Huybrechts and de Wolde (1999) */ 903 #if !defined(ALLOW_OPENAD) /* Normal */ 904 frac_solid = 1.0_dp &
905 - 0.5_dp*erfc((temp_rain-temp_mm(j,i,n))*inv_sqrt2_s_stat)
907 call my_erfc((temp_rain-temp_mm(j,i,n))*inv_sqrt2_s_stat, temp_val)
908 frac_solid = 1.0_dp - 0.5_dp*temp_val
909 #endif /* Normal vs. OpenAD */ 926 #if (ABLSURFACE==1 || ABLSURFACE==2) 931 temp_mm_help(n) = temp_mm(j,i,n)
934 call pdd(temp_mm_help, s_stat,
et(j,i))
941 if ((beta1*
et(j,i)) <= (pmax*
snowfall(j,i)))
then 951 #elif (ABLSURFACE==2) 976 #elif (ABLSURFACE==3) 978 temp_jja_help = one_third*(temp_mm(j,i,6)+temp_mm(j,i,7)+temp_mm(j,i,8))
981 melt(j,i) = lambda_lti*max((temp_jja_help-temp_lti), 0.0_dp)
993 #if (INITMIP_CONST_SMB==1) /* SMB held constant at its initial distribution */ 1017 #if (defined(INITMIP_SMB_ANOM_FILE)) /* Correction for ISMIP InitMIP */ 1019 #if defined(ALLOW_OPENAD) /* OpenAD */ 1020 call myfloor(time_in_years, i_time_in_years)
1023 if ((time_in_years > 0.0_dp).and.(time_in_years <= 40.0_dp))
then 1024 #if !defined(ALLOW_OPENAD) /* Normal */ 1026 + 0.025_dp*floor(time_in_years) * smb_anom_initmip
1029 + 0.025_dp*(i_time_in_years) * smb_anom_initmip
1030 #endif /* Normal vs. OpenAD */ 1031 else if (time_in_years > 40.0_dp)
then 1044 #if !defined(ALLOW_OPENAD) /* Normal */ 1062 temp_s(j,i) = temp_ma(j,i)
1069 if (
temp_s(j,i) > -0.001_dp)
then 1075 #endif /* Normal vs. OpenAD */ 1082 && (marine_ice_formation==2) \
1083 && (marine_ice_calving==9))
1090 #if (DISC>0) /* Ice discharge parameterization */ 1097 if (firstcall) firstcall = .false.
real(dp), dimension(0:jmax, 0:imax) phi
phi(j,i): Geographic latitude of grid point (i,j)
real(dp) phi_sep_0
PHI_SEP_0: Separation latitude for the computation of the degree-day factors beta1 and beta2: Equator...
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
real(dp) beta2_ht_0
BETA2_HT_0: Degree-day factor for ice at high summer temperatures.
real(dp) beta1_ht_0
BETA1_HT_0: Degree-day factor for snow at high summer temperatures.
real(dp) rho_w
RHO_W: Density of pure water.
subroutine error(error_message)
Main routine of error_m: Writing of error messages and stopping execution.
integer(i4b) specmap_time_max
specmap_time_max: Maximum time of the data values for the sea level
real(dp) temp_precip_time_stp
temp_precip_time_stp: Time step of the surface-temperature and precipitation data ...
real(dp) mu_0
MU_0: Firn-warming correction.
real(dp), parameter eps
eps: Small number
real(dp) temp_precip_time_max
temp_precip_time_max: Maximum time of the surface-temperature and precipitation data ...
real(dp), dimension(0:jmax, 0:imax) calv_grounded
calv_grounded(j,i): Calving rate of grounded ice
real(dp), dimension(0:jmax, 0:imax) rainfall
rainfall(j,i): Rainfall rate at the ice surface
Several mathematical tools used by SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) temp_mj_present
temp_mj_present(j,i): Present-day mean summer (northern hemisphere: July, southern hemisphere: Januar...
real(dp), dimension(0:jmax, 0:imax) lambda
lambda(j,i): Geographic longitude of grid point (i,j)
integer(i4b) specmap_time_min
specmap_time_min: Minimum time of the data values for the sea level
Computation of the positive degree days (PDD) with statistical temperature fluctuations; based on sem...
integer(i1b), dimension(0:jmax, 0:imax) maske_neu
maske_neu(j,i): New value of maske computed during an integration step
real(dp), dimension(0:jmax, 0:imax) as_perp
as_perp(j,i): Accumulation-ablation function at the ice surface (SMB)
real(dp), dimension(:), allocatable glacial_index
glacial_index(n): Data values for the glacial index
real(dp) s_stat_0
S_STAT_0: Standard deviation of the air termperature for the degree-day model.
real(dp) beta2_lt_0
BETA2_LT_0: Degree-day factor for ice at low summer temperatures.
real(dp), dimension(0:jmax, 0:imax) runoff
runoff(j,i): Runoff rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) melt_star
melt_star(j,i): Superimposed ice formation rate at the ice surface
real(dp), dimension(0:jmax, 0:imax) smb_corr_in
smb_corr_in(j,i): Prescribed SMB correction
real(dp), dimension(0:jmax, 0:imax) zs_ref
zs_ref(j,i): Reference elevation for precip_present, temp_ma_present and temp_mj_present ...
real(dp), dimension(0:jmax, 0:imax) snowfall
snowfall(j,i): Snowfall rate at the ice surface
real(dp), parameter pi_180_inv
pi_180_inv: 180 divided by pi (-> rad to deg)
real(dp), dimension(0:jmax, 0:imax) temp_s
temp_s(j,i): Ice surface temperature
real(dp), dimension(0:jmax, 0:imax) melt
melt(j,i): Melting rate at the ice surface
integer(i4b) grip_time_max
grip_time_max: Maximum time of the data values for the surface temperature anomaly ...
Declarations of global variables for SICOPOLIS (for the ANT domain).
integer(i4b) ndata_gi
ndata_gi: Number of data values for the glacial index
integer(i4b) ndata_grip
ndata_grip: Number of data values for the surface temperature anomaly
real(dp), dimension(0:jmax, 0:imax) et
ET(j,i): Temperature excess at the ice surface (positive degree days divided by time) ...
real(dp), dimension(0:jmax, 0:imax) calv_uw_ice
real(dp), parameter pi_180
pi_180: pi divided by 180 (-> deg to rad)
Calving of "underwater ice".
real(dp), dimension(0:jmax, 0:imax), public dis_perp
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) zs
zs(j,i): Coordinate z of the surface topography
real(dp) pmax_0
PMAX_0: Saturation factor for the formation of superimposed ice.
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!) ...
integer(i1b) 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...
integer(i4b) gi_time_min
gi_time_min: Minimum time of the data values for the glacial index
real(dp) temp_precip_time_min
temp_precip_time_min: Minimum time of the surface-temperature and precipitation data ...
real(dp), dimension(:), allocatable specmap_zsl
specmap_zsl(n): Data values for the sea level
integer(i4b) gi_time_stp
gi_time_stp: Time step of the data values for the glacial index
Writing of error messages and stopping execution.
integer(i4b) ndata_temp_precip
ndata_temp_precip: Number of surface-temperature and precipitation data
real(dp), dimension(0:jmax, 0:imax) temp_ma_present
temp_ma_present(j,i): Present-day mean annual surface temperature
integer(i4b) gi_time_max
gi_time_max: Maximum time of the data values for the glacial index
real(dp) beta1_lt_0
BETA1_LT_0: Degree-day factor for snow at low summer temperatures.
real(dp), dimension(0:jmax, 0:imax, 12) gamma_precip_lgm_anom
gamma_precip_lgm_anom(j,i,n): negative natural logarithm of precip_lgm_anom(j,i,n) ...
real(dp), public dt_glann
real(dp), dimension(0:jmax, 0:imax) temp_mj_lgm_anom
temp_mj_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean summer (northern hemisphere...
integer(i1b), 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 ...
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), dimension(0:jmax, 0:imax) temp_ma_lgm_anom
temp_ma_lgm_anom(j,i): LGM anomaly (difference LGM - present) of the mean annual surface temperature ...
subroutine check(status, ch_calling_routine)
NetCDF error capturing.
subroutine, public discharge(dxi, deta)
Ice discharge parameterization main formula, controler (general). [Compute ice discharge via a parame...
real(dp), parameter pi
pi: Constant pi
integer(i4b) ncid_temp_precip
ncid_temp_precip: ID of the NetCDF file containing the surface-temperature and precipitation data as ...
integer(i4b) grip_time_min
grip_time_min: Minimum time of the data values for the surface temperature anomaly ...
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 ...
subroutine, public pdd(temp_mm, s_stat, ET)
Main subroutine of pdd_m: Computation of the positive degree days (PDD) with statistical temperature ...
character(len=256) errormsg
errormsg: Error-message string
Ice discharge parameterization for the Greenland ice sheet.
real(dp) rho
RHO: Density of ice.
real(dp), dimension(0:jmax, 0:imax) smb_corr_prescribed
smb_corr_prescribed(j,i): Prescribed SMB correction
Update of the ice-land-ocean mask due to changes of the sea level.
integer, parameter dp
Double-precision reals.
real(dp), dimension(0:jmax, 0:imax, 12) precip_present
precip_present(j,i,n): Present-day mean monthly precipitation rate at the ice surface ...
real(dp), dimension(0:jmax, 0:imax, 12) precip_lgm_anom
precip_lgm_anom(j,i,n): LGM anomaly (ratio LGM/present) of the mean monthly precipitation rate at the...
Declarations of global variables for SICOPOLIS.
real(dp), dimension(:), allocatable griptemp
griptemp(n): Data values for the surface temperature anomaly