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, &
79 integer(i4b),
intent(out) :: ii((imax+1)*(jmax+1)), &
80 jj((imax+1)*(jmax+1)), &
82 integer(i4b),
intent(out) :: ndat2d, ndat3d
83 integer(i4b),
intent(out) :: n_output
84 real(dp),
intent(out) :: delta_ts, glac_index
85 real(dp),
intent(out) :: mean_accum
86 real(dp),
intent(out) :: dtime, dtime_temp, dtime_wss, &
88 real(dp),
intent(out) :: time, time_init, time_end, time_output(100)
89 real(dp),
intent(out) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
90 real(dp),
intent(out) :: z_sl, dzsl_dtau, z_mar
91 character(len=100),
intent(out) :: runname
93 integer(i4b) :: i, j, kc, kt, kr, m, n, ir, jr
94 integer(i4b) :: ios, ios1, ios2, ios3, ios4
96 real(dp) :: dtime0, dtime_temp0, dtime_wss0, dtime_out0, dtime_ser0
97 real(dp) :: time_init0, time_end0, time_output0(100)
99 character(len=100) :: anfdatname
100 character(len=256) :: filename_with_path
101 character(len=256) :: shell_command
102 character :: ch_dummy
103 logical :: flag_init_output, flag_3d_output
105 character(len=64),
parameter :: fmt1 =
'(a)', &
110 write(unit=6, fmt=
'(a)')
' ' 111 write(unit=6, fmt=
'(a)')
' -------- sico_init --------' 112 write(unit=6, fmt=
'(a)')
' ' 124 #elif (defined(EMTP2SGE)) 132 #elif (defined(NHEM)) 136 #elif (defined(SCAND)) 140 #elif (defined(TIBET)) 144 #elif (defined(NMARS)) 148 #elif (defined(SMARS)) 160 stop
' >>> sico_init: No valid domain specified!' 181 #if (CALCTHK==3 || CALCTHK==6 || MARGIN==3 || DYNAMICS==2) 182 call lis_initialize(ierr)
191 #if (!defined(SURFACE_FORCING) || SURFACE_FORCING==1) 198 s_b =
s_b *1.0e-03_dp/year_sec
201 #elif (SURFACE_FORCING==2) 204 gamma_t = gamma_t *1.0e-03_dp
206 m_0 = m_0 *1.0e-03_dp/year_sec
207 ela = ela *1.0e+03_dp
210 stop
' >>> sico_init: SURFACE_FORCING must be either 1 or 2!' 220 if ( trim(version) /= trim(sico_version) ) &
221 stop
' >>> sico_init: SICOPOLIS version not compatible with header file!' 225 #if (!defined(DYNAMICS)) 226 stop
' >>> sico_init: DYNAMICS not defined in the header file!' 229 #if (!defined(CALCMOD)) 230 stop
' >>> sico_init: CALCMOD not defined in the header file!' 233 #if (defined(ENTHMOD)) 234 write(6, fmt=
'(a)')
' >>> sico_init: ENTHMOD must not be defined any more.' 235 write(6, fmt=
'(a)')
' Please update your header file!' 244 if (approx_equal(dx, 5.0_dp,
eps_sp_dp))
then 246 if ((imax /= 300).or.(jmax /= 300))
then 247 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 250 else if (approx_equal(dx, 10.0_dp,
eps_sp_dp))
then 252 if ((imax /= 150).or.(jmax /= 150))
then 253 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 256 else if (approx_equal(dx, 25.0_dp,
eps_sp_dp))
then 258 if ((imax /= 60).or.(jmax /= 60))
then 259 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 262 else if (approx_equal(dx, 75.0_dp,
eps_sp_dp))
then 264 if ((imax /= 20).or.(jmax /= 20))
then 265 stop
' >>> sico_init: IMAX and/or JMAX wrong!' 269 stop
' >>> sico_init: DX wrong!' 274 stop
' >>> sico_init: GRID==1 not allowed for this application!' 278 stop
' >>> sico_init: GRID==2 not allowed for this application!' 286 #if (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 289 write(6, fmt=
'(a)')
' >>> sico_init: For options CALCMOD==0, 2, 3 or -1,' 290 write(6, fmt=
'(a)')
' the separate kt domain is redundant.' 291 write(6, fmt=
'(a)')
' Therefore, consider setting KTMAX to 2.' 292 write(6, fmt=
'(a)')
' ' 301 stop
' >>> sico_init: Option ADV_HOR==1 (central differences) not defined!' 309 #if ((MARGIN==3 && DYNAMICS==1) || DYNAMICS==2) /* requires SSA or SStA */ 311 write(6, fmt=
'(a)')
' >>> sico_init: Distortion correction not implemented' 312 write(6, fmt=
'(a)')
' for the shallow shelf approximation (SSA)' 313 write(6, fmt=
'(a)')
' or the shelfy stream approximation (SStA)' 314 write(6, fmt=
'(a)')
' -> GRID==0 required!' 326 dtime_temp0 = dtime_temp0
330 dzeta_c = 1.0_dp/
real(kcmax,dp)
331 dzeta_t = 1.0_dp/
real(ktmax,dp)
332 dzeta_r = 1.0_dp/
real(krmax,dp)
341 if (deform >=
eps)
then 421 if ((i <= imax).and.(j <= jmax))
then 433 anfdatname = anfdatname
435 #if (defined(YEAR_ZERO)) 441 time_init0 = time_init0
442 time_end0 = time_end0
443 dtime_ser0 = dtime_ser0
445 #if (OUTPUT==1 || OUTPUT==3) 446 dtime_out0 = dtime_out0
449 #if (OUTPUT==2 || OUTPUT==3) 451 time_output0( 1) = time_out0_01
452 time_output0( 2) = time_out0_02
453 time_output0( 3) = time_out0_03
454 time_output0( 4) = time_out0_04
455 time_output0( 5) = time_out0_05
456 time_output0( 6) = time_out0_06
457 time_output0( 7) = time_out0_07
458 time_output0( 8) = time_out0_08
459 time_output0( 9) = time_out0_09
460 time_output0(10) = time_out0_10
461 time_output0(11) = time_out0_11
462 time_output0(12) = time_out0_12
463 time_output0(13) = time_out0_13
464 time_output0(14) = time_out0_14
465 time_output0(15) = time_out0_15
466 time_output0(16) = time_out0_16
467 time_output0(17) = time_out0_17
468 time_output0(18) = time_out0_18
469 time_output0(19) = time_out0_19
470 time_output0(20) = time_out0_20
475 shell_command =
'if [ ! -d' 476 shell_command = trim(shell_command)//
' '//outpath
477 shell_command = trim(shell_command)//
' '//
'] ; then mkdir' 478 shell_command = trim(shell_command)//
' '//outpath
479 shell_command = trim(shell_command)//
' '//
'; fi' 480 call system(trim(shell_command))
483 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.log' 485 open(10, iostat=ios, file=trim(filename_with_path), status=
'new')
487 if (ios /= 0) stop
' >>> sico_init: Error when opening the log file!' 489 write(10, fmt=trim(fmt1))
'Computational domain:' 491 write(10, fmt=trim(fmt1))
' ' 493 write(10, fmt=trim(fmt2a))
'GRID = ', grid
494 write(10, fmt=trim(fmt1))
' ' 496 write(10, fmt=trim(fmt2))
'imax =', imax
497 write(10, fmt=trim(fmt2))
'jmax =', jmax
498 write(10, fmt=trim(fmt2))
'kcmax =', kcmax
499 write(10, fmt=trim(fmt2))
'ktmax =', ktmax
500 write(10, fmt=trim(fmt2))
'krmax =', krmax
501 write(10, fmt=trim(fmt1))
' ' 503 write(10, fmt=trim(fmt3))
'a =',
aa 504 write(10, fmt=trim(fmt1))
' ' 506 #if (GRID==0 || GRID==1) 507 write(10, fmt=trim(fmt3))
'x0 =', x0
508 write(10, fmt=trim(fmt3))
'y0 =', y0
509 write(10, fmt=trim(fmt3))
'dx =', dx
511 write(10, fmt=trim(fmt3))
'dlambda =', dlambda
512 write(10, fmt=trim(fmt3))
'dphi =', dphi
514 write(10, fmt=trim(fmt1))
' ' 516 write(10, fmt=trim(fmt3))
'year_zero =',
year_zero 517 write(10, fmt=trim(fmt3))
'time_init =', time_init0
518 write(10, fmt=trim(fmt3))
'time_end =', time_end0
519 write(10, fmt=trim(fmt3))
'dtime =', dtime0
520 write(10, fmt=trim(fmt3))
'dtime_temp =', dtime_temp0
521 write(10, fmt=trim(fmt1))
' ' 523 write(10, fmt=trim(fmt2))
'ANF_DAT =', anf_dat
524 #if (ANF_DAT==1 && defined(TEMP_INIT)) 525 write(10, fmt=trim(fmt2))
'TEMP_INIT =', temp_init
528 write(10, fmt=trim(fmt1))
'Initial-value file = '//anfdatname
529 write(10, fmt=trim(fmt1))
'Path to initial-value file = '//anfdatpath
531 write(10, fmt=trim(fmt1))
' ' 533 write(10, fmt=trim(fmt1))
'Physical-parameter file = '//phys_para_file
534 write(10, fmt=trim(fmt1))
' ' 536 #if (CALCTHK==2 || CALCTHK==3 || CALCTHK==5 || CALCTHK==6) 537 write(10, fmt=trim(fmt3))
'ovi_weight =', ovi_weight
538 #if (CALCTHK==2 || CALCTHK==5) 539 write(10, fmt=trim(fmt3))
'omega_sor =', omega_sor
541 write(10, fmt=trim(fmt2a))
'iter_max_sor = ', iter_max_sor
544 write(10, fmt=trim(fmt1))
' ' 547 #if (defined(SURFACE_FORCING)) 548 write(10, fmt=trim(fmt2))
'SURFACE_FORCING =', surface_forcing
550 #if (!defined(SURFACE_FORCING) || SURFACE_FORCING==1) 551 write(10, fmt=trim(fmt3))
'temp_min =',
temp_min 552 write(10, fmt=trim(fmt3))
's_t =',
s_t 553 write(10, fmt=trim(fmt3))
'x_hat =',
x_hat 554 write(10, fmt=trim(fmt3))
'y_hat =',
y_hat 555 write(10, fmt=trim(fmt3))
'b_max =',
b_max 556 write(10, fmt=trim(fmt3))
's_b =',
s_b 557 write(10, fmt=trim(fmt3))
'eld =',
eld 558 #elif (SURFACE_FORCING==2) 559 write(10, fmt=trim(fmt3))
'temp_0 =', temp_0
560 write(10, fmt=trim(fmt3))
'gamma_t =', gamma_t
561 write(10, fmt=trim(fmt3))
's_0 =', s_0
562 write(10, fmt=trim(fmt3))
'm_0 =', m_0
563 write(10, fmt=trim(fmt3))
'ela =', ela
565 write(10, fmt=trim(fmt1))
' ' 568 write(10, fmt=trim(fmt3))
'delta_ts0 =', delta_ts0
570 write(10, fmt=trim(fmt3))
'sine_amplit =', sine_amplit
571 write(10, fmt=trim(fmt3))
'sine_period =', sine_period
573 write(10, fmt=trim(fmt1))
'GRIP file = '//grip_temp_file
574 write(10, fmt=trim(fmt3))
'grip_temp_fact =', grip_temp_fact
577 write(10, fmt=trim(fmt2a))
'SEA_LEVEL = ', sea_level
579 write(10, fmt=trim(fmt3))
'z_sl0 =', z_sl0
581 write(10, fmt=trim(fmt1))
'sea-level file = '//sea_level_file
583 write(10, fmt=trim(fmt1))
' ' 586 #if (MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3) 587 write(10, fmt=trim(fmt3))
'z_mar =', z_mar
588 write(10, fmt=trim(fmt1))
' ' 589 #elif (MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 \ 590 || marine_ice_calving==6 || marine_ice_calving==7)
591 write(10, fmt=trim(fmt3))
'fact_z_mar =', fact_z_mar
592 write(10, fmt=trim(fmt1))
' ' 593 #elif (MARINE_ICE_FORMATION==2 && MARINE_ICE_CALVING==9) 594 write(10, fmt=trim(fmt3))
'calv_uw_coeff =', calv_uw_coeff
595 write(10, fmt=trim(fmt3))
'r1_calv_uw =', r1_calv_uw
596 write(10, fmt=trim(fmt3))
'r2_calv_uw =', r2_calv_uw
597 write(10, fmt=trim(fmt1))
' ' 600 #if (ICE_SHELF_CALVING==2) 601 write(10, fmt=trim(fmt3))
'H_calv =', h_calv
602 write(10, fmt=trim(fmt1))
' ' 606 #if (defined(BASAL_HYDROLOGY)) 607 write(10, fmt=trim(fmt2a))
'BASAL_HYDROLOGY = ', basal_hydrology
609 write(10, fmt=trim(fmt2a))
'SLIDE_LAW = ', slide_law
610 write(10, fmt=trim(fmt3))
'c_slide =',
c_slide 611 write(10, fmt=trim(fmt3))
'gamma_slide =', gamma_slide
612 write(10, fmt=trim(fmt2a))
'p_weert = ',
p_weert 613 write(10, fmt=trim(fmt2a))
'q_weert = ',
q_weert 614 #if (defined(TIME_RAMP_UP_SLIDE)) 615 write(10, fmt=trim(fmt3))
'time_ramp_up_slide =', time_ramp_up_slide
618 write(10, fmt=trim(fmt3))
'red_pres_limit_fact =', red_pres_limit_fact
620 #if (BASAL_HYDROLOGY==1) 621 write(10, fmt=trim(fmt3))
'c_Hw_slide =', c_hw_slide
622 write(10, fmt=trim(fmt3))
'Hw0_slide =', hw0_slide
624 write(10, fmt=trim(fmt1))
' ' 626 write(10, fmt=trim(fmt2a))
'Q_GEO_MOD = ', q_geo_mod
628 write(10, fmt=trim(fmt3))
'q_geo =',
q_geo 630 write(10, fmt=trim(fmt1))
' ' 632 write(10, fmt=trim(fmt2))
'REBOUND =', rebound
634 write(10, fmt=trim(fmt3))
'frac_llra =', frac_llra
636 #if (REBOUND==1 || REBOUND==2) 637 write(10, fmt=trim(fmt2))
'TIME_LAG_MOD =', time_lag_mod
638 #if (TIME_LAG_MOD==1) 639 write(10, fmt=trim(fmt3))
'time_lag =', time_lag
640 #elif (TIME_LAG_MOD==2) 641 write(10, fmt=trim(fmt1))
'time_lag_file = '//time_lag_file
643 stop
' >>> sico_init: TIME_LAG_MOD must be either 1 or 2!' 647 write(10, fmt=trim(fmt2))
'FLEX_RIG_MOD =', flex_rig_mod
648 #if (FLEX_RIG_MOD==1) 649 write(10, fmt=trim(fmt3))
'flex_rig =', flex_rig
650 #elif (FLEX_RIG_MOD==2) 651 write(10, fmt=trim(fmt1))
'flex_rig_file = '//flex_rig_file
653 stop
' >>> sico_init: FLEX_RIG_MOD must be either 1 or 2!' 656 write(10, fmt=trim(fmt2))
'Q_LITHO =', q_litho
657 write(10, fmt=trim(fmt1))
' ' 660 write(10, fmt=trim(fmt3))
'gr_size =', gr_size
661 write(10, fmt=trim(fmt1))
' ' 664 write(10, fmt=trim(fmt3))
'sigma_res =', sigma_res
665 write(10, fmt=trim(fmt1))
' ' 668 write(10, fmt=trim(fmt2))
'ENHMOD =', enhmod
669 #if (ENHMOD==1 || ENHMOD==2 || ENHMOD==3) 670 write(10, fmt=trim(fmt3))
'enh_fact =', enh_fact
672 #if (ENHMOD==2 || ENHMOD==3) 673 write(10, fmt=trim(fmt3))
'enh_intg =', enh_intg
676 write(10, fmt=trim(fmt3))
'age_trans =', age_trans_0
679 write(10, fmt=trim(fmt3))
'date_trans1 =', date_trans1_0
680 write(10, fmt=trim(fmt3))
'date_trans2 =', date_trans2_0
681 write(10, fmt=trim(fmt3))
'date_trans3 =', date_trans3_0
683 #if (ENHMOD==4 || ENHMOD==5) 684 write(10, fmt=trim(fmt3))
'enh_compr =', enh_compr
685 write(10, fmt=trim(fmt3))
'enh_shear =', enh_shear
687 #if ((ENHMOD==1 || ENHMOD==2 || ENHMOD==3 || ENHMOD==4) && MARGIN==3) 688 write(10, fmt=trim(fmt3))
'enh_shelf =', enh_shelf
690 write(10, fmt=trim(fmt1))
' ' 692 write(10, fmt=trim(fmt3))
'numdiff_H_t =', numdiff_h_t
693 write(10, fmt=trim(fmt3))
'tau_cts =', tau_cts
694 write(10, fmt=trim(fmt3))
'vh_max =', vh_max
695 write(10, fmt=trim(fmt3))
'hd_min =', hd_min
696 write(10, fmt=trim(fmt3))
'hd_max =', hd_max
697 #if (defined(QBM_MIN)) 698 write(10, fmt=trim(fmt3))
'qbm_min =', qbm_min
699 #elif (defined(QB_MIN)) /* obsolete */ 700 write(10, fmt=trim(fmt3))
'qb_min =', qb_min
702 #if (defined(QBM_MAX)) 703 write(10, fmt=trim(fmt3))
'qbm_max =', qbm_max
704 #elif (defined(QB_MAX)) /* obsolete */ 705 write(10, fmt=trim(fmt3))
'qb_max =', qb_max
707 write(10, fmt=trim(fmt3))
'age_min =', age_min
708 write(10, fmt=trim(fmt3))
'age_max =', age_max
709 write(10, fmt=trim(fmt3))
'mean_accum =', mean_accum
711 write(10, fmt=trim(fmt3))
'age_diff =', agediff
713 write(10, fmt=trim(fmt1))
' ' 715 write(10, fmt=trim(fmt2a))
'DYNAMICS = ', dynamics
716 #if ((DYNAMICS==1 && MARGIN==3) || DYNAMICS==2) 717 #if (defined(LIS_OPTS)) 718 write(10, fmt=trim(fmt1))
'lis_opts = '//lis_opts
720 #if (defined(N_ITER_SSA)) 721 write(10, fmt=trim(fmt2a))
'n_iter_ssa = ', n_iter_ssa
723 #if (defined(RELAX_FACT_SSA)) 724 write(10, fmt=trim(fmt3))
'relax_fact_ssa =', relax_fact_ssa
727 #if (DYNAMICS==2 && defined(RATIO_SL_THRESH)) 728 write(10, fmt=trim(fmt3))
'ratio_sl_thresh =', ratio_sl_thresh
730 #if (DYNAMICS==2 && defined(SSTA_SIA_WEIGH_FCT)) 731 write(10, fmt=trim(fmt2a))
'SSTA_SIA_WEIGH_FCT = ', ssta_sia_weigh_fct
733 write(10, fmt=trim(fmt1))
' ' 735 write(10, fmt=trim(fmt2))
'CALCMOD =', calcmod
736 #if (CALCMOD==-1 && defined(TEMP_CONST)) 737 write(10, fmt=trim(fmt3))
'TEMP_CONST =', temp_const
739 #if (CALCMOD==-1 && defined(AGE_CONST)) 740 write(10, fmt=trim(fmt3))
'AGE_CONST =', age_const
742 #if (CALCMOD==1 && defined(CTS_MELTING_FREEZING)) 743 write(10, fmt=trim(fmt2))
'CTS_MELTING_FREEZING =', cts_melting_freezing
745 write(10, fmt=trim(fmt2))
'FLOW_LAW =', flow_law
746 write(10, fmt=trim(fmt2))
'FIN_VISC =', fin_visc
747 write(10, fmt=trim(fmt2))
'MARGIN =', margin
749 write(10, fmt=trim(fmt2))
'MARINE_ICE_FORMATION =', marine_ice_formation
750 write(10, fmt=trim(fmt2))
'MARINE_ICE_CALVING =', marine_ice_calving
752 write(10, fmt=trim(fmt2))
'ICE_SHELF_CALVING =', ice_shelf_calving
754 #if (defined(THK_EVOL)) 755 write(10, fmt=trim(fmt2))
'THK_EVOL =', thk_evol
757 stop
' >>> sico_init: Define THK_EVOL in header file!' 759 #if (defined(CALCTHK)) 760 write(10, fmt=trim(fmt2))
'CALCTHK =', calcthk
762 stop
' >>> sico_init: Define CALCTHK in header file!' 764 write(10, fmt=trim(fmt2))
'ADV_HOR =', adv_hor
765 write(10, fmt=trim(fmt2))
'ADV_VERT =', adv_vert
766 write(10, fmt=trim(fmt2))
'TOPOGRAD =', topograd
767 write(10, fmt=trim(fmt2))
'TSURFACE =', tsurface
768 #if (defined(MB_ACCOUNT)) 769 write(10, fmt=trim(fmt2a))
'MB_ACCOUNT = ', mb_account
771 write(10, fmt=trim(fmt1))
' ' 773 #if (defined(OUT_TIMES)) 774 write(10, fmt=trim(fmt2a))
'OUT_TIMES = ', out_times
776 #if (defined(OUTPUT_INIT)) 777 write(10, fmt=trim(fmt2a))
'OUTPUT_INIT = ', output_init
779 write(10, fmt=trim(fmt2a))
'OUTPUT = ', output
780 #if (OUTPUT==1 || OUTPUT==3) 781 write(10, fmt=trim(fmt3))
'dtime_out =' , dtime_out0
783 write(10, fmt=trim(fmt3))
'dtime_ser =' , dtime_ser0
784 #if (OUTPUT==1 || OUTPUT==2) 785 write(10, fmt=trim(fmt2a))
'ERGDAT = ', ergdat
787 write(10, fmt=trim(fmt2a))
'NETCDF = ', netcdf
788 #if (OUTPUT==2 || OUTPUT==3) 789 write(10, fmt=trim(fmt2a))
'n_output = ', n_output
791 write(10, fmt=trim(fmt3))
'time_output =' , time_output0(n)
794 write(10, fmt=trim(fmt1))
' ' 796 write(10, fmt=trim(fmt1))
'Program version and date: '//version//
' / '//date
798 close(10, status=
'keep')
803 time_init = time_init0*year_sec
804 time_end = time_end0*year_sec
805 dtime = dtime0*year_sec
806 dtime_temp = dtime_temp0*year_sec
807 dtime_ser = dtime_ser0*year_sec
808 #if (OUTPUT==1 || OUTPUT==3) 809 dtime_out = dtime_out0*year_sec
811 #if (OUTPUT==2 || OUTPUT==3) 813 time_output(n) = time_output0(n)*year_sec
817 if (.not.approx_integer_multiple(dtime_temp, dtime,
eps_sp_dp)) &
818 stop
' >>> sico_init: dtime_temp must be a multiple of dtime!' 820 if (.not.approx_integer_multiple(dtime_ser, dtime,
eps_sp_dp)) &
821 stop
' >>> sico_init: dtime_ser must be a multiple of dtime!' 823 #if (OUTPUT==1 || OUTPUT==3) 824 if (.not.approx_integer_multiple(dtime_out, dtime,
eps_sp_dp)) &
825 stop
' >>> sico_init: dtime_out must be a multiple of dtime!' 832 mean_accum = mean_accum*(1.0e-03_dp/year_sec)*(
rho_w/
rho)
839 filename_with_path = trim(inpath)//
'/general/'//trim(grip_temp_file)
841 open(21, iostat=ios, file=trim(filename_with_path), status=
'old')
843 if (ios /= 0) stop
' >>> sico_init: Error when opening the data file for delta_ts!' 847 if (ch_dummy /=
'#')
then 848 write(6, fmt=*)
' >>> sico_init: grip_time_min, grip_time_stp, grip_time_max' 849 write(6, fmt=*)
' not defined in data file for delta_ts!' 858 read(21, fmt=*) d_dummy,
griptemp(n)
861 close(21, status=
'keep')
869 filename_with_path = trim(inpath)//
'/general/'//trim(sea_level_file)
871 open(21, iostat=ios, file=trim(filename_with_path), status=
'old')
873 if (ios /= 0) stop
' >>> sico_init: Error when opening the data file for z_sl!' 877 if (ch_dummy /=
'#')
then 878 write(6, fmt=*)
' >>> sico_init: specmap_time_min, specmap_time_stp, specmap_time_max' 879 write(6, fmt=*)
' not defined in data file for z_sl!' 891 close(21, status=
'keep')
909 stop
' >>> sico_init: Option Q_GEO_MOD==2 not available for this application!' 916 #if (REBOUND==1 || REBOUND==2) 918 #if (TIME_LAG_MOD==1) 922 #elif (TIME_LAG_MOD==2) 927 open(29, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
929 if (ios /= 0) stop
' >>> sico_init: Error when opening the time-lag file!' 931 do n=1, 6;
read(29, fmt=
'(a)') ch_dummy;
end do 937 close(29, status=
'keep')
953 #if (FLEX_RIG_MOD==1) 957 #elif (FLEX_RIG_MOD==2) 962 open(29, iostat=ios, file=trim(filename_with_path), recl=
rcl1, status=
'old')
964 if (ios /= 0) stop
' >>> sico_init: Error when opening the flex-rig file!' 966 do n=1, 6;
read(29, fmt=
'(a)') ch_dummy;
end do 972 close(29, status=
'keep')
976 #elif (REBOUND==0 || REBOUND==1) 988 stop
' >>> sico_init: ANF_DAT==1 not allowed for this application!' 998 call boundary(time_init, dtime, dxi, deta, &
999 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
1023 stop
' >>> sico_init: Parameter ENHMOD must be between 1 and 5!' 1032 call boundary(time_init, dtime, dxi, deta, &
1033 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
1064 #if (MARGIN==1 || MARGIN==2) 1073 if ( (
maske(j,i)==0_i2b) &
1075 ( (
maske(j,i+1)==3_i2b) &
1076 .or.(
maske(j,i-1)==3_i2b) &
1077 .or.(
maske(j+1,i)==3_i2b) &
1078 .or.(
maske(j-1,i)==3_i2b) ) &
1082 if ( (
maske(j,i)==3_i2b) &
1084 ( (
maske(j,i+1)==0_i2b) &
1085 .or.(
maske(j,i-1)==0_i2b) &
1086 .or.(
maske(j+1,i)==0_i2b) &
1087 .or.(
maske(j-1,i)==0_i2b) ) &
1091 if ( (
maske(j,i)==3_i2b) &
1093 ( (
maske(j,i+1)==2_i2b) &
1094 .or.(
maske(j,i-1)==2_i2b) &
1095 .or.(
maske(j+1,i)==2_i2b) &
1096 .or.(
maske(j-1,i)==2_i2b) ) &
1100 if ( (
maske(j,i)==2_i2b) &
1102 ( (
maske(j,i+1)==3_i2b) &
1103 .or.(
maske(j,i-1)==3_i2b) &
1104 .or.(
maske(j+1,i)==3_i2b) &
1105 .or.(
maske(j-1,i)==3_i2b) ) &
1115 if ( (
maske(j,i)==2_i2b) &
1116 .and. (
maske(j+1,i)==3_i2b) &
1121 if ( (
maske(j,i)==2_i2b) &
1122 .and. (
maske(j-1,i)==3_i2b) &
1131 if ( (
maske(j,i)==2_i2b) &
1132 .and. (
maske(j,i+1)==3_i2b) &
1137 if ( (
maske(j,i)==2_i2b) &
1138 .and. (
maske(j,i-1)==3_i2b) &
1145 stop
' >>> sico_init: MARGIN must be either 1, 2 or 3!' 1150 #if (GRID==0 || GRID==1) 1154 dist_dxdy(jr,ir) = sqrt( (
real(ir,dp)*dxi)**2 + (
real(jr,dp)*deta)**2 )
1165 #if (DYNAMICS==1 || DYNAMICS==2) 1170 #if (MARGIN==3 || DYNAMICS==2) 1171 call calc_vxy_ssa(z_sl, dxi, deta, dzeta_c, dzeta_t, ii, jj, nn)
1186 stop
' >>> sico_init: DYNAMICS must be either 0, 1 or 2!' 1189 call calc_dxyz(dxi, deta, dzeta_c, dzeta_t)
1193 #if (CALCMOD==0 || CALCMOD==-1) 1218 if ( (
maske(j,i) == 0_i2b).and.(
n_cts(j,i) == 1_i2b) )
then 1231 #elif (CALCMOD==2 || CALCMOD==3) 1249 stop
' >>> sico_init: Parameter CALCMOD must be either -1, 0, 1, 2 or 3!' 1257 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.ser' 1259 open(12, iostat=ios, file=trim(filename_with_path), status=
'new')
1261 if (ios /= 0) stop
' >>> sico_init: Error when opening the ser file!' 1266 1102
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
1267 ' V(m^3) V_g(m^3) V_f(m^3)', &
1268 ' A(m^2) A_g(m^2) A_f(m^2)',/, &
1269 ' V_sle(m) V_t(m^3)', &
1271 ' H_max(m) H_t_max(m)', &
1272 ' zs_max(m) vs_max(m/a) Tbh_max(C)')
1273 1103
format(
'----------------------------------------------------', &
1274 '---------------------------------------')
1286 x_core(1) = 750.0_dp *1.0e+03_dp
1287 y_core(1) = 750.0_dp *1.0e+03_dp
1293 x_core(2) = 750.0_dp *1.0e+03_dp
1294 y_core(2) = 1125.0_dp *1.0e+03_dp
1297 filename_with_path = trim(outpath)//
'/'//trim(runname)//
'.core' 1299 open(14, iostat=ios, file=trim(filename_with_path), status=
'new')
1301 if (ios /= 0) stop
' >>> sico_init: Error when opening the core file!' 1308 1106
format(
' t(a) D_Ts(C) z_sl(m)',/, &
1309 ' H_P1(m) H_P2(m)',/, &
1310 ' v_P1(m/a) v_P2(m/a)',/, &
1312 1107
format(
'---------------------------------------')
1318 #if (defined(OUTPUT_INIT)) 1320 #if (OUTPUT_INIT==0) 1321 flag_init_output = .false.
1322 #elif (OUTPUT_INIT==1) 1323 flag_init_output = .true.
1325 stop
' >>> sico_init: OUTPUT_INIT must be either 0 or 1!' 1329 flag_init_output = .true.
1335 flag_3d_output = .false.
1337 flag_3d_output = .true.
1339 stop
' >>> sico_init: ERGDAT must be either 0 or 1!' 1342 if (flag_init_output) &
1343 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
1344 flag_3d_output, ndat2d, ndat3d)
1348 if (time_output(1) <= time_init+
eps)
then 1351 flag_3d_output = .false.
1353 flag_3d_output = .true.
1355 stop
' >>> sico_init: ERGDAT must be either 0 or 1!' 1358 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
1359 flag_3d_output, ndat2d, ndat3d)
1365 flag_3d_output = .false.
1367 if (flag_init_output) &
1368 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
1369 flag_3d_output, ndat2d, ndat3d)
1371 if (time_output(1) <= time_init+
eps)
then 1373 flag_3d_output = .true.
1375 call output1(runname, time_init, delta_ts, glac_index, z_sl, &
1376 flag_3d_output, ndat2d, ndat3d)
1381 stop
' >>> sico_init: OUTPUT must be either 1, 2 or 3!' 1384 if (flag_init_output)
then 1385 call output2(time_init, dxi, deta, delta_ts, glac_index, z_sl)
1386 call output4(time_init, dxi, deta, delta_ts, glac_index, z_sl)
1401 real(dp),
intent(out) :: dxi, deta
1407 dxi=0.0_dp; deta=0.0_dp
1409 write(6,
'(/1x,a)')
'>>> topography1: ANF_DAT==1 not defined for this domain!' 1421 #if (GRID==0 || GRID==1) 1430 real(dp),
intent(out) :: dxi, deta
1432 integer(i4b) :: i, j
1434 real(dp) :: xi0, eta0
1450 #if (GRID==0 || GRID==1) 1453 deta = dx *1000.0_dp
1456 eta0 = y0 *1000.0_dp
1460 stop
' >>> topography2: GRID==2 not allowed for this application!' 1471 xi(i) = xi0 +
real(i,
dp)*dxi
1472 eta(j) = eta0 +
real(j,
dp)*deta
1499 #if (GRID==0 || GRID==1) /* Stereographic projection */ 1504 #elif (GRID==2) /* Geographic coordinates */ 1537 subroutine topography3(dxi, deta, z_sl, anfdatname)
1541 #if (GRID==0 || GRID==1) 1550 character(len=100),
intent(in) :: anfdatname
1552 real(dp),
intent(out) :: dxi, deta, z_sl
1554 integer(i4b) :: i, j
1566 #if (GRID==0 || GRID==1) 1569 deta = dx *1000.0_dp
1573 stop
' >>> topography3: GRID==2 not allowed for this application!' 1583 #if (GRID==0 || GRID==1) /* Stereographic projection */ 1588 #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.
real(dp), dimension(:), allocatable phi_core
phi_core(n): Geographical latitude of the prescribed borehole positions
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
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) s_b
s_b: Gradient of accumulation rate change with horizontal distance
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)
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
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...
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.
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 ...
real(dp) b_max
b_max: Maximum accumulation rate
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.
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), 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
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...
real(dp) year_zero
year_zero: SICOPOLIS year zero in astronomical year numbering [ = signed year CE (AD) ] ...
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) eld
eld: Equilibrium line distance
real(dp), dimension(-190:10) kappa
KAPPA(n): Tabulated values for the heat conductivity of ice.
Computation of the vertical velocity vz.
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 y_core
y_core(n): Coordinate eta (= y) of the prescribed borehole positions
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
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.
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.
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) s_t
s_t: Gradient of surface temperature change with horizontal distance
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)
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
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...
character(len=16), dimension(:), allocatable ch_core
ch_core(n): Names of the prescribed borehole positions
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(:), allocatable x_core
x_core(n): Coordinate xi (= x) of the prescribed borehole positions
real(dp) temp_min
temp_min: Minimum surface temperature
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), dimension(0:ktmax) zeta_t
zeta_t(kt): Sigma coordinate zeta_t of grid point kt
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
real(dp) y_hat
y_hat: Coordinate eta (= y) of the centre of the model domain
real(dp) rho
RHO: Density of ice.
real(dp) x_hat
x_hat: Coordinate xi (= x) of the centre of the model domain
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
real(dp), dimension(:), allocatable lambda_core
lambda_core(n): Geographical longitude of the prescribed borehole positions
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
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...
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...
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) 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...