50 subroutine sico_init(delta_ts, glac_index, &
52 dtime, dtime_temp, dtime_wss, dtime_out, dtime_ser, &
53 time, time_init, time_end, time_output, &
54 dxi, deta, dzeta_c, dzeta_t, dzeta_r, &
55 z_sl, dzsl_dtau, z_mar, &
57 ndat2d, ndat3d, n_output, &
65 #if (WRITE_SER_FILE_STAKES>0) 83 integer(i4b),
intent(out) :: ii((imax+1)*(jmax+1)), &
84 jj((imax+1)*(jmax+1)), &
86 integer(i4b),
intent(out) :: ndat2d, ndat3d
87 integer(i4b),
intent(out) :: n_output
88 real(dp),
intent(out) :: delta_ts, glac_index
89 real(dp),
intent(out) :: mean_accum
90 real(dp),
intent(out) :: dtime, dtime_temp, dtime_wss, &
92 real(dp),
intent(out) :: time, time_init, time_end, time_output(100)
93 real(dp),
intent(out) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
94 real(dp),
intent(out) :: z_sl, dzsl_dtau, z_mar
95 character(len=100),
intent(out) :: runname
97 integer(i4b) :: i, j, kc, kt, kr, m, n, ir, jr
100 integer(i2b),
dimension(0:JMAX,0:IMAX) :: maske_ref
101 real(dp) :: dtime0, dtime_temp0, dtime_wss0, dtime_out0, dtime_ser0
102 real(dp) :: time_init0, time_end0, time_output0(100)
104 character(len=100) :: anfdatname
105 character(len=256) :: filename_with_path
106 character(len=256) :: shell_command
107 character :: ch_dummy
108 logical :: flag_init_output, flag_3d_output
110 character(len=64),
parameter :: fmt1 =
'(a)', &
115 character(len= 8) :: ch_imax
116 character(len=128) :: fmt4
118 write(ch_imax, fmt=
'(i8)') imax
119 write(fmt4, fmt=
'(a)')
'('//trim(adjustl(ch_imax))//
'(i1),i1)' 121 write(unit=6, fmt=
'(a)')
' ' 122 write(unit=6, fmt=
'(a)')
' -------- sico_init --------' 123 write(unit=6, fmt=
'(a)')
' ' 135 #elif (defined(EMTP2SGE)) 143 #elif (defined(NHEM)) 147 #elif (defined(SCAND)) 151 #elif (defined(TIBET)) 155 #elif (defined(NMARS)) 159 #elif (defined(SMARS)) 171 stop
' >>> sico_init: No valid domain specified!' 192 #if (CALCTHK==3 || CALCTHK==6 || MARGIN==3 || DYNAMICS==2) 193 call lis_initialize(ierr)
209 if ( trim(version) /= trim(sico_version) ) &
210 stop
' >>> sico_init: SICOPOLIS version not compatible with header file!' 214 #if (!defined(DYNAMICS)) 215 stop
' >>> sico_init: DYNAMICS not defined in the header file!' 218 #if (!defined(CALCMOD)) 219 stop
' >>> sico_init: CALCMOD not defined in the header file!' 222 #if (defined(ENTHMOD)) 223 write(6, fmt=
'(a)')
' >>> sico_init: ENTHMOD must not be defined any more.' 224 write(6, fmt=
'(a)')
' Please update your header file!' 231 #if (GRID==0 || GRID==1) 233 if (approx_equal(dx, 4.0_dp,
eps_sp_dp))
then 235 if ((imax /= 34).or.(jmax /= 33))
then 236 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 239 else if (approx_equal(dx, 2.0_dp,
eps_sp_dp))
then 241 if ((imax /= 68).or.(jmax /= 66))
then 242 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 245 else if (approx_equal(dx, 1.0_dp,
eps_sp_dp))
then 247 if ((imax /= 136).or.(jmax /= 132))
then 248 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 252 stop
' >>> sico_init: DX wrong!' 257 stop
' >>> sico_init: GRID==2 not allowed for this application!' 265 #if (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 268 write(6, fmt=
'(a)')
' >>> sico_init: For options CALCMOD==0, 2, 3 or -1,' 269 write(6, fmt=
'(a)')
' the separate kt domain is redundant.' 270 write(6, fmt=
'(a)')
' Therefore, consider setting KTMAX to 2.' 271 write(6, fmt=
'(a)')
' ' 280 #if (TSURFACE == 5 && ACCSURFACE != 5) 281 stop
' >>> sico_init: Options TSURFACE==5 and ACCSURFACE==5 must be used together!' 284 #if (TSURFACE != 5 && ACCSURFACE == 5) 285 stop
' >>> sico_init: Options TSURFACE==5 and ACCSURFACE==5 must be used together!' 292 stop
' >>> sico_init: Option ADV_HOR==1 (central differences) not defined!' 300 #if ((MARGIN==3 && DYNAMICS==1) || DYNAMICS==2) /* requires SSA or SStA */ 302 write(6, fmt=
'(a)')
' >>> sico_init: Distortion correction not implemented' 303 write(6, fmt=
'(a)')
' for the shallow shelf approximation (SSA)' 304 write(6, fmt=
'(a)')
' or the shelfy stream approximation (SStA)' 305 write(6, fmt=
'(a)')
' -> GRID==0 required!' 316 #elif (TSURFACE == 5) 325 dtime_temp0 = dtime_temp0
327 dtime_wss0 = dtime_wss0
332 dzeta_c = 1.0_dp/
real(kcmax,dp)
333 dzeta_t = 1.0_dp/
real(ktmax,dp)
334 dzeta_r = 1.0_dp/
real(krmax,dp)
343 if (deform >=
eps)
then 423 if ((i <= imax).and.(j <= jmax))
then 435 anfdatname = anfdatname
437 #if (defined(YEAR_ZERO)) 443 time_init0 = time_init0
444 time_end0 = time_end0
445 dtime_ser0 = dtime_ser0
447 #if (OUTPUT==1 || OUTPUT==3) 448 dtime_out0 = dtime_out0
451 #if (OUTPUT==2 || OUTPUT==3) 453 time_output0( 1) = time_out0_01
454 time_output0( 2) = time_out0_02
455 time_output0( 3) = time_out0_03
456 time_output0( 4) = time_out0_04
457 time_output0( 5) = time_out0_05
458 time_output0( 6) = time_out0_06
459 time_output0( 7) = time_out0_07
460 time_output0( 8) = time_out0_08
461 time_output0( 9) = time_out0_09
462 time_output0(10) = time_out0_10
463 time_output0(11) = time_out0_11
464 time_output0(12) = time_out0_12
465 time_output0(13) = time_out0_13
466 time_output0(14) = time_out0_14
467 time_output0(15) = time_out0_15
468 time_output0(16) = time_out0_16
469 time_output0(17) = time_out0_17
470 time_output0(18) = time_out0_18
471 time_output0(19) = time_out0_19
472 time_output0(20) = time_out0_20
477 shell_command =
'if [ ! -d' 478 shell_command = trim(shell_command)//
' '//outpath
479 shell_command = trim(shell_command)//
' '//
'] ; then mkdir' 480 shell_command = trim(shell_command)//
' '//outpath
481 shell_command = trim(shell_command)//
' '//
'; fi' 482 call system(trim(shell_command))
485 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.log' 487 open(10, iostat=ios, file=trim(filename_with_path), status=
'new')
489 if (ios /= 0) stop
' >>> sico_init: Error when opening the log file!' 491 write(10, fmt=trim(fmt1))
'Computational domain:' 493 write(10, fmt=trim(fmt1))
' ' 495 write(10, fmt=trim(fmt2a))
'GRID = ', grid
496 write(10, fmt=trim(fmt1))
' ' 498 write(10, fmt=trim(fmt2))
'imax =', imax
499 write(10, fmt=trim(fmt2))
'jmax =', jmax
500 write(10, fmt=trim(fmt2))
'kcmax =', kcmax
501 write(10, fmt=trim(fmt2))
'ktmax =', ktmax
502 write(10, fmt=trim(fmt2))
'krmax =', krmax
503 write(10, fmt=trim(fmt1))
' ' 505 write(10, fmt=trim(fmt3))
'a =',
aa 506 write(10, fmt=trim(fmt1))
' ' 508 #if (GRID==0 || GRID==1) 509 write(10, fmt=trim(fmt3))
'x0 =', x0
510 write(10, fmt=trim(fmt3))
'y0 =', y0
511 write(10, fmt=trim(fmt3))
'dx =', dx
513 stop
' >>> sico_init: GRID==2 not allowed for this application!' 515 write(10, fmt=trim(fmt1))
' ' 517 write(10, fmt=trim(fmt3))
'year_zero =',
year_zero 518 write(10, fmt=trim(fmt3))
'time_init =', time_init0
519 write(10, fmt=trim(fmt3))
'time_end =', time_end0
520 write(10, fmt=trim(fmt3))
'dtime =', dtime0
521 write(10, fmt=trim(fmt3))
'dtime_temp =', dtime_temp0
523 write(10, fmt=trim(fmt3))
'dtime_wss =', dtime_wss0
525 write(10, fmt=trim(fmt1))
' ' 527 write(10, fmt=trim(fmt2))
'ANF_DAT =', anf_dat
528 write(10, fmt=trim(fmt1))
'zs_present file = '//zs_present_file
530 #if (defined(ZB_PRESENT_FILE)) 531 write(10, fmt=trim(fmt1))
'zb_present file = '//zb_present_file
533 write(10, fmt=trim(fmt1))
'zl_present file = '//zl_present_file
535 write(10, fmt=trim(fmt1))
'zl0 file = '//zl0_file
536 write(10, fmt=trim(fmt1))
'mask_present file = '//mask_present_file
537 #if (ANF_DAT==1 && defined(TEMP_INIT)) 538 write(10, fmt=trim(fmt2))
'TEMP_INIT =', temp_init
541 write(10, fmt=trim(fmt1))
'Initial-value file = '//anfdatname
542 write(10, fmt=trim(fmt1))
'Path to initial-value file = '//anfdatpath
544 write(10, fmt=trim(fmt1))
' ' 546 write(10, fmt=trim(fmt1))
'Physical-parameter file = '//phys_para_file
547 write(10, fmt=trim(fmt1))
' ' 549 #if (CALCTHK==2 || CALCTHK==3 || CALCTHK==5 || CALCTHK==6) 550 write(10, fmt=trim(fmt3))
'ovi_weight =', ovi_weight
551 #if (CALCTHK==2 || CALCTHK==5) 552 write(10, fmt=trim(fmt3))
'omega_sor =', omega_sor
554 write(10, fmt=trim(fmt2a))
'iter_max_sor = ', iter_max_sor
557 write(10, fmt=trim(fmt1))
' ' 560 write(10, fmt=trim(fmt1))
'temp_mm_present file = '//temp_mm_present_file
562 write(10, fmt=trim(fmt3))
'delta_ts0 =', delta_ts0
563 write(10, fmt=trim(fmt1))
'temp_ma file = '//temp_ma_present_file
564 write(10, fmt=trim(fmt3))
'temp_ma fact = ', temp_ma_present_fact
566 write(10, fmt=trim(fmt3))
'sine_amplit =', sine_amplit
567 write(10, fmt=trim(fmt3))
'sine_period =', sine_period
569 write(10, fmt=trim(fmt1))
'GRIP file = '//grip_temp_file
570 write(10, fmt=trim(fmt3))
'grip_temp_fact =', grip_temp_fact
572 write(10, fmt=trim(fmt1))
'Glacial-index file = '//glac_ind_file
573 write(10, fmt=trim(fmt1))
'temp_mm_anom file = '//temp_mm_anom_file
574 write(10, fmt=trim(fmt3))
'temp_mm_anom fact = ', temp_mm_anom_fact
577 write(10, fmt=trim(fmt1))
'precip_mm_present file = '//precip_mm_present_file
579 write(10, fmt=trim(fmt3))
'accfact =', accfact
580 #elif (ACCSURFACE==2 || ACCSURFACE==3) 581 write(10, fmt=trim(fmt3))
'gamma_s =', gamma_s
582 #elif (ACCSURFACE==5) 583 write(10, fmt=trim(fmt1))
'precip_mm_anom file = '//precip_mm_anom_file
584 write(10, fmt=trim(fmt3))
'precip_mm_anom fact = ', precip_mm_anom_fact
586 #if (ACCSURFACE <= 3) 587 write(10, fmt=trim(fmt2))
'ELEV_DESERT =', elev_desert
588 #if (ELEV_DESERT == 1) 589 write(10, fmt=trim(fmt3))
'gamma_p =', gamma_p
590 write(10, fmt=trim(fmt3))
'zs_thresh =', zs_thresh
595 write(10, fmt=trim(fmt3))
'lambda_lti =', lambda_lti
596 write(10, fmt=trim(fmt3))
'temp_lti =', temp_lti
599 write(10, fmt=trim(fmt2a))
'SEA_LEVEL = ', sea_level
601 write(10, fmt=trim(fmt3))
'z_sl0 =', z_sl0
603 write(10, fmt=trim(fmt1))
'sea-level file = '//sea_level_file
605 write(10, fmt=trim(fmt1))
' ' 608 #if (MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3) 609 write(10, fmt=trim(fmt3))
'z_mar =', z_mar
610 write(10, fmt=trim(fmt1))
' ' 611 #elif (MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 \ 612 || marine_ice_calving==6 || marine_ice_calving==7)
613 write(10, fmt=trim(fmt3))
'fact_z_mar =', fact_z_mar
614 write(10, fmt=trim(fmt1))
' ' 615 #elif (MARINE_ICE_FORMATION==2 && MARINE_ICE_CALVING==9) 616 write(10, fmt=trim(fmt3))
'calv_uw_coeff =', calv_uw_coeff
617 write(10, fmt=trim(fmt3))
'r1_calv_uw =', r1_calv_uw
618 write(10, fmt=trim(fmt3))
'r2_calv_uw =', r2_calv_uw
619 write(10, fmt=trim(fmt1))
' ' 622 #if (ICE_SHELF_CALVING==2) 623 write(10, fmt=trim(fmt3))
'H_calv =', h_calv
624 write(10, fmt=trim(fmt1))
' ' 628 #if (defined(BASAL_HYDROLOGY)) 629 write(10, fmt=trim(fmt2a))
'BASAL_HYDROLOGY = ', basal_hydrology
631 write(10, fmt=trim(fmt2a))
'SLIDE_LAW = ', slide_law
632 write(10, fmt=trim(fmt3))
'c_slide =',
c_slide 633 write(10, fmt=trim(fmt3))
'smw_coeff =', smw_coeff
634 write(10, fmt=trim(fmt3))
'gamma_slide =', gamma_slide
635 write(10, fmt=trim(fmt2a))
'p_weert = ',
p_weert 636 write(10, fmt=trim(fmt2a))
'q_weert = ',
q_weert 637 #if (defined(TIME_RAMP_UP_SLIDE)) 638 write(10, fmt=trim(fmt3))
'time_ramp_up_slide =', time_ramp_up_slide
641 write(10, fmt=trim(fmt3))
'red_pres_limit_fact =', red_pres_limit_fact
643 #if (BASAL_HYDROLOGY==1) 644 write(10, fmt=trim(fmt3))
'c_Hw_slide =', c_hw_slide
645 write(10, fmt=trim(fmt3))
'Hw0_slide =', hw0_slide
647 write(10, fmt=trim(fmt2a))
'ICE_STREAM = ', ice_stream
649 write(10, fmt=trim(fmt1))
'Sediment-mask file = '//mask_sedi_file
650 write(10, fmt=trim(fmt1))
' ' 652 write(10, fmt=trim(fmt3))
'c_slide_sedi =', c_slide_sedi
653 write(10, fmt=trim(fmt3))
'smw_coeff_sedi =', smw_coeff_sedi
654 write(10, fmt=trim(fmt3))
'gamma_slide_sedi =', gamma_slide_sedi
655 write(10, fmt=trim(fmt2a))
'p_weert_sedi = ', p_weert_sedi
656 write(10, fmt=trim(fmt2a))
'q_weert_sedi = ', q_weert_sedi
657 write(10, fmt=trim(fmt1))
' ' 660 write(10, fmt=trim(fmt2a))
'Q_GEO_MOD = ', q_geo_mod
662 write(10, fmt=trim(fmt3))
'q_geo =',
q_geo 664 write(10, fmt=trim(fmt1))
'q_geo file = '//q_geo_file
666 write(10, fmt=trim(fmt1))
' ' 668 #if (defined(MARINE_ICE_BASAL_MELTING)) 669 write(10, fmt=trim(fmt2))
'MARINE_ICE_BASAL_MELTING =', marine_ice_basal_melting
670 #if (MARINE_ICE_BASAL_MELTING==2 || MARINE_ICE_BASAL_MELTING==3) 671 write(10, fmt=trim(fmt3))
'qbm_marine =', qbm_marine
673 write(10, fmt=trim(fmt1))
' ' 677 write(10, fmt=trim(fmt2))
'FLOATING_ICE_BASAL_MELTING =', floating_ice_basal_melting
678 #if (FLOATING_ICE_BASAL_MELTING<=3) 679 write(10, fmt=trim(fmt3))
'qbm_float_1 =', qbm_float_1
680 write(10, fmt=trim(fmt3))
'qbm_float_2 =', qbm_float_2
682 write(10, fmt=trim(fmt3))
'qbm_float_3 =', qbm_float_3
683 write(10, fmt=trim(fmt3))
'z_abyss =', z_abyss
684 #if (FLOATING_ICE_BASAL_MELTING==4) 685 write(10, fmt=trim(fmt3))
'temp_ocean =', temp_ocean
686 write(10, fmt=trim(fmt3))
'Omega_qbm =', omega_qbm
687 write(10, fmt=trim(fmt3))
'alpha_qbm =', alpha_qbm
689 #if (FLOATING_ICE_BASAL_MELTING==4 || FLOATING_ICE_BASAL_MELTING==5) 690 write(10, fmt=trim(fmt3))
'H_w_0 =', h_w_0
692 write(10, fmt=trim(fmt1))
' ' 695 write(10, fmt=trim(fmt2))
'REBOUND =', rebound
697 write(10, fmt=trim(fmt3))
'frac_llra =', frac_llra
699 #if (REBOUND==1 || REBOUND==2) 700 write(10, fmt=trim(fmt2))
'TIME_LAG_MOD =', time_lag_mod
701 #if (TIME_LAG_MOD==1) 702 write(10, fmt=trim(fmt3))
'time_lag =', time_lag
703 #elif (TIME_LAG_MOD==2) 704 write(10, fmt=trim(fmt1))
'time_lag_file = '//time_lag_file
706 stop
' >>> sico_init: TIME_LAG_MOD must be either 1 or 2!' 710 write(10, fmt=trim(fmt2))
'FLEX_RIG_MOD =', flex_rig_mod
711 #if (FLEX_RIG_MOD==1) 712 write(10, fmt=trim(fmt3))
'flex_rig =', flex_rig
713 #elif (FLEX_RIG_MOD==2) 714 write(10, fmt=trim(fmt1))
'flex_rig_file = '//flex_rig_file
716 stop
' >>> sico_init: FLEX_RIG_MOD must be either 1 or 2!' 719 write(10, fmt=trim(fmt2))
'Q_LITHO =', q_litho
720 write(10, fmt=trim(fmt1))
' ' 723 write(10, fmt=trim(fmt3))
'gr_size =', gr_size
724 write(10, fmt=trim(fmt1))
' ' 727 write(10, fmt=trim(fmt3))
'sigma_res =', sigma_res
728 write(10, fmt=trim(fmt1))
' ' 731 write(10, fmt=trim(fmt2))
'ENHMOD =', enhmod
732 #if (ENHMOD==1 || ENHMOD==2 || ENHMOD==3) 733 write(10, fmt=trim(fmt3))
'enh_fact =', enh_fact
735 #if (ENHMOD==2 || ENHMOD==3) 736 write(10, fmt=trim(fmt3))
'enh_intg =', enh_intg
739 write(10, fmt=trim(fmt3))
'age_trans =', age_trans_0
742 write(10, fmt=trim(fmt3))
'date_trans1 =', date_trans1_0
743 write(10, fmt=trim(fmt3))
'date_trans2 =', date_trans2_0
744 write(10, fmt=trim(fmt3))
'date_trans3 =', date_trans3_0
746 #if (ENHMOD==4 || ENHMOD==5) 747 write(10, fmt=trim(fmt3))
'enh_compr =', enh_compr
748 write(10, fmt=trim(fmt3))
'enh_shear =', enh_shear
750 #if ((ENHMOD==1 || ENHMOD==2 || ENHMOD==3 || ENHMOD==4) && MARGIN==3) 751 write(10, fmt=trim(fmt3))
'enh_shelf =', enh_shelf
753 write(10, fmt=trim(fmt1))
' ' 755 write(10, fmt=trim(fmt3))
'numdiff_H_t =', numdiff_h_t
756 write(10, fmt=trim(fmt3))
'tau_cts =', tau_cts
757 write(10, fmt=trim(fmt3))
'vh_max =', vh_max
758 write(10, fmt=trim(fmt3))
'hd_min =', hd_min
759 write(10, fmt=trim(fmt3))
'hd_max =', hd_max
760 #if (defined(QBM_MIN)) 761 write(10, fmt=trim(fmt3))
'qbm_min =', qbm_min
762 #elif (defined(QB_MIN)) /* obsolete */ 763 write(10, fmt=trim(fmt3))
'qb_min =', qb_min
765 #if (defined(QBM_MAX)) 766 write(10, fmt=trim(fmt3))
'qbm_max =', qbm_max
767 #elif (defined(QB_MAX)) /* obsolete */ 768 write(10, fmt=trim(fmt3))
'qb_max =', qb_max
770 write(10, fmt=trim(fmt3))
'age_min =', age_min
771 write(10, fmt=trim(fmt3))
'age_max =', age_max
772 write(10, fmt=trim(fmt3))
'mean_accum =', mean_accum
774 write(10, fmt=trim(fmt3))
'age_diff =', agediff
776 write(10, fmt=trim(fmt1))
' ' 778 write(10, fmt=trim(fmt2a))
'DYNAMICS = ', dynamics
779 #if ((DYNAMICS==1 && MARGIN==3) || DYNAMICS==2) 780 #if (defined(LIS_OPTS)) 781 write(10, fmt=trim(fmt1))
'lis_opts = '//lis_opts
783 #if (defined(N_ITER_SSA)) 784 write(10, fmt=trim(fmt2a))
'n_iter_ssa = ', n_iter_ssa
786 #if (defined(RELAX_FACT_SSA)) 787 write(10, fmt=trim(fmt3))
'relax_fact_ssa =', relax_fact_ssa
790 #if (DYNAMICS==2 && defined(RATIO_SL_THRESH)) 791 write(10, fmt=trim(fmt3))
'ratio_sl_thresh =', ratio_sl_thresh
793 #if (DYNAMICS==2 && defined(SSTA_SIA_WEIGH_FCT)) 794 write(10, fmt=trim(fmt2a))
'SSTA_SIA_WEIGH_FCT = ', ssta_sia_weigh_fct
796 write(10, fmt=trim(fmt1))
' ' 798 write(10, fmt=trim(fmt2))
'CALCMOD =', calcmod
799 #if (CALCMOD==-1 && defined(TEMP_CONST)) 800 write(10, fmt=trim(fmt3))
'TEMP_CONST =', temp_const
802 #if (CALCMOD==-1 && defined(AGE_CONST)) 803 write(10, fmt=trim(fmt3))
'AGE_CONST =', age_const
805 #if (CALCMOD==1 && defined(CTS_MELTING_FREEZING)) 806 write(10, fmt=trim(fmt2))
'CTS_MELTING_FREEZING =', cts_melting_freezing
808 write(10, fmt=trim(fmt2))
'FLOW_LAW =', flow_law
809 write(10, fmt=trim(fmt2))
'FIN_VISC =', fin_visc
810 write(10, fmt=trim(fmt2))
'MARGIN =', margin
812 write(10, fmt=trim(fmt2))
'MARINE_ICE_FORMATION =', marine_ice_formation
813 write(10, fmt=trim(fmt2))
'MARINE_ICE_CALVING =', marine_ice_calving
815 write(10, fmt=trim(fmt2))
'ICE_SHELF_CALVING =', ice_shelf_calving
817 #if (defined(THK_EVOL)) 818 write(10, fmt=trim(fmt2))
'THK_EVOL =', thk_evol
820 stop
' >>> sico_init: Define THK_EVOL in header file!' 822 #if (defined(CALCTHK)) 823 write(10, fmt=trim(fmt2))
'CALCTHK =', calcthk
825 stop
' >>> sico_init: Define CALCTHK in header file!' 827 write(10, fmt=trim(fmt2))
'ADV_HOR =', adv_hor
828 write(10, fmt=trim(fmt2))
'ADV_VERT =', adv_vert
829 write(10, fmt=trim(fmt2))
'TOPOGRAD =', topograd
830 write(10, fmt=trim(fmt2))
'TSURFACE =', tsurface
831 write(10, fmt=trim(fmt2))
'ACCSURFACE =', accsurface
833 write(10, fmt=trim(fmt2))
'PRECIP_ANOM_INTERPOL =', precip_anom_interpol
835 write(10, fmt=trim(fmt2))
'SOLID_PRECIP =', solid_precip
836 write(10, fmt=trim(fmt2))
'ABLSURFACE =', ablsurface
837 #if (defined(MB_ACCOUNT)) 838 write(10, fmt=trim(fmt2a))
'MB_ACCOUNT = ', mb_account
840 write(10, fmt=trim(fmt1))
' ' 842 #if (defined(OUT_TIMES)) 843 write(10, fmt=trim(fmt2a))
'OUT_TIMES = ', out_times
845 #if (defined(OUTPUT_INIT)) 846 write(10, fmt=trim(fmt2a))
'OUTPUT_INIT = ', output_init
848 write(10, fmt=trim(fmt2a))
'OUTPUT = ', output
849 #if (OUTPUT==1 || OUTPUT==3) 850 write(10, fmt=trim(fmt3))
'dtime_out =' , dtime_out0
852 write(10, fmt=trim(fmt3))
'dtime_ser =' , dtime_ser0
853 #if (OUTPUT==1 || OUTPUT==2) 854 write(10, fmt=trim(fmt2a))
'ERGDAT = ', ergdat
856 write(10, fmt=trim(fmt2a))
'NETCDF = ', netcdf
857 #if (OUTPUT==2 || OUTPUT==3) 858 write(10, fmt=trim(fmt2a))
'n_output = ', n_output
860 write(10, fmt=trim(fmt3))
'time_output =' , time_output0(n)
863 #if (defined(WRITE_SER_FILE_STAKES)) 864 write(10, fmt=trim(fmt2a))
'WRITE_SER_FILE_STAKES = ', write_ser_file_stakes
866 write(10, fmt=trim(fmt1))
' ' 868 write(10, fmt=trim(fmt1))
'Program version and date: '//version//
' / '//date
870 close(10, status=
'keep')
875 time_init = time_init0*year_sec
876 time_end = time_end0*year_sec
877 dtime = dtime0*year_sec
878 dtime_temp = dtime_temp0*year_sec
880 dtime_wss = dtime_wss0*year_sec
882 dtime_ser = dtime_ser0*year_sec
883 #if (OUTPUT==1 || OUTPUT==3) 884 dtime_out = dtime_out0*year_sec
886 #if (OUTPUT==2 || OUTPUT==3) 888 time_output(n) = time_output0(n)*year_sec
892 if (.not.approx_integer_multiple(dtime_temp, dtime,
eps_sp_dp)) &
893 stop
' >>> sico_init: dtime_temp must be a multiple of dtime!' 896 if (.not.approx_integer_multiple(dtime_wss, dtime,
eps_sp_dp)) &
897 stop
' >>> sico_init: dtime_wss must be a multiple of dtime!' 900 if (.not.approx_integer_multiple(dtime_ser, dtime,
eps_sp_dp)) &
901 stop
' >>> sico_init: dtime_ser must be a multiple of dtime!' 903 #if (OUTPUT==1 || OUTPUT==3) 904 if (.not.approx_integer_multiple(dtime_out, dtime,
eps_sp_dp)) &
905 stop
' >>> sico_init: dtime_out must be a multiple of dtime!' 912 #if (GRID==0 || GRID==1) 915 trim(precip_mm_present_file)
917 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
921 stop
' >>> sico_init: GRID==2 not allowed for Austfonna application!' 925 if (ios /= 0) stop
' >>> sico_init: Error when opening the precip file!' 927 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 930 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do 936 close(21, status=
'keep')
947 #if (GRID==0 || GRID==1) 950 trim(precip_anom_mm_file)
952 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
956 if (ios /= 0) stop
' >>> sico_init: Error when opening the precip anomaly file!' 958 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 961 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do 967 close(21, status=
'keep')
974 #if (PRECIP_ANOM_INTERPOL==1) 978 #elif (PRECIP_ANOM_INTERPOL==2) 983 stop
' >>> sico_init: Wrong value of switch PRECIP_ANOM_INTERPOL!' 993 mean_accum = mean_accum*(1.0e-03_dp/year_sec)*(
rho_w/
rho)
998 #if (GRID==0 || GRID==1) 1000 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1001 trim(mask_present_file)
1003 open(24, iostat=ios, file=trim(filename_with_path), recl=
rcl2, status=
'old')
1007 stop
' >>> sico_init: GRID==2 not allowed for this application!' 1011 if (ios /= 0) stop
' >>> sico_init: Error when opening the mask file!' 1013 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do 1016 read(24, fmt=trim(fmt4)) (maske_ref(j,i), i=0,imax)
1019 close(24, status=
'keep')
1025 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1026 trim(mask_sedi_file)
1028 open(24, iostat=ios, file=trim(filename_with_path), recl=
rcl2, status=
'old')
1030 if (ios /= 0) stop
' >>> sico_init: Error when opening the rock/sediment mask file!' 1032 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do 1035 read(24, fmt=trim(fmt4)) (
maske_sedi(j,i), i=0,imax)
1038 close(24, status=
'keep')
1044 #if (GRID==0 || GRID==1) 1046 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1047 trim(temp_mm_present_file)
1049 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1053 stop
' >>> sico_init: GRID==2 not allowed for the Austfonna application!' 1057 if (ios /= 0) stop
' >>> sico_init: Error when opening the temperature file!' 1059 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 1062 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do 1068 close(21, status=
'keep')
1074 #if (GRID==0 || GRID==1) 1076 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1077 trim(temp_mm_anom_file)
1079 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1083 if (ios /= 0) stop
' >>> sico_init: Error when opening the temperature anomaly file!' 1085 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 1088 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do 1094 close(21, status=
'keep')
1104 #if (GRID==0 || GRID==1) 1106 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1107 trim(zs_present_file)
1109 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1113 stop
' >>> sico_init: GRID==2 not allowed for the Austfonna application!' 1117 if (ios /= 0) stop
' >>> sico_init: Error when opening the zs file!' 1119 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 1122 read(21, fmt=*) (
zs_ref(j,i), i=0,imax)
1125 close(21, status=
'keep')
1132 if (maske_ref(j,i) >= 2)
zs_ref(j,i) = 0.0_dp
1141 #if (GRID==0 || GRID==1) 1143 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1144 trim(temp_ma_present_file)
1146 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1150 if (ios /= 0) stop
' >>> sico_init: Error when opening the temp_ma_present file!' 1152 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 1158 close(21, status=
'keep')
1168 filename_with_path = trim(inpath)//
'/general/'//trim(grip_temp_file)
1170 open(21, iostat=ios, file=trim(filename_with_path), status=
'old')
1172 if (ios /= 0) stop
' >>> sico_init: Error when opening the data file for delta_ts!' 1176 if (ch_dummy /=
'#')
then 1177 write(6, fmt=*)
' >>> sico_init: grip_time_min, grip_time_stp, grip_time_max' 1178 write(6, fmt=*)
' not defined indata file for delta_ts!' 1187 read(21, fmt=*) d_dummy,
griptemp(n)
1190 close(21, status=
'keep')
1198 filename_with_path = trim(inpath)//
'/general/'//trim(glac_ind_file)
1200 open(21, iostat=ios, file=trim(filename_with_path), status=
'old')
1202 if (ios /= 0) stop
' >>> sico_init: Error when opening the glacial-index file!' 1206 if (ch_dummy /=
'#')
then 1207 write(6, fmt=*)
' >>> sico_init: gi_time_min, gi_time_stp, gi_time_max' 1208 write(6, fmt=*)
' not defined inglacial-index file!' 1220 close(21, status=
'keep')
1228 filename_with_path = trim(inpath)//
'/general/'//trim(sea_level_file)
1230 open(21, iostat=ios, file=trim(filename_with_path), status=
'old')
1232 if (ios /= 0) stop
' >>> sico_init: Error when opening the data file for z_sl!' 1236 if (ch_dummy /=
'#')
then 1237 write(6, fmt=*)
' >>> sico_init: specmap_time_min, specmap_time_stp, specmap_time_max' 1238 write(6, fmt=*)
' not defined in data file for z_sl!' 1250 close(21, status=
'keep')
1266 #elif (Q_GEO_MOD==2) 1270 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1273 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1275 if (ios /= 0) stop
' >>> sico_init: Error when opening the qgeo file!' 1277 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 1280 read(21, fmt=*) (
q_geo(j,i), i=0,imax)
1283 close(21, status=
'keep')
1295 #if (REBOUND==0 || REBOUND==1) 1308 #if (REBOUND==1 || REBOUND==2) 1310 #if (TIME_LAG_MOD==1) 1314 #elif (TIME_LAG_MOD==2) 1316 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1319 open(29, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1321 if (ios /= 0) stop
' >>> sico_init: Error when opening the time-lag file!' 1323 do n=1, 6;
read(29, fmt=
'(a)') ch_dummy;
end do 1329 close(29, status=
'keep')
1345 #if (FLEX_RIG_MOD==1) 1349 #elif (FLEX_RIG_MOD==2) 1351 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
1354 open(29, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
1356 if (ios /= 0) stop
' >>> sico_init: Error when opening the flex-rig file!' 1358 do n=1, 6;
read(29, fmt=
'(a)') ch_dummy;
end do 1364 close(29, status=
'keep')
1368 #elif (REBOUND==0 || REBOUND==1) 1384 call boundary(time_init, dtime, dxi, deta, &
1385 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
1401 #if (!defined(TEMP_INIT) || TEMP_INIT==1) 1403 #elif (TEMP_INIT==2) 1405 #elif (TEMP_INIT==3) 1407 #elif (TEMP_INIT==4) 1410 write(6, fmt=
'(a)')
' >>> sico_init:' 1411 write(6, fmt=
'(a)')
' TEMP_INIT must be set to either 1, 2, 3 or 4!' 1426 stop
' >>> sico_init: Parameter ENHMOD must be between 1 and 5!' 1437 call boundary(time_init, dtime, dxi, deta, &
1438 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
1462 stop
' >>> sico_init: Parameter ENHMOD must be between 1 and 5!' 1471 call boundary(time_init, dtime, dxi, deta, &
1472 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
1503 #if (MARGIN==1 || MARGIN==2) 1512 if ( (
maske(j,i)==0_i2b) &
1514 ( (
maske(j,i+1)==3_i2b) &
1515 .or.(
maske(j,i-1)==3_i2b) &
1516 .or.(
maske(j+1,i)==3_i2b) &
1517 .or.(
maske(j-1,i)==3_i2b) ) &
1521 if ( (
maske(j,i)==3_i2b) &
1523 ( (
maske(j,i+1)==0_i2b) &
1524 .or.(
maske(j,i-1)==0_i2b) &
1525 .or.(
maske(j+1,i)==0_i2b) &
1526 .or.(
maske(j-1,i)==0_i2b) ) &
1530 if ( (
maske(j,i)==3_i2b) &
1532 ( (
maske(j,i+1)==2_i2b) &
1533 .or.(
maske(j,i-1)==2_i2b) &
1534 .or.(
maske(j+1,i)==2_i2b) &
1535 .or.(
maske(j-1,i)==2_i2b) ) &
1539 if ( (
maske(j,i)==2_i2b) &
1541 ( (
maske(j,i+1)==3_i2b) &
1542 .or.(
maske(j,i-1)==3_i2b) &
1543 .or.(
maske(j+1,i)==3_i2b) &
1544 .or.(
maske(j-1,i)==3_i2b) ) &
1554 if ( (
maske(j,i)==2_i2b) &
1555 .and. (
maske(j+1,i)==3_i2b) &
1560 if ( (
maske(j,i)==2_i2b) &
1561 .and. (
maske(j-1,i)==3_i2b) &
1570 if ( (
maske(j,i)==2_i2b) &
1571 .and. (
maske(j,i+1)==3_i2b) &
1576 if ( (
maske(j,i)==2_i2b) &
1577 .and. (
maske(j,i-1)==3_i2b) &
1584 stop
' >>> sico_init: MARGIN must be either 1, 2 or 3!' 1589 #if (GRID==0 || GRID==1) 1593 dist_dxdy(jr,ir) = sqrt( (
real(ir,dp)*dxi)**2 + (
real(jr,dp)*deta)**2 )
1604 #if (DYNAMICS==1 || DYNAMICS==2) 1609 #if (MARGIN==3 || DYNAMICS==2) 1610 call calc_vxy_ssa(z_sl, dxi, deta, dzeta_c, dzeta_t, ii, jj, nn)
1625 stop
' >>> sico_init: DYNAMICS must be either 0, 1 or 2!' 1628 call calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
1632 #if (CALCMOD==0 || CALCMOD==-1) 1657 if ( (
maske(j,i) == 0_i2b).and.(
n_cts(j,i) == 1_i2b) )
then 1670 #elif (CALCMOD==2 || CALCMOD==3) 1688 stop
' >>> sico_init: Parameter CALCMOD must be either -1, 0, 1, 2 or 3!' 1696 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.ser' 1698 open(12, iostat=ios, file=trim(filename_with_path), status=
'new')
1700 if (ios /= 0) stop
' >>> sico_init: Error when opening the ser file!' 1707 1102
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
1708 ' V(m^3) V_g(m^3) V_f(m^3)', &
1709 ' A(m^2) A_g(m^2) A_f(m^2)',/, &
1710 ' V_sle(m) V_t(m^3)', &
1712 ' H_max(m) H_t_max(m)', &
1713 ' zs_max(m) vs_max(m/a) Tbh_max(C)')
1714 1103
format(
'----------------------------------------------------', &
1715 '---------------------------------------')
1722 1112
format(
' t(a) glac_ind(1) z_sl(m)',/, &
1723 ' V(m^3) V_g(m^3) V_f(m^3)', &
1724 ' A(m^2) A_g(m^2) A_f(m^2)',/, &
1725 ' V_sle(m) V_t(m^3)', &
1727 ' H_max(m) H_t_max(m)', &
1728 ' zs_max(m) vs_max(m/a) Tbh_max(C)')
1729 1113
format(
'----------------------------------------------------', &
1730 '---------------------------------------')
1738 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.core' 1740 open(14, iostat=ios, file=trim(filename_with_path), status=
'new')
1742 write(14,
'(1x,a)')
'---------------------' 1743 write(14,
'(1x,a)')
'No boreholes defined.' 1744 write(14,
'(1x,a)')
'---------------------' 1748 #if (WRITE_SER_FILE_STAKES>0) 2258 #if (GRID==0 || GRID==1) /* Stereographic projection */ 2265 #elif (GRID==2) /* Geographical coordinates */ 2274 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_zb.dat' 2276 open(41, iostat=ios, file=trim(filename_with_path), status=
'new')
2278 if (ios /= 0) stop
' >>> sico_init: Error when opening the _zb file!' 2283 4001
format(
'%Time series of the bedrock for 163 surface points')
2284 4002
format(
'%------------------------------------------------')
2286 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_zs.dat' 2288 open(42, iostat=ios, file=trim(filename_with_path), status=
'new')
2290 if (ios /= 0) stop
' >>> sico_init: Error when opening the _zs file!' 2295 4011
format(
'%Time series of the surface for 163 surface points')
2297 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_accum.dat' 2299 open(43, iostat=ios, file=trim(filename_with_path), status=
'new')
2301 if (ios /= 0) stop
' >>> sico_init: Error when opening the _accum file!' 2306 4021
format(
'%Time series of the accumulation for 163 surface points')
2308 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_as_perp.dat' 2310 open(44, iostat=ios, file=trim(filename_with_path), status=
'new')
2312 if (ios /= 0) stop
' >>> sico_init: Error when opening the _as_perp file!' 2317 4031
format(
'%Time series of the as_perp for 163 surface points')
2319 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_snowfall.dat' 2321 open(45, iostat=ios, file=trim(filename_with_path), status=
'new')
2323 if (ios /= 0) stop
' >>> sico_init: Error when opening the _snowfall file!' 2328 4041
format(
'%Time series of the snowfall for 163 surface points')
2330 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_rainfall.dat' 2332 open(46, iostat=ios, file=trim(filename_with_path), status=
'new')
2334 if (ios /= 0) stop
' >>> sico_init: Error when opening the _rainfall file!' 2339 4051
format(
'%Time series of the rainfall for 163 surface points')
2341 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_runoff.dat' 2343 open(47, iostat=ios, file=trim(filename_with_path), status=
'new')
2345 if (ios /= 0) stop
' >>> sico_init: Error when opening the _runoff file!' 2350 4061
format(
'%Time series of the runoff for 163 surface points')
2352 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vx_s.dat' 2354 open(48, iostat=ios, file=trim(filename_with_path), status=
'new')
2356 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vx_s file!' 2361 4071
format(
'%Time series of the x-component of the horizontal surface velocity for 163 surface points')
2363 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vy_s.dat' 2365 open(49, iostat=ios, file=trim(filename_with_path), status=
'new')
2367 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vy_s file!' 2372 4081
format(
'%Time series of the y-component of the horizontal surface velocity for 163 surface points')
2374 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vz_s.dat' 2376 open(50, iostat=ios, file=trim(filename_with_path), status=
'new')
2378 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vz_s file!' 2383 4091
format(
'%Time series of the vertical surface velocity component for 163 surface points')
2385 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vx_b.dat' 2387 open(51, iostat=ios, file=trim(filename_with_path), status=
'new')
2389 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vx_b file!' 2394 4101
format(
'%Time series of the x-component of the horizontal basal velocity for 163 surface points')
2396 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vy_b.dat' 2398 open(52, iostat=ios, file=trim(filename_with_path), status=
'new')
2400 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vy_b file!' 2405 4111
format(
'%Time series of the y-component of the horizontal basal velocity for 163 surface points')
2407 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_vz_b.dat' 2409 open(53, iostat=ios, file=trim(filename_with_path), status=
'new')
2411 if (ios /= 0) stop
' >>> sico_init: Error when opening the _vz_b file!' 2416 4121
format(
'%Time series of the vertical basal velocity component for 163 surface points')
2418 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'_temph_b.dat' 2420 open(54, iostat=ios, file=trim(filename_with_path), status=
'new')
2422 if (ios /= 0) stop
' >>> sico_init: Error when opening the _temph_b file!' 2427 4131
format(
'%Time series of the basal temperature relative to pressure melting point for 163 surface points')
2433 #if (defined(OUTPUT_INIT)) 2435 #if (OUTPUT_INIT==0) 2436 flag_init_output = .false.
2437 #elif (OUTPUT_INIT==1) 2438 flag_init_output = .true.
2440 stop
' >>> sico_init: OUTPUT_INIT must be either 0 or 1!' 2444 flag_init_output = .true.
2450 flag_3d_output = .false.
2452 flag_3d_output = .true.
2454 stop
' >>> sico_init: ERGDAT must be either 0 or 1!' 2457 if (flag_init_output) &
2458 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
2459 flag_3d_output, ndat2d, ndat3d)
2463 if (time_output(1) <= time_init+
eps)
then 2466 flag_3d_output = .false.
2468 flag_3d_output = .true.
2470 stop
' >>> sico_init: ERGDAT must be either 0 or 1!' 2473 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
2474 flag_3d_output, ndat2d, ndat3d)
2480 flag_3d_output = .false.
2482 if (flag_init_output) &
2483 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
2484 flag_3d_output, ndat2d, ndat3d)
2486 if (time_output(1) <= time_init+
eps)
then 2488 flag_3d_output = .true.
2490 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
2491 flag_3d_output, ndat2d, ndat3d)
2496 stop
' >>> sico_init: OUTPUT must be either 1, 2 or 3!' 2499 if (flag_init_output)
then 2501 call output2(time_init, dxi, deta, delta_ts, glac_index, z_sl)
2502 call output4(time_init, dxi, deta, delta_ts, glac_index, z_sl)
2504 #if (WRITE_SER_FILE_STAKES>0) 2505 call output5(time, dxi, deta, delta_ts, glac_index, z_sl)
2519 #if (GRID==0 || GRID==1) 2528 real(dp),
intent(out) :: dxi, deta
2530 integer(i4b) :: i, j, n
2532 real(dp) :: xi0, eta0
2533 real(dp) :: h_ice, freeboard_ratio
2534 character :: ch_dummy
2536 character(len= 8) :: ch_imax
2537 character(len=128) :: fmt4
2538 character(len=256) :: filename_with_path
2540 write(ch_imax, fmt=
'(i8)') imax
2541 write(fmt4, fmt=
'(a)')
'('//trim(adjustl(ch_imax))//
'(i1),i1)' 2545 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2546 trim(zs_present_file)
2548 open(21, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2550 if (ios /= 0) stop
' >>> topography1: Error when opening the zs file!' 2552 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2553 trim(zl_present_file)
2555 open(22, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2557 if (ios /= 0) stop
' >>> topography1: Error when opening the zl file!' 2559 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2562 open(23, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2564 if (ios /= 0) stop
' >>> topography1: Error when opening the zl0 file!' 2566 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2567 trim(mask_present_file)
2569 open(24, iostat=ios, file=trim(filename_with_path), recl=
rcl2, status=
'old')
2571 if (ios /= 0) stop
' >>> topography1: Error when opening the mask file!' 2573 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do 2574 do n=1, 6;
read(22, fmt=
'(a)') ch_dummy;
end do 2575 do n=1, 6;
read(23, fmt=
'(a)') ch_dummy;
end do 2576 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do 2579 read(21, fmt=*) (
zs(j,i), i=0,imax)
2580 read(22, fmt=*) (
zl(j,i), i=0,imax)
2581 read(23, fmt=*) (
zl0(j,i), i=0,imax)
2582 read(24, fmt=trim(fmt4)) (
maske(j,i), i=0,imax)
2585 close(21, status=
'keep')
2586 close(22, status=
'keep')
2587 close(23, status=
'keep')
2588 close(24, status=
'keep')
2590 #if (defined(ZB_PRESENT_FILE)) 2592 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2593 trim(zb_present_file)
2595 open(25, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2597 if (ios /= 0) stop
' >>> topography1: Error when opening the zb file!' 2599 do n=1, 6;
read(25, fmt=
'(a)') ch_dummy;
end do 2602 read(25, fmt=*) (
zb(j,i), i=0,imax)
2605 close(25, status=
'keep')
2609 write(6, fmt=
'(a)')
' >>> topography1: ZB_PRESENT_FILE not defined,' 2610 write(6, fmt=
'(a)')
' thus zb = zl assumed.' 2619 deta = dx *1000.0_dp
2622 eta0 = y0 *1000.0_dp
2629 if (
maske(j,i) <= 1)
then 2633 else if (
maske(j,i) == 2)
then 2635 #if (MARGIN==1 || MARGIN==2) 2643 else if (
maske(j,i) == 3)
then 2645 #if (MARGIN==1 || (MARGIN==2 && MARINE_ICE_FORMATION==1)) 2649 #elif (MARGIN==2 && MARINE_ICE_FORMATION==2) 2651 h_ice =
zs(j,i)-
zb(j,i)
2652 zs(j,i) =
zl(j,i)+h_ice
2655 h_ice =
zs(j,i)-
zb(j,i)
2656 zs(j,i) = freeboard_ratio*h_ice
2657 zb(j,i) =
zs(j,i)-h_ice
2662 xi(i) = xi0 +
real(i,
dp)*dxi
2663 eta(j) = eta0 +
real(j,
dp)*deta
2690 #if (GRID==0 || GRID==1) /* Stereographic projection */ 2695 #elif (GRID==2) /* Geographic coordinates */ 2730 #if (GRID==0 || GRID==1) 2739 real(dp),
intent(out) :: dxi, deta
2741 integer(i4b) :: i, j, n
2743 real(dp) :: xi0, eta0
2744 character :: ch_dummy
2746 character(len= 8) :: ch_imax
2747 character(len=128) :: fmt4
2748 character(len=256) :: filename_with_path
2750 write(ch_imax, fmt=
'(i8)') imax
2751 write(fmt4, fmt=
'(a)')
'('//trim(adjustl(ch_imax))//
'(i1),i1)' 2755 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2758 open(23, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2760 if (ios /= 0) stop
' >>> topography2: Error when opening the zl0 file!' 2762 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2763 trim(mask_present_file)
2765 open(24, iostat=ios, file=trim(filename_with_path), recl=
rcl2, status=
'old')
2767 if (ios /= 0) stop
' >>> topography2: Error when opening the mask file!' 2769 do n=1, 6;
read(23, fmt=
'(a)') ch_dummy;
end do 2772 read(23, fmt=*) (
zl0(j,i), i=0,imax)
2775 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do 2778 read(24, fmt=trim(fmt4)) (
maske(j,i), i=0,imax)
2781 close(23, status=
'keep')
2782 close(24, status=
'keep')
2787 deta = dx *1000.0_dp
2790 eta0 = y0 *1000.0_dp
2795 if (
maske(j,i) <= 1)
then 2802 #if (MARGIN==1 || MARGIN==2) 2812 xi(i) = xi0 +
real(i,
dp)*dxi
2813 eta(j) = eta0 +
real(j,
dp)*deta
2840 #if (GRID==0 || GRID==1) /* Stereographic projection */ 2845 #elif (GRID==2) /* Geographic coordinates */ 2878 subroutine topography3(dxi, deta, z_sl, anfdatname)
2882 #if (GRID==0 || GRID==1) 2891 character(len=100),
intent(in) :: anfdatname
2893 real(dp),
intent(out) :: dxi, deta, z_sl
2895 integer(i4b) :: i, j, n
2897 character(len=256) :: filename_with_path
2898 character :: ch_dummy
2906 filename_with_path = trim(inpath)//
'/'//trim(
ch_domain_short)//
'/'// &
2909 open(23, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
2911 if (ios /= 0) stop
' >>> topography3: Error when opening the zl0 file!' 2913 do n=1, 6;
read(23, fmt=
'(a)') ch_dummy;
end do 2916 read(23, fmt=*) (
zl0(j,i), i=0,imax)
2919 close(23, status=
'keep')
2924 deta = dx *1000.0_dp
2932 #if (GRID==0 || GRID==1) /* Stereographic projection */ 2937 #elif (GRID==2) /* Geographic coordinates */ real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c
temp_c(kc,j,i): Temperature in the upper (kc) ice domain
real(dp), dimension(0:jmax, 0:imax) c_slide
c_slide(j,i): Basal sliding coefficient
real(dp), dimension(0:jmax, 0:imax) phi
phi(j,i): Geographic latitude of grid point (i,j)
subroutine, public read_erg_nc(z_sl, filename)
Reading of time-slice files in native binary or NetCDF format.
subroutine, public read_kei()
Reading of the tabulated kei function.
logical, dimension(0:jmax, 0:imax) flag_inner_point
flag_inner_point(j,i): Inner-point flag. .true.: inner point, .false.: margin point ...
integer(i4b) grip_time_stp
grip_time_stp: Time step of the data values for the surface temperature anomaly
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(i4b) ndata_specmap
ndata_specmap: Number of data values for the sea level
subroutine, public calc_c_int_inv_table()
Computation of the inverse of the temperature integral of the specific heat of ice as a table (c_int_...
real(dp), dimension(0:kcmax) eaz_c
eaz_c(kc): Abbreviation for exp(aa*zeta(kc))
real(dp), dimension(0:jmax, 0:imax) q_geo
q_geo(j,i): Geothermal heat flux
real(dp), dimension(0:jmax, 0:imax, 12) temp_mm_present
temp_mm_present(j,i,n): Present-day mean monthly surface temperature
subroutine sico_init(delta_ts, glac_index, mean_accum, dtime, dtime_temp, dtime_wss, dtime_out, dtime_ser, time, time_init, time_end, time_output, dxi, deta, dzeta_c, dzeta_t, dzeta_r, z_sl, dzsl_dtau, z_mar, ii, jj, nn, ndat2d, ndat3d, n_output, runname)
Main routine of sico_init_m: Initialisations for SICOPOLIS.
real(dp) rho_w
RHO_W: Density of pure water.
subroutine, public calc_enhance_2()
Computation of the flow enhancement factor. Case ENHMOD==2: two different values depending on age for...
real(dp) a
A: Semi-major axis of the planet.
subroutine, public calc_vz_floating(z_sl, dxi, deta, dzeta_c)
Computation of the vertical velocity vz for floating ice.
subroutine, public output1(runname, time, delta_ts, glac_index, z_sl, flag_3d_output, ndat2d, ndat3d)
Writing of time-slice files in native binary or NetCDF format.
integer(i4b) specmap_time_max
specmap_time_max: Maximum time of the data values for the sea level
Material properties of ice: Rate factor, heat conductivity, specific heat (heat capacity), creep function, viscosity.
real(dp), parameter eps
eps: Small number
subroutine, public read_phys_para()
Reading of physical parameters.
integer(i2b) forcing_flag
forcing_flag: Flag for the forcing type. 1: forcing by a spatially constant surface temperature anoma...
logical, dimension(0:jmax, 0:imax) flag_grounding_line_1
flag_grounding_line_1(j,i): Grounding line flag. .true.: grounding line point (grounded ice point wit...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) enth_t
enth_t(kt,j,i): Enthalpy in the lower (kt) ice domain
Conversion from temperature (temp) and water content (omega) to enthalpy (enth) and vice versa...
subroutine, public init_temp_water_age_2()
Initial temperature, water content and age (case ANF_DAT==2: ice-free conditions with relaxed bedrock...
real(dp), dimension(0:jmax, 0:imax) dh_t_dtau
dH_t_dtau(j,i): Derivative of H_t by tau (time)
real(dp), dimension(0:jmax, 0:imax) lambda
lambda(j,i): Geographic longitude of grid point (i,j)
real(dp), dimension(0:jmax, 0:imax) dh_c_dtau
dH_c_dtau(j,i): Derivative of H_c by tau (time)
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:jmax, 0:imax) p_b_w
p_b_w(j,i): Basal water pressure
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) area
area(j,i): Area of grid cell associated with grid point (i,j)
real(dp), dimension(:), allocatable glacial_index
glacial_index(n): Data values for the glacial index
Computation of all components of the strain-rate tensor, the full effective strain rate and the shear...
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
integer(i2b), dimension(0:jmax, 0:imax) maske_sedi
maske_sedi(j,i): Sediment mask. 1: hard rock, 7: soft sediment, 2: ocean.
real(dp), dimension(:), allocatable y_surf
y_surf(n): Coordinate eta (= y) of the prescribed surface points
subroutine, public stereo_inv_ellipsoid(x_val, y_val, A, B, lambda0, phi0, lambda_val, phi_val)
Inverse stereographic projection for an ellipsoidal planet.
subroutine topograd_1(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by secon...
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 ...
subroutine, public calc_enhance_5()
Computation of the flow enhancement factor. Case ENHMOD==5: minimal anisotropic enhancement factor fo...
real(dp) b
B: Semi-minor axis of the planet.
subroutine, public init_temp_water_age_1_2()
Initial temperature, water content and age (case ANF_DAT==1, TEMP_INIT==2: present-day initial topogr...
real(dp), dimension(0:jmax, 0:imax) zl
zl(j,i): Coordinate z of the lithosphere surface
subroutine, public calc_vxy_static()
Computation of the horizontal velocity vx, vy, the horizontal volume flux qx, qy etc. for static ice.
subroutine, public output4(time, dxi, deta, delta_ts, glac_index, z_sl)
Writing of time-series data of the deep ice cores on file in ASCII format (and optionally in NetCDF f...
integer(i2b), dimension(0:jmax, 0:imax) kc_cts
kc_cts(j,i): Position kc of the CTS (for COLD, ENTC, ENTM)
integer(i4b) grip_time_max
grip_time_max: Maximum time of the data values for the surface temperature anomaly ...
real(dp), dimension(0:jmax, 0:imax) q_tld
Q_tld(j,i): Water drainage rate from the temperate layer.
subroutine, public calc_vxy_ssa(z_sl, dxi, deta, dzeta_c, dzeta_t, ii, jj, nn)
Computation of the horizontal velocity vx, vy, the horizontal volume flux qx, qy and the flux across ...
Declarations of global variables for SICOPOLIS (for the ANT domain).
integer(i4b), parameter rcl1
rcl1: Maximum length of record for input files (with factor 3 safety margin)
Initialisations for SICOPOLIS.
integer(i4b) ndata_gi
ndata_gi: Number of data values for the glacial index
Computation of the flow enhancement factor.
integer(i4b) ndata_grip
ndata_grip: Number of data values for the surface temperature anomaly
Computation of the horizontal velocity vx, vy.
integer(i4b), dimension(0:jmax, 0:imax) q_weert
q_weert(j,i): Weertman exponent for the basal pressure
subroutine, public calc_temp_melt()
Computation of the melting temperatures.
real(dp) ea
ea: Abbreviation for exp(aa)
real(dp), parameter pi_180
pi_180: pi divided by 180 (-> deg to rad)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) enth_c
enth_c(kc,j,i): Enthalpy in the upper (kc) ice domain
logical flag_aa_nonzero
flag_aa_nonzero: Flag for the exponential stretch parameter aa. .true.: aa greater than zero (non-equ...
Initial temperature, water content and age.
subroutine, public calc_vz_grounded(dxi, deta, dzeta_c, dzeta_t)
Computation of the vertical velocity vz for grounded ice.
real(dp) aa
aa: Exponential stretch parameter of the non-equidistant vertical grid in the upper (kc) ice domain ...
Reading of several input data.
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) zs
zs(j,i): Coordinate z of the surface topography
integer(i4b) gi_time_min
gi_time_min: Minimum time of the data values for the glacial index
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 stereo_forw_ellipsoid(lambda_val, phi_val, A, B, lambda0, phi0, x_val, y_val)
Forward stereographic projection for an ellipsoidal planet.
real(dp) kei_r_max
kei_r_max: Maximum value of the argument r of the tabulated kei function
real(dp) year_zero
year_zero: SICOPOLIS year zero in astronomical year numbering [ = signed year CE (AD) ] ...
real(dp), dimension(:), allocatable phi_surf
phi_surf(n): Geographical latitude of the prescribed surface points
real(dp), dimension(:), allocatable specmap_zsl
specmap_zsl(n): Data values for the sea level
Computation of the melting and basal temperatures.
subroutine topograd_2(dxi, deta, n_switch)
Calculation of topography gradients on the staggered grid and on the grid points (the latter by fourt...
real(dp), dimension(-190:10) kappa
KAPPA(n): Tabulated values for the heat conductivity of ice.
Computation of the vertical velocity vz.
integer(i4b) gi_time_stp
gi_time_stp: Time step of the data values for the glacial index
real(dp), dimension(0:jmax, 0:imax) dzm_dtau
dzm_dtau(j,i): Derivative of zm by tau (time)
real(dp), dimension(0:krmax) zeta_r
zeta_r(kr): Sigma coordinate zeta_r of grid point kr
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) omega_c
omega_c(kc,j,i): Water content in the upper (kc) ice domain
real(dp), dimension(:), allocatable x_surf
x_surf(n): Coordinate xi (= x) of the prescribed surface points
integer(i2b), dimension(0:jmax, 0:imax) maske_old
maske_old(j,i): Old value of maske (at the previous time step)
character(len=64) ch_domain_long
ch_domain_long: Long name of the computational domain
real(dp), dimension(0:jmax, 0:imax) temp_ma_present
temp_ma_present(j,i): Present-day mean annual surface temperature
Definition of the components g11 and g22 of the metric tensor of the applied numerical coordinates...
Computation of the forward or inverse stereographic projection, alternatively for a spherical or an e...
real(dp), dimension(0:jmax, 0:imax) zl0
zl0(j,i): zl for isostatically relaxed ice-free conditions
subroutine, public calc_vz_static()
Computation of the vertical velocity vz for static ice.
integer(i4b) gi_time_max
gi_time_max: Maximum time of the data values for the glacial index
real(dp) phi0
PHI0: Standard parallel of the stereographic projection.
subroutine, public ice_mat_eqs_pars(RF_table, R_T_val, KAPPA_table, C_table, n_tmp_min, n_tmp_max, RHO_I_val, RHO_C_val, KAPPA_C_val, C_C_val)
Setting of required physical parameters.
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) ...
Comparison of single- or double-precision floating-point numbers.
subroutine, public calc_enhance_1()
Computation of the flow enhancement factor. Case ENHMOD==1: constant for grounded ice...
real(dp), dimension(0:jmax, 0:imax) zm
zm(j,i): Coordinate z of the bottom of the upper (kc) ice domain = top of the lower (kt) ice domain (...
real(dp), dimension(-190:10) rf
RF(n): Tabulated values for the rate factor of cold ice.
real(dp), dimension(0:jmax, 0:imax) q_b_tot
Q_b_tot(j,i): Sum of Q_bm and Q_tld.
real(dp), dimension(0:jmax, 0:imax) q_bm
Q_bm(j,i): Basal melting rate.
real(dp) function, public enth_fct_temp_omega(temp_val, omega_val)
Enthalpy as a function of temperature and water content.
subroutine, public calc_vxy_sia(dzeta_c, dzeta_t)
Computation of the shear stresses txz, tyz, the effective shear stress sigma, the depth-averaged flui...
real(dp), dimension(-190:10) c
C(n): Tabulated values for the specific heat of ice.
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(-10000:10000) kei
kei(n): Tabulated values of the kei function (Kelvin function of zero order)
subroutine, public init_temp_water_age_1_3()
Initial temperature, water content and age (case ANF_DAT==1, TEMP_INIT==3: present-day initial topogr...
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
integer(i4b), parameter rcl2
rcl2: Maximum length of record for input mask files (with factor 3 safety margin) ...
subroutine, public output2(time, dxi, deta, delta_ts, glac_index, z_sl)
Writing of time-series data on file in ASCII format (and optionally in NetCDF format).
real(dp), dimension(-jmax:jmax,-imax:imax) dist_dxdy
dist_dxdy(jr,ir): Distance between grid points with delta_i=ir, delta_j=jr
Calculation of topography gradients on the staggered grid and on the grid points (including length re...
real(dp), dimension(0:jmax, 0:imax) sq_g11_g
sq_g11_g(j,i): Square root of the coefficient g11 of the metric tensor on grid point (i...
real(dp), dimension(0:jmax, 0:imax) as_perp_apl
as_perp_apl(j,i): Applied accumulation-ablation function (SMB)
logical, dimension(0:jmax, 0:imax) flag_calving_front_1
flag_calving_front_1(j,i): Calving front flag. .true.: calving front point (floating ice point with a...
subroutine, public metric()
Main routine of module metric_m: Definition of the components g11 and g22 of the metric tensor of the...
subroutine, public calc_enhance_3(time)
Computation of the flow enhancement factor. Case ENHMOD==3: two different values depending on time of...
integer(i4b) grip_time_min
grip_time_min: Minimum time of the data values for the surface temperature anomaly ...
real(dp), dimension(0:jmax, 0:imax) time_lag_asth
time_lag_asth(j,i): Time lag of the relaxing asthenosphere
real(dp), dimension(0:jmax) eta
eta(j): Coordinate eta (= y) of grid point j
real(dp), dimension(0:imax) xi
xi(i): Coordinate xi (= x) of grid point i
character(len=16) ch_domain_short
ch_domain_short: Short name of the computational domain
real(dp) r_t
R_T: Coefficient of the water-content dependence in the rate factor for temperate ice...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) omega_t
omega_t(kt,j,i): Water content in the lower (kt) ice domain
subroutine, public calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
Main subroutine of calc_dxyz_m: Computation of all components of the strain-rate tensor, the full effective strain rate and the shear fraction.
subroutine, public calc_enhance_4()
Computation of the flow enhancement factor. Case ENHMOD==4: minimal anisotropic enhancement factor fo...
real(dp) kei_r_incr
kei_r_incr: Increment of the argument r of the tabulated kei function
real(dp), dimension(0:ktmax) zeta_t
zeta_t(kt): Sigma coordinate zeta_t of grid point kt
real(dp) rho_sw
RHO_SW: Density of sea water.
logical, dimension(0:jmax, 0:imax) flag_calving_front_2
flag_calving_front_2(j,i): Calving front flag. .true.: calving front point (ocean point with at least...
Computation of the surface temperature (must be less than 0 deg C!) and of the accumulation-ablation ...
real(dp) l
L: Latent heat of ice.
real(dp), parameter eps_sp_dp
eps_sp_dp: Small number to single-precision accuracy in double precision
integer(i4b) n_data_kei
n_data_kei: Number of tabulated values of the kei function
real(dp) rho
RHO: Density of ice.
subroutine topography3(dxi, deta, z_sl, anfdatname)
Definition of the initial surface and bedrock topography (including gradients) and of the horizontal ...
integer(i4b), dimension(0:jmax, 0:imax) p_weert
p_weert(j,i): Weertman exponent for the basal shear stress
subroutine, public init_temp_water_age_1_4()
Initial temperature, water content and age (case ANF_DAT==1, TEMP_INIT==4: present-day initial topogr...
subroutine, public init_temp_water_age_1_1()
Initial temperature, water content and age (case ANF_DAT==1, TEMP_INIT==1: present-day initial topogr...
integer(i4b) n_core
n_core: Number of positions to be considered in the time-series file for deep boreholes ...
integer, parameter dp
Double-precision reals.
subroutine topography2(dxi, deta)
Definition of the initial surface and bedrock topography (including gradients) and of the horizontal ...
real(dp), dimension(0:jmax, 0:imax) zb
zb(j,i): Coordinate z of the ice base
integer(i4b) n_surf
n_surf: Number of surface points for which time-series data are written
logical, dimension(0:jmax, 0:imax) flag_grounding_line_2
flag_grounding_line_2(j,i): Grounding line flag. .true.: grounding line point (floating ice point wit...
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 ...
Writing of output data on files.
real(dp), dimension(0:jmax, 0:imax) dzb_dtau
dzb_dtau(j,i): Derivative of zb by tau (time)
real(dp), dimension(0:kcmax) zeta_c
zeta_c(kc): Sigma coordinate zeta_c of grid point kc
real(dp) lambda0
LAMBDA0: Reference longitude (central meridian) of the stereographic projection.
subroutine, public calc_c_int_table(c_table, n_tmp_min, n_tmp_max, L_val)
Computation of the temperature integral of the specific heat of ice as a table (c_int_table). Further, definition of the latent heat of ice.
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...
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...
subroutine topography1(dxi, deta)
Definition of the initial surface and bedrock topography (including gradients) and of the horizontal ...
real(dp), dimension(0:jmax, 0:imax, 12) temp_mm_lgm_anom
temp_mm_lgm_anom(j,i,n): LGM anomaly (difference LGM - present) of the mean monthly surface temperatu...
real(dp), dimension(0:jmax, 0:imax) h_w
H_w(j,i): Thickness of the water column under the ice base.
subroutine, public calc_vxy_b_sia(time, z_sl)
Computation of the basal horizontal velocity vx_b, vy_b in the shallow ice approximation.
Declarations of global variables for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) dzs_dtau
dzs_dtau(j,i): Derivative of zs by tau (time)
real(dp), dimension(0:jmax, 0:imax) flex_rig_lith
flex_rig_lith(j,i): Flexural rigidity of the lithosphere
real(dp), dimension(:), allocatable griptemp
griptemp(n): Data values for the surface temperature anomaly
real(dp), dimension(0:jmax, 0:imax) dzl_dtau
dzl_dtau(j,i): Derivative of zl by tau (time)
real(dp), dimension(0:jmax, 0:imax) sq_g22_g
sq_g22_g(j,i): Square root of the coefficient g22 of the metric tensor on grid point (i...
real(dp), dimension(:), allocatable lambda_surf
lambda_surf(n): Geographical longitude of the prescribed surface points