57 subroutine output1(runname, time, delta_ts, glac_index, z_sl, &
58 flag_3d_output, ndat2d, ndat3d)
60 #if (CALCMOD==1 || CALCMOD==0 || CALCMOD==-1) 64 #if (NETCDF==2) /* time-slice file in NetCDF format */ 75 real(dp),
intent(in) :: time, delta_ts, glac_index, z_sl
76 character(len=100),
intent(in) :: runname
77 logical,
intent(in) :: flag_3d_output
79 integer(i4b),
intent(inout) :: ndat2d, ndat3d
81 integer(i4b) :: i, j, kc, kt, kr
82 integer(i4b) :: ndat, ndat_help, ndat_1000s, ndat_100s, ndat_10s, ndat_1s
83 real(dp),
dimension(0:JMAX,0:IMAX) :: H, H_cold, H_temp, dH_dtau
84 real(dp),
dimension(0:JMAX,0:IMAX) :: vx_m_g, vy_m_g
85 real(dp),
dimension(0:JMAX,0:IMAX) :: tau_b_driving, tau_b_drag
86 real(dp) :: V_tot, V_grounded, V_floating, V_gr_redu, V_af
87 real(dp) :: A_grounded, A_floating
88 real(sp) :: lon0, lat0
89 real(dp) :: rhosw_rho_ratio
90 character(len=256) :: filename, filename_with_path
91 character :: ch_1000s, ch_100s, ch_10s, ch_1s
92 character(len=16) :: ch_date, ch_time, ch_zone
94 integer(i2b),
dimension(0:IMAX,0:JMAX) :: maske_conv, maske_old_conv, &
95 mask_run_conv, n_cts_conv, kc_cts_conv
96 integer(i2b),
dimension(0:IMAX,0:JMAX) :: mask_mar_conv
97 integer(i1b),
dimension(0:IMAX,0:JMAX) :: flag_shelfy_stream_x_conv, &
98 flag_shelfy_stream_y_conv, &
99 flag_shelfy_stream_conv
101 real(sp) :: time_conv, delta_ts_conv, glac_index_conv, z_sl_conv, &
102 V_tot_conv, V_af_conv, A_grounded_conv, A_floating_conv, &
104 xi_conv(0:imax), eta_conv(0:jmax), &
105 sigma_level_c_conv(0:kcmax), sigma_level_t_conv(0:ktmax), &
106 sigma_level_r_conv(0:krmax)
107 real(sp),
dimension(0:IMAX,0:JMAX) :: lambda_conv, phi_conv, &
108 lon_conv, lat_conv, &
109 temp_s_conv, accum_conv, as_perp_conv, as_perp_apl_conv, &
111 zs_conv, zm_conv, zb_conv, zl_conv, zl0_conv, &
112 H_cold_conv, H_temp_conv, H_conv, &
113 Q_bm_conv, Q_tld_conv, &
116 dzs_dtau_conv, dzm_dtau_conv, dzb_dtau_conv, dzl_dtau_conv, &
117 dH_c_dtau_conv, dH_t_dtau_conv, dH_dtau_conv, &
118 vx_b_g_conv, vy_b_g_conv, vz_b_conv, vh_b_conv, &
119 vx_s_g_conv, vy_s_g_conv, vz_s_conv, vh_s_conv, &
120 vx_m_g_conv, vy_m_g_conv, vh_m_conv, &
121 temp_b_conv, temph_b_conv, &
122 tau_b_driving_conv, tau_b_drag_conv, &
123 p_b_w_conv, H_w_conv, q_gl_g_conv, q_cf_g_conv, &
124 cst_dist_conv, cos_grad_tc_conv, dis_perp_conv, &
125 ratio_sl_x_conv, ratio_sl_y_conv, &
128 real(sp),
dimension(0:IMAX,0:JMAX,0:KCMAX) :: vx_c_conv, vy_c_conv, vz_c_conv, &
129 temp_c_conv, age_c_conv, &
130 enth_c_conv, omega_c_conv, &
132 real(sp),
dimension(0:IMAX,0:JMAX,0:KTMAX) :: vx_t_conv, vy_t_conv, vz_t_conv, &
133 omega_t_conv, age_t_conv, &
136 real(sp),
dimension(0:IMAX,0:JMAX,0:KRMAX) :: temp_r_conv
138 #if (NETCDF==1) /* time-slice file in native binary format */ 141 character(len=256) :: ch_attr_title, ch_attr_institution, ch_attr_source, &
142 ch_attr_history, ch_attr_references
143 character(len= 16),
parameter :: filename_extension =
'.erg' 145 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 147 integer(i4b) :: ncid, ncv
150 integer(i4b) :: ncd, nc1d, nc2d(2), nc3d(3)
155 integer(i4b) :: nc2flag(2), nc3flag(3), nc4flag(4)
159 integer(i4b) :: nc1cor_i(1), nc1cor_j(1), &
160 nc1cor_kc(1), nc1cor_kt(1), nc1cor_kr(1), &
162 nc3cor_ijkc(3), nc3cor_ijkt(3), nc3cor_ijkr(3)
166 integer(i4b) :: nc1cnt_i(1), nc1cnt_j(1), &
167 nc1cnt_kc(1), nc1cnt_kt(1), nc1cnt_kr(1), &
169 nc3cnt_ijkc(3), nc3cnt_ijkt(3), nc3cnt_ijkr(3)
173 character(len=256) :: buffer
174 character(len= 16),
parameter :: filename_extension =
'.nc' 175 character(len= 16),
allocatable :: coord_id(:)
178 stop
' >>> output1: Parameter NETCDF must be either 1 or 2!' 181 character(len=64),
parameter :: thisroutine =
'output1' 183 #if (NETCDF==2) /* time-slice file in NetCDF format */ 186 nc1cnt_i = (/ imax+1 /)
189 nc1cnt_j = (/ jmax+1 /)
192 nc1cnt_kc = (/ kcmax+1 /)
195 nc1cnt_kt = (/ ktmax+1 /)
198 nc1cnt_kr = (/ krmax+1 /)
200 nc2cor_ij = (/ 1, 1 /)
201 nc2cnt_ij = (/ imax+1, jmax+1 /)
203 nc3cor_ijkc = (/ 1, 1, 1 /)
204 nc3cnt_ijkc = (/ imax+1, jmax+1, kcmax+1 /)
206 nc3cor_ijkt = (/ 1, 1, 1 /)
207 nc3cnt_ijkt = (/ imax+1, jmax+1, ktmax+1 /)
209 nc3cor_ijkr = (/ 1, 1, 1 /)
210 nc3cnt_ijkr = (/ imax+1, jmax+1, krmax+1 /)
216 if (flag_3d_output)
then 222 if (ndat > 9999) stop
' >>> output1: Too many time-slice files!' 225 ndat_1000s = ndat_help/1000
226 ndat_help = ndat_help-ndat_1000s*1000
227 ndat_100s = ndat_help/100
228 ndat_help = ndat_help-ndat_100s*100
229 ndat_10s = ndat_help/10
230 ndat_help = ndat_help-ndat_10s*10
233 ch_1000s = char(ndat_1000s+ichar(
'0'))
234 ch_100s = char(ndat_100s +ichar(
'0'))
235 ch_10s = char(ndat_10s +ichar(
'0'))
236 ch_1s = char(ndat_1s +ichar(
'0'))
238 if (flag_3d_output)
then 239 filename = trim(runname)//ch_1000s//ch_100s//ch_10s//ch_1s &
240 //trim(filename_extension)
242 filename = trim(runname)//
'_2d_'//ch_1000s//ch_100s//ch_10s//ch_1s &
243 //trim(filename_extension)
246 filename_with_path = trim(outpath)//
'/'//trim(filename)
250 #if (NETCDF==1) /* time-slice file in native binary format */ 254 open(unit=11, iostat=ios, file=trim(filename_with_path), status=
'new', &
257 if (ios /= 0) stop
' >>> output1: Error when opening an erg file!' 261 ch_attr_title =
'Time-slice output no. '//ch_1000s//ch_100s//ch_10s//ch_1s// &
262 ' of simulation '//trim(runname)
263 write(unit=11) ch_attr_title
265 ch_attr_institution =
'Institute of Low Temperature Science, '// &
266 'Hokkaido University, Sapporo, Japan' 267 write(unit=11) ch_attr_institution
269 ch_attr_source =
'SICOPOLIS Version '//version
270 write(unit=11) ch_attr_source
272 call date_and_time(ch_date, ch_time, ch_zone)
273 ch_attr_history = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
274 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
275 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 276 write(unit=11) ch_attr_history
278 ch_attr_references =
'http://www.sicopolis.net/' 279 write(unit=11) ch_attr_references
281 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 283 if (
allocated(coord_id))
deallocate(coord_id);
allocate(coord_id(5))
284 coord_id(1) =
'x'; coord_id(2) =
'y' 285 coord_id(3) =
'zeta_c'; coord_id(4) =
'zeta_t'; coord_id(5) =
'zeta_r' 289 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
294 buffer =
'Time-slice output no. '//ch_1000s//ch_100s//ch_10s//ch_1s// &
295 ' of simulation '//trim(runname)
296 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
299 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
301 call check( nf90_put_att(ncid, nf90_global,
'institution', trim(buffer)), &
304 buffer =
'SICOPOLIS Version '//version
305 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
308 call date_and_time(ch_date, ch_time, ch_zone)
309 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
310 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
311 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 312 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
315 buffer =
'http://www.sicopolis.net/' 316 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
321 call check( nf90_def_dim(ncid, trim(coord_id(1)), imax+1, ncd), thisroutine )
322 call check( nf90_def_dim(ncid, trim(coord_id(2)), jmax+1, ncd), thisroutine )
323 call check( nf90_def_dim(ncid, trim(coord_id(3)), kcmax+1, ncd), thisroutine )
324 call check( nf90_def_dim(ncid, trim(coord_id(4)), ktmax+1, ncd), thisroutine )
325 call check( nf90_def_dim(ncid, trim(coord_id(5)), krmax+1, ncd), thisroutine )
331 call check( nf90_def_var(ncid,
'crs', nf90_short, ncv), thisroutine )
332 #if (GRID==0 || GRID==1) 333 buffer =
'polar_stereographic' 334 call check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
337 buffer =
'latitude_longitude' 338 call check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
347 || defined(emtp2sge) \
348 || defined(xyz)) /* terrestrial ice sheet */
350 call check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
352 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 353 buffer =
'Mars_ellipsoid' 354 call check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
357 stop
' >>> output1: No valid domain (ANT, GRL etc.) specified!' 359 #if (GRID==0 || GRID==1) 360 call check( nf90_put_att(ncid, ncv,
'false_easting', 0.0), &
362 call check( nf90_put_att(ncid, ncv,
'false_northing', 0.0), &
365 lon0 = modulo(lon0+180.0_sp, 360.0_sp)-180.0_sp
366 lon0 = nint(lon0*1.0e+04_sp)*1.0e-04_sp
368 if (lat0 > 90.0_sp) lat0 = 90.0_sp
369 if (lat0 < -90.0_sp) lat0 = -90.0_sp
370 lat0 = nint(lat0*1.0e+04_sp)*1.0e-04_sp
372 if (lat0 >= 0.0_sp)
then 373 call check( nf90_put_att(ncid, ncv, &
374 'latitude_of_projection_origin', 90.0), &
377 call check( nf90_put_att(ncid, ncv, &
378 'latitude_of_projection_origin', -90.0), &
381 call check( nf90_put_att(ncid, ncv, &
382 'straight_vertical_longitude_from_pole', lon0), &
384 call check( nf90_put_att(ncid, ncv, &
385 'standard_parallel', lat0), &
391 call check( nf90_def_var(ncid,
'time', nf90_float, ncv), &
394 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
397 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
400 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
407 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, ncv), &
410 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
412 buffer =
'surface_temperature_anomaly' 413 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
415 buffer =
'Surface temperature anomaly' 416 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
423 call check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
426 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
428 buffer =
'glacial_index' 429 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
431 buffer =
'Glacial index' 432 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
439 call check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
442 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
444 buffer =
'glacial_index' 445 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
447 buffer =
'Glacial index' 448 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
450 buffer =
'This variable will be assigned a dummy value only!' 451 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
458 call check( nf90_def_var(ncid,
'z_sl', nf90_float, ncv), &
461 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
463 buffer =
'global_average_sea_level_change' 464 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
467 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
472 call check( nf90_def_var(ncid,
'V_tot', nf90_float, ncv), &
475 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
477 buffer =
'land_ice_volume' 478 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
480 buffer =
'Ice volume' 481 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
486 call check( nf90_def_var(ncid,
'V_af', nf90_float, ncv), &
489 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
491 buffer =
'land_ice_volume_not_displacing_sea_water' 492 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
494 buffer =
'Ice volume above flotation' 495 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
500 call check( nf90_def_var(ncid,
'A_grounded', nf90_float, ncv), &
503 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
505 buffer =
'grounded_land_ice_area' 506 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
508 buffer =
'Area covered by grounded ice' 509 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
514 call check( nf90_def_var(ncid,
'A_floating', nf90_float, ncv), &
517 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
519 buffer =
'floating_ice_shelf_area' 520 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
522 buffer =
'Area covered by floating ice' 523 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
528 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc1d), &
530 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
533 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
535 buffer =
'projection_x_coordinate' 536 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
538 buffer =
'x-coordinate of the grid point i' 539 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
541 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), &
546 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc1d), &
548 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
551 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
553 buffer =
'projection_y_coordinate' 554 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
556 buffer =
'y-coordinate of the grid point j' 557 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
559 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), &
564 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc1d), &
566 call check( nf90_def_var(ncid,
'sigma_level_c', nf90_float, nc1d, ncv), &
569 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
571 buffer =
'land_ice_kc_layer_sigma_coordinate' 572 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
574 buffer =
'sigma-coordinate of the grid point kc' 575 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
580 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc1d), &
582 call check( nf90_def_var(ncid,
'sigma_level_t', nf90_float, nc1d, ncv), &
585 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
587 buffer =
'land_ice_kt_layer_sigma_coordinate' 588 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
590 buffer =
'sigma-coordinate of the grid point kt' 591 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
596 call check( nf90_inq_dimid(ncid, trim(coord_id(5)), nc1d), &
598 call check( nf90_def_var(ncid,
'sigma_level_r', nf90_float, nc1d, ncv), &
601 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
603 buffer =
'lithosphere_layer_sigma_coordinate' 604 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
606 buffer =
'sigma-coordinate of the grid point kr' 607 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
612 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
614 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
616 call check( nf90_def_var(ncid,
'lon', nf90_float, nc2d, ncv), &
619 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
622 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
624 buffer =
'Geographical longitude' 625 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
630 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
632 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
634 call check( nf90_def_var(ncid,
'lat', nf90_float, nc2d, ncv), &
637 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
640 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
642 buffer =
'Geographical latitude' 643 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
648 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
650 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
652 call check( nf90_def_var(ncid,
'lambda', nf90_float, nc2d, ncv), &
655 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
658 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
660 buffer =
'Geographical longitude' 661 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
663 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
665 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
670 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
672 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
674 call check( nf90_def_var(ncid,
'phi', nf90_float, nc2d, ncv), &
677 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
680 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
682 buffer =
'Geographical latitude' 683 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
685 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
687 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
692 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
694 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
696 call check( nf90_def_var(ncid,
'temp_s', nf90_float, nc2d, ncv), &
699 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
701 buffer =
'surface_temperature' 702 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
704 buffer =
'Temperature at the ice surface' 705 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
707 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
709 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
714 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
716 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
718 call check( nf90_def_var(ncid,
'prec', nf90_float, nc2d, ncv), &
721 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
723 buffer =
'land_ice_precipitation' 724 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
726 buffer =
'Annual precipitation at the ice surface' 727 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
729 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
731 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
736 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
738 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
740 call check( nf90_def_var(ncid,
'as_perp', nf90_float, nc2d, ncv), &
743 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
745 buffer =
'land_ice_surface_mass_balance' 746 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
748 buffer =
'Mass balance at the ice surface' 749 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
751 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
753 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
758 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
760 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
762 call check( nf90_def_var(ncid,
'as_perp_apl', nf90_float, nc2d, ncv), &
765 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
767 buffer =
'applied_land_ice_surface_mass_balance' 768 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
770 buffer =
'Applied mass balance at the ice surface' 771 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
773 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
775 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
778 #if (DISC>0) /* Ice discharge parameterisation */ 782 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
784 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
786 call check( nf90_def_var(ncid,
'dis_perp', nf90_float, nc2d, ncv), &
789 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
791 buffer =
'ice_discharge' 792 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
794 buffer =
'Ice discharge' 795 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
797 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
799 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
804 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
806 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
808 call check( nf90_def_var(ncid,
'cst_dist', nf90_float, nc2d, ncv), &
811 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
813 buffer =
'coastal_distance' 814 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
816 buffer =
'Coastal distance' 817 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
819 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
821 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
826 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
828 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
830 call check( nf90_def_var(ncid,
'cos_grad_tc', nf90_float, nc2d, ncv), &
833 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
836 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
838 buffer =
'Cosine of angle between surface gradient and cst dist gradient' 839 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
841 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
843 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
848 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
850 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
852 call check( nf90_def_var(ncid,
'mask_mar', nf90_short, nc2d, ncv), &
854 buffer =
'marginal_ring_mask' 855 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
857 buffer =
'Marginal ring mask' 858 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
861 call check( nf90_put_att(ncid, ncv,
'flag_values', nc2flag), &
863 buffer =
'no_ring '// &
865 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
867 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
869 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
876 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
878 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
880 call check( nf90_def_var(ncid,
'q_geo', nf90_float, nc2d, ncv), &
883 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
885 buffer =
'upward_geothermal_heat_flux_at_ground_level' 886 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
888 buffer =
'Geothermal heat flux' 889 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
891 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
893 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
898 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
900 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
902 call check( nf90_def_var(ncid,
'maske', nf90_short, nc2d, ncv), &
904 buffer =
'ice_land_sea_mask' 905 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
907 buffer =
'Ice-land-sea mask' 908 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
910 nc4flag = (/ 0, 1, 2, 3 /)
911 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
913 buffer =
'glaciated_land '// &
917 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
919 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
921 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
926 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
928 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
930 call check( nf90_def_var(ncid,
'maske_old', nf90_short, nc2d, ncv), &
932 buffer =
'ice_land_sea_mask_old' 933 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
935 buffer =
'Ice-land-sea mask (old)' 936 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
938 nc4flag = (/ 0, 1, 2, 3 /)
939 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
941 buffer =
'glaciated_land '// &
945 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
947 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
949 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
954 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
956 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
958 call check( nf90_def_var(ncid,
'mask_run', nf90_short, nc2d, ncv), &
960 buffer =
'indicating_melt_type_mask' 961 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
963 buffer =
'Mask indicating melt type' 964 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
966 nc4flag = (/ -2, -1, 1, 2 /)
967 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
969 buffer =
'hidden in ocean '// &
970 'hidden on land '// &
971 'visible on land '// &
973 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
975 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
977 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
982 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
984 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
986 call check( nf90_def_var(ncid,
'n_cts', nf90_short, nc2d, ncv), &
988 buffer =
'polythermal_condition_mask' 989 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
991 buffer =
'Mask for polythermal conditions' 992 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
994 nc3flag = (/ -1, 0, 1 /)
995 call check( nf90_put_att(ncid, ncv,
'flag_values', nc3flag), &
997 buffer =
'cold_base '// &
998 'temperate_base_with_cold_ice_above '// &
999 'temperate_base_with_temperate_ice_above' 1000 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
1002 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1004 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1009 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1011 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1013 call check( nf90_def_var(ncid,
'kc_cts', nf90_short, nc2d, ncv), &
1015 buffer =
'CTS_position_grid_index' 1016 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1018 buffer =
'Grid index of the CTS position' 1019 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1021 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1023 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1028 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1030 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1032 call check( nf90_def_var(ncid,
'zs', nf90_float, nc2d, ncv), &
1035 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1037 buffer =
'surface_altitude' 1038 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1040 buffer =
'Topography of the free surface' 1041 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1043 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1045 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1050 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1052 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1054 call check( nf90_def_var(ncid,
'zm', nf90_float, nc2d, ncv), &
1057 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1059 buffer =
'zm_interface_altitude' 1060 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1062 buffer =
'Topography of the z=zm interface' 1063 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1065 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1067 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1072 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1074 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1076 call check( nf90_def_var(ncid,
'zb', nf90_float, nc2d, ncv), &
1079 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1081 buffer =
'ice_base_altitude' 1082 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1084 buffer =
'Topography of the ice base' 1085 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1087 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1089 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1094 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1096 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1098 call check( nf90_def_var(ncid,
'zl', nf90_float, nc2d, ncv), &
1101 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1103 buffer =
'bedrock_altitude' 1104 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1106 buffer =
'Topography of the lithosphere surface' 1107 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1109 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1111 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1116 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1118 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1120 call check( nf90_def_var(ncid,
'zl0', nf90_float, nc2d, ncv), &
1123 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1125 buffer =
'isostatically_relaxed_bedrock_altitude' 1126 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1128 buffer =
'Topography of the isostatically relaxed lithosphere surface' 1129 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1131 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1133 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1138 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1140 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1142 call check( nf90_def_var(ncid,
'H_cold', nf90_float, nc2d, ncv), &
1145 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1147 buffer =
'land_ice_cold_layer_thickness' 1148 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1150 buffer =
'Thickness of the cold ice layer' 1151 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1153 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1155 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1160 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1162 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1164 call check( nf90_def_var(ncid,
'H_temp', nf90_float, nc2d, ncv), &
1167 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1169 buffer =
'land_ice_temperate_layer_thickness' 1170 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1172 buffer =
'Thickness of the temperate ice layer' 1173 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1175 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1177 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1182 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1184 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1186 call check( nf90_def_var(ncid,
'H', nf90_float, nc2d, ncv), &
1189 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1191 buffer =
'land_ice_thickness' 1192 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1194 buffer =
'Ice thickness' 1195 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1197 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1199 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1204 call check( nf90_def_var(ncid,
'H_R', nf90_float, ncv), &
1207 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1209 buffer =
'lithosphere_layer_thickness' 1210 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1212 buffer =
'Thickness of the lithosphere layer' 1213 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1218 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1220 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1222 call check( nf90_def_var(ncid,
'Q_bm', nf90_float, nc2d, ncv), &
1225 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1227 buffer =
'land_ice_basal_melt_rate' 1228 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1230 buffer =
'Basal melting rate' 1231 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1233 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1235 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1240 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1242 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1244 call check( nf90_def_var(ncid,
'Q_tld', nf90_float, nc2d, ncv), &
1247 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1249 buffer =
'land_ice_temperate_layer_water_drainage' 1250 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1252 buffer =
'Water drainage from the temperate layer' 1253 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1255 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1257 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1262 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1264 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1266 call check( nf90_def_var(ncid,
'am_perp', nf90_float, nc2d, ncv), &
1269 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1271 buffer =
'land_ice_volume_flux_across_zm_interface' 1272 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1274 buffer =
'Volume flux across the z=zm interface' 1275 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1277 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1279 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1284 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1286 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1288 call check( nf90_def_var(ncid,
'qx', nf90_float, nc2d, ncv), &
1291 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1293 buffer =
'land_ice_vertical_integral_x_velocity' 1294 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1296 buffer =
'Horizontal volume flux qx' 1297 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1299 buffer =
'Staggered grid variable, defined at (j,i+1/2)' 1300 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1302 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1304 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1309 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1311 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1313 call check( nf90_def_var(ncid,
'qy', nf90_float, nc2d, ncv), &
1316 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1318 buffer =
'land_ice_vertical_integral_y_velocity' 1319 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1321 buffer =
'Horizontal volume flux qy' 1322 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1324 buffer =
'Staggered grid variable, defined at (j+1/2,i)' 1325 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1327 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1329 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1334 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1336 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1338 call check( nf90_def_var(ncid,
'dzs_dt', nf90_float, nc2d, ncv), &
1341 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1343 buffer =
'tendency_of_surface_altitude' 1344 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1346 buffer =
'Rate of change of the topography of the free surface' 1347 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1349 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1351 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1356 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1358 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1360 call check( nf90_def_var(ncid,
'dzm_dt', nf90_float, nc2d, ncv), &
1363 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1365 buffer =
'tendency_of_zm_interface_altitude' 1366 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1368 buffer =
'Rate of change of the topography of the z=zm interface' 1369 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1371 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1373 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1378 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1380 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1382 call check( nf90_def_var(ncid,
'dzb_dt', nf90_float, nc2d, ncv), &
1385 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1387 buffer =
'tendency_of_ice_base_altitude' 1388 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1390 buffer =
'Rate of change of the topography of the ice base' 1391 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1393 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1395 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1400 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1402 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1404 call check( nf90_def_var(ncid,
'dzl_dt', nf90_float, nc2d, ncv), &
1407 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1409 buffer =
'tendency_of_bedrock_altitude' 1410 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1412 buffer =
'Rate of change of the topography of the lithosphere surface' 1413 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1415 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1417 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1422 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1424 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1426 call check( nf90_def_var(ncid,
'dH_c_dt', nf90_float, nc2d, ncv), &
1429 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1431 buffer =
'tendency_of_land_ice_kc_layer_thickness' 1432 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1434 buffer =
'Rate of change of the thickness of the upper (kc) ice layer' 1435 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1437 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1439 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1444 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1446 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1448 call check( nf90_def_var(ncid,
'dH_t_dt', nf90_float, nc2d, ncv), &
1451 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1453 buffer =
'tendency_of_land_ice_kt_layer_thickness' 1454 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1456 buffer =
'Rate of change of the thickness of the lower (kt) ice layer' 1457 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1459 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1461 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1466 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1468 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1470 call check( nf90_def_var(ncid,
'dH_dt', nf90_float, nc2d, ncv), &
1473 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1475 buffer =
'tendency_of_land_ice_thickness' 1476 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1478 buffer =
'Rate of change of the ice thickness' 1479 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1481 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1483 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1488 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1490 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1492 call check( nf90_def_var(ncid,
'vx_b_g', nf90_float, nc2d, ncv), &
1495 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1497 buffer =
'land_ice_base_x_velocity' 1498 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1500 buffer =
'Horizontal velocity vx at the ice base' 1501 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1503 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1505 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1510 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1512 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1514 call check( nf90_def_var(ncid,
'vy_b_g', nf90_float, nc2d, ncv), &
1517 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1519 buffer =
'land_ice_base_y_velocity' 1520 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1522 buffer =
'Horizontal velocity vy at the ice base' 1523 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1525 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1527 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1532 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1534 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1536 call check( nf90_def_var(ncid,
'vz_b', nf90_float, nc2d, ncv), &
1539 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1541 buffer =
'land_ice_base_z_velocity' 1542 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1544 buffer =
'Vertical velocity vz at the ice base' 1545 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1547 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1549 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1554 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1556 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1558 call check( nf90_def_var(ncid,
'vh_b', nf90_float, nc2d, ncv), &
1561 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1563 buffer =
'land_ice_base_horizontal_velocity' 1564 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1566 buffer =
'Horizontal velocity vh at the ice base' 1567 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1569 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1571 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1576 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1578 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1580 call check( nf90_def_var(ncid,
'vx_s_g', nf90_float, nc2d, ncv), &
1583 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1585 buffer =
'land_ice_surface_x_velocity' 1586 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1588 buffer =
'Horizontal velocity vx at the ice surface' 1589 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1591 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1593 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1598 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1600 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1602 call check( nf90_def_var(ncid,
'vy_s_g', nf90_float, nc2d, ncv), &
1605 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1607 buffer =
'land_ice_surface_y_velocity' 1608 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1610 buffer =
'Horizontal velocity vy at the ice surface' 1611 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1613 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1615 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1620 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1622 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1624 call check( nf90_def_var(ncid,
'vz_s', nf90_float, nc2d, ncv), &
1627 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1629 buffer =
'land_ice_surface_z_velocity' 1630 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1632 buffer =
'Vertical velocity vz at the ice surface' 1633 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1635 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1637 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1642 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1644 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1646 call check( nf90_def_var(ncid,
'vh_s', nf90_float, nc2d, ncv), &
1649 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1651 buffer =
'land_ice_surface_horizontal_velocity' 1652 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1654 buffer =
'Horizontal velocity vh at the ice surface' 1655 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1657 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1659 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1664 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1666 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1668 call check( nf90_def_var(ncid,
'vx_m_g', nf90_float, nc2d, ncv), &
1671 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1673 buffer =
'land_ice_vertical_mean_x_velocity' 1674 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1676 buffer =
'Vertical mean of horizontal velocity vx' 1677 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1679 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1681 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1686 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1688 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1690 call check( nf90_def_var(ncid,
'vy_m_g', nf90_float, nc2d, ncv), &
1693 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1695 buffer =
'land_ice_vertical_mean_y_velocity' 1696 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1698 buffer =
'Vertical mean of horizontal velocity vy' 1699 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1701 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1703 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1708 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1710 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1712 call check( nf90_def_var(ncid,
'vh_m', nf90_float, nc2d, ncv), &
1715 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1717 buffer =
'land_ice_vertical_mean_horizontal_velocity' 1718 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1720 buffer =
'Vertical mean of horizontal velocity vh' 1721 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1723 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1725 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1730 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1732 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1734 call check( nf90_def_var(ncid,
'temp_b', nf90_float, nc2d, ncv), &
1737 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1739 buffer =
'basal_temperature' 1740 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1742 buffer =
'Temperature at the ice base' 1743 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1745 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1747 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1752 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1754 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1756 call check( nf90_def_var(ncid,
'temph_b', nf90_float, nc2d, ncv), &
1759 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1761 buffer =
'basal_temperature_rel_to_pmp' 1762 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1764 buffer =
'Temperature at the ice base relative to the pressure melting point' 1765 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1767 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1769 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1774 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1776 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1778 call check( nf90_def_var(ncid,
'tau_b_driving', nf90_float, nc2d, ncv), &
1781 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1783 buffer =
'magnitude_of_land_ice_driving_stress' 1784 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1786 buffer =
'Driving stress' 1787 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1789 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1791 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1796 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1798 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1800 call check( nf90_def_var(ncid,
'tau_b_drag', nf90_float, nc2d, ncv), &
1803 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1805 buffer =
'magnitude_of_land_ice_basal_drag' 1806 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1808 buffer =
'Basal drag' 1809 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1811 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1813 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1818 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1820 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1822 call check( nf90_def_var(ncid,
'p_b_w', nf90_float, nc2d, ncv), &
1825 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1827 buffer =
'basal_water_pressure' 1828 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1830 buffer =
'Basal water pressure' 1831 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1833 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1835 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1840 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1842 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1844 call check( nf90_def_var(ncid,
'H_w', nf90_float, nc2d, ncv), &
1847 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1849 buffer =
'water_column_thickness' 1850 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1852 buffer =
'Thickness of the water column under the ice base' 1853 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1855 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1857 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1862 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1864 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1866 call check( nf90_def_var(ncid,
'q_gl_g', nf90_float, nc2d, ncv), &
1869 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1871 buffer =
'land_ice_volume_flux_across_gl' 1872 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1874 buffer =
'Horizontal volume flux across the grounding line' 1875 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1877 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1879 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1884 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1886 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1888 call check( nf90_def_var(ncid,
'q_cf_g', nf90_float, nc2d, ncv), &
1891 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1893 buffer =
'land_ice_volume_flux_due_to_calving' 1894 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1896 buffer =
'Calving flux' 1897 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1899 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1901 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1906 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1908 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1910 call check( nf90_def_var(ncid,
'ratio_sl_x', nf90_float, nc2d, ncv), &
1913 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1915 buffer =
'land_ice_x_slip_ratio' 1916 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1918 buffer =
'Ratio of basal to surface velocity (slip ratio) in x-direction, ' &
1920 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1922 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1924 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1929 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1931 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1933 call check( nf90_def_var(ncid,
'ratio_sl_y', nf90_float, nc2d, ncv), &
1936 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1938 buffer =
'land_ice_y_slip_ratio' 1939 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1941 buffer =
'Ratio of basal to surface velocity (slip ratio) in y-direction, ' &
1943 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1945 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1947 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1952 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1954 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1956 call check( nf90_def_var(ncid,
'flag_shelfy_stream_x', nf90_byte, nc2d, ncv), &
1959 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1961 buffer =
'land_ice_x_shelfy_stream_flag' 1962 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1964 buffer =
'Shelfy stream flag in x-direction, at (i+1/2,j)' 1965 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1967 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1969 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1974 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1976 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1978 call check( nf90_def_var(ncid,
'flag_shelfy_stream_y', nf90_byte, nc2d, ncv), &
1981 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1983 buffer =
'land_ice_y_shelfy_stream_flag' 1984 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1986 buffer =
'Shelfy stream flag in y-direction, at (i,j+1/2)' 1987 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1989 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1991 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1996 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1998 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2000 call check( nf90_def_var(ncid,
'flag_shelfy_stream', nf90_byte, nc2d, ncv), &
2003 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2005 buffer =
'land_ice_shelfy_stream_flag' 2006 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2008 buffer =
'Shelfy stream flag' 2009 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2011 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2013 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2018 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2020 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2022 call check( nf90_def_var(ncid,
'vis_int_g', nf90_float, nc2d, ncv), &
2025 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2027 buffer =
'land_ice_vertical_integral_viscosity' 2028 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2030 buffer =
'Depth-integrated viscosity' 2031 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2033 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2035 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2038 if (flag_3d_output)
then 2042 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2044 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2046 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2048 call check( nf90_def_var(ncid,
'vx_c', nf90_float, nc3d, ncv), &
2051 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2053 buffer =
'land_ice_kc_layer_x_velocity' 2054 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2056 buffer =
'Horizontal velocity vx in the upper (kc) ice layer' 2057 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2059 buffer =
'Staggered grid variable, defined at (kc,j,i+1/2)' 2060 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2062 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2064 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2069 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2071 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2073 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2075 call check( nf90_def_var(ncid,
'vy_c', nf90_float, nc3d, ncv), &
2078 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2080 buffer =
'land_ice_kc_layer_y_velocity' 2081 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2083 buffer =
'Horizontal velocity vy in the upper (kc) ice layer' 2084 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2086 buffer =
'Staggered grid variable, defined at (kc,j+1/2,i)' 2087 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2089 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2091 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2096 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2098 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2100 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2102 call check( nf90_def_var(ncid,
'vz_c', nf90_float, nc3d, ncv), &
2105 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2107 buffer =
'land_ice_kc_layer_z_velocity' 2108 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2110 buffer =
'Vertical velocity vz in the upper (kc) ice layer' 2111 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2113 buffer =
'Staggered grid variable, defined at (kc+1/2,j,i)' 2114 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2116 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2118 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2123 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2125 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2127 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2129 call check( nf90_def_var(ncid,
'vx_t', nf90_float, nc3d, ncv), &
2132 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2134 buffer =
'land_ice_kt_layer_x_velocity' 2135 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2137 buffer =
'Horizontal velocity vx in the lower (kt) ice layer' 2138 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2140 buffer =
'Staggered grid variable, defined at (kt,j,i+1/2)' 2141 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2143 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2145 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2150 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2152 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2154 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2156 call check( nf90_def_var(ncid,
'vy_t', nf90_float, nc3d, ncv), &
2159 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2161 buffer =
'land_ice_kt_layer_y_velocity' 2162 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2164 buffer =
'Horizontal velocity vy in the lower (kt) ice layer' 2165 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2167 buffer =
'Staggered grid variable, defined at (kt,j+1/2,i)' 2168 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2170 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2172 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2177 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2179 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2181 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2183 call check( nf90_def_var(ncid,
'vz_t', nf90_float, nc3d, ncv), &
2186 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2188 buffer =
'land_ice_kt_layer_z_velocity' 2189 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2191 buffer =
'Vertical velocity vz in the lower (kt) ice layer' 2192 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2194 buffer =
'Staggered grid variable, defined at (kt+1/2,j,i)' 2195 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2197 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2199 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2204 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2206 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2208 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2210 call check( nf90_def_var(ncid,
'temp_c', nf90_float, nc3d, ncv), &
2213 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2215 buffer =
'land_ice_kc_layer_temperature' 2216 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2218 buffer =
'Temperature in the upper (kc) ice layer' 2219 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2221 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2223 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2228 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2230 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2232 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2234 call check( nf90_def_var(ncid,
'omega_t', nf90_float, nc3d, ncv), &
2237 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2239 buffer =
'land_ice_kt_layer_water_content' 2240 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2242 buffer =
'Water content in the lower (kt) ice layer' 2243 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2245 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2247 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2252 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2254 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2256 call check( nf90_inq_dimid(ncid, trim(coord_id(5)), nc3d(3)), &
2258 call check( nf90_def_var(ncid,
'temp_r', nf90_float, nc3d, ncv), &
2261 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2263 buffer =
'lithosphere_layer_temperature' 2264 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2266 buffer =
'Temperature in the lithosphere layer' 2267 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2269 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2271 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2276 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2278 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2280 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2282 call check( nf90_def_var(ncid,
'enth_c', nf90_float, nc3d, ncv), &
2285 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2287 buffer =
'land_ice_kc_layer_enthalpy' 2288 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2290 buffer =
'Enthalpy in the upper (kc) ice layer' 2291 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2293 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2295 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2300 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2302 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2304 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2306 call check( nf90_def_var(ncid,
'enth_t', nf90_float, nc3d, ncv), &
2309 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2311 buffer =
'land_ice_kt_layer_enthalpy' 2312 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2314 buffer =
'Enthalpy in the lower (kt) ice layer' 2315 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2317 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2319 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2324 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2326 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2328 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2330 call check( nf90_def_var(ncid,
'omega_c', nf90_float, nc3d, ncv), &
2333 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2335 buffer =
'land_ice_kc_layer_water_content' 2336 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2338 buffer =
'Water content in the upper (kc) ice layer' 2339 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2341 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2343 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2348 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2350 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2352 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2354 call check( nf90_def_var(ncid,
'enh_c', nf90_float, nc3d, ncv), &
2357 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2359 buffer =
'land_ice_kc_layer_flow_enhancement_factor' 2360 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2362 buffer =
'Flow enhancement factor in the upper (kc) ice layer' 2363 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2365 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2367 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2372 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2374 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2376 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2378 call check( nf90_def_var(ncid,
'enh_t', nf90_float, nc3d, ncv), &
2381 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2383 buffer =
'land_ice_kt_layer_flow_enhancement_factor' 2384 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2386 buffer =
'Flow enhancement factor in the lower (kt) ice layer' 2387 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2389 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2391 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2396 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2398 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2400 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2402 call check( nf90_def_var(ncid,
'age_c', nf90_float, nc3d, ncv), &
2405 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2407 buffer =
'land_ice_kc_layer_age' 2408 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2410 buffer =
'Age in the upper (kc) ice layer' 2411 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2413 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2415 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2420 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2422 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2424 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2426 call check( nf90_def_var(ncid,
'age_t', nf90_float, nc3d, ncv), &
2429 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2431 buffer =
'land_ice_kt_layer_age' 2432 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2434 buffer =
'Age in the lower (kt) ice layer' 2435 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2437 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2439 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2446 call check( nf90_enddef(ncid), thisroutine )
2463 h_temp(j,i) =
h_t(j,i)
2466 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 2487 if ( (
maske(j,i)==0_i2b).and.(
n_cts(j,i)==1_i2b) )
then 2500 #elif (CALCMOD==0 || CALCMOD==-1) 2526 if ( (
maske(j,i)==0_i2b).or.(
maske(j,i)==3_i2b) )
then 2527 vx_m_g(j,i) = 0.5_dp*(
vx_m(j,i)+
vx_m(j,i-1))
2528 vy_m_g(j,i) = 0.5_dp*(
vy_m(j,i)+
vy_m(j-1,i))
2536 tau_b_driving = 0.0_dp
2542 if (
maske(j,i)==0_i2b)
then 2544 tau_b_driving(j,i) =
rho*
g*h(j,i) &
2548 tau_b_drag(j,i) = tau_b_driving(j,i)
2553 else if (
maske(j,i)==3_i2b)
then 2555 tau_b_driving(j,i) =
rho*
g*h(j,i) &
2558 tau_b_drag(j,i) = 0.0_dp
2581 if (
maske(j,i)==0_i2b)
then 2583 v_grounded = v_grounded + h(j,i)*
area(j,i)
2584 a_grounded = a_grounded +
area(j,i)
2585 v_gr_redu = v_gr_redu &
2586 + rhosw_rho_ratio*max((z_sl-
zl(j,i)),0.0_dp)*
area(j,i)
2588 else if (
maske(j,i)==3_i2b)
then 2590 v_floating = v_floating + h(j,i)*
area(j,i)
2591 a_floating = a_floating +
area(j,i)
2598 v_tot = v_grounded + v_floating
2599 v_af = v_grounded - v_gr_redu
2603 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 2605 #elif (OUT_TIMES==2) 2608 stop
' >>> output1: OUT_TIMES must be either 1 or 2!' 2611 delta_ts_conv =
real(delta_ts,
sp)
2612 glac_index_conv =
real(glac_index,
sp)
2613 z_sl_conv =
real(z_sl,
sp)
2614 v_tot_conv =
real(v_tot,
sp)
2615 v_af_conv =
real(v_af,
sp)
2616 a_grounded_conv =
real(a_grounded,
sp)
2617 a_floating_conv =
real(a_floating,
sp)
2618 h_r_conv =
real(
h_r,
sp)
2621 xi_conv(i) =
real(xi(i),sp)
2625 eta_conv(j) =
real(eta(j),sp)
2629 sigma_level_c_conv(kc) =
real(eaz_c_quotient(kc),sp)
2633 sigma_level_t_conv(kt) =
real(zeta_t(kt),sp)
2637 sigma_level_r_conv(kr) =
real(kr,sp)/
real(krmax,sp)
2643 maske_conv(i,j) =
maske(j,i)
2646 n_cts_conv(i,j) =
n_cts(j,i)
2647 kc_cts_conv(i,j) =
kc_cts(j,i)
2649 lambda_conv(i,j) =
real(lambda(j,i),sp) 2650 phi_conv(i,j) =
real(phi(j,i),sp) 2651 lon_conv(i,j) =
real(lambda(j,i)*pi_180_inv,sp) 2652 lon_conv(i,j) = modulo(lon_conv(i,j)+180.0_sp, 360.0_sp)-180.0_sp
2654 lat_conv(i,j) =
real(phi(j,i) *pi_180_inv,sp) 2655 if (lat_conv(i,j) > 90.0_sp) lat_conv(i,j) = 90.0_sp
2656 if (lat_conv(i,j) < -90.0_sp) lat_conv(i,j) = -90.0_sp
2658 temp_s_conv(i,j) =
real(temp_s(j,i),sp)
2659 accum_conv(i,j) =
real(
accum(j,i)*year_sec,sp)
2660 as_perp_conv(i,j) =
real(
as_perp(j,i)*year_sec,sp)
2661 as_perp_apl_conv(i,j) =
real(
as_perp_apl(j,i)*year_sec,sp)
2663 #if (DISC>0) /* Ice discharge parameterisation */ 2664 dis_perp_conv(i,j) =
real(
dis_perp(j,i)*year_sec,sp)
2665 cst_dist_conv(i,j) =
real(
cst_dist(j,i)*0.001_dp,sp)
2666 cos_grad_tc_conv(i,j) =
real(cos_grad_tc(j,i),sp)
2670 q_geo_conv(i,j) =
real(q_geo(j,i),sp)
2671 zs_conv(i,j) =
real(zs(j,i),sp)
2672 zm_conv(i,j) =
real(zm(j,i),sp)
2673 zb_conv(i,j) =
real(zb(j,i),sp)
2674 zl_conv(i,j) =
real(zl(j,i),sp)
2675 zl0_conv(i,j) =
real(zl0(j,i),sp)
2676 h_cold_conv(i,j) =
real(H_cold(j,i),sp)
2677 h_temp_conv(i,j) =
real(H_temp(j,i),sp)
2678 h_conv(i,j) =
real(H(j,i),sp)
2679 q_bm_conv(i,j) =
real(
q_bm(j,i)*year_sec,sp)
2680 q_tld_conv(i,j) =
real(
q_tld(j,i)*year_sec,sp)
2681 am_perp_conv(i,j) =
real(
am_perp(j,i)*year_sec,sp)
2682 qx_conv(i,j) =
real(
qx(j,i)*year_sec,sp)
2683 qy_conv(i,j) =
real(
qy(j,i)*year_sec,sp)
2684 dzs_dtau_conv(i,j) =
real(
dzs_dtau(j,i)*year_sec,sp)
2685 dzm_dtau_conv(i,j) =
real(
dzm_dtau(j,i)*year_sec,sp)
2686 dzb_dtau_conv(i,j) =
real(
dzb_dtau(j,i)*year_sec,sp)
2687 dzl_dtau_conv(i,j) =
real(
dzl_dtau(j,i)*year_sec,sp)
2688 dh_c_dtau_conv(i,j) =
real(
dh_c_dtau(j,i)*year_sec,sp)
2689 dh_t_dtau_conv(i,j) =
real(
dh_t_dtau(j,i)*year_sec,sp)
2690 dh_dtau_conv(i,j) =
real(dh_dtau(j,i)*year_sec,sp)
2691 vx_b_g_conv(i,j) =
real(
vx_b_g(j,i)*year_sec,sp)
2692 vy_b_g_conv(i,j) =
real(
vy_b_g(j,i)*year_sec,sp)
2693 vz_b_conv(i,j) =
real(
vz_b(j,i)*year_sec,sp)
2694 vh_b_conv(i,j) = sqrt( vx_b_g_conv(i,j)**2 + vy_b_g_conv(i,j)**2 )
2695 vx_s_g_conv(i,j) =
real(
vx_s_g(j,i)*year_sec,sp)
2696 vy_s_g_conv(i,j) =
real(
vy_s_g(j,i)*year_sec,sp)
2697 vz_s_conv(i,j) =
real(
vz_s(j,i)*year_sec,sp)
2698 vh_s_conv(i,j) = sqrt( vx_s_g_conv(i,j)**2 + vy_s_g_conv(i,j)**2 )
2699 vx_m_g_conv(i,j) =
real(vx_m_g(j,i)*year_sec,sp)
2700 vy_m_g_conv(i,j) =
real(vy_m_g(j,i)*year_sec,sp)
2701 vh_m_conv(i,j) = sqrt( vx_m_g_conv(i,j)**2 + vy_m_g_conv(i,j)**2 )
2702 temp_b_conv(i,j) =
real(temp_b(j,i),sp)
2703 temph_b_conv(i,j) =
real(temph_b(j,i),sp)
2704 tau_b_driving_conv(i,j) =
real(tau_b_driving(j,i),sp)
2705 tau_b_drag_conv(i,j) =
real(tau_b_drag(j,i),sp)
2706 p_b_w_conv(i,j) =
real(p_b_w(j,i),sp)
2707 h_w_conv(i,j) =
real(H_w(j,i),sp)
2708 q_gl_g_conv(i,j) =
real(
q_gl_g(j,i)*year_sec,sp)
2710 ratio_sl_x_conv(i,j) =
real(ratio_sl_x(j,i),sp)
2711 ratio_sl_y_conv(i,j) =
real(ratio_sl_y(j,i),sp)
2714 flag_shelfy_stream_x_conv(i,j) = 1_i1b
2716 flag_shelfy_stream_x_conv(i,j) = 0_i1b
2720 flag_shelfy_stream_y_conv(i,j) = 1_i1b
2722 flag_shelfy_stream_y_conv(i,j) = 0_i1b
2726 flag_shelfy_stream_conv(i,j) = 1_i1b
2728 flag_shelfy_stream_conv(i,j) = 0_i1b
2731 vis_int_g_conv(i,j) =
real(vis_int_g(j,i),sp)
2734 temp_r_conv(i,j,kr) =
real(temp_r(kr,j,i),sp)
2738 vx_t_conv(i,j,kt) =
real(
vx_t(kt,j,i)*year_sec,sp)
2739 vy_t_conv(i,j,kt) =
real(
vy_t(kt,j,i)*year_sec,sp)
2740 vz_t_conv(i,j,kt) =
real(
vz_t(kt,j,i)*year_sec,sp)
2741 omega_t_conv(i,j,kt) =
real(omega_t(kt,j,i),sp)
2743 enth_t_conv(i,j,kt) =
real(enth_t(kt,j,i),sp)
2744 enh_t_conv(i,j,kt) =
real(enh_t(kt,j,i),sp)
2748 vx_c_conv(i,j,kc) =
real(
vx_c(kc,j,i)*year_sec,sp)
2749 vy_c_conv(i,j,kc) =
real(
vy_c(kc,j,i)*year_sec,sp)
2750 vz_c_conv(i,j,kc) =
real(
vz_c(kc,j,i)*year_sec,sp)
2751 temp_c_conv(i,j,kc) =
real(temp_c(kc,j,i),sp)
2753 enth_c_conv(i,j,kc) =
real(enth_c(kc,j,i),sp)
2754 omega_c_conv(i,j,kc) =
real(omega_c(kc,j,i),sp)
2755 enh_c_conv(i,j,kc) =
real(enh_c(kc,j,i),sp)
2763 #if (NETCDF==1) /* time-slice file in native binary format */ 2765 write(unit=11) time_conv
2767 write(unit=11) delta_ts_conv
2769 write(unit=11) glac_index_conv
2771 glac_index_conv =
real(no_value_pos_1,sp) 2772 write(unit=11) glac_index_conv
2774 write(unit=11) z_sl_conv
2776 write(unit=11) v_tot_conv
2777 write(unit=11) v_af_conv
2778 write(unit=11) a_grounded_conv
2779 write(unit=11) a_floating_conv
2781 write(unit=11) xi_conv
2782 write(unit=11) eta_conv
2783 write(unit=11) sigma_level_c_conv
2784 write(unit=11) sigma_level_t_conv
2785 write(unit=11) sigma_level_r_conv
2786 write(unit=11) lon_conv
2787 write(unit=11) lat_conv
2788 write(unit=11) lambda_conv
2789 write(unit=11) phi_conv
2790 write(unit=11) temp_s_conv
2791 write(unit=11) accum_conv
2792 write(unit=11) as_perp_conv
2793 write(unit=11) as_perp_apl_conv
2795 #if (DISC>0) /* Ice discharge parameterisation */ 2797 write(unit=11) dis_perp_conv
2798 write(unit=11) cst_dist_conv
2799 write(unit=11) cos_grad_tc_conv
2800 write(unit=11) mask_mar_conv
2804 write(unit=11) q_geo_conv
2805 write(unit=11) maske_conv
2806 write(unit=11) maske_old_conv
2807 write(unit=11) n_cts_conv
2808 write(unit=11) kc_cts_conv
2809 write(unit=11) zs_conv
2810 write(unit=11) zm_conv
2811 write(unit=11) zb_conv
2812 write(unit=11) zl_conv
2813 write(unit=11) zl0_conv
2814 write(unit=11) h_cold_conv
2815 write(unit=11) h_temp_conv
2816 write(unit=11) h_conv
2817 write(unit=11) h_r_conv
2818 write(unit=11) q_bm_conv
2819 write(unit=11) q_tld_conv
2820 write(unit=11) am_perp_conv
2821 write(unit=11) qx_conv
2822 write(unit=11) qy_conv
2823 write(unit=11) dzs_dtau_conv
2824 write(unit=11) dzm_dtau_conv
2825 write(unit=11) dzb_dtau_conv
2826 write(unit=11) dzl_dtau_conv
2827 write(unit=11) dh_c_dtau_conv
2828 write(unit=11) dh_t_dtau_conv
2829 write(unit=11) dh_dtau_conv
2830 write(unit=11) vx_b_g_conv
2831 write(unit=11) vy_b_g_conv
2832 write(unit=11) vz_b_conv
2833 write(unit=11) vh_b_conv
2834 write(unit=11) vx_s_g_conv
2835 write(unit=11) vy_s_g_conv
2836 write(unit=11) vz_s_conv
2837 write(unit=11) vh_s_conv
2838 write(unit=11) vx_m_g_conv
2839 write(unit=11) vy_m_g_conv
2840 write(unit=11) vh_m_conv
2841 write(unit=11) temp_b_conv
2842 write(unit=11) temph_b_conv
2843 write(unit=11) tau_b_driving_conv
2844 write(unit=11) tau_b_drag_conv
2845 write(unit=11) p_b_w_conv
2846 write(unit=11) h_w_conv
2847 write(unit=11) q_gl_g_conv
2848 write(unit=11) q_cf_g_conv
2850 if (flag_3d_output)
then 2852 write(unit=11) vx_c_conv
2853 write(unit=11) vy_c_conv
2854 write(unit=11) vz_c_conv
2855 write(unit=11) vx_t_conv
2856 write(unit=11) vy_t_conv
2857 write(unit=11) vz_t_conv
2858 write(unit=11) temp_c_conv
2859 write(unit=11) omega_t_conv
2860 write(unit=11) temp_r_conv
2861 write(unit=11) enth_c_conv
2862 write(unit=11) enth_t_conv
2863 write(unit=11) omega_c_conv
2864 write(unit=11) enh_c_conv
2865 write(unit=11) enh_t_conv
2866 write(unit=11) age_c_conv
2867 write(unit=11) age_t_conv
2871 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 2873 call check( nf90_inq_varid(ncid,
'crs', ncv), thisroutine )
2874 call check( nf90_put_var(ncid, ncv, 0), thisroutine )
2876 call check( nf90_inq_varid(ncid,
'time', ncv), thisroutine )
2877 call check( nf90_put_var(ncid, ncv, time_conv), thisroutine )
2881 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
2882 call check( nf90_put_var(ncid, ncv, delta_ts_conv), thisroutine )
2886 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
2887 call check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
2891 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
2892 glac_index_conv =
real(no_value_pos_1,sp) 2893 call check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
2897 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
2898 call check( nf90_put_var(ncid, ncv, z_sl_conv), thisroutine )
2900 call check( nf90_inq_varid(ncid,
'V_tot', ncv), thisroutine )
2901 call check( nf90_put_var(ncid, ncv, v_tot_conv), thisroutine )
2903 call check( nf90_inq_varid(ncid,
'V_af', ncv), thisroutine )
2904 call check( nf90_put_var(ncid, ncv, v_af_conv), thisroutine )
2906 call check( nf90_inq_varid(ncid,
'A_grounded', ncv), thisroutine )
2907 call check( nf90_put_var(ncid, ncv, a_grounded_conv), thisroutine )
2909 call check( nf90_inq_varid(ncid,
'A_floating', ncv), thisroutine )
2910 call check( nf90_put_var(ncid, ncv, a_floating_conv), thisroutine )
2912 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
2913 call check( nf90_put_var(ncid, ncv, xi_conv, &
2914 start=nc1cor_i, count=nc1cnt_i), &
2917 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
2918 call check( nf90_put_var(ncid, ncv, eta_conv, &
2919 start=nc1cor_j, count=nc1cnt_j), &
2922 call check( nf90_inq_varid(ncid,
'sigma_level_c', ncv), thisroutine )
2923 call check( nf90_put_var(ncid, ncv, sigma_level_c_conv, &
2924 start=nc1cor_kc, count=nc1cnt_kc), &
2927 call check( nf90_inq_varid(ncid,
'sigma_level_t', ncv), thisroutine )
2928 call check( nf90_put_var(ncid, ncv, sigma_level_t_conv, &
2929 start=nc1cor_kt, count=nc1cnt_kt), &
2932 call check( nf90_inq_varid(ncid,
'sigma_level_r', ncv), thisroutine )
2933 call check( nf90_put_var(ncid, ncv, sigma_level_r_conv, &
2934 start=nc1cor_kr, count=nc1cnt_kr), &
2937 call check( nf90_inq_varid(ncid,
'lon', ncv), thisroutine )
2938 call check( nf90_put_var(ncid, ncv, lon_conv, &
2939 start=nc2cor_ij, count=nc2cnt_ij), &
2942 call check( nf90_inq_varid(ncid,
'lat', ncv), thisroutine )
2943 call check( nf90_put_var(ncid, ncv, lat_conv, &
2944 start=nc2cor_ij, count=nc2cnt_ij), &
2947 call check( nf90_inq_varid(ncid,
'lambda', ncv), thisroutine )
2948 call check( nf90_put_var(ncid, ncv, lambda_conv, &
2949 start=nc2cor_ij, count=nc2cnt_ij), &
2952 call check( nf90_inq_varid(ncid,
'phi', ncv), thisroutine )
2953 call check( nf90_put_var(ncid, ncv, phi_conv, &
2954 start=nc2cor_ij, count=nc2cnt_ij), &
2957 call check( nf90_inq_varid(ncid,
'temp_s', ncv), thisroutine )
2958 call check( nf90_put_var(ncid, ncv, temp_s_conv, &
2959 start=nc2cor_ij, count=nc2cnt_ij), &
2962 call check( nf90_inq_varid(ncid,
'prec', ncv), thisroutine )
2963 call check( nf90_put_var(ncid, ncv, accum_conv, &
2964 start=nc2cor_ij, count=nc2cnt_ij), &
2967 call check( nf90_inq_varid(ncid,
'as_perp', ncv), thisroutine )
2968 call check( nf90_put_var(ncid, ncv, as_perp_conv, &
2969 start=nc2cor_ij, count=nc2cnt_ij), &
2972 call check( nf90_inq_varid(ncid,
'as_perp_apl', ncv), thisroutine )
2973 call check( nf90_put_var(ncid, ncv, as_perp_apl_conv, &
2974 start=nc2cor_ij, count=nc2cnt_ij), &
2977 #if (DISC>0) /* Ice discharge parameterisation */ 2979 call check( nf90_inq_varid(ncid,
'dis_perp', ncv), thisroutine )
2980 call check( nf90_put_var(ncid, ncv, dis_perp_conv, &
2981 start=nc2cor_ij, count=nc2cnt_ij), &
2984 call check( nf90_inq_varid(ncid,
'cst_dist', ncv), thisroutine )
2985 call check( nf90_put_var(ncid, ncv, cst_dist_conv, &
2986 start=nc2cor_ij, count=nc2cnt_ij), &
2989 call check( nf90_inq_varid(ncid,
'cos_grad_tc', ncv), thisroutine )
2990 call check( nf90_put_var(ncid, ncv, cos_grad_tc_conv, &
2991 start=nc2cor_ij, count=nc2cnt_ij), &
2994 call check( nf90_inq_varid(ncid,
'mask_mar', ncv), thisroutine )
2995 call check( nf90_put_var(ncid, ncv, mask_mar_conv, &
2996 start=nc2cor_ij, count=nc2cnt_ij), &
3001 call check( nf90_inq_varid(ncid,
'q_geo', ncv), thisroutine )
3002 call check( nf90_put_var(ncid, ncv, q_geo_conv, &
3003 start=nc2cor_ij, count=nc2cnt_ij), &
3006 call check( nf90_inq_varid(ncid,
'maske', ncv), thisroutine )
3007 call check( nf90_put_var(ncid, ncv, maske_conv, &
3008 start=nc2cor_ij, count=nc2cnt_ij), &
3011 call check( nf90_inq_varid(ncid,
'maske_old', ncv), thisroutine )
3012 call check( nf90_put_var(ncid, ncv, maske_old_conv, &
3013 start=nc2cor_ij, count=nc2cnt_ij), &
3016 call check( nf90_inq_varid(ncid,
'mask_run', ncv), thisroutine )
3017 call check( nf90_put_var(ncid, ncv, mask_run_conv, &
3018 start=nc2cor_ij, count=nc2cnt_ij), &
3021 call check( nf90_inq_varid(ncid,
'n_cts', ncv), thisroutine )
3022 call check( nf90_put_var(ncid, ncv, n_cts_conv, &
3023 start=nc2cor_ij, count=nc2cnt_ij), &
3026 call check( nf90_inq_varid(ncid,
'kc_cts', ncv), thisroutine )
3027 call check( nf90_put_var(ncid, ncv, kc_cts_conv, &
3028 start=nc2cor_ij, count=nc2cnt_ij), &
3031 call check( nf90_inq_varid(ncid,
'zs', ncv), thisroutine )
3032 call check( nf90_put_var(ncid, ncv, zs_conv, &
3033 start=nc2cor_ij, count=nc2cnt_ij), &
3036 call check( nf90_inq_varid(ncid,
'zm', ncv), thisroutine )
3037 call check( nf90_put_var(ncid, ncv, zm_conv, &
3038 start=nc2cor_ij, count=nc2cnt_ij), &
3041 call check( nf90_inq_varid(ncid,
'zb', ncv), thisroutine )
3042 call check( nf90_put_var(ncid, ncv, zb_conv, &
3043 start=nc2cor_ij, count=nc2cnt_ij), &
3046 call check( nf90_inq_varid(ncid,
'zl', ncv), thisroutine )
3047 call check( nf90_put_var(ncid, ncv, zl_conv, &
3048 start=nc2cor_ij, count=nc2cnt_ij), &
3051 call check( nf90_inq_varid(ncid,
'zl0', ncv), thisroutine )
3052 call check( nf90_put_var(ncid, ncv, zl0_conv, &
3053 start=nc2cor_ij, count=nc2cnt_ij), &
3056 call check( nf90_inq_varid(ncid,
'H_cold', ncv), thisroutine )
3057 call check( nf90_put_var(ncid, ncv, h_cold_conv, &
3058 start=nc2cor_ij, count=nc2cnt_ij), &
3061 call check( nf90_inq_varid(ncid,
'H_temp', ncv), thisroutine )
3062 call check( nf90_put_var(ncid, ncv, h_temp_conv, &
3063 start=nc2cor_ij, count=nc2cnt_ij), &
3066 call check( nf90_inq_varid(ncid,
'H', ncv), thisroutine )
3067 call check( nf90_put_var(ncid, ncv, h_conv, &
3068 start=nc2cor_ij, count=nc2cnt_ij), &
3071 call check( nf90_inq_varid(ncid,
'H_R', ncv), thisroutine )
3072 call check( nf90_put_var(ncid, ncv, h_r_conv), thisroutine )
3074 call check( nf90_inq_varid(ncid,
'Q_bm', ncv), thisroutine )
3075 call check( nf90_put_var(ncid, ncv, q_bm_conv, &
3076 start=nc2cor_ij, count=nc2cnt_ij), &
3079 call check( nf90_inq_varid(ncid,
'Q_tld', ncv), thisroutine )
3080 call check( nf90_put_var(ncid, ncv, q_tld_conv, &
3081 start=nc2cor_ij, count=nc2cnt_ij), &
3084 call check( nf90_inq_varid(ncid,
'am_perp', ncv), thisroutine )
3085 call check( nf90_put_var(ncid, ncv, am_perp_conv, &
3086 start=nc2cor_ij, count=nc2cnt_ij), &
3089 call check( nf90_inq_varid(ncid,
'qx', ncv), thisroutine )
3090 call check( nf90_put_var(ncid, ncv, qx_conv, &
3091 start=nc2cor_ij, count=nc2cnt_ij), &
3094 call check( nf90_inq_varid(ncid,
'qy', ncv), thisroutine )
3095 call check( nf90_put_var(ncid, ncv, qy_conv, &
3096 start=nc2cor_ij, count=nc2cnt_ij), &
3099 call check( nf90_inq_varid(ncid,
'dzs_dt', ncv), thisroutine )
3100 call check( nf90_put_var(ncid, ncv, dzs_dtau_conv, &
3101 start=nc2cor_ij, count=nc2cnt_ij), &
3104 call check( nf90_inq_varid(ncid,
'dzm_dt', ncv), thisroutine )
3105 call check( nf90_put_var(ncid, ncv, dzm_dtau_conv, &
3106 start=nc2cor_ij, count=nc2cnt_ij), &
3109 call check( nf90_inq_varid(ncid,
'dzb_dt', ncv), thisroutine )
3110 call check( nf90_put_var(ncid, ncv, dzb_dtau_conv, &
3111 start=nc2cor_ij, count=nc2cnt_ij), &
3114 call check( nf90_inq_varid(ncid,
'dzl_dt', ncv), thisroutine )
3115 call check( nf90_put_var(ncid, ncv, dzl_dtau_conv, &
3116 start=nc2cor_ij, count=nc2cnt_ij), &
3119 call check( nf90_inq_varid(ncid,
'dH_c_dt', ncv), thisroutine )
3120 call check( nf90_put_var(ncid, ncv, dh_c_dtau_conv, &
3121 start=nc2cor_ij, count=nc2cnt_ij), &
3124 call check( nf90_inq_varid(ncid,
'dH_t_dt', ncv), thisroutine )
3125 call check( nf90_put_var(ncid, ncv, dh_t_dtau_conv, &
3126 start=nc2cor_ij, count=nc2cnt_ij), &
3129 call check( nf90_inq_varid(ncid,
'dH_dt', ncv), thisroutine )
3130 call check( nf90_put_var(ncid, ncv, dh_dtau_conv, &
3131 start=nc2cor_ij, count=nc2cnt_ij), &
3134 call check( nf90_inq_varid(ncid,
'vx_b_g', ncv), thisroutine )
3135 call check( nf90_put_var(ncid, ncv, vx_b_g_conv, &
3136 start=nc2cor_ij, count=nc2cnt_ij), &
3139 call check( nf90_inq_varid(ncid,
'vy_b_g', ncv), thisroutine )
3140 call check( nf90_put_var(ncid, ncv, vy_b_g_conv, &
3141 start=nc2cor_ij, count=nc2cnt_ij), &
3144 call check( nf90_inq_varid(ncid,
'vz_b', ncv), thisroutine )
3145 call check( nf90_put_var(ncid, ncv, vz_b_conv, &
3146 start=nc2cor_ij, count=nc2cnt_ij), &
3149 call check( nf90_inq_varid(ncid,
'vh_b', ncv), thisroutine )
3150 call check( nf90_put_var(ncid, ncv, vh_b_conv, &
3151 start=nc2cor_ij, count=nc2cnt_ij), &
3154 call check( nf90_inq_varid(ncid,
'vx_s_g', ncv), thisroutine )
3155 call check( nf90_put_var(ncid, ncv, vx_s_g_conv, &
3156 start=nc2cor_ij, count=nc2cnt_ij), &
3159 call check( nf90_inq_varid(ncid,
'vy_s_g', ncv), thisroutine )
3160 call check( nf90_put_var(ncid, ncv, vy_s_g_conv, &
3161 start=nc2cor_ij, count=nc2cnt_ij), &
3164 call check( nf90_inq_varid(ncid,
'vz_s', ncv), thisroutine )
3165 call check( nf90_put_var(ncid, ncv, vz_s_conv, &
3166 start=nc2cor_ij, count=nc2cnt_ij), &
3169 call check( nf90_inq_varid(ncid,
'vh_s', ncv), thisroutine )
3170 call check( nf90_put_var(ncid, ncv, vh_s_conv, &
3171 start=nc2cor_ij, count=nc2cnt_ij), &
3174 call check( nf90_inq_varid(ncid,
'vx_m_g', ncv), thisroutine )
3175 call check( nf90_put_var(ncid, ncv, vx_m_g_conv, &
3176 start=nc2cor_ij, count=nc2cnt_ij), &
3179 call check( nf90_inq_varid(ncid,
'vy_m_g', ncv), thisroutine )
3180 call check( nf90_put_var(ncid, ncv, vy_m_g_conv, &
3181 start=nc2cor_ij, count=nc2cnt_ij), &
3184 call check( nf90_inq_varid(ncid,
'vh_m', ncv), thisroutine )
3185 call check( nf90_put_var(ncid, ncv, vh_m_conv, &
3186 start=nc2cor_ij, count=nc2cnt_ij), &
3189 call check( nf90_inq_varid(ncid,
'temp_b', ncv), thisroutine )
3190 call check( nf90_put_var(ncid, ncv, temp_b_conv, &
3191 start=nc2cor_ij, count=nc2cnt_ij), &
3194 call check( nf90_inq_varid(ncid,
'temph_b', ncv), thisroutine )
3195 call check( nf90_put_var(ncid, ncv, temph_b_conv, &
3196 start=nc2cor_ij, count=nc2cnt_ij), &
3199 call check( nf90_inq_varid(ncid,
'tau_b_driving', ncv), thisroutine )
3200 call check( nf90_put_var(ncid, ncv, tau_b_driving_conv, &
3201 start=nc2cor_ij, count=nc2cnt_ij), &
3204 call check( nf90_inq_varid(ncid,
'tau_b_drag', ncv), thisroutine )
3205 call check( nf90_put_var(ncid, ncv, tau_b_drag_conv, &
3206 start=nc2cor_ij, count=nc2cnt_ij), &
3209 call check( nf90_inq_varid(ncid,
'p_b_w', ncv), thisroutine )
3210 call check( nf90_put_var(ncid, ncv, p_b_w_conv, &
3211 start=nc2cor_ij, count=nc2cnt_ij), &
3214 call check( nf90_inq_varid(ncid,
'H_w', ncv), thisroutine )
3215 call check( nf90_put_var(ncid, ncv, h_w_conv, &
3216 start=nc2cor_ij, count=nc2cnt_ij), &
3219 call check( nf90_inq_varid(ncid,
'q_gl_g', ncv), thisroutine )
3220 call check( nf90_put_var(ncid, ncv, q_gl_g_conv, &
3221 start=nc2cor_ij, count=nc2cnt_ij), &
3224 call check( nf90_inq_varid(ncid,
'q_cf_g', ncv), thisroutine )
3225 call check( nf90_put_var(ncid, ncv, q_cf_g_conv, &
3226 start=nc2cor_ij, count=nc2cnt_ij), &
3229 call check( nf90_inq_varid(ncid,
'ratio_sl_x', ncv), thisroutine )
3230 call check( nf90_put_var(ncid, ncv, ratio_sl_x_conv, &
3231 start=nc2cor_ij, count=nc2cnt_ij), &
3234 call check( nf90_inq_varid(ncid,
'ratio_sl_y', ncv), thisroutine )
3235 call check( nf90_put_var(ncid, ncv, ratio_sl_y_conv, &
3236 start=nc2cor_ij, count=nc2cnt_ij), &
3239 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream_x', ncv), thisroutine )
3240 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_x_conv, &
3241 start=nc2cor_ij, count=nc2cnt_ij), &
3244 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream_y', ncv), thisroutine )
3245 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_y_conv, &
3246 start=nc2cor_ij, count=nc2cnt_ij), &
3249 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream', ncv), thisroutine )
3250 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_conv, &
3251 start=nc2cor_ij, count=nc2cnt_ij), &
3254 call check( nf90_inq_varid(ncid,
'vis_int_g', ncv), thisroutine )
3255 call check( nf90_put_var(ncid, ncv, vis_int_g_conv, &
3256 start=nc2cor_ij, count=nc2cnt_ij), &
3259 if (flag_3d_output)
then 3261 call check( nf90_inq_varid(ncid,
'vx_c', ncv), thisroutine )
3262 call check( nf90_put_var(ncid, ncv, vx_c_conv, &
3263 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3266 call check( nf90_inq_varid(ncid,
'vy_c', ncv), thisroutine )
3267 call check( nf90_put_var(ncid, ncv, vy_c_conv, &
3268 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3271 call check( nf90_inq_varid(ncid,
'vz_c', ncv), thisroutine )
3272 call check( nf90_put_var(ncid, ncv, vz_c_conv, &
3273 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3276 call check( nf90_inq_varid(ncid,
'vx_t', ncv), thisroutine )
3277 call check( nf90_put_var(ncid, ncv, vx_t_conv, &
3278 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3281 call check( nf90_inq_varid(ncid,
'vy_t', ncv), thisroutine )
3282 call check( nf90_put_var(ncid, ncv, vy_t_conv, &
3283 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3286 call check( nf90_inq_varid(ncid,
'vz_t', ncv), thisroutine )
3287 call check( nf90_put_var(ncid, ncv, vz_t_conv, &
3288 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3291 call check( nf90_inq_varid(ncid,
'temp_c', ncv), thisroutine )
3292 call check( nf90_put_var(ncid, ncv, temp_c_conv, &
3293 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3296 call check( nf90_inq_varid(ncid,
'omega_t', ncv), thisroutine )
3297 call check( nf90_put_var(ncid, ncv, omega_t_conv, &
3298 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3301 call check( nf90_inq_varid(ncid,
'temp_r', ncv), thisroutine )
3302 call check( nf90_put_var(ncid, ncv, temp_r_conv, &
3303 start=nc3cor_ijkr, count=nc3cnt_ijkr), &
3306 call check( nf90_inq_varid(ncid,
'enth_c', ncv), thisroutine )
3307 call check( nf90_put_var(ncid, ncv, enth_c_conv, &
3308 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3311 call check( nf90_inq_varid(ncid,
'enth_t', ncv), thisroutine )
3312 call check( nf90_put_var(ncid, ncv, enth_t_conv, &
3313 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3316 call check( nf90_inq_varid(ncid,
'omega_c', ncv), thisroutine )
3317 call check( nf90_put_var(ncid, ncv, omega_c_conv, &
3318 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3321 call check( nf90_inq_varid(ncid,
'enh_c', ncv), thisroutine )
3322 call check( nf90_put_var(ncid, ncv, enh_c_conv, &
3323 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3326 call check( nf90_inq_varid(ncid,
'enh_t', ncv), thisroutine )
3327 call check( nf90_put_var(ncid, ncv, enh_t_conv, &
3328 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3331 call check( nf90_inq_varid(ncid,
'age_c', ncv), thisroutine )
3332 call check( nf90_put_var(ncid, ncv, age_c_conv, &
3333 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3336 call check( nf90_inq_varid(ncid,
'age_t', ncv), thisroutine )
3337 call check( nf90_put_var(ncid, ncv, age_t_conv, &
3338 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3347 #if (NETCDF==1) /* time-slice file in native binary format */ 3349 close(unit=11, status=
'keep')
3351 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 3353 call check( nf90_sync(ncid), thisroutine )
3354 call check( nf90_close(ncid), thisroutine )
3356 deallocate(coord_id)
3364 if (flag_3d_output)
then 3376 subroutine output2(time, dxi, deta, delta_ts, glac_index, z_sl)
3389 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
3391 integer(i4b) :: i, j
3392 integer(i4b) :: n_base, n_tempbase
3393 real(dp) :: time_val, &
3394 V_tot, V_grounded, V_floating, A_tot, A_grounded, A_floating, &
3395 V_af, V_sle, V_temp, A_temp, &
3397 H_max, H_t_max, zs_max, vs_max, Tbh_max, &
3398 accum_tot, calv_tot, mbp, &
3399 MB, LMT, OMT, LMB, OMB, LMH, OMH, ODT, ODH, &
3401 real(dp) :: x_pos, y_pos
3402 real(dp),
dimension(0:JMAX,0:IMAX) :: H, H_cold, H_temp
3403 real(dp) :: V_gr_redu, A_surf, rhosw_rho_ratio
3404 real(dp) :: vs_help, Tbh_help
3405 real(dp) :: H_ave_sed, Tbh_ave_sed, Atb_sed
3406 real(dp) :: sum_area_sed
3409 integer(i4b),
save :: ncid
3410 integer(i4b) :: ncd, ncv, nc1d
3411 integer(i4b) :: nc1cor(1), nc1cnt(1)
3412 integer(i4b) :: n_sync
3413 real(dp) :: dV_dt, precip_tot, runoff_tot, bmb_tot, mb_resid
3414 real(dp),
save :: time_add_offset_val
3415 character(len= 16) :: ch_date, ch_time, ch_zone
3416 character(len=256) :: filename, filename_with_path, buffer
3417 logical,
save :: grads_nc_tweaks
3420 integer(i4b),
save :: counter = 0
3421 logical,
save :: firstcall = .true.
3423 character(len=64),
parameter :: thisroutine =
'output2' 3425 character(len=128),
parameter :: &
3426 fmt1 =
'(1pe13.6,2(1pe13.4),/,' // &
3427 '13x,6(1pe13.4),/,' // &
3428 '26x,3(1pe13.4),/,' // &
3431 character(len=128),
parameter :: &
3432 fmt2 =
'(1pe13.6,2(1pe13.4),/,' // &
3435 character(len=128),
parameter :: &
3436 fmt3 =
'(1pe13.6,3(1pe13.4),/)' 3438 counter = counter + 1
3452 h_temp(j,i) =
h_t(j,i)
3455 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 3481 || defined(emtp2sge) \
3482 || defined(xyz)) /* terrestrial ice sheet */
3486 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3488 rhosw_rho_ratio = 0.0_dp
3492 stop
' >>> output2: No valid domain specified!' 3516 if (
maske(j,i)==0_i2b)
then 3518 if (
zs(j,i) > zs_max) zs_max =
zs(j,i)
3519 if (h(j,i) > h_max ) h_max = h(j,i)
3520 if (h_temp(j,i) > h_t_max) h_t_max = h_temp(j,i)
3522 v_grounded = v_grounded + h(j,i) *
area(j,i)
3523 v_temp = v_temp + h_temp(j,i)*
area(j,i)
3531 || defined(emtp2sge) \
3532 || defined(xyz)) /* terrestrial ice sheet */
3534 v_gr_redu = v_gr_redu &
3535 + rhosw_rho_ratio*max((z_sl-
zl(j,i)),0.0_dp)*
area(j,i)
3539 a_grounded = a_grounded +
area(j,i)
3541 if (
n_cts(j,i) /= -1) a_temp = a_temp +
area(j,i)
3544 0.25_dp*(
vx_c(kcmax,j,i)+
vx_c(kcmax,j,i-1))**2 &
3545 +0.25_dp*(
vy_c(kcmax,j,i)+
vy_c(kcmax,j-1,i))**2 )
3546 if (vs_help > vs_max) vs_max = vs_help
3548 if (
n_cts(j,i) >= 0)
then 3552 if (tbh_help > tbh_max) tbh_max = tbh_help
3555 accum_tot = accum_tot +
accum(j,i)*
area(j,i)
3557 else if (
maske(j,i)==3_i2b)
then 3561 if (
zs(j,i) > zs_max) zs_max =
zs(j,i)
3562 if (h(j,i) > h_max) h_max = h(j,i)
3564 v_floating = v_floating + h(j,i)*
area(j,i)
3565 a_floating = a_floating +
area(j,i)
3568 0.25_dp*(
vx_c(kcmax,j,i)+
vx_c(kcmax,j,i-1))**2 &
3569 +0.25_dp*(
vy_c(kcmax,j,i)+
vy_c(kcmax,j-1,i))**2 )
3570 if (vs_help > vs_max) vs_max = vs_help
3573 if (tbh_help > tbh_max) tbh_max = tbh_help
3575 accum_tot = accum_tot +
accum(j,i)*
area(j,i)
3591 q_temp = q_temp +
q_tld(j,i) *
area(j,i)
3606 || defined(emtp2sge) \
3607 || defined(xyz)) /* terrestrial ice sheet */
3609 a_surf = 3.61132e+14_dp
3611 v_af = v_grounded - v_gr_redu
3614 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3616 a_surf = 1.4441e+14_dp
3617 v_sle = v_grounded*(
rho_i/
rho_w)*(1.0_dp-frac_dust)/a_surf
3622 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 3624 #elif (OUT_TIMES==2) 3627 stop
' >>> output2: OUT_TIMES must be either 1 or 2!' 3630 v_tot = v_grounded + v_floating
3631 a_tot = a_grounded + a_floating
3633 vs_max = vs_max *year_sec
3641 || defined(emtp2sge) \
3642 || defined(xyz)) /* terrestrial ice sheet */
3648 q_temp = q_temp *year_sec *(
rho/
rho_w)
3651 accum_tot = accum_tot *year_sec *(
rho/
rho_w)
3654 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3656 q_s = q_s *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3658 q_b = q_b *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3660 q_temp = q_temp *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3668 write(unit=12, fmt=trim(fmt1)) time_val, delta_ts, z_sl, &
3669 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3670 v_sle, v_temp, a_temp, &
3671 h_max, h_t_max, zs_max, vs_max, tbh_max
3675 write(unit=12, fmt=trim(fmt1)) time_val, glac_index, z_sl, &
3676 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3677 v_sle, v_temp, a_temp, &
3678 h_max, h_t_max, zs_max, vs_max, tbh_max
3683 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3684 v_sle, v_temp, a_temp, &
3685 h_max, h_t_max, zs_max, vs_max, tbh_max
3695 #if (defined(HEINO)) 3701 tbh_ave_sed = 0.0_dp
3703 sum_area_sed = 0.0_dp
3710 sum_area_sed = sum_area_sed +
area(j,i)
3712 h_ave_sed = h_ave_sed +
area(j,i)*h(j,i)
3714 if (
n_cts(j,i) /= -1)
then 3719 tbh_ave_sed = tbh_ave_sed +
area(j,i)*tbh_help
3721 if (
n_cts(j,i) /= -1) atb_sed = atb_sed +
area(j,i)
3728 if (sum_area_sed >
eps)
then 3729 h_ave_sed = h_ave_sed / sum_area_sed
3730 tbh_ave_sed = tbh_ave_sed / sum_area_sed
3732 stop
' >>> output2: No sediment area found!' 3738 write(unit=15, fmt=trim(fmt2)) time_val, delta_ts, z_sl, &
3739 h_ave_sed, tbh_ave_sed, atb_sed
3741 write(unit=15, fmt=trim(fmt2)) time_val, glac_index, z_sl, &
3742 h_ave_sed, tbh_ave_sed, atb_sed
3745 h_ave_sed, tbh_ave_sed, atb_sed
3760 filename = trim(runname)//
'_ser.nc' 3761 filename_with_path = trim(outpath)//
'/'//trim(filename)
3763 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
3770 buffer =
'Time-series output of simulation '//trim(runname)
3771 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
3774 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
3776 call check( nf90_put_att(ncid, nf90_global,
'institution', trim(buffer)), &
3779 buffer =
'SICOPOLIS Version '//version
3780 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
3783 call date_and_time(ch_date, ch_time, ch_zone)
3784 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
3785 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
3786 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 3787 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
3790 buffer =
'http://www.sicopolis.net/' 3791 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
3798 if (grads_nc_tweaks)
then 3799 call check( nf90_def_dim(ncid,
'x', 1, ncd), thisroutine )
3800 call check( nf90_def_dim(ncid,
'y', 1, ncd), thisroutine )
3803 call check( nf90_def_dim(ncid,
't', nf90_unlimited, ncd), thisroutine )
3807 if (grads_nc_tweaks)
then 3811 call check( nf90_inq_dimid(ncid,
'x', nc1d), thisroutine )
3812 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
3815 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3818 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3820 buffer =
'Dummy x-coordinate for one point' 3821 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3823 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), thisroutine )
3827 call check( nf90_inq_dimid(ncid,
'y', nc1d), thisroutine )
3828 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
3831 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3834 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3836 buffer =
'Dummy y-coordinate for one point' 3837 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3839 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), thisroutine )
3845 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3846 call check( nf90_def_var(ncid,
't', nf90_float, nc1d, ncv), &
3849 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3852 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3855 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3857 call check( nf90_put_att(ncid, ncv,
'axis',
't'), thisroutine )
3859 if (grads_nc_tweaks)
then 3863 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3864 call check( nf90_def_var(ncid,
't_add_offset', nf90_float, nc1d, ncv), &
3867 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3869 buffer =
'time_add_offset' 3870 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3872 buffer =
'Time offset' 3873 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3876 time_add_offset_val = min(time_val, 0.0_dp)
3884 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3885 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, nc1d, ncv), &
3888 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3890 buffer =
'surface_temperature_anomaly' 3891 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3893 buffer =
'Surface temperature anomaly' 3894 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3901 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3902 call check( nf90_def_var(ncid,
'glac_index', nf90_float, nc1d, ncv), &
3905 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3907 buffer =
'glacial_index' 3908 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3910 buffer =
'Glacial index' 3911 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3918 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3919 call check( nf90_def_var(ncid,
'z_sl', nf90_float, nc1d, ncv), &
3922 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3924 buffer =
'global_average_sea_level_change' 3925 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3927 buffer =
'Sea level' 3928 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3933 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3934 call check( nf90_def_var(ncid,
'V_tot', nf90_float, nc1d, ncv), &
3937 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3939 buffer =
'land_ice_volume' 3940 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3942 buffer =
'Ice volume' 3943 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3948 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3949 call check( nf90_def_var(ncid,
'V_grounded', nf90_float, nc1d, ncv), &
3952 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3954 buffer =
'grounded_land_ice_volume' 3955 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3957 buffer =
'Volume of grounded ice' 3958 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3963 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3964 call check( nf90_def_var(ncid,
'V_floating', nf90_float, nc1d, ncv), &
3967 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3969 buffer =
'floating_ice_shelf_volume' 3970 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3972 buffer =
'Volume of floating ice' 3973 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3978 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3979 call check( nf90_def_var(ncid,
'A_tot', nf90_float, nc1d, ncv), &
3982 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3984 buffer =
'land_ice_area' 3985 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3988 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3993 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3994 call check( nf90_def_var(ncid,
'A_grounded', nf90_float, nc1d, ncv), &
3997 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3999 buffer =
'grounded_land_ice_area' 4000 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4002 buffer =
'Area covered by grounded ice' 4003 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4008 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4009 call check( nf90_def_var(ncid,
'A_floating', nf90_float, nc1d, ncv), &
4012 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4014 buffer =
'floating_ice_shelf_area' 4015 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4017 buffer =
'Area covered by floating ice' 4018 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4023 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4024 call check( nf90_def_var(ncid,
'V_af', nf90_float, nc1d, ncv), &
4027 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4029 buffer =
'land_ice_volume_not_displacing_sea_water' 4030 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4032 buffer =
'Ice volume above flotation' 4033 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4038 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4039 call check( nf90_def_var(ncid,
'V_sle', nf90_float, nc1d, ncv), &
4042 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4044 buffer =
'land_ice_volume_sle' 4045 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4047 buffer =
'Ice volume in SLE' 4048 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4053 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4054 call check( nf90_def_var(ncid,
'V_temp', nf90_float, nc1d, ncv), &
4057 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4059 buffer =
'temperate_land_ice_volume' 4060 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4062 buffer =
'Volume of temperate ice' 4063 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4068 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4069 call check( nf90_def_var(ncid,
'A_temp', nf90_float, nc1d, ncv), &
4072 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4074 buffer =
'temperate_land_ice_area' 4075 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4077 buffer =
'Area covered by temperate ice' 4078 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4083 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4084 call check( nf90_def_var(ncid,
'Q_s', nf90_float, nc1d, ncv), &
4086 buffer =
'm3 ice equiv. a-1' 4087 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4089 buffer =
'tendency_of_land_ice_volume_due_to_surface_mass_balance' 4090 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4092 buffer =
'Total surface mass balance' 4093 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4098 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4099 call check( nf90_def_var(ncid,
'precip_tot', nf90_float, nc1d, ncv), &
4101 buffer =
'm3 ice equiv. a-1' 4102 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4104 buffer =
'precipitation_rate' 4105 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4107 buffer =
'Precipitation rate' 4108 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4113 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4114 call check( nf90_def_var(ncid,
'runoff_tot', nf90_float, nc1d, ncv), &
4116 buffer =
'm3 ice equiv. a-1' 4117 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4119 buffer =
'runoff_rate' 4120 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4122 buffer =
'Runoff rate' 4123 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4128 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4129 call check( nf90_def_var(ncid,
'bmb_tot', nf90_float, nc1d, ncv), &
4131 buffer =
'm3 ice equiv. a-1' 4132 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4134 buffer =
'tendency_of_land_ice_volume_due_to_basal_mass_balance' 4135 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4137 buffer =
'Total basal mass balance' 4138 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4143 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4144 call check( nf90_def_var(ncid,
'Q_b', nf90_float, nc1d, ncv), &
4146 buffer =
'm3 ice equiv. a-1' 4147 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4149 buffer =
'basal_melting_rate' 4150 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4152 buffer =
'Basal melting rate' 4153 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4158 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4159 call check( nf90_def_var(ncid,
'Q_temp', nf90_float, nc1d, ncv), &
4161 buffer =
'm3 ice equiv. a-1' 4162 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4164 buffer =
'temperate_layer_drainage_rate' 4165 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4167 buffer =
'Drainage rate from the temperate ice layer' 4168 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4173 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4174 call check( nf90_def_var(ncid,
'calv_tot', nf90_float, nc1d, ncv), &
4176 buffer =
'm3 ice equiv. a-1' 4177 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4179 buffer =
'tendency_of_land_ice_volume_due_to_calving' 4180 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4182 buffer =
'Total calving rate' 4183 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4190 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4191 call check( nf90_def_var(ncid,
'disc_lsc', nf90_float, nc1d, ncv), &
4193 buffer =
'm3 ice equiv. a-1' 4194 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4196 buffer =
'large_scale_ice_lost_into_the_ocean' 4197 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4199 buffer =
'Large scale ice lost into the ocean' 4200 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4205 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4206 call check( nf90_def_var(ncid,
'disc_ssc', nf90_float, nc1d, ncv), &
4208 buffer =
'm3 ice equiv. a-1' 4209 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4211 buffer =
'small_scale_ice_lost_into_the_ocean' 4212 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4214 buffer =
'Small scale ice lost into the ocean' 4215 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4220 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4221 call check( nf90_def_var(ncid,
'dT_glann', nf90_float, nc1d, ncv), &
4224 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4226 buffer =
'global_annual_temperature_anomaly' 4227 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4229 buffer =
'Global annual temperature anomaly' 4230 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4235 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4236 call check( nf90_def_var(ncid,
'dT_sub', nf90_float, nc1d, ncv), &
4239 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4241 buffer =
'subsurface_ocean_temperature_anomaly' 4242 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4244 buffer =
'Subsurface ocean temperature anomaly' 4245 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4252 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4253 call check( nf90_def_var(ncid,
'dV_dt', nf90_float, nc1d, ncv), &
4256 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4258 buffer =
'tendency_of_land_ice_volume' 4259 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4261 buffer =
'Rate of ice volume change' 4262 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4267 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4268 call check( nf90_def_var(ncid,
'mb_resid', nf90_float, nc1d, ncv), &
4270 buffer =
'm3 ice equiv. a-1' 4271 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4273 buffer =
'total_mass_balance_residual' 4274 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4276 buffer =
'Residual of the total mass balance' 4277 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4282 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4283 call check( nf90_def_var(ncid,
'mbp', nf90_float, nc1d, ncv), &
4286 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4288 buffer =
'mass_balance_partition' 4289 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4291 buffer =
'Mass balance partition' 4292 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4297 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4298 call check( nf90_def_var(ncid,
'H_max', nf90_float, nc1d, ncv), &
4301 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4303 buffer =
'maximum_ice_thickness' 4304 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4306 buffer =
'Maximum ice thickness' 4307 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4312 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4313 call check( nf90_def_var(ncid,
'H_t_max', nf90_float, nc1d, ncv), &
4316 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4318 buffer =
'maximum_thickness_of_temperate_ice' 4319 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4321 buffer =
'Maximum thickness of temperate ice' 4322 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4327 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4328 call check( nf90_def_var(ncid,
'zs_max', nf90_float, nc1d, ncv), &
4331 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4333 buffer =
'maximum_surface_elevation' 4334 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4336 buffer =
'Maximum surface elevation' 4337 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4342 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4343 call check( nf90_def_var(ncid,
'vs_max', nf90_float, nc1d, ncv), &
4346 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4348 buffer =
'maximum_surface_speed' 4349 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4351 buffer =
'Maximum surface speed' 4352 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4357 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4358 call check( nf90_def_var(ncid,
'Tbh_max', nf90_float, nc1d, ncv), &
4361 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4363 buffer =
'maximum_basal_temperature_relative_to_pmp' 4364 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4366 buffer =
'Maximum basal temperature relative to pmp' 4367 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4372 call check( nf90_enddef(ncid), thisroutine )
4400 precip_tot = precip_tot +
accum(j,i)*
area(j,i)
4407 precip_tot = precip_tot *year_sec
4409 dv_dt = dv_dt *year_sec
4424 runoff_tot = runoff_tot +
runoff(j,i)*
area(j,i)
4432 bmb_tot = -(q_b+q_temp)
4434 #elif (MB_ACCOUNT==1) 4447 lmt = 0.0_dp; omt = 0.0_dp
4448 lmb = 0.0_dp; omb = 0.0_dp
4449 lmh = 0.0_dp; omh = 0.0_dp
4450 odt = 0.0_dp; odh = 0.0_dp
4487 runoff_tot = lmt + lmh
4489 calv_tot = omt + omh + odt + odh
4491 disc_lsc = omt + omh
4493 disc_ssc = odt + odh
4499 disc_lsc = disc_lsc * year_sec
4501 disc_ssc = disc_ssc * year_sec
4503 bmb_tot = bmb_tot * year_sec
4506 #endif /* if (MB_ACCOUNT==0) elif (MB_ACCOUNT==1) */ 4508 runoff_tot = runoff_tot *year_sec
4510 calv_tot = calv_tot * year_sec
4513 if (precip_tot.ne.0.0_dp)
then 4514 mbp = calv_tot/precip_tot
4520 mb_resid = q_s + bmb_tot - calv_tot - dv_dt
4521 #elif(MB_ACCOUNT==1) 4522 mb_resid = mb - dv_dt
4527 if (firstcall.and.grads_nc_tweaks)
then 4531 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
4532 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
4534 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
4535 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
4537 call check( nf90_sync(ncid), thisroutine )
4544 call check( nf90_inq_varid(ncid,
't', ncv), thisroutine )
4546 if (.not.grads_nc_tweaks)
then 4547 call check( nf90_put_var(ncid, ncv,
real(time_val,sp), &
4548 start=nc1cor), thisroutine )
4550 call check( nf90_put_var(ncid, ncv, &
4551 real(time_val-time_add_offset_val,sp), &
4552 start=nc1cor), thisroutine )
4555 call check( nf90_inq_varid(ncid,
't_add_offset', ncv), thisroutine )
4556 call check( nf90_put_var(ncid, ncv, &
4557 real(time_add_offset_val,sp), &
4558 start=nc1cor), thisroutine )
4563 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
4564 call check( nf90_put_var(ncid, ncv,
real(delta_ts,sp), &
4565 start=nc1cor), thisroutine )
4569 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
4570 call check( nf90_put_var(ncid, ncv,
real(glac_index,sp), &
4571 start=nc1cor), thisroutine )
4575 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
4576 call check( nf90_put_var(ncid, ncv,
real(no_value_neg_2,sp), &
4577 start=nc1cor), thisroutine )
4581 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
4582 call check( nf90_put_var(ncid, ncv,
real(z_sl,sp), &
4583 start=nc1cor), thisroutine )
4585 call check( nf90_inq_varid(ncid,
'V_tot', ncv), thisroutine )
4586 call check( nf90_put_var(ncid, ncv,
real(V_tot,sp), &
4587 start=nc1cor), thisroutine )
4589 call check( nf90_inq_varid(ncid,
'V_grounded', ncv), thisroutine )
4590 call check( nf90_put_var(ncid, ncv,
real(V_grounded,sp), &
4591 start=nc1cor), thisroutine )
4593 call check( nf90_inq_varid(ncid,
'V_floating', ncv), thisroutine )
4594 call check( nf90_put_var(ncid, ncv,
real(V_floating,sp), &
4595 start=nc1cor), thisroutine )
4597 call check( nf90_inq_varid(ncid,
'A_tot', ncv), thisroutine )
4598 call check( nf90_put_var(ncid, ncv,
real(A_tot,sp), &
4599 start=nc1cor), thisroutine )
4601 call check( nf90_inq_varid(ncid,
'A_grounded', ncv), thisroutine )
4602 call check( nf90_put_var(ncid, ncv,
real(A_grounded,sp), &
4603 start=nc1cor), thisroutine )
4605 call check( nf90_inq_varid(ncid,
'A_floating', ncv), thisroutine )
4606 call check( nf90_put_var(ncid, ncv,
real(A_floating,sp), &
4607 start=nc1cor), thisroutine )
4609 call check( nf90_inq_varid(ncid,
'V_af', ncv), thisroutine )
4610 call check( nf90_put_var(ncid, ncv,
real(V_af,sp), &
4611 start=nc1cor), thisroutine )
4613 call check( nf90_inq_varid(ncid,
'V_sle', ncv), thisroutine )
4614 call check( nf90_put_var(ncid, ncv,
real(V_sle,sp), &
4615 start=nc1cor), thisroutine )
4617 call check( nf90_inq_varid(ncid,
'V_temp', ncv), thisroutine )
4618 call check( nf90_put_var(ncid, ncv,
real(V_temp,sp), &
4619 start=nc1cor), thisroutine )
4621 call check( nf90_inq_varid(ncid,
'A_temp', ncv), thisroutine )
4622 call check( nf90_put_var(ncid, ncv,
real(A_temp,sp), &
4623 start=nc1cor), thisroutine )
4625 call check( nf90_inq_varid(ncid,
'Q_s', ncv), thisroutine )
4626 call check( nf90_put_var(ncid, ncv,
real(Q_s,sp), &
4627 start=nc1cor), thisroutine )
4629 call check( nf90_inq_varid(ncid,
'precip_tot', ncv), thisroutine )
4630 call check( nf90_put_var(ncid, ncv,
real(precip_tot,sp), &
4631 start=nc1cor), thisroutine )
4633 call check( nf90_inq_varid(ncid,
'runoff_tot', ncv), thisroutine )
4634 call check( nf90_put_var(ncid, ncv,
real(runoff_tot,sp), &
4635 start=nc1cor), thisroutine )
4637 call check( nf90_inq_varid(ncid,
'bmb_tot', ncv), thisroutine )
4638 call check( nf90_put_var(ncid, ncv,
real(bmb_tot,sp), &
4639 start=nc1cor), thisroutine )
4641 call check( nf90_inq_varid(ncid,
'Q_b', ncv), thisroutine )
4642 call check( nf90_put_var(ncid, ncv,
real(Q_b,sp), &
4643 start=nc1cor), thisroutine )
4645 call check( nf90_inq_varid(ncid,
'Q_temp', ncv), thisroutine )
4646 call check( nf90_put_var(ncid, ncv,
real(Q_temp,sp), &
4647 start=nc1cor), thisroutine )
4649 call check( nf90_inq_varid(ncid,
'calv_tot', ncv), thisroutine )
4650 call check( nf90_put_var(ncid, ncv,
real(calv_tot,sp), &
4651 start=nc1cor), thisroutine )
4654 call check( nf90_inq_varid(ncid,
'disc_lsc', ncv), thisroutine )
4655 call check( nf90_put_var(ncid, ncv,
real(disc_lsc,sp), &
4656 start=nc1cor), thisroutine )
4658 call check( nf90_inq_varid(ncid,
'disc_ssc', ncv), thisroutine )
4659 call check( nf90_put_var(ncid, ncv,
real(disc_ssc,sp), &
4660 start=nc1cor), thisroutine )
4662 call check( nf90_inq_varid(ncid,
'dT_glann', ncv), thisroutine )
4663 call check( nf90_put_var(ncid, ncv,
real(dT_glann,sp), &
4664 start=nc1cor), thisroutine )
4666 call check( nf90_inq_varid(ncid,
'dT_sub', ncv), thisroutine )
4667 call check( nf90_put_var(ncid, ncv,
real(dT_sub,sp), &
4668 start=nc1cor), thisroutine )
4671 call check( nf90_inq_varid(ncid,
'dV_dt', ncv), thisroutine )
4672 call check( nf90_put_var(ncid, ncv,
real(dV_dt,sp), &
4673 start=nc1cor), thisroutine )
4675 call check( nf90_inq_varid(ncid,
'mb_resid', ncv), thisroutine )
4676 call check( nf90_put_var(ncid, ncv,
real(mb_resid,sp), &
4677 start=nc1cor), thisroutine )
4679 call check( nf90_inq_varid(ncid,
'mbp', ncv), thisroutine )
4680 call check( nf90_put_var(ncid, ncv,
real(mbp,sp), &
4681 start=nc1cor), thisroutine )
4683 call check( nf90_inq_varid(ncid,
'H_max', ncv), thisroutine )
4684 call check( nf90_put_var(ncid, ncv,
real(H_max,sp), &
4685 start=nc1cor), thisroutine )
4687 call check( nf90_inq_varid(ncid,
'H_t_max', ncv), thisroutine )
4688 call check( nf90_put_var(ncid, ncv,
real(H_t_max,sp), &
4689 start=nc1cor), thisroutine )
4691 call check( nf90_inq_varid(ncid,
'zs_max', ncv), thisroutine )
4692 call check( nf90_put_var(ncid, ncv,
real(zs_max,sp), &
4693 start=nc1cor), thisroutine )
4695 call check( nf90_inq_varid(ncid,
'vs_max', ncv), thisroutine )
4696 call check( nf90_put_var(ncid, ncv,
real(vs_max,sp), &
4697 start=nc1cor), thisroutine )
4699 call check( nf90_inq_varid(ncid,
'Tbh_max', ncv), thisroutine )
4700 call check( nf90_put_var(ncid, ncv,
real(Tbh_max,sp), &
4701 start=nc1cor), thisroutine )
4707 if ( mod((counter-1), n_sync) == 0 ) &
4708 call check( nf90_sync(ncid), thisroutine )
4712 if (firstcall) firstcall = .false.
4720 subroutine output4(time, dxi, deta, delta_ts, glac_index, z_sl)
4729 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
4731 integer(i4b) :: i, j, n
4732 real(sp),
dimension(:),
allocatable :: r_n_core
4733 real(dp) :: time_val
4734 real(dp),
dimension(0:JMAX,0:IMAX) :: field
4735 real(dp),
dimension(:),
allocatable :: H_core, temp_b_core, &
4736 vx_b_core, vy_b_core, vh_b_core, &
4737 vx_s_core, vy_s_core, vh_s_core, &
4738 Rx_b_core, Ry_b_core, R_b_core, &
4742 integer(i4b),
save :: ncid
4743 integer(i4b) :: ncd, ncv, nc1d, nc2d(2)
4744 integer(i4b) :: nc1cor(1), nc1cnt(1), nc2cor(2), nc2cnt(2)
4745 integer(i4b) :: n_sync
4746 real(dp),
save :: time_add_offset_val
4747 character(len= 16) :: ch_date, ch_time, ch_zone
4748 character(len=256) :: filename, filename_with_path, buffer
4749 logical,
save :: grads_nc_tweaks
4752 integer(i4b),
save :: counter = 0
4753 logical,
save :: firstcall = .true.
4755 character(len=64),
parameter :: thisroutine =
'output4' 4757 counter = counter + 1
4773 r_n_core(n) =
real(n,
sp)
4784 field(j,i) =
vx_t(0,j,i)
4792 field(j,i) =
vy_t(0,j,i)
4798 vh_b_core(n) = sqrt(vx_b_core(n)**2+vy_b_core(n)**2)
4804 field(j,i) =
vx_c(kcmax,j,i)
4812 field(j,i) =
vy_c(kcmax,j,i)
4818 vh_s_core(n) = sqrt(vx_s_core(n)**2+vy_s_core(n)**2)
4824 field(j,i) =
temp_r(krmax,j,i)
4848 r_b_core(n) = rx_b_core(n) + ry_b_core(n)
4859 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 4861 #elif (OUT_TIMES==2) 4864 stop
' >>> output4: OUT_TIMES must be either 1 or 2!' 4867 vh_b_core = vh_b_core *year_sec
4868 vh_s_core = vh_s_core *year_sec
4870 bmb_core = bmb_core *year_sec
4875 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
4877 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
4879 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val,
no_value_pos_1, z_sl
4883 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') h_core(n)
4885 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') h_core(n)
4888 write(unit=14, fmt=
'(1pe13.4)') h_core(n)
4891 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') vh_s_core(n)
4893 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') vh_s_core(n)
4896 write(unit=14, fmt=
'(1pe13.4)') vh_s_core(n)
4899 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') temp_b_core(n)
4901 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') temp_b_core(n)
4904 write(unit=14, fmt=
'(1pe13.4,/)') temp_b_core(n)
4914 filename = trim(runname)//
'_core.nc' 4915 filename_with_path = trim(outpath)//
'/'//trim(filename)
4917 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
4924 buffer =
'Time-series output for the deep ice cores of simulation '// &
4926 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
4929 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
4931 call check( nf90_put_att(ncid, nf90_global,
'institution', &
4935 buffer =
'SICOPOLIS Version '//version
4936 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
4939 call date_and_time(ch_date, ch_time, ch_zone)
4940 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
4941 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
4942 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 4943 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
4946 buffer =
'http://www.sicopolis.net/' 4947 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
4954 if (grads_nc_tweaks)
then 4955 call check( nf90_def_dim(ncid,
'x', 1, ncd), thisroutine )
4956 call check( nf90_def_dim(ncid,
'y', 1, ncd), thisroutine )
4959 call check( nf90_def_dim(ncid,
'n',
n_core, ncd), thisroutine )
4960 call check( nf90_def_dim(ncid,
't', nf90_unlimited, ncd), thisroutine )
4964 if (grads_nc_tweaks)
then 4968 call check( nf90_inq_dimid(ncid,
'x', nc1d), thisroutine )
4969 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
4972 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4975 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4977 buffer =
'Dummy x-coordinate for one point' 4978 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4980 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), thisroutine )
4984 call check( nf90_inq_dimid(ncid,
'y', nc1d), thisroutine )
4985 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
4988 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4991 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4993 buffer =
'Dummy y-coordinate for one point' 4994 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4996 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), thisroutine )
5002 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5003 call check( nf90_def_var(ncid,
't', nf90_float, nc1d, ncv), &
5006 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5009 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5012 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5014 call check( nf90_put_att(ncid, ncv,
'axis',
't'), thisroutine )
5016 if (grads_nc_tweaks)
then 5020 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5021 call check( nf90_def_var(ncid,
't_add_offset', &
5022 nf90_float, nc1d, ncv), &
5025 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5027 buffer =
'time_add_offset' 5028 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5030 buffer =
'Time offset' 5031 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5034 time_add_offset_val = min(time_val, 0.0_dp)
5040 call check( nf90_inq_dimid(ncid,
'n', nc1d), thisroutine )
5041 call check( nf90_def_var(ncid,
'n', nf90_float, nc1d, ncv), &
5044 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5046 buffer =
'ice_core_number' 5047 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5049 buffer =
'Ice core number' 5050 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5053 do n=2,
n_core; buffer = trim(buffer)//
', '//trim(
ch_core(n));
end do 5054 call check( nf90_put_att(ncid, ncv,
'ice_core_names', trim(buffer)), &
5056 call check( nf90_put_att(ncid, ncv,
'axis',
'n'), thisroutine )
5062 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5063 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, nc1d, ncv), &
5066 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5068 buffer =
'surface_temperature_anomaly' 5069 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5071 buffer =
'Surface temperature anomaly' 5072 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5079 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5080 call check( nf90_def_var(ncid,
'glac_index', nf90_float, nc1d, ncv), &
5083 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5085 buffer =
'glacial_index' 5086 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5088 buffer =
'Glacial index' 5089 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5096 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5097 call check( nf90_def_var(ncid,
'z_sl', nf90_float, nc1d, ncv), &
5100 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5102 buffer =
'global_average_sea_level_change' 5103 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5105 buffer =
'Sea level' 5106 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5111 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5112 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5113 call check( nf90_def_var(ncid,
'H_core', nf90_float, nc2d, ncv), &
5116 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5118 buffer =
'land_ice_thickness' 5119 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5121 buffer =
'Ice thickness' 5122 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5127 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5128 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5129 call check( nf90_def_var(ncid,
'vh_b_core', nf90_float, nc2d, ncv), &
5132 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5134 buffer =
'land_ice_basal_horizontal_velocity' 5135 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5137 buffer =
'Horizontal velocity at the ice base' 5138 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5143 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5144 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5145 call check( nf90_def_var(ncid,
'vh_s_core', nf90_float, nc2d, ncv), &
5148 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5150 buffer =
'land_ice_surface_horizontal_velocity' 5151 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5153 buffer =
'Horizontal velocity at the ice surface' 5154 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5159 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5160 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5161 call check( nf90_def_var(ncid,
'temp_b_core', nf90_float, nc2d, ncv), &
5164 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5166 buffer =
'basal_temperature' 5167 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5169 buffer =
'Temperature at the ice base' 5170 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5175 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5176 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5177 call check( nf90_def_var(ncid,
'R_b_core', nf90_float, nc2d, ncv), &
5180 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5182 buffer =
'basal_frictional_heating' 5183 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5185 buffer =
'Basal frictional heating' 5186 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5191 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5192 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5193 call check( nf90_def_var(ncid,
'bmb_core', nf90_float, nc2d, ncv), &
5195 buffer =
'm ice equiv. a-1' 5196 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5198 buffer =
'land_ice_basal_mass_balance' 5199 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5201 buffer =
'Basal mass balance' 5202 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5207 call check( nf90_enddef(ncid), thisroutine )
5213 if (firstcall.and.grads_nc_tweaks)
then 5217 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
5218 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
5220 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
5221 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
5223 call check( nf90_sync(ncid), thisroutine )
5231 call check( nf90_inq_varid(ncid,
'n', ncv), thisroutine )
5232 call check( nf90_put_var(ncid, ncv, r_n_core, &
5233 start=nc1cor), thisroutine )
5245 call check( nf90_inq_varid(ncid,
't', ncv), thisroutine )
5247 if (.not.grads_nc_tweaks)
then 5248 call check( nf90_put_var(ncid, ncv,
real(time_val,sp), &
5249 start=nc1cor), thisroutine )
5251 call check( nf90_put_var(ncid, ncv, &
5252 real(time_val-time_add_offset_val,sp), &
5253 start=nc1cor), thisroutine )
5256 call check( nf90_inq_varid(ncid,
't_add_offset', ncv), thisroutine )
5257 call check( nf90_put_var(ncid, ncv, &
5258 real(time_add_offset_val,sp), &
5259 start=nc1cor), thisroutine )
5264 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
5265 call check( nf90_put_var(ncid, ncv,
real(delta_ts,sp), &
5266 start=nc1cor), thisroutine )
5270 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
5271 call check( nf90_put_var(ncid, ncv,
real(glac_index,sp), &
5272 start=nc1cor), thisroutine )
5276 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
5277 call check( nf90_put_var(ncid, ncv,
real(no_value_neg_2,sp), &
5278 start=nc1cor), thisroutine )
5282 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
5283 call check( nf90_put_var(ncid, ncv,
real(z_sl,sp), &
5284 start=nc1cor), thisroutine )
5286 call check( nf90_inq_varid(ncid,
'H_core', ncv), thisroutine )
5287 call check( nf90_put_var(ncid, ncv,
real(H_core,sp), &
5288 start=nc2cor, count=nc2cnt), thisroutine )
5290 call check( nf90_inq_varid(ncid,
'vh_b_core', ncv), thisroutine )
5291 call check( nf90_put_var(ncid, ncv,
real(vh_b_core,sp), &
5292 start=nc2cor, count=nc2cnt), thisroutine )
5294 call check( nf90_inq_varid(ncid,
'vh_s_core', ncv), thisroutine )
5295 call check( nf90_put_var(ncid, ncv,
real(vh_s_core,sp), &
5296 start=nc2cor, count=nc2cnt), thisroutine )
5298 call check( nf90_inq_varid(ncid,
'temp_b_core', ncv), thisroutine )
5299 call check( nf90_put_var(ncid, ncv,
real(temp_b_core,sp), &
5300 start=nc2cor, count=nc2cnt), thisroutine )
5302 call check( nf90_inq_varid(ncid,
'R_b_core', ncv), thisroutine )
5303 call check( nf90_put_var(ncid, ncv,
real(R_b_core,sp), &
5304 start=nc2cor, count=nc2cnt), thisroutine )
5306 call check( nf90_inq_varid(ncid,
'bmb_core', ncv), thisroutine )
5307 call check( nf90_put_var(ncid, ncv,
real(bmb_core,sp), &
5308 start=nc2cor, count=nc2cnt), thisroutine )
5314 if ( mod((counter-1), n_sync) == 0 ) &
5315 call check( nf90_sync(ncid), thisroutine )
5319 deallocate(r_n_core, h_core, &
5320 vx_b_core, vy_b_core, vh_b_core, &
5321 vx_s_core, vy_s_core, vh_s_core, &
5323 rx_b_core, ry_b_core, r_b_core, &
5332 if (firstcall) firstcall = .false.
5342 subroutine output5(time, dxi, deta, delta_ts, glac_index, z_sl)
5346 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
5348 integer(i4b) :: n, k
5349 real(dp) :: time_val
5350 real(dp),
dimension(0:JMAX,0:IMAX) :: field
5351 real(dp),
dimension(:),
allocatable :: zl_surf, zs_surf, &
5352 accum_surf, as_perp_surf, &
5353 snowfall_surf, rainfall_surf, runoff_surf, &
5354 vx_surf, vy_surf, vz_surf, &
5355 vx_base, vy_base, vz_base, &
5387 'grid', accum_surf(n))
5393 'grid', as_perp_surf(n))
5399 'grid', snowfall_surf(n))
5405 'grid', rainfall_surf(n))
5411 'grid', runoff_surf(n))
5445 'grid', temp_base_pmp(n))
5452 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 5454 #elif (OUT_TIMES==2) 5457 stop
' >>> output5: OUT_TIMES must be either 1 or 2!' 5461 accum_surf(n) = accum_surf(n) *year_sec
5462 as_perp_surf(n) = as_perp_surf(n) *year_sec
5463 snowfall_surf(n) = snowfall_surf(n) *year_sec
5464 rainfall_surf(n) = rainfall_surf(n) *year_sec
5465 runoff_surf(n) = runoff_surf(n) *year_sec
5466 vx_surf(n) = vx_surf(n) *year_sec
5467 vy_surf(n) = vy_surf(n) *year_sec
5468 vz_surf(n) = vz_surf(n) *year_sec
5469 vx_base(n) = vx_base(n) *year_sec
5470 vy_base(n) = vy_base(n) *year_sec
5471 vz_base(n) = vz_base(n) *year_sec
5477 write(41,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5478 write(42,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5479 write(43,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5480 write(44,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5481 write(45,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5482 write(46,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5483 write(47,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5484 write(48,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5485 write(49,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5486 write(50,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5487 write(51,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5488 write(52,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5489 write(53,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5490 write(54,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5492 write(41,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5493 write(42,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5494 write(43,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5495 write(44,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5496 write(45,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5497 write(46,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5498 write(47,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5499 write(48,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5500 write(49,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5501 write(50,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5502 write(51,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5503 write(52,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5504 write(53,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5505 write(54,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5509 write(41,
'(1pe13.4)',advance=
'no') zl_surf(n)
5510 write(42,
'(1pe13.4)',advance=
'no') zs_surf(n)
5511 write(43,
'(1pe13.4)',advance=
'no') accum_surf(n)
5512 write(44,
'(1pe13.4)',advance=
'no') as_perp_surf(n)
5513 write(45,
'(1pe13.4)',advance=
'no') snowfall_surf(n)
5514 write(46,
'(1pe13.4)',advance=
'no') rainfall_surf(n)
5515 write(47,
'(1pe13.4)',advance=
'no') runoff_surf(n)
5516 write(48,
'(1pe13.4)',advance=
'no') vx_surf(n)
5517 write(49,
'(1pe13.4)',advance=
'no') vy_surf(n)
5518 write(50,
'(1pe13.4)',advance=
'no') vz_surf(n)
5519 write(51,
'(1pe13.4)',advance=
'no') vx_base(n)
5520 write(52,
'(1pe13.4)',advance=
'no') vy_base(n)
5521 write(53,
'(1pe13.4)',advance=
'no') vz_base(n)
5522 write(54,
'(1pe13.4)',advance=
'no') temp_base_pmp(n)
5526 write(41,
'(1pe13.4)') zl_surf(n)
5527 write(42,
'(1pe13.4)') zs_surf(n)
5528 write(43,
'(1pe13.4)') accum_surf(n)
5529 write(44,
'(1pe13.4)') as_perp_surf(n)
5530 write(45,
'(1pe13.4)') snowfall_surf(n)
5531 write(46,
'(1pe13.4)') rainfall_surf(n)
5532 write(47,
'(1pe13.4)') runoff_surf(n)
5533 write(48,
'(1pe13.4)') vx_surf(n)
5534 write(49,
'(1pe13.4)') vy_surf(n)
5535 write(50,
'(1pe13.4)') vz_surf(n)
5536 write(51,
'(1pe13.4)') vx_base(n)
5537 write(52,
'(1pe13.4)') vy_base(n)
5538 write(53,
'(1pe13.4)') vz_base(n)
5539 write(54,
'(1pe13.4)') temp_base_pmp(n)
5541 deallocate(zl_surf, zs_surf, accum_surf, as_perp_surf, &
5542 snowfall_surf, rainfall_surf, runoff_surf, &
5543 vx_surf, vy_surf, vz_surf, &
5544 vx_base, vy_base, vz_base,temp_base_pmp)
5546 end subroutine output5
5548 #endif /* (defined(ASF)) */ 5555 subroutine borehole(field, x_pos, y_pos, dxi, deta, ch_grid, field_val)
5561 real(dp),
dimension(0:JMAX,0:IMAX),
intent(in) :: field
5562 real(dp),
intent(in) :: x_pos, y_pos, dxi, deta
5563 character (len=*),
intent(in) :: ch_grid
5565 real(dp),
intent(out) :: field_val
5567 integer(i4b) :: i1, i2, j1, j2
5568 real(dp) :: real_i, real_j
5572 real_i = (x_pos-
xi(0)) /dxi
5573 real_j = (y_pos-
eta(0))/deta
5575 if (ch_grid==
'sg_x') real_i = real_i - 0.5_dp
5576 if (ch_grid==
'sg_y') real_j = real_j - 0.5_dp
5578 if (real_i < 0.5_dp*
real(imax,
dp)) then
5582 i2 = ceiling(real_i)
5586 if (real_j < 0.5_dp*
real(jmax,
dp)) then
5590 j2 = ceiling(real_j)
5594 if (ch_grid==
'grid')
then 5597 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax).or.(j2 > jmax)) &
5598 stop
' >>> borehole: Borehole position out of domain!' 5600 else if (ch_grid==
'sg_x')
then 5603 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax-1).or.(j2 > jmax)) &
5604 stop
' >>> borehole: Borehole position out of domain!' 5606 else if (ch_grid==
'sg_y')
then 5609 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax).or.(j2 > jmax-1)) &
5610 stop
' >>> borehole: Borehole position out of domain!' 5614 stop
' >>> borehole: Parameter ch_grid has undefined value!' 5620 field_val =
bilinint(
real(i1,dp),
real(i2,dp),
real(j1,dp),
real(j2,dp), &
5621 field(j1,i1), field(j2,i1), field(j1,i2), field(j2,i2), &
5633 logical,
intent(out) :: grads_nc_tweaks
5635 character(len=16) :: ch_value
5639 grads_nc_tweaks = .false.
5643 call get_environment_variable(
'SICO_GRADS_NC_TWEAKS', ch_value)
5645 if ( (trim(ch_value)==
'true') &
5646 .or.(trim(ch_value)==
'True').or.(trim(ch_value)==
'TRUE') ) &
5647 grads_nc_tweaks = .true.
5649 if ( (trim(ch_value)==
'yes') &
5650 .or.(trim(ch_value)==
'Yes').or.(trim(ch_value)==
'YES') &
5651 .or.(trim(ch_value)==
'y').or.(trim(ch_value)==
'Y') ) &
5652 grads_nc_tweaks = .true.
5656 #if (defined(GRADS_NC_TWEAKS)) 5657 #if (GRADS_NC_TWEAKS==1) 5658 grads_nc_tweaks = .true.
5660 grads_nc_tweaks = .false.
5664 #else /* NetCDF not used */ 5665 grads_nc_tweaks = .false.
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vx_c
vx_c(kc,j,i): Velocity in x-direction in the upper (kc) ice domain (at (i+1/2,j,kc)) ...
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c
temp_c(kc,j,i): Temperature in the upper (kc) ice domain
integer(i2b), dimension(0:jmax, 0:imax), public mask_mar
integer(i4b) ncid_ser
ncid_ser: ID of the NetCDF time-series output file
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) age_c
age_c(kc,j,i): Age in the upper (kc) ice domain
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...
real(dp), dimension(0:jmax, 0:imax), public cos_grad_tc
real(dp), dimension(0:jmax, 0:imax) vx_b_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) age_t
age_t(kt,j,i): Age in the lower (kt) ice domain
real(dp) rho_w
RHO_W: Density of pure water.
real(dp), dimension(0:jmax, 0:imax) vx_m
vx_m(j,i): Mean (depth-averaged) velocity in x-direction, at (i+1/2,j)
real(dp), dimension(0:krmax, 0:jmax, 0:imax) temp_r
temp_r(kr,j,i): Temperature in the bedrock
real(dp), dimension(0:jmax, 0:imax) mb_source_apl
mb_source_apl(j,i): Applied mass balance source (SMB, BMB, calving)
real(dp) h_r
H_R: Thickness of the modelled lithosphere layer.
real(dp), dimension(0:jmax, 0:imax) vz_b
vz_b(j,i): Velocity in z-direction at the ice base, at (i,j)
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.
real(dp), parameter eps
eps: Small number
real(dp), dimension(0:jmax, 0:imax) vx_s_g
vx_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
integer(i2b) forcing_flag
forcing_flag: Flag for the forcing type. 1: forcing by a spatially constant surface temperature anoma...
real(dp), dimension(0:jmax, 0:imax) calv_grounded
calv_grounded(j,i): Calving rate of grounded ice
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...
real(dp), dimension(0:jmax, 0:imax) vz_s
vz_s(j,i): Velocity in z-direction at the ice surface, at (i,j)
real(dp), dimension(0:jmax, 0:imax) snowfall
snowfall(j,i): Snowfall rate at the ice surface
Several mathematical tools used by SICOPOLIS.
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) 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) 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(0:jmax, 0:imax) dzs_deta_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream_x
flag_shelfy_stream_x(j,i): Shelfy stream flag in x-direction, at (i+1/2,j). .true.: shelfy stream point .false.: otherwise
real(dp), dimension(0:jmax, 0:imax) runoff
runoff(j,i): Runoff rate at the ice surface
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
real(dp), dimension(0:jmax, 0:imax), public cst_dist
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
real(dp), parameter pi_180_inv
pi_180_inv: 180 divided by pi (-> rad to deg)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vz_t
vz_t(kt,j,i): Velocity in z-direction in the lower (kt) ice domain (at (i,j,kt+1/2)) ...
real(dp), dimension(0:jmax, 0:imax) zl
zl(j,i): Coordinate z of the lithosphere surface
real(dp) g
G: Acceleration due to gravity.
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...
real(dp), dimension(0:jmax, 0:imax) vy_m
vy_m(j,i): Mean (depth-averaged) velocity in y-direction, at (i,j+1/2)
integer(i2b), dimension(0:jmax, 0:imax) kc_cts
kc_cts(j,i): Position kc of the CTS (for COLD, ENTC, ENTM)
real(dp), dimension(0:jmax, 0:imax) q_tld
Q_tld(j,i): Water drainage rate from the temperate layer.
real(dp), parameter sec_to_year
real(dp), dimension(0:jmax, 0:imax) runoff_bot
runoff_bot(j,i): Runoff rate (accounting at ice bottom)
Declarations of global variables for SICOPOLIS (for the ANT domain).
subroutine, public borehole(field, x_pos, y_pos, dxi, deta, ch_grid, field_val)
Computation of an arbitrary field quantity for a given borehole position x_pos, y_pos by weighed aver...
real(dp), parameter no_value_neg_2
no_value_neg_2: Negative no-value parameter
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) enth_c
enth_c(kc,j,i): Enthalpy in the upper (kc) ice domain
real(dp), dimension(0:jmax, 0:imax) runoff_top
runoff_top(j,i): Runoff rate (accounting at ice surface)
real(dp), dimension(0:jmax, 0:imax), public dis_perp
Declarations of kind types for SICOPOLIS.
real(dp), dimension(0:jmax, 0:imax) zs
zs(j,i): Coordinate z of the surface topography
real(dp), dimension(0:jmax, 0:imax) accum
accum(j,i): Accumulation rate at the ice surface (includes liquid precipitation = rainfall!) ...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) txz_t
txz_t(kt,j,i): Shear stress txz in the lower (kt) ice domain (at (i+1/2,j,kt))
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(0:jmax, 0:imax) vy_b_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
integer(i4b) ncid_core
ncid_core: ID of the NetCDF time-series output file for the deep ice cores
subroutine set_grads_nc_tweaks(grads_nc_tweaks)
Set the value of the auxiliary variable grads_nc_tweaks.
real(dp), dimension(0:jmax, 0:imax) dzm_dtau
dzm_dtau(j,i): Derivative of zm by tau (time)
real(dp), dimension(:), allocatable y_core
y_core(n): Coordinate eta (= y) of the prescribed borehole positions
real(dp), dimension(:), allocatable x_surf
x_surf(n): Coordinate xi (= x) of the prescribed surface points
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) temp_c_m
temp_c_m(kc,j,i): Melting temperature in the upper (kc) ice domain
integer(i2b), dimension(0:jmax, 0:imax) maske_old
maske_old(j,i): Old value of maske (at the previous time step)
real(dp), dimension(0:jmax, 0:imax) qx
qx(j,i): Volume flux in x-direction (depth-integrated vx, at (i+1/2,j))
real(dp) rho_i
RHO_I: Density of ice.
real(dp), dimension(0:jmax, 0:imax) rainfall
rainfall(j,i): Rainfall rate at the ice surface
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream
flag_shelfy_stream(j,i): Shelfy stream flag on the main grid. .true.: grounded ice, and at least one neighbour on the staggered grid is a shelfy stream point .false.: otherwise
real(dp), dimension(0:jmax, 0:imax) q_gl_g
q_gl_g(j,i): Volume flux across the grounding line, at (i,j)
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vz_c
vz_c(kc,j,i): Velocity in z-direction in the upper (kc) ice domain (at (i,j,kc+1/2)) ...
real(dp) phi0
PHI0: Standard parallel of the stereographic projection.
real(dp), dimension(0:jmax, 0:imax) vy_s_g
vy_s_g(j,i): Velocity in x-direction at the ice surface, at (i,j)
real(dp), public dt_glann
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.
real(dp), dimension(0:jmax, 0:imax) disc_top
disc_top(j,i): Ice discharge rate (accounting at ice surface)
real(dp), dimension(0:kcmax) eaz_c_quotient
eaz_c_quotient(kc): Abbreviation for (eaz_c(kc)-1.0)/(ea-1.0)
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).
subroutine check(status, ch_calling_routine)
NetCDF error capturing.
real(dp), dimension(0:jmax, 0:imax) temph_b
temph_b(j,i): Basal temperature relative to the pressure melting point
real(dp), dimension(0:jmax, 0:imax) dzs_dxi_g
(.)_g(j,i): Staggered-grid quantity (.) interpolated to grid point (i,j)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vy_t
vy_t(kt,j,i): Velocity in y-direction in the lower (kt) ice domain (at (i,j+1/2,kt)) ...
real(dp), dimension(0:jmax, 0:imax) am_perp
am_perp(j,i): Ice volume flux across the z=zm interface
character(len=16), dimension(:), allocatable ch_core
ch_core(n): Names of the prescribed borehole positions
real(dp), parameter no_value_pos_1
no_value_pos_1: Positive no-value parameter
real(dp), dimension(0:jmax, 0:imax) as_perp_apl
as_perp_apl(j,i): Applied accumulation-ablation function (SMB)
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), dimension(0:imax) xi
xi(i): Coordinate xi (= x) of grid point i
real(dp), dimension(0:kcmax, 0:jmax, 0:imax) vy_c
vy_c(kc,j,i): Velocity in y-direction in the upper (kc) ice domain (at (i,j+1/2,kc)) ...
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) omega_t
omega_t(kt,j,i): Water content in the lower (kt) ice domain
real(dp) rho_sw
RHO_SW: Density of sea water.
logical, dimension(0:jmax, 0:imax) flag_shelfy_stream_y
flag_shelfy_stream_y(j,i): Shelfy stream flag in y-direction, at (i,j+1/2). .true.: shelfy stream point .false.: otherwise
integer, parameter sp
Single-precision reals.
integer(i2b), dimension(0:jmax, 0:imax) mask_run
mask_run(j,i): mask indicating melt type. 2: visible (ocean, for later developments), 1: visible (grounded ice), -1: hidden on land, -2: hidden in ocean
Ice discharge parameterization for the Greenland ice sheet.
real(dp) rho
RHO: Density of ice.
real(dp) function bilinint(x1, x2, y1, y2, z11, z12, z21, z22, x, y)
Bilinear interpolation.
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.
integer(i4b) n_surf
n_surf: Number of surface points for which time-series data are written
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) lambda0
LAMBDA0: Reference longitude (central meridian) of the stereographic projection.
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...
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) dzl_dtau
dzl_dtau(j,i): Derivative of zl by tau (time)
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) tyz_t
tyz_t(kt,j,i): Shear stress tyz in the lower (kt) ice domain (at (i,j+1/2,kt))
real(dp), dimension(0:ktmax, 0:jmax, 0:imax) vx_t
vx_t(kt,j,i): Velocity in x-direction in the lower (kt) ice domain (at (i+1/2,j,kt)) ...
real(dp), dimension(0:jmax, 0:imax) qy
qy(j,i): Volume flux in y-direction (depth-integrated vy, at (i,j+1/2))