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
67 real(dp) :: dtime0, dtime_temp0, dtime_wss0, dtime_out0, dtime_ser0
68 real(dp) :: time_init0, time_end0, time_output0(100)
70 character (len=100) :: anfdatname
71 character (len=256) :: shell_command
73 logical :: flag_3d_output
75 character(len=64),
parameter :: fmt1 =
'(a)', &
79 character(len= 8) :: ch_imax
80 character(len=128) :: fmt4
82 write(ch_imax, fmt=
'(i8)') imax
83 write(fmt4, fmt=
'(a)')
'('//trim(adjustl(ch_imax))//
'(i1),i1)'
103 #if (CALCZS==4 || MARGIN==3)
106 call lis_initialize(ierr)
116 if ( trim(version) /= trim(sico_version) ) &
117 stop
' sico_init: SICOPOLIS version not compatible with header file!'
122 #if (GRID==0 || GRID==1)
124 stop
' sico_init: GRID==0 or 1 not allowed for the Tibet application!'
128 if ( (abs(dlambda-1.0_dp/3.0_dp) < eps) &
129 .and.(abs(dphi- 1.0_dp/3.0_dp) < eps) )
then
131 if ((imax /= 135).or.(jmax /= 51))
then
132 stop
' sico_init: IMAX and/or JMAX wrong!'
135 else if ( (abs(dlambda-1.0_dp/6.0_dp) < eps) &
136 .and.(abs(dphi -1.0_dp/6.0_dp) < eps) )
then
138 if ((imax /= 270).or.(jmax /= 102))
then
139 stop
' sico_init: IMAX and/or JMAX wrong!'
142 else if ( (abs(dlambda-1.0_dp/12.0_dp) < eps) &
143 .and.(abs(dphi -1.0_dp/12.0_dp) < eps) )
then
145 if ((imax /= 540).or.(jmax /= 204))
then
146 stop
' sico_init: IMAX and/or JMAX wrong!'
150 stop
' sico_init: DLAMBDA / DPHI wrong!'
159 #if ((TSURFACE == 5) && (ACCSURFACE != 5))
160 stop
' sico_init: Options TSURFACE==5 and ACCSURFACE==5 must be used together!'
163 #if ((TSURFACE != 5) && (ACCSURFACE == 5))
164 stop
' sico_init: Options TSURFACE==5 and ACCSURFACE==5 must be used together!'
171 stop
' sico_init: Option ADV_HOR==1 (central differences) not defined!'
180 #elif (TSURFACE == 5)
189 dtime_temp0 = dtime_temp0
191 dtime_wss0 = dtime_wss0
196 dzeta_c = 1.0_dp/
real(kcmax,dp)
197 dzeta_t = 1.0_dp/
real(ktmax,dp)
198 dzeta_r = 1.0_dp/
real(krmax,dp)
211 if ((i <= imax).and.(j <= jmax))
then
223 anfdatname = anfdatname
225 #if defined(YEAR_ZERO)
226 year_zero = year_zero
228 year_zero = 2000.0_dp
231 time_init0 = time_init0
232 time_end0 = time_end0
233 dtime_ser0 = dtime_ser0
235 #if ( OUTPUT==1 || OUTPUT==3 )
236 dtime_out0 = dtime_out0
239 #if ( OUTPUT==2 || OUTPUT==3 )
241 time_output0( 1) = time_out0_01
242 time_output0( 2) = time_out0_02
243 time_output0( 3) = time_out0_03
244 time_output0( 4) = time_out0_04
245 time_output0( 5) = time_out0_05
246 time_output0( 6) = time_out0_06
247 time_output0( 7) = time_out0_07
248 time_output0( 8) = time_out0_08
249 time_output0( 9) = time_out0_09
250 time_output0(10) = time_out0_10
251 time_output0(11) = time_out0_11
252 time_output0(12) = time_out0_12
253 time_output0(13) = time_out0_13
254 time_output0(14) = time_out0_14
255 time_output0(15) = time_out0_15
256 time_output0(16) = time_out0_16
257 time_output0(17) = time_out0_17
258 time_output0(18) = time_out0_18
259 time_output0(19) = time_out0_19
260 time_output0(20) = time_out0_20
265 shell_command =
'if [ ! -d'
266 shell_command = trim(shell_command)//
' '//outpath
267 shell_command = trim(shell_command)//
' '//
'] ; then mkdir'
268 shell_command = trim(shell_command)//
' '//outpath
269 shell_command = trim(shell_command)//
' '//
'; fi'
270 call system(trim(shell_command))
273 open(10, iostat=ios, &
274 file=outpath//
'/'//trim(runname)//
'.log', &
277 stop
' sico_init: Error when opening the log file!'
279 write(10, fmt=trim(fmt1))
'Computational domain:'
281 write(10, fmt=trim(fmt1))
'Antarctica'
283 write(10, fmt=trim(fmt1))
'Greenland'
285 write(10, fmt=trim(fmt1))
'Scandinavia and Eurasia'
287 write(10, fmt=trim(fmt1))
'Northern hemisphere'
289 write(10, fmt=trim(fmt1))
'Tibet'
290 #elif defined(EMTP2SGE)
291 write(10, fmt=trim(fmt1))
'EISMINT Phase 2 Simplified Geometry Experiment'
293 write(10, fmt=trim(fmt1))
'North polar cap of Mars'
295 write(10, fmt=trim(fmt1))
'South polar cap of Mars'
297 stop
' sico_init: No valid domain specified!'
299 write(10, fmt=trim(fmt1))
' '
301 write(10, fmt=trim(fmt2))
'imax =', imax
302 write(10, fmt=trim(fmt2))
'jmax =', jmax
303 write(10, fmt=trim(fmt2))
'kcmax =', kcmax
304 write(10, fmt=trim(fmt2))
'ktmax =', ktmax
305 write(10, fmt=trim(fmt2))
'krmax =', krmax
306 write(10, fmt=trim(fmt1))
' '
308 write(10, fmt=trim(fmt3))
'a =', deform
309 write(10, fmt=trim(fmt1))
' '
311 #if (GRID==0 || GRID==1)
312 stop
' sico_init: GRID==0 or 1 not allowed for this application!'
314 write(10, fmt=trim(fmt3))
'lambda0 =', lambda_0
315 write(10, fmt=trim(fmt3))
'phi0 =', phi_0
316 write(10, fmt=trim(fmt3))
'dlambda =', dlambda
317 write(10, fmt=trim(fmt3))
'dphi =', dphi
319 write(10, fmt=trim(fmt1))
' '
321 write(10, fmt=trim(fmt3))
'year_zero =', year_zero
322 write(10, fmt=trim(fmt3))
'time_init =', time_init0
323 write(10, fmt=trim(fmt3))
'time_end =', time_end0
324 write(10, fmt=trim(fmt3))
'dtime =', dtime0
325 write(10, fmt=trim(fmt3))
'dtime_temp =', dtime_temp0
327 write(10, fmt=trim(fmt3))
'dtime_wss =', dtime_wss0
329 #if ( OUTPUT==1 || OUTPUT==3 )
330 write(10, fmt=trim(fmt3))
'dtime_out =', dtime_out0
332 write(10, fmt=trim(fmt3))
'dtime_ser =', dtime_ser0
333 write(10, fmt=trim(fmt1))
' '
335 write(10, fmt=trim(fmt1))
'zs_present file = '//zs_present_file
337 write(10, fmt=trim(fmt1))
'zl_present file = '//zl_present_file
339 write(10, fmt=trim(fmt1))
'zl0 file = '//zl0_file
340 write(10, fmt=trim(fmt1))
'mask_present file = '//mask_present_file
341 write(10, fmt=trim(fmt1))
' '
343 write(10, fmt=trim(fmt1))
'Physical-parameter file = '//phys_para_file
344 write(10, fmt=trim(fmt1))
' '
346 #if (CALCZS==3 || CALCZS==4)
347 write(10, fmt=trim(fmt3))
'ovi_weight =', ovi_weight
349 write(10, fmt=trim(fmt3))
'omega_sor =', omega_sor
351 write(10, fmt=trim(fmt1))
' '
354 write(10, fmt=trim(fmt1))
'temp_mm_present file = '//temp_mm_present_file
356 write(10, fmt=trim(fmt3))
'delta_ts0 =', delta_ts0
358 write(10, fmt=trim(fmt3))
'sine_amplit =', sine_amplit
359 write(10, fmt=trim(fmt3))
'sine_period =', sine_period
361 write(10, fmt=trim(fmt1))
'GRIP file = '//grip_temp_file
362 write(10, fmt=trim(fmt3))
'grip_temp_fact =', grip_temp_fact
364 write(10, fmt=trim(fmt1))
'Glacial-index file = '//glac_ind_file
365 write(10, fmt=trim(fmt1))
'temp_mm_anom file = '//temp_mm_anom_file
366 write(10, fmt=trim(fmt3))
'temp_mm_anom fact = ', temp_mm_anom_fact
369 write(10, fmt=trim(fmt1))
'precip_mm_present file = '//precip_mm_present_file
371 write(10, fmt=trim(fmt3))
'accfact =', accfact
372 #elif ( ACCSURFACE==2 || ACCSURFACE==3 )
373 write(10, fmt=trim(fmt3))
'gamma_s =', gamma_s
374 #elif ( ACCSURFACE==5 )
375 write(10, fmt=trim(fmt1))
'precip_mm_anom file = '//precip_mm_anom_file
376 write(10, fmt=trim(fmt3))
'precip_mm_anom fact = ', precip_mm_anom_fact
378 #if (ACCSURFACE <= 3)
379 write(10, fmt=trim(fmt2))
'ELEV_DESERT =', elev_desert
380 #if (ELEV_DESERT == 1)
381 write(10, fmt=trim(fmt3))
'gamma_p =', gamma_p
382 write(10, fmt=trim(fmt3))
'zs_thresh =', zs_thresh
387 write(10, fmt=trim(fmt3))
'lambda_lti =', lambda_lti
388 write(10, fmt=trim(fmt3))
'temp_lti =', temp_lti
392 write(10, fmt=trim(fmt3))
'z_sl0 =', z_sl0
394 write(10, fmt=trim(fmt1))
'sea-level file = '//sea_level_file
396 write(10, fmt=trim(fmt1))
' '
399 #if ( MARINE_ICE_CALVING==2 || MARINE_ICE_CALVING==3 )
400 write(10, fmt=trim(fmt3))
'z_mar =', z_mar
401 write(10, fmt=trim(fmt1))
' '
402 #elif ( MARINE_ICE_CALVING==4 || MARINE_ICE_CALVING==5 \
403 || marine_ice_calving==6 || marine_ice_calving==7 )
404 write(10, fmt=trim(fmt3))
'fact_z_mar =', fact_z_mar
405 write(10, fmt=trim(fmt1))
' '
406 #elif ( ( MARINE_ICE_FORMATION==2 ) && ( MARINE_ICE_CALVING==9 ) )
407 write(10, fmt=trim(fmt3))
'calv_uw_coeff =', calv_uw_coeff
408 write(10, fmt=trim(fmt3))
'r1_calv_uw =', r1_calv_uw
409 write(10, fmt=trim(fmt3))
'r2_calv_uw =', r2_calv_uw
410 write(10, fmt=trim(fmt1))
' '
413 #if ICE_SHELF_CALVING==2
414 write(10, fmt=trim(fmt3))
'H_calv =', h_calv
415 write(10, fmt=trim(fmt1))
' '
419 write(10, fmt=trim(fmt3))
'c_slide =', c_slide
420 write(10, fmt=trim(fmt3))
'gamma_slide =', gamma_slide
421 write(10, fmt=trim(fmt2))
'p_weert =', p_weert
422 write(10, fmt=trim(fmt2))
'q_weert =', q_weert
424 write(10, fmt=trim(fmt3))
'red_pres_limit_fact =', red_pres_limit_fact
426 write(10, fmt=trim(fmt1))
' '
429 write(10, fmt=trim(fmt3))
'q_geo =', q_geo
431 write(10, fmt=trim(fmt1))
'q_geo file = '//q_geo_file
433 write(10, fmt=trim(fmt1))
' '
435 #if defined(MARINE_ICE_BASAL_MELTING)
436 write(10, fmt=trim(fmt2))
'MARINE_ICE_BASAL_MELTING =', marine_ice_basal_melting
437 #if ( MARINE_ICE_BASAL_MELTING==2 || MARINE_ICE_BASAL_MELTING==3 )
438 write(10, fmt=trim(fmt3))
'qbm_marine =', qbm_marine
440 write(10, fmt=trim(fmt1))
' '
444 write(10, fmt=trim(fmt3))
'frac_llra =', frac_llra
445 write(10, fmt=trim(fmt1))
' '
449 write(10, fmt=trim(fmt3))
'gr_size =', gr_size
450 write(10, fmt=trim(fmt1))
' '
453 write(10, fmt=trim(fmt3))
'sigma_res =', sigma_res
454 write(10, fmt=trim(fmt1))
' '
457 write(10, fmt=trim(fmt2))
'ENHMOD =', enhmod
458 write(10, fmt=trim(fmt3))
'enh_fact =', enh_fact
459 #if ( ENHMOD==2 || ENHMOD==3 )
460 write(10, fmt=trim(fmt3))
'enh_intg =', enh_intg
463 write(10, fmt=trim(fmt3))
'age_trans =', age_trans_0
466 write(10, fmt=trim(fmt3))
'date_trans1 =', date_trans1_0
467 write(10, fmt=trim(fmt3))
'date_trans2 =', date_trans2_0
468 write(10, fmt=trim(fmt3))
'date_trans3 =', date_trans3_0
471 write(10, fmt=trim(fmt3))
'enh_shelf =', enh_shelf
473 write(10, fmt=trim(fmt1))
' '
475 write(10, fmt=trim(fmt3))
'numdiff_H_t =', numdiff_h_t
476 write(10, fmt=trim(fmt3))
'tau_cts =', tau_cts
477 write(10, fmt=trim(fmt3))
'H_min =', h_min
478 write(10, fmt=trim(fmt3))
'vh_max =', vh_max
479 write(10, fmt=trim(fmt3))
'hd_min =', hd_min
480 write(10, fmt=trim(fmt3))
'hd_max =', hd_max
482 write(10, fmt=trim(fmt3))
'qbm_min =', qbm_min
483 #elif defined(QB_MIN) /* obsolete */
484 write(10, fmt=trim(fmt3))
'qb_min =', qb_min
487 write(10, fmt=trim(fmt3))
'qbm_max =', qbm_max
488 #elif defined(QB_MAX) /* obsolete */
489 write(10, fmt=trim(fmt3))
'qb_max =', qb_max
491 write(10, fmt=trim(fmt3))
'age_min =', age_min
492 write(10, fmt=trim(fmt3))
'age_max =', age_max
493 write(10, fmt=trim(fmt3))
'mean_accum =', mean_accum
495 write(10, fmt=trim(fmt3))
'age_diff =', agediff
497 write(10, fmt=trim(fmt1))
' '
499 write(10, fmt=trim(fmt2))
'GRID =', grid
500 write(10, fmt=trim(fmt2))
'CALCMOD =', calcmod
501 write(10, fmt=trim(fmt2))
'FLOW_LAW =', flow_law
502 write(10, fmt=trim(fmt2))
'FIN_VISC =', fin_visc
503 write(10, fmt=trim(fmt2))
'MARGIN =', margin
505 write(10, fmt=trim(fmt2))
'MARINE_ICE_FORMATION =', marine_ice_formation
506 write(10, fmt=trim(fmt2))
'MARINE_ICE_CALVING =', marine_ice_calving
508 write(10, fmt=trim(fmt2))
'ICE_SHELF_CALVING =', ice_shelf_calving
510 write(10, fmt=trim(fmt2))
'ANF_DAT =', anf_dat
511 write(10, fmt=trim(fmt2))
'REBOUND =', rebound
512 write(10, fmt=trim(fmt2))
'Q_LITHO =', q_litho
513 write(10, fmt=trim(fmt2))
'ZS_EVOL =', zs_evol
514 write(10, fmt=trim(fmt2))
'CALCZS =', calczs
515 write(10, fmt=trim(fmt2))
'ADV_HOR =', adv_hor
516 write(10, fmt=trim(fmt2))
'ADV_VERT =', adv_vert
517 write(10, fmt=trim(fmt2))
'TOPOGRAD =', topograd
518 write(10, fmt=trim(fmt2))
'TSURFACE =', tsurface
519 write(10, fmt=trim(fmt2))
'ACCSURFACE =', accsurface
521 write(10, fmt=trim(fmt2))
'PRECIP_ANOM_INTERPOL =', precip_anom_interpol
523 write(10, fmt=trim(fmt2))
'SOLID_PRECIP =', solid_precip
524 write(10, fmt=trim(fmt2))
'ABLSURFACE =', ablsurface
525 write(10, fmt=trim(fmt2))
'SEA_LEVEL =', sea_level
526 write(10, fmt=trim(fmt2))
'SLIDE_LAW =', slide_law
527 write(10, fmt=trim(fmt2))
'Q_GEO_MOD =', q_geo_mod
528 write(10, fmt=trim(fmt1))
' '
530 #if defined(OUT_TIMES)
531 write(10, fmt=trim(fmt2))
'OUT_TIMES =', out_times
533 write(10, fmt=trim(fmt2))
'OUTPUT =', output
534 write(10, fmt=trim(fmt2))
'OUTSER =', outser
535 #if defined(OUTSER_V_A)
536 write(10, fmt=trim(fmt2))
'OUTSER_V_A =', outser_v_a
538 #if ( OUTPUT==1 || OUTPUT==2 )
539 write(10, fmt=trim(fmt2))
'ERGDAT =', ergdat
541 write(10, fmt=trim(fmt2))
'NETCDF =', netcdf
542 write(10, fmt=trim(fmt1))
' '
543 #if ( OUTPUT==2 || OUTPUT==3 )
544 write(10, fmt=trim(fmt2))
'n_output =', n_output
546 write(10, fmt=trim(fmt3))
'time_output =', time_output0(n)
548 write(10, fmt=trim(fmt1))
' '
551 write(10, fmt=trim(fmt1))
'Program version and date: '//version//
' / '//date
553 close(10, status=
'keep')
557 year_zero = year_zero*year_sec
558 time_init = time_init0*year_sec
559 time_end = time_end0*year_sec
560 dtime = dtime0*year_sec
561 dtime_temp = dtime_temp0*year_sec
563 dtime_wss = dtime_wss0*year_sec
565 dtime_ser = dtime_ser0*year_sec
566 #if ( OUTPUT==1 || OUTPUT==3 )
567 dtime_out = dtime_out0*year_sec
569 #if ( OUTPUT==2 || OUTPUT==3 )
571 time_output(n) = time_output0(n)*year_sec
575 if (abs(dtime_temp/dtime-nint(dtime_temp/dtime)) > eps) &
576 stop
' sico_init: dtime_temp must be a multiple of dtime!'
579 if (abs(dtime_wss/dtime-nint(dtime_wss/dtime)) > eps) &
580 stop
' sico_init: dtime_wss must be a multiple of dtime!'
587 #if (GRID==0 || GRID==1)
589 stop
' sico_init: GRID==0 or 1 not allowed for the Tibet application!'
593 open(21, iostat=ios, &
594 file=inpath//
'/tibet/'//precip_mm_present_file, &
595 recl=16384, status=
'old')
599 if (ios /= 0) stop
' sico_init: Error when opening the precipitation file!'
601 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
604 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do
606 read(21, fmt=*) (precip_present(j,i,n), i=0,imax)
610 close(21, status=
'keep')
614 precip_present = precip_present *(1.0e-03_dp/year_sec)*(rho_w/rho)
623 open(21, iostat=ios, &
624 file=inpath//
'/tibet/'//precip_mm_anom_file, &
625 recl=16384, status=
'old')
629 if (ios /= 0) stop
' sico_init: Error when opening the precip anomaly file!'
631 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
634 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do
636 read(21, fmt=*) (precip_lgm_anom(j,i,n), i=0,imax)
640 close(21, status=
'keep')
642 precip_lgm_anom = precip_lgm_anom * precip_mm_anom_fact
647 #if (PRECIP_ANOM_INTERPOL==1)
649 gamma_precip_lgm_anom(j,i,n) = 0.0_dp
651 #elif (PRECIP_ANOM_INTERPOL==2)
653 gamma_precip_lgm_anom(j,i,n) = -log(precip_lgm_anom(j,i,n))
656 stop
' sico_init: Wrong value of switch PRECIP_ANOM_INTERPOL!'
666 mean_accum = mean_accum*(1.0e-03_dp/year_sec)*(rho_w/rho)
669 mean_accum_inv = 1.0_dp/mean_accum
673 #if (GRID==0 || GRID==1)
675 stop
' sico_init: GRID==0 or 1 not allowed for the Tibet application!'
679 open(24, iostat=ios, &
680 file=inpath//
'/tibet/'//mask_present_file, &
681 recl=1024, status=
'old')
686 stop
' sico_init: Error when opening the mask file!'
688 do m=1, 6;
read(24, fmt=
'(a)') ch_dummy;
end do
691 read(24, fmt=trim(fmt4)) (maske_help(j,i), i=0,imax)
694 close(24, status=
'keep')
700 open(21, iostat=ios, &
701 file=inpath//
'/tibet/'//temp_mm_present_file, &
702 recl=16384, status=
'old')
706 if (ios /= 0) stop
' sico_init: Error when opening the temperature file!'
708 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
711 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do
713 read(21, fmt=*) (temp_mm_present(j,i,n), i=0,imax)
717 close(21, status=
'keep')
725 open(21, iostat=ios, &
726 file=inpath//
'/tibet/'//temp_mm_anom_file, &
727 recl=16384, status=
'old')
731 if (ios /= 0) stop
' sico_init: Error when opening the temperature anomaly file!'
733 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
736 do m=1, 3;
read(21, fmt=
'(a)') ch_dummy;
end do
738 read(21, fmt=*) (temp_mm_lgm_anom(j,i,n), i=0,imax)
742 close(21, status=
'keep')
744 temp_mm_lgm_anom = temp_mm_lgm_anom * temp_mm_anom_fact
751 #if (GRID==0 || GRID==1)
753 stop
' sico_init: GRID==0 or 1 not allowed for the Tibet application!'
757 open(21, iostat=ios, &
758 file=inpath//
'/tibet/'//zs_present_file, &
759 recl=16384, status=
'old')
763 if (ios /= 0) stop
' sico_init: Error when opening the zs file!'
765 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
768 read(21, fmt=*) (zs_ref(j,i), i=0,imax)
771 close(21, status=
'keep')
778 if (maske_help(j,i) >= 2) zs_ref(j,i) = 0.0_dp
786 open(21, iostat=ios, &
787 file=inpath//
'/general/'//grip_temp_file, &
790 stop
' sico_init: Error when opening the data file for delta_ts!'
792 read(21, fmt=*) ch_dummy, grip_time_min, grip_time_stp, grip_time_max
794 if (ch_dummy /=
'#')
then
795 write(6, fmt=*)
' sico_init: grip_time_min, grip_time_stp, grip_time_max'
796 write(6, fmt=*)
' not defined in data file for delta_ts!'
800 ndata_grip = (grip_time_max-grip_time_min)/grip_time_stp
802 allocate(griptemp(0:ndata_grip))
805 read(21, fmt=*) d_dummy, griptemp(n)
808 close(21, status=
'keep')
816 open(21, iostat=ios, &
817 file=inpath//
'/general/'//glac_ind_file, status=
'old')
818 if (ios /= 0) stop
' sico_init: Error when opening the glacial-index file!'
820 read(21, fmt=*) ch_dummy, gi_time_min, gi_time_stp, gi_time_max
822 if (ch_dummy /=
'#')
then
823 write(6, fmt=*)
' sico_init: gi_time_min, gi_time_stp, gi_time_max'
824 write(6, fmt=*)
' not defined in glacial-index file!'
828 ndata_gi = (gi_time_max-gi_time_min)/gi_time_stp
830 allocate(glacial_index(0:ndata_gi))
833 read(21, fmt=*) d_dummy, glacial_index(n)
836 close(21, status=
'keep')
844 open(21, iostat=ios, &
845 file=inpath//
'/general/'//sea_level_file, &
848 stop
' sico_init: Error when opening the data file for z_sl!'
850 read(21, fmt=*) ch_dummy, specmap_time_min, specmap_time_stp, specmap_time_max
852 if (ch_dummy /=
'#')
then
853 write(6, fmt=*)
' sico_init: specmap_time_min, specmap_time_stp, specmap_time_max'
854 write(6, fmt=*)
' not defined in data file for z_sl!'
858 ndata_specmap = (specmap_time_max-specmap_time_min)/specmap_time_stp
860 allocate(specmap_zsl(0:ndata_specmap))
862 do n=0, ndata_specmap
863 read(21, fmt=*) d_dummy, specmap_zsl(n)
866 close(21, status=
'keep')
878 q_geo(j,i) = q_geo *1.0e-03_dp
886 open(21, iostat=ios, &
887 file=inpath//
'/tibet/'//q_geo_file, &
888 recl=16384, status=
'old')
890 if (ios /= 0) stop
' sico_init: Error when opening the qgeo file!'
892 do m=1, 6;
read(21, fmt=
'(a)') ch_dummy;
end do
895 read(21, fmt=*) (q_geo(j,i), i=0,imax)
898 close(21, status=
'keep')
902 q_geo(j,i) = q_geo(j,i) *1.0e-03_dp
910 #if (REBOUND==0 || REBOUND==1)
912 kei = 0.0_dp; n_data_kei = 0; kei_r_max = 0.0_dp; kei_r_incr = 0.0_dp
926 stop
' sico_init: ANF_DAT==1 not allowed for Tibet application!'
936 call
boundary(time_init, dtime, dxi, deta, &
937 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
944 q_b_tot(j,i) = 0.0_dp
950 temp_c(kc,j,i) = temp_s(j,i)
951 age_c(kc,j,i) = 15000.0_dp*year_sec
955 omega_t(kt,j,i) = 0.0_dp
956 age_t(kt,j,i) = 15000.0_dp*year_sec
960 temp_r(kr,j,i) = temp_s(j,i)+q_geo(j,i)*h_r/kappa_r &
961 *(1.0_dp-
real(kr,dp)/
real(krmax,dp))
980 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
983 call
boundary(time_init, dtime, dxi, deta, &
984 delta_ts, glac_index, z_sl, dzsl_dtau, z_mar)
986 q_b_tot = q_bm + q_tld
999 dist_dxdy(jr,ir) = sqrt( (sq_g11_g(jmax/2,imax/2)*
real(ir,dp)*dxi)**2 &
1000 + (sq_g22_g(jmax/2,imax/2)*
real(jr,dp)*deta)**2 )
1015 zeta_c(kc) = kc*dzeta_c
1016 eaz_c(kc) = exp(deform*zeta_c(kc))
1017 eaz_c_quotient(kc) = (eaz_c(kc)-1.0_dp)/(ea-1.0_dp)
1021 zeta_t(kt) = kt*dzeta_t
1032 call
calc_vxy_ssa(z_sl, dxi, deta, dzeta_c, ii, jj, nn)
1045 open(12, iostat=ios, &
1046 file=outpath//
'/'//trim(runname)//
'.ser', &
1049 stop
' sico_init: Error when opening the ser file!'
1051 if (forcing_flag == 1)
then
1056 #if ( !defined(OUTSER_V_A) || OUTSER_V_A==1 )
1058 1102
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
1059 ' H_max(m) zs_max(m) V_g(m^3)', &
1060 ' V_t(m^3) V_fw(m^3/a) V_sle(m)',/, &
1061 ' A_g(m^2) A_t(m^2) V_bm(m^3/a)', &
1062 ' V_tld(m^3/a) H_t_max(m) vs_max(m/a)')
1063 1103
format(
'----------------------------------------------------', &
1064 '---------------------------------------')
1068 1102
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
1069 ' V(m^3) V_g(m^3) V_f(m^3)', &
1070 ' A(m^2) A_g(m^2) A_f(m^2)',/, &
1071 ' H_max(m) zs_max(m)', &
1072 ' V_t(m^3) V_fw(m^3/a) V_sle(m)',/, &
1073 ' A_t(m^2) V_bm(m^3/a)', &
1074 ' V_tld(m^3/a) H_t_max(m) vs_max(m/a)')
1075 1103
format(
'----------------------------------------------------', &
1076 '---------------------------------------')
1079 stop
' sico_init: OUTSER_V_A must be either 1 or 2!'
1082 else if (forcing_flag == 2)
then
1087 #if ( !defined(OUTSER_V_A) || OUTSER_V_A==1 )
1089 1112
format(
' t(a) glac_ind(1) z_sl(m)',/, &
1090 ' H_max(m) zs_max(m) V_g(m^3)', &
1091 ' V_t(m^3) V_fw(m^3/a) V_sle(m)',/, &
1092 ' A_g(m^2) A_t(m^2) V_bm(m^3/a)', &
1093 ' V_tld(m^3/a) H_t_max(m) vs_max(m/a)')
1094 1113
format(
'----------------------------------------------------', &
1095 '---------------------------------------')
1099 1112
format(
' t(a) glac_ind(1) z_sl(m)',/, &
1100 ' V(m^3) V_g(m^3) V_f(m^3)', &
1101 ' A(m^2) A_g(m^2) A_f(m^2)',/, &
1102 ' H_max(m) zs_max(m)', &
1103 ' V_t(m^3) V_fw(m^3/a) V_sle(m)',/, &
1104 ' A_t(m^2) V_bm(m^3/a)', &
1105 ' V_tld(m^3/a) H_t_max(m) vs_max(m/a)')
1106 1113
format(
'----------------------------------------------------', &
1107 '---------------------------------------')
1110 stop
' sico_init: OUTSER_V_A must be either 1 or 2!'
1119 open(13, iostat=ios, &
1120 file=outpath//
'/'//trim(runname)//
'.thk', &
1122 if (ios /= 0) stop
' sico_init: Error when opening the thk file!'
1124 if (forcing_flag == 1)
then
1129 1104
format(
' t(a) D_Ts(deg C) z_sl(m)',/, &
1130 ' H(m): JMAX+1 records [j = JMAX (-1) 0] with',/, &
1131 ' IMAX+1 values [i = 0 (1) IMAX] in each record')
1132 1105
format(
'----------------------------------------------------')
1134 else if (forcing_flag == 2)
then
1139 1114
format(
' t(a) glac_ind(1) z_sl(m)',/, &
1140 ' H(m): JMAX+1 records [j = JMAX (-1) 0] with',/, &
1141 ' IMAX+1 values [i = 0 (1) IMAX] in each record')
1142 1115
format(
'----------------------------------------------------')
1153 flag_3d_output = .false.
1155 flag_3d_output = .true.
1157 stop
' sico_init: ERGDAT must be either 0 or 1!'
1161 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1162 flag_3d_output, ndat2d, ndat3d)
1164 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1165 flag_3d_output, ndat2d, ndat3d)
1167 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1172 if (time_output(1) <= time_init+eps)
then
1175 flag_3d_output = .false.
1177 flag_3d_output = .true.
1179 stop
' sico_init: ERGDAT must be either 0 or 1!'
1183 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1184 flag_3d_output, ndat2d, ndat3d)
1186 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1187 flag_3d_output, ndat2d, ndat3d)
1189 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1196 flag_3d_output = .false.
1199 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1200 flag_3d_output, ndat2d, ndat3d)
1202 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1203 flag_3d_output, ndat2d, ndat3d)
1205 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1208 if (time_output(1) <= time_init+eps)
then
1210 flag_3d_output = .true.
1213 call
output1(runname, time_init, delta_ts, glac_index, z_sl, &
1214 flag_3d_output, ndat2d, ndat3d)
1216 call
output_nc(runname, time_init, delta_ts, glac_index, z_sl, &
1217 flag_3d_output, ndat2d, ndat3d)
1219 stop
' sico_init: Parameter NETCDF must be either 1 or 2!'
1225 stop
' sico_init: OUTPUT must be either 1, 2 or 3!'
1228 call
output2(time_init, dxi, deta, delta_ts, glac_index, z_sl)
1230 call
output3(time_init, delta_ts, glac_index, z_sl)