36 mean_accum, mean_accum_inv, &
37 dtime, dtime_temp, dtime_wss, dtime_out, dtime_ser, &
38 time, time_init, time_end, time_output, &
39 dxi, deta, dzeta_c, dzeta_t, dzeta_r, &
40 z_sl, dzsl_dtau, z_mar, &
42 ndat2d, ndat3d, n_output, &
50 integer(i4b),
intent(out) :: ii((imax+1)*(jmax+1)), &
51 jj((imax+1)*(jmax+1)), &
53 integer(i4b),
intent(out) :: ndat2d, ndat3d
54 integer(i4b),
intent(out) :: n_output
55 real(dp),
intent(out) :: delta_ts, glac_index
56 real(dp),
intent(out) :: mean_accum, mean_accum_inv
57 real(dp),
intent(out) :: dtime, dtime_temp, dtime_wss, &
59 real(dp),
intent(out) :: time, time_init, time_end, time_output(100)
60 real(dp),
intent(out) :: dxi, deta, dzeta_c, dzeta_t, dzeta_r
61 real(dp),
intent(out) :: z_sl, dzsl_dtau, z_mar
62 character(len=100),
intent(out) :: runname
64 integer(i4b) :: i, j, kc, kt, kr, m, n, ir, jr
65 integer(i4b) :: ios, ios1, ios2, ios3, ios4
67 integer(i4b) :: ndata_insol
68 real(dp) :: dtime0, dtime_temp0, dtime_wss0, dtime_out0, dtime_ser0
69 real(dp) :: time_init0, time_end0, time_output0(100)
70 real(dp) :: time_chasm_init0, time_chasm_end0
72 character (len=100) :: anfdatname
73 character (len=256) :: shell_command
75 logical :: flag_3d_output
77 character(len=64),
parameter :: fmt1 =
'(a)', &
81 character(len= 8) :: ch_imax
82 character(len=128) :: fmt4
84 write(ch_imax, fmt=
'(i8)') imax
85 write(fmt4, fmt=
'(a)')
'('//trim(adjustl(ch_imax))//
'(i1),i1)'
105 #if (CALCZS==4 || MARGIN==3)
108 call lis_initialize(ierr)
118 rho = (1.0_dp-frac_dust)*rho_i + frac_dust*rho_c
124 if ( trim(version) /= trim(sico_version) ) &
125 stop
' sico_init: SICOPOLIS version not compatible with header file!'
130 #if (GRID==0 || GRID==1)
132 if (abs(dx-20.0_dp) < eps)
then
134 if ((imax /= 90).or.(jmax /= 90))
then
135 stop
' sico_init: Wrong values for IMAX and JMAX!'
138 else if (abs(dx-10.0_dp) < eps)
then
140 if ((imax /= 180).or.(jmax /= 180))
then
141 stop
' sico_init: Wrong values for IMAX and JMAX!'
144 else if (abs(dx-5.0_dp) < eps)
then
146 if ((imax /= 360).or.(jmax /= 360))
then
147 stop
' sico_init: Wrong values for IMAX and JMAX!'
151 stop
' sico_init: Wrong value for DX!'
156 stop
' sico_init: GRID==2 not allowed for nmars application!'
164 stop
' sico_init: Option ADV_HOR==1 (central differences) not defined!'
174 dtime_temp0 = dtime_temp0
176 dtime_wss0 = dtime_wss0
181 dzeta_c = 1.0_dp/
real(kcmax,dp)
182 dzeta_t = 1.0_dp/
real(ktmax,dp)
183 dzeta_r = 1.0_dp/
real(krmax,dp)
196 if ((i <= imax).and.(j <= jmax))
then
208 anfdatname = anfdatname
210 #if defined(YEAR_ZERO)
211 year_zero = year_zero
213 year_zero = 2000.0_dp
216 time_init0 = time_init0
217 time_end0 = time_end0
218 dtime_ser0 = dtime_ser0
221 time_chasm_init0 = time_chasm_init0
222 time_chasm_end0 = time_chasm_end0
225 #if ( OUTPUT==1 || OUTPUT==3 )
226 dtime_out0 = dtime_out0
229 #if ( OUTPUT==2 || OUTPUT==3 )
231 time_output0( 1) = time_out0_01
232 time_output0( 2) = time_out0_02
233 time_output0( 3) = time_out0_03
234 time_output0( 4) = time_out0_04
235 time_output0( 5) = time_out0_05
236 time_output0( 6) = time_out0_06
237 time_output0( 7) = time_out0_07
238 time_output0( 8) = time_out0_08
239 time_output0( 9) = time_out0_09
240 time_output0(10) = time_out0_10
241 time_output0(11) = time_out0_11
242 time_output0(12) = time_out0_12
243 time_output0(13) = time_out0_13
244 time_output0(14) = time_out0_14
245 time_output0(15) = time_out0_15
246 time_output0(16) = time_out0_16
247 time_output0(17) = time_out0_17
248 time_output0(18) = time_out0_18
249 time_output0(19) = time_out0_19
250 time_output0(20) = time_out0_20
255 shell_command =
'if [ ! -d'
256 shell_command = trim(shell_command)//
' '//outpath
257 shell_command = trim(shell_command)//
' '//
'] ; then mkdir'
258 shell_command = trim(shell_command)//
' '//outpath
259 shell_command = trim(shell_command)//
' '//
'; fi'
260 call system(trim(shell_command))
263 open(10, iostat=ios, &
264 file=outpath//
'/'//trim(runname)//
'.log', &
267 stop
' sico_init: Error when opening the log file!'
269 write(10, fmt=trim(fmt1))
'Computational domain:'
271 write(10, fmt=trim(fmt1))
'Antarctica'
273 write(10, fmt=trim(fmt1))
'Greenland'
275 write(10, fmt=trim(fmt1))
'Scandinavia and Eurasia'
277 write(10, fmt=trim(fmt1))
'Northern hemisphere'
278 #elif defined(EMTP2SGE)
279 write(10, fmt=trim(fmt1))
'EISMINT Phase 2 Simplified Geometry Experiment'
281 write(10, fmt=trim(fmt1))
'North polar cap of Mars'
283 write(10, fmt=trim(fmt1))
'South polar cap of Mars'
285 stop
' sico_init: No valid domain specified!'
287 write(10, fmt=trim(fmt1))
' '
289 write(10, fmt=trim(fmt2))
'imax =', imax
290 write(10, fmt=trim(fmt2))
'jmax =', jmax
291 write(10, fmt=trim(fmt2))
'kcmax =', kcmax
292 write(10, fmt=trim(fmt2))
'ktmax =', ktmax
293 write(10, fmt=trim(fmt2))
'krmax =', krmax
294 write(10, fmt=trim(fmt1))
' '
296 write(10, fmt=trim(fmt3))
'a =', deform
297 write(10, fmt=trim(fmt1))
' '
299 write(10, fmt=trim(fmt3))
'x0 =', x0
300 write(10, fmt=trim(fmt3))
'y0 =', y0
301 write(10, fmt=trim(fmt3))
'dx =', dx
302 write(10, fmt=trim(fmt1))
' '
304 write(10, fmt=trim(fmt3))
'year_zero =', year_zero
305 write(10, fmt=trim(fmt3))
'time_init =', time_init0
306 write(10, fmt=trim(fmt3))
'time_end =', time_end0
307 write(10, fmt=trim(fmt3))
'dtime =', dtime0
308 write(10, fmt=trim(fmt3))
'dtime_temp =', dtime_temp0
310 write(10, fmt=trim(fmt3))
'dtime_wss =', dtime_wss0
312 #if ( OUTPUT==1 || OUTPUT==3 )
313 write(10, fmt=trim(fmt3))
'dtime_out =', dtime_out0
315 write(10, fmt=trim(fmt3))
'dtime_ser =', dtime_ser0
316 write(10, fmt=trim(fmt1))
' '
318 write(10, fmt=trim(fmt1))
'zs_present file = '//zs_present_file
320 write(10, fmt=trim(fmt1))
'zl_present file = '//zl_present_file
322 write(10, fmt=trim(fmt1))
'zl0 file = '//zl0_file
323 write(10, fmt=trim(fmt1))
'mask_present file = '//mask_present_file
324 write(10, fmt=trim(fmt1))
' '
326 write(10, fmt=trim(fmt1))
'Physical-parameter file = '//phys_para_file
327 write(10, fmt=trim(fmt1))
' '
329 #if (CALCZS==3 || CALCZS==4)
330 write(10, fmt=trim(fmt3))
'ovi_weight =', ovi_weight
332 write(10, fmt=trim(fmt3))
'omega_sor =', omega_sor
334 write(10, fmt=trim(fmt1))
' '
337 #if (TSURFACE==1 || TSURFACE==6)
338 write(10, fmt=trim(fmt3))
'delta_ts0 =', delta_ts0
340 write(10, fmt=trim(fmt3))
'sine_amplit =', sine_amplit
341 write(10, fmt=trim(fmt3))
'sine_period =', sine_period
343 #if (TSURFACE==1 || TSURFACE==2 || TSURFACE==3)
344 write(10, fmt=trim(fmt3))
'temp0_ma_90N =', temp0_ma_90n
346 #if (TSURFACE==1 || TSURFACE==2 || TSURFACE==3 || TSURFACE==4 || TSURFACE==5)
347 write(10, fmt=trim(fmt3))
'c_ma =', c_ma
348 write(10, fmt=trim(fmt3))
'gamma_ma =', gamma_ma
351 write(10, fmt=trim(fmt1))
'Insolation file = '//insol_ma_90n_file
353 #if (TSURFACE==4 || TSURFACE==5 || TSURFACE==6)
354 write(10, fmt=trim(fmt3))
'albedo =', albedo
358 write(10, fmt=trim(fmt3))
'acc_present_val =', acc_present_val
361 #if ( ACCSURFACE==1 || ACCSURFACE==2 )
362 write(10, fmt=trim(fmt3))
'gamma_s =', gamma_s
365 #if ( ABLSURFACE==1 || ABLSURFACE==2 )
366 write(10, fmt=trim(fmt3))
'eld_0 =', eld_0
367 write(10, fmt=trim(fmt3))
'g_mb_0 =', g_0
368 write(10, fmt=trim(fmt3))
'gamma_eld =', gamma_eld
369 write(10, fmt=trim(fmt3))
'gamma_g =', gamma_g
373 write(10, fmt=trim(fmt3))
'z_sl0 =', z_sl0
375 write(10, fmt=trim(fmt1))
'sea-level file = '//sea_level_file
377 write(10, fmt=trim(fmt1))
' '
380 #if ( MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3 )
381 write(10, fmt=trim(fmt3))
'z_mar =', z_mar
382 write(10, fmt=trim(fmt1))
' '
383 #elif ( MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 \
384 || marine_ice_calving==6 || marine_ice_calving==7 )
385 write(10, fmt=trim(fmt3))
'fact_z_mar =', fact_z_mar
386 write(10, fmt=trim(fmt1))
' '
387 #elif ( ( MARINE_ICE_FORMATION==2 ) && ( MARINE_ICE_CALVING==9 ) )
388 write(10, fmt=trim(fmt3))
'calv_uw_coeff =', calv_uw_coeff
389 write(10, fmt=trim(fmt3))
'r1_calv_uw =', r1_calv_uw
390 write(10, fmt=trim(fmt3))
'r2_calv_uw =', r2_calv_uw
391 write(10, fmt=trim(fmt1))
' '
394 #if ICE_SHELF_CALVING==2
395 write(10, fmt=trim(fmt3))
'H_calv =', h_calv
396 write(10, fmt=trim(fmt1))
' '
400 write(10, fmt=trim(fmt3))
'c_slide =', c_slide
401 write(10, fmt=trim(fmt3))
'gamma_slide =', gamma_slide
402 write(10, fmt=trim(fmt2))
'p_weert =', p_weert
403 write(10, fmt=trim(fmt2))
'q_weert =', q_weert
405 write(10, fmt=trim(fmt3))
'red_pres_limit_fact =', red_pres_limit_fact
407 write(10, fmt=trim(fmt1))
' '
410 write(10, fmt=trim(fmt3))
'q_geo =', q_geo
412 write(10, fmt=trim(fmt1))
'q_geo file = '//q_geo_file
414 write(10, fmt=trim(fmt1))
' '
417 write(10, fmt=trim(fmt3))
'frac_llra =', frac_llra
418 write(10, fmt=trim(fmt1))
' '
422 write(10, fmt=trim(fmt3))
'gr_size =', gr_size
423 write(10, fmt=trim(fmt1))
' '
426 write(10, fmt=trim(fmt3))
'sigma_res =', sigma_res
427 write(10, fmt=trim(fmt1))
' '
429 write(10, fmt=trim(fmt3))
'frac_dust =', frac_dust
430 write(10, fmt=trim(fmt1))
' '
432 write(10, fmt=trim(fmt2))
'ENHMOD =', enhmod
433 write(10, fmt=trim(fmt3))
'enh_fact =', enh_fact
434 #if ( ENHMOD==2 || ENHMOD==3 )
435 write(10, fmt=trim(fmt3))
'enh_intg =', enh_intg
438 write(10, fmt=trim(fmt3))
'age_trans =', age_trans_0
441 write(10, fmt=trim(fmt3))
'date_trans1 =', date_trans1_0
442 write(10, fmt=trim(fmt3))
'date_trans2 =', date_trans2_0
443 write(10, fmt=trim(fmt3))
'date_trans3 =', date_trans3_0
446 write(10, fmt=trim(fmt3))
'enh_shelf =', enh_shelf
448 write(10, fmt=trim(fmt1))
' '
451 write(10, fmt=trim(fmt1))
'mask_chasm file = '//mask_chasm_file
452 write(10, fmt=trim(fmt3))
'time_chasm_init =', time_chasm_init0
453 write(10, fmt=trim(fmt3))
'time_chasm_end =', time_chasm_end0
454 write(10, fmt=trim(fmt3))
'q_geo_chasm =', q_geo_chasm
455 write(10, fmt=trim(fmt3))
'erosion_chasm =', erosion_chasm
456 write(10, fmt=trim(fmt1))
' '
459 write(10, fmt=trim(fmt3))
'numdiff_H_t =', numdiff_h_t
460 write(10, fmt=trim(fmt3))
'tau_cts =', tau_cts
461 write(10, fmt=trim(fmt3))
'H_min =', h_min
462 write(10, fmt=trim(fmt3))
'vh_max =', vh_max
463 write(10, fmt=trim(fmt3))
'hd_min =', hd_min
464 write(10, fmt=trim(fmt3))
'hd_max =', hd_max
466 write(10, fmt=trim(fmt3))
'qbm_min =', qbm_min
467 #elif defined(QB_MIN) /* obsolete */
468 write(10, fmt=trim(fmt3))
'qb_min =', qb_min
471 write(10, fmt=trim(fmt3))
'qbm_max =', qbm_max
472 #elif defined(QB_MAX) /* obsolete */
473 write(10, fmt=trim(fmt3))
'qb_max =', qb_max
475 write(10, fmt=trim(fmt3))
'age_min =', age_min
476 write(10, fmt=trim(fmt3))
'age_max =', age_max
477 write(10, fmt=trim(fmt3))
'mean_accum =', mean_accum
479 write(10, fmt=trim(fmt3))
'age_diff =', agediff
481 write(10, fmt=trim(fmt1))
' '
483 write(10, fmt=trim(fmt2))
'GRID =', grid
484 write(10, fmt=trim(fmt2))
'CALCMOD =', calcmod
485 write(10, fmt=trim(fmt2))
'FLOW_LAW =', flow_law
486 write(10, fmt=trim(fmt2))
'FIN_VISC =', fin_visc
487 write(10, fmt=trim(fmt2))
'MARGIN =', margin
489 write(10, fmt=trim(fmt2))
'MARINE_ICE_FORMATION =', marine_ice_formation
490 write(10, fmt=trim(fmt2))
'MARINE_ICE_CALVING =', marine_ice_calving
492 write(10, fmt=trim(fmt2))
'ICE_SHELF_CALVING =', ice_shelf_calving
494 write(10, fmt=trim(fmt2))
'ANF_DAT =', anf_dat
495 write(10, fmt=trim(fmt2))
'REBOUND =', rebound
496 write(10, fmt=trim(fmt2))
'Q_LITHO =', q_litho
497 write(10, fmt=trim(fmt2))
'ZS_EVOL =', zs_evol
498 write(10, fmt=trim(fmt2))
'CALCZS =', calczs
499 write(10, fmt=trim(fmt2))
'ADV_HOR =', adv_hor
500 write(10, fmt=trim(fmt2))
'ADV_VERT =', adv_vert
501 write(10, fmt=trim(fmt2))
'TOPOGRAD =', topograd
502 write(10, fmt=trim(fmt2))
'TSURFACE =', tsurface
503 write(10, fmt=trim(fmt2))
'ACC_UNIT =', acc_unit
504 write(10, fmt=trim(fmt2))
'ACC_PRESENT=', acc_present
505 write(10, fmt=trim(fmt2))
'ACCSURFACE =', accsurface
506 write(10, fmt=trim(fmt2))
'ABLSURFACE =', ablsurface
507 write(10, fmt=trim(fmt2))
'SEA_LEVEL =', sea_level
508 write(10, fmt=trim(fmt2))
'SLIDE_LAW =', slide_law
509 write(10, fmt=trim(fmt2))
'Q_GEO_MOD =', q_geo_mod
510 write(10, fmt=trim(fmt2))
'CHASM =', chasm
511 write(10, fmt=trim(fmt1))
' '
513 #if defined(OUT_TIMES)
514 write(10, fmt=trim(fmt2))
'OUT_TIMES =', out_times
516 write(10, fmt=trim(fmt2))
'OUTPUT =', output
517 write(10, fmt=trim(fmt2))
'OUTSER =', outser
518 #if ( OUTPUT==1 || OUTPUT==2 )
519 write(10, fmt=trim(fmt2))
'ERGDAT =', ergdat
521 write(10, fmt=trim(fmt2))
'NETCDF =', netcdf
522 write(10, fmt=trim(fmt1))
' '
523 #if ( OUTPUT==2 || OUTPUT==3 )
524 write(10, fmt=trim(fmt2))
'n_output =', n_output
526 write(10, fmt=trim(fmt3))
'time_output =', time_output0(n)
528 write(10, fmt=trim(fmt1))
' '
531 write(10, fmt=trim(fmt1))
'Program version and date: '//version//
' / '//date
533 close(10, status=
'keep')
537 year_zero = year_zero*year_sec
538 time_init = time_init0*year_sec
539 time_end = time_end0*year_sec
540 dtime = dtime0*year_sec
541 dtime_temp = dtime_temp0*year_sec
543 dtime_wss = dtime_wss0*year_sec
546 time_chasm_init = time_chasm_init0 *year_sec
547 time_chasm_end = time_chasm_end0 *year_sec
549 dtime_ser = dtime_ser0*year_sec
550 #if ( OUTPUT==1 || OUTPUT==3 )
551 dtime_out = dtime_out0*year_sec
553 #if ( OUTPUT==2 || OUTPUT==3 )
555 time_output(n) = time_output0(n)*year_sec
559 if (abs(dtime_temp/dtime-nint(dtime_temp/dtime)) > eps) &
560 stop
' sico_init: dtime_temp must be a multiple of dtime!'
563 if (abs(dtime_wss/dtime-nint(dtime_wss/dtime)) > eps) &
564 stop
' sico_init: dtime_wss must be a multiple of dtime!'
575 accum_present(j,i) = acc_present_val
589 accum_present(j,i) = accum_present(j,i) &
590 *(1.0e-03_dp/year_sec)*(rho_w/rho_i) &
591 *(1.0_dp/(1.0_dp-frac_dust))
595 accum_present(j,i) = accum_present(j,i)*(1.0e-03_dp/year_sec)
606 mean_accum = mean_accum*(1.0e-03_dp/year_sec)*(rho_w/rho_i) &
607 *(1.0_dp/(1.0_dp-frac_dust))
612 mean_accum = mean_accum*(1.0e-03_dp/year_sec)
617 mean_accum_inv = 1.0_dp/mean_accum
621 open(24, iostat=ios, &
622 file=inpath//
'/nmars/'//mask_present_file, &
623 recl=1024, status=
'old')
626 stop
' sico_init: Error when opening the mask file!'
628 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do
631 read(24, fmt=trim(fmt4)) (maske_help(j,i), i=0,imax)
634 close(24, status=
'keep')
640 open(24, iostat=ios, &
641 file=inpath//
'/nmars/'//mask_chasm_file, &
642 recl=1024, status=
'old')
644 if (ios /= 0) stop
' sico_init: Error when opening the chasm mask file!'
646 do n=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do
649 read(24, fmt=trim(fmt4)) (maske_chasm(j,i), i=0,imax)
652 close(24, status=
'keep')
660 stop
' sico_init: SEA_LEVEL==3 not allowed for nmars application!'
672 #if ( TSURFACE==5 || TSURFACE==6 )
674 open(21, iostat=ios, &
675 file=inpath//
'/nmars/'//insol_ma_90n_file, &
677 if (ios /= 0) stop
' sico_init: Error when opening the insolation-data file!'
679 read(21, fmt=*) ch_dummy, insol_time_min, insol_time_stp, insol_time_max
681 if (ch_dummy /=
'#')
then
682 write(6, fmt=*)
' sico_init: insol_time_min, insol_time_stp, insol_time_max'
683 write(6, fmt=*)
' not defined in insolation-data file!'
687 ndata_insol = (insol_time_max-insol_time_min)/insol_time_stp
689 if (ndata_insol > 100000) &
690 stop
' sico_init: Too many data in insolation-data file!'
693 read(21, fmt=*) d_dummy, ecc_data(n), obl_data(n), cp_data(n), ave_data(n), insol_ma_90(n)
694 obl_data(n) = obl_data(n) *pi_180
695 ave_data(n) = ave_data(n) *pi_180
698 close(21, status=
'keep')
711 q_geo_normal(j,i) = q_geo *1.0e-03_dp
719 open(21, iostat=ios, &
720 file=inpath//
'/nmars/'//q_geo_file, &
721 recl=8192, status=
'old')
723 if (ios /= 0) stop
' sico_init: Error when opening the qgeo file!'
725 do n=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
728 read(21, fmt=*) (q_geo_normal(j,i), i=0,imax)
731 close(21, status=
'keep')
735 q_geo_normal(j,i) = q_geo_normal(j,i) *1.0e-03_dp
743 #if (REBOUND==0 || REBOUND==1)
745 kei = 0.0_dp; n_data_kei = 0; kei_r_max = 0.0_dp; kei_r_incr = 0.0_dp
763 call
boundary(time_init, dtime, dxi, deta, &
764 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
771 q_b_tot(j,i) = 0.0_dp
777 temp_c(kc,j,i) = temp_s(j,i)
778 age_c(kc,j,i) = 15000.0_dp*year_sec
782 omega_t(kt,j,i) = 0.0_dp
783 age_t(kt,j,i) = 15000.0_dp*year_sec
787 temp_r(kr,j,i) = temp_s(j,i)+q_geo(j,i)*h_r/kappa_r &
788 *(1.0_dp-
real(kr,dp)/
real(krmax,dp))
806 call
boundary(time_init, dtime, dxi, deta, &
807 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
814 q_b_tot(j,i) = 0.0_dp
820 temp_c(kc,j,i) = temp_s(j,i)
821 age_c(kc,j,i) = 15000.0_dp*year_sec
825 omega_t(kt,j,i) = 0.0_dp
826 age_t(kt,j,i) = 15000.0_dp*year_sec
830 temp_r(kr,j,i) = temp_s(j,i)+q_geo(j,i)*h_r/kappa_r &
831 *(1.0_dp-
real(kr,dp)/
real(krmax,dp))
850 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
853 call
boundary(time_init, dtime, dxi, deta, &
854 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
856 q_b_tot = q_bm + q_tld
864 #if (GRID==0 || GRID==1)
868 dist_dxdy(jr,ir) = sqrt( (
real(ir,dp)*dxi)**2 + (
real(jr,dp)*deta)**2 )
880 zeta_c(kc) = kc*dzeta_c
881 eaz_c(kc) = exp(deform*zeta_c(kc))
882 eaz_c_quotient(kc) = (eaz_c(kc)-1.0_dp)/(ea-1.0_dp)
886 zeta_t(kt) = kt*dzeta_t
910 open(12, iostat=ios, &
911 file=outpath//
'/'//trim(runname)//
'.ser', &
914 stop
' sico_init: Error when opening the ser file!'
919 1102
format(
' t(a) D_Ts(C) z_sl(m)',/, &
920 ' H_max(m) zs_max(m) V(m^3)', &
921 ' V_t(m^3) V_fw(m^3/a) Tbh_max(C)',/, &
922 ' A(m^2) A_t(m^2) V_bm(m^3/a)', &
923 ' V_tld(m^3/a) H_t_max(m) vs_max(m/a)')
924 1103
format(
'----------------------------------------------------', &
925 '---------------------------------------')
931 open(13, iostat=ios, &
932 file=outpath//
'/'//trim(runname)//
'.thk', &
934 if (ios /= 0) stop
' sico_init: Error when opening the thk file!'
939 1104
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
940 ' H(m): JMAX+1 records [j = JMAX (-1) 0] with',/, &
941 ' IMAX+1 values [i = 0 (1) IMAX] in each record')
942 1105
format(
'----------------------------------------------------')
952 allocate(lambda_core(n_core), phi_core(n_core), &
953 x_core(n_core), y_core(n_core))
955 lambda_core(1) = 0.0_dp
957 x_core(1) = 0.0_dp *1.0e+03_dp
958 y_core(1) = 0.0_dp *1.0e+03_dp
960 lambda_core(2) = 0.0_dp
962 x_core(2) = -150.0_dp *1.0e+03_dp
963 y_core(2) = -290.0_dp *1.0e+03_dp
965 lambda_core(3) = 0.0_dp
967 x_core(3) = -300.0_dp *1.0e+03_dp
968 y_core(3) = -280.0_dp *1.0e+03_dp
970 open(14, iostat=ios, &
971 file=outpath//
'/'//trim(runname)//
'.core', &
973 if (ios /= 0) stop
' sico_init: Error when opening the core file!'
975 if (forcing_flag == 1)
then
980 1106
format(
' t(a) D_Ts(C) z_sl(m)',/, &
981 ' H_NP(m) H_C1(m) H_C2(m)',/, &
982 ' v_NP(m/a) v_C1(m/a) v_C2(m/a)',/, &
983 ' T_NP(C) T_C1(C) T_C2(C)',/, &
984 ' Rb_NP(W/m2) Rb_C1(W/m2) Rb_C2(W/m2)')
985 1107
format(
'----------------------------------------------------')
996 flag_3d_output = .false.
998 flag_3d_output = .true.
1000 stop
' sico_init: ERGDAT must be either 0 or 1!'
1004 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1005 flag_3d_output, ndat2d, ndat3d)
1007 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1008 flag_3d_output, ndat2d, ndat3d)
1010 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1015 if (time_output(1) <= time_init+eps)
then
1018 flag_3d_output = .false.
1020 flag_3d_output = .true.
1022 stop
' sico_init: ERGDAT must be either 0 or 1!'
1026 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1027 flag_3d_output, ndat2d, ndat3d)
1029 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1030 flag_3d_output, ndat2d, ndat3d)
1032 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1039 flag_3d_output = .false.
1042 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1043 flag_3d_output, ndat2d, ndat3d)
1045 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1046 flag_3d_output, ndat2d, ndat3d)
1048 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1051 if (time_output(1) <= time_init+eps)
then
1053 flag_3d_output = .true.
1056 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1057 flag_3d_output, ndat2d, ndat3d)
1059 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1060 flag_3d_output, ndat2d, ndat3d)
1062 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1068 stop
' sico_init: OUTPUT must be either 1, 2 or 3!'
1071 call
output2(time_init, dxi, deta, delta_ts, glac_index, z_sl)
1073 call
output3(time_init, delta_ts, glac_index, z_sl)
1076 call
output4(time_init, dxi, deta, delta_ts, glac_index, z_sl)