58 subroutine output1(runname, time, delta_ts, glac_index, z_sl, &
59 flag_3d_output, ndat2d, ndat3d)
61 #if (CALCMOD==1 || CALCMOD==0 || CALCMOD==-1) 65 #if (NETCDF==2) /* time-slice file in NetCDF format */ 76 real(dp),
intent(in) :: time, delta_ts, glac_index, z_sl
77 character(len=100),
intent(in) :: runname
78 logical,
intent(in) :: flag_3d_output
80 integer(i4b),
intent(inout) :: ndat2d, ndat3d
82 integer(i4b) :: i, j, kc, kt, kr
83 integer(i4b) :: ndat, ndat_help, ndat_1000s, ndat_100s, ndat_10s, ndat_1s
84 real(dp),
dimension(0:JMAX,0:IMAX) :: H, H_cold, H_temp, dH_dtau
85 real(dp),
dimension(0:JMAX,0:IMAX) :: vx_m_g, vy_m_g
86 real(dp),
dimension(0:JMAX,0:IMAX) :: tau_b_driving, tau_b_drag
87 real(dp) :: V_tot, V_grounded, V_floating, V_gr_redu, V_af
88 real(dp) :: A_grounded, A_floating
89 real(sp) :: lon0, lat0
90 real(dp) :: rhosw_rho_ratio
91 character(len=256) :: filename, filename_with_path
92 character :: ch_1000s, ch_100s, ch_10s, ch_1s
93 character(len=16) :: ch_date, ch_time, ch_zone
95 real(dp),
parameter :: one_year = 1.0_dp
97 integer(i2b),
dimension(0:IMAX,0:JMAX) :: maske_conv, maske_old_conv, &
98 mask_run_conv, n_cts_conv, kc_cts_conv
99 integer(i2b),
dimension(0:IMAX,0:JMAX) :: mask_mar_conv
100 integer(i1b),
dimension(0:IMAX,0:JMAX) :: flag_shelfy_stream_x_conv, &
101 flag_shelfy_stream_y_conv, &
102 flag_shelfy_stream_conv
104 real(sp) :: time_conv, delta_ts_conv, glac_index_conv, z_sl_conv, &
105 V_tot_conv, V_af_conv, A_grounded_conv, A_floating_conv, &
107 xi_conv(0:imax), eta_conv(0:jmax), &
108 sigma_level_c_conv(0:kcmax), sigma_level_t_conv(0:ktmax), &
109 sigma_level_r_conv(0:krmax)
110 real(sp),
dimension(0:IMAX,0:JMAX) :: lambda_conv, phi_conv, &
111 lon_conv, lat_conv, &
112 temp_s_conv, accum_conv, &
113 snowfall_conv, rainfall_conv, pdd_conv, &
114 as_perp_conv, as_perp_apl_conv, smb_corr_conv, &
116 zs_conv, zm_conv, zb_conv, zl_conv, zl0_conv, &
117 H_cold_conv, H_temp_conv, H_conv, &
118 Q_bm_conv, Q_tld_conv, &
121 dzs_dtau_conv, dzm_dtau_conv, dzb_dtau_conv, dzl_dtau_conv, &
122 dH_c_dtau_conv, dH_t_dtau_conv, dH_dtau_conv, &
123 vx_b_g_conv, vy_b_g_conv, vz_b_conv, vh_b_conv, &
124 vx_s_g_conv, vy_s_g_conv, vz_s_conv, vh_s_conv, &
125 vx_m_g_conv, vy_m_g_conv, vh_m_conv, &
126 temp_b_conv, temph_b_conv, &
127 tau_b_driving_conv, tau_b_drag_conv, &
128 p_b_w_conv, H_w_conv, q_gl_g_conv, q_cf_g_conv, &
129 cst_dist_conv, cos_grad_tc_conv, dis_perp_conv, &
130 ratio_sl_x_conv, ratio_sl_y_conv, &
133 real(sp),
dimension(0:IMAX,0:JMAX,0:KCMAX) :: vx_c_conv, vy_c_conv, vz_c_conv, &
134 temp_c_conv, age_c_conv, &
135 enth_c_conv, omega_c_conv, &
137 real(sp),
dimension(0:IMAX,0:JMAX,0:KTMAX) :: vx_t_conv, vy_t_conv, vz_t_conv, &
138 omega_t_conv, age_t_conv, &
141 real(sp),
dimension(0:IMAX,0:JMAX,0:KRMAX) :: temp_r_conv
143 #if (NETCDF==1) /* time-slice file in native binary format */ 146 character(len=256) :: ch_attr_title, ch_attr_institution, ch_attr_source, &
147 ch_attr_history, ch_attr_references
148 character(len= 16),
parameter :: filename_extension =
'.erg' 150 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 152 integer(i4b) :: ncid, ncv
155 integer(i4b) :: ncd, nc1d, nc2d(2), nc3d(3)
160 integer(i4b) :: nc2flag(2), nc3flag(3), nc4flag(4)
164 integer(i4b) :: nc1cor_i(1), nc1cor_j(1), &
165 nc1cor_kc(1), nc1cor_kt(1), nc1cor_kr(1), &
167 nc3cor_ijkc(3), nc3cor_ijkt(3), nc3cor_ijkr(3)
171 integer(i4b) :: nc1cnt_i(1), nc1cnt_j(1), &
172 nc1cnt_kc(1), nc1cnt_kt(1), nc1cnt_kr(1), &
174 nc3cnt_ijkc(3), nc3cnt_ijkt(3), nc3cnt_ijkr(3)
178 character(len=256) :: buffer
179 character(len= 16),
parameter :: filename_extension =
'.nc' 180 character(len= 16),
allocatable :: coord_id(:)
183 errormsg =
' >>> output1: Parameter NETCDF must be either 1 or 2!' 187 character(len=64),
parameter :: thisroutine =
'output1' 189 #if (NETCDF==2) /* time-slice file in NetCDF format */ 192 nc1cnt_i = (/ imax+1 /)
195 nc1cnt_j = (/ jmax+1 /)
198 nc1cnt_kc = (/ kcmax+1 /)
201 nc1cnt_kt = (/ ktmax+1 /)
204 nc1cnt_kr = (/ krmax+1 /)
206 nc2cor_ij = (/ 1, 1 /)
207 nc2cnt_ij = (/ imax+1, jmax+1 /)
209 nc3cor_ijkc = (/ 1, 1, 1 /)
210 nc3cnt_ijkc = (/ imax+1, jmax+1, kcmax+1 /)
212 nc3cor_ijkt = (/ 1, 1, 1 /)
213 nc3cnt_ijkt = (/ imax+1, jmax+1, ktmax+1 /)
215 nc3cor_ijkr = (/ 1, 1, 1 /)
216 nc3cnt_ijkr = (/ imax+1, jmax+1, krmax+1 /)
222 if (flag_3d_output)
then 228 if (ndat > 9999)
then 229 errormsg =
' >>> output1: Too many time-slice files!' 234 ndat_1000s = ndat_help/1000
235 ndat_help = ndat_help-ndat_1000s*1000
236 ndat_100s = ndat_help/100
237 ndat_help = ndat_help-ndat_100s*100
238 ndat_10s = ndat_help/10
239 ndat_help = ndat_help-ndat_10s*10
242 ch_1000s = char(ndat_1000s+ichar(
'0'))
243 ch_100s = char(ndat_100s +ichar(
'0'))
244 ch_10s = char(ndat_10s +ichar(
'0'))
245 ch_1s = char(ndat_1s +ichar(
'0'))
247 if (flag_3d_output)
then 248 filename = trim(runname)//ch_1000s//ch_100s//ch_10s//ch_1s &
249 //trim(filename_extension)
251 filename = trim(runname)//
'_2d_'//ch_1000s//ch_100s//ch_10s//ch_1s &
252 //trim(filename_extension)
255 filename_with_path = trim(outpath)//
'/'//trim(filename)
259 #if (NETCDF==1) /* time-slice file in native binary format */ 263 open(unit=11, iostat=ios, file=trim(filename_with_path), status=
'new', &
267 errormsg =
' >>> output1: Error when opening an erg file!' 273 ch_attr_title =
'Time-slice output no. '//ch_1000s//ch_100s//ch_10s//ch_1s// &
274 ' of simulation '//trim(runname)
275 write(unit=11) ch_attr_title
277 ch_attr_institution =
'Institute of Low Temperature Science, '// &
278 'Hokkaido University, Sapporo, Japan' 279 write(unit=11) ch_attr_institution
281 ch_attr_source =
'SICOPOLIS Version '//version
282 write(unit=11) ch_attr_source
284 call date_and_time(ch_date, ch_time, ch_zone)
285 ch_attr_history = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
286 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
287 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 288 write(unit=11) ch_attr_history
290 ch_attr_references =
'http://www.sicopolis.net/' 291 write(unit=11) ch_attr_references
293 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 295 if (
allocated(coord_id))
deallocate(coord_id);
allocate(coord_id(5))
296 coord_id(1) =
'x'; coord_id(2) =
'y' 297 coord_id(3) =
'zeta_c'; coord_id(4) =
'zeta_t'; coord_id(5) =
'zeta_r' 301 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
306 buffer =
'Time-slice output no. '//ch_1000s//ch_100s//ch_10s//ch_1s// &
307 ' of simulation '//trim(runname)
308 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
311 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
313 call check( nf90_put_att(ncid, nf90_global,
'institution', trim(buffer)), &
316 buffer =
'SICOPOLIS Version '//version
317 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
320 call date_and_time(ch_date, ch_time, ch_zone)
321 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
322 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
323 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 324 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
327 buffer =
'http://www.sicopolis.net/' 328 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
333 call check( nf90_def_dim(ncid, trim(coord_id(1)), imax+1, ncd), thisroutine )
334 call check( nf90_def_dim(ncid, trim(coord_id(2)), jmax+1, ncd), thisroutine )
335 call check( nf90_def_dim(ncid, trim(coord_id(3)), kcmax+1, ncd), thisroutine )
336 call check( nf90_def_dim(ncid, trim(coord_id(4)), ktmax+1, ncd), thisroutine )
337 call check( nf90_def_dim(ncid, trim(coord_id(5)), krmax+1, ncd), thisroutine )
343 call check( nf90_def_var(ncid,
'crs', nf90_short, ncv), thisroutine )
344 #if (GRID==0 || GRID==1) 345 buffer =
'polar_stereographic' 346 call check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
349 buffer =
'latitude_longitude' 350 call check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
359 || defined(emtp2sge) \
360 || defined(xyz)) /* terrestrial ice sheet */
362 call check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
364 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 365 buffer =
'Mars_ellipsoid' 366 call check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
369 errormsg =
' >>> output1: No valid domain (ANT, GRL etc.) specified!' 372 #if (GRID==0 || GRID==1) 373 call check( nf90_put_att(ncid, ncv,
'false_easting', 0.0), &
375 call check( nf90_put_att(ncid, ncv,
'false_northing', 0.0), &
378 lon0 = modulo(lon0+180.0_sp, 360.0_sp)-180.0_sp
379 lon0 = nint(lon0*1.0e+04_sp)*1.0e-04_sp
381 if (lat0 > 90.0_sp) lat0 = 90.0_sp
382 if (lat0 < -90.0_sp) lat0 = -90.0_sp
383 lat0 = nint(lat0*1.0e+04_sp)*1.0e-04_sp
385 if (lat0 >= 0.0_sp)
then 386 call check( nf90_put_att(ncid, ncv, &
387 'latitude_of_projection_origin', 90.0), &
390 call check( nf90_put_att(ncid, ncv, &
391 'latitude_of_projection_origin', -90.0), &
394 call check( nf90_put_att(ncid, ncv, &
395 'straight_vertical_longitude_from_pole', lon0), &
397 call check( nf90_put_att(ncid, ncv, &
398 'standard_parallel', lat0), &
404 call check( nf90_def_var(ncid,
'time', nf90_float, ncv), &
407 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
410 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
413 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
420 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, ncv), &
423 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
425 buffer =
'surface_temperature_anomaly' 426 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
428 buffer =
'Surface temperature anomaly' 429 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
436 call check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
439 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
441 buffer =
'glacial_index' 442 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
444 buffer =
'Glacial index' 445 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
452 call check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
455 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
457 buffer =
'glacial_index' 458 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
460 buffer =
'Glacial index' 461 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
463 buffer =
'This variable will be assigned a dummy value only!' 464 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
471 call check( nf90_def_var(ncid,
'z_sl', nf90_float, ncv), &
474 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
476 buffer =
'global_average_sea_level_change' 477 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
480 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
485 call check( nf90_def_var(ncid,
'V_tot', nf90_float, ncv), &
488 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
490 buffer =
'land_ice_volume' 491 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
493 buffer =
'Ice volume' 494 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
499 call check( nf90_def_var(ncid,
'V_af', nf90_float, ncv), &
502 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
504 buffer =
'land_ice_volume_not_displacing_sea_water' 505 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
507 buffer =
'Ice volume above flotation' 508 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
513 call check( nf90_def_var(ncid,
'A_grounded', nf90_float, ncv), &
516 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
518 buffer =
'grounded_land_ice_area' 519 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
521 buffer =
'Area covered by grounded ice' 522 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
527 call check( nf90_def_var(ncid,
'A_floating', nf90_float, ncv), &
530 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
532 buffer =
'floating_ice_shelf_area' 533 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
535 buffer =
'Area covered by floating ice' 536 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
541 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc1d), &
543 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
546 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
548 buffer =
'projection_x_coordinate' 549 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
551 buffer =
'x-coordinate of the grid point i' 552 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
554 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), &
559 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc1d), &
561 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
564 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
566 buffer =
'projection_y_coordinate' 567 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
569 buffer =
'y-coordinate of the grid point j' 570 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
572 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), &
577 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc1d), &
579 call check( nf90_def_var(ncid,
'sigma_level_c', nf90_float, nc1d, ncv), &
582 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
584 buffer =
'land_ice_kc_layer_sigma_coordinate' 585 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
587 buffer =
'sigma-coordinate of the grid point kc' 588 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
593 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc1d), &
595 call check( nf90_def_var(ncid,
'sigma_level_t', nf90_float, nc1d, ncv), &
598 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
600 buffer =
'land_ice_kt_layer_sigma_coordinate' 601 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
603 buffer =
'sigma-coordinate of the grid point kt' 604 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
609 call check( nf90_inq_dimid(ncid, trim(coord_id(5)), nc1d), &
611 call check( nf90_def_var(ncid,
'sigma_level_r', nf90_float, nc1d, ncv), &
614 call check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
616 buffer =
'lithosphere_layer_sigma_coordinate' 617 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
619 buffer =
'sigma-coordinate of the grid point kr' 620 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
625 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
627 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
629 call check( nf90_def_var(ncid,
'lon', nf90_float, nc2d, ncv), &
632 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
635 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
637 buffer =
'Geographical longitude' 638 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
643 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
645 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
647 call check( nf90_def_var(ncid,
'lat', nf90_float, nc2d, ncv), &
650 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
653 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
655 buffer =
'Geographical latitude' 656 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
661 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
663 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
665 call check( nf90_def_var(ncid,
'lambda', nf90_float, nc2d, ncv), &
668 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
671 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
673 buffer =
'Geographical longitude' 674 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
676 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
678 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
683 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
685 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
687 call check( nf90_def_var(ncid,
'phi', nf90_float, nc2d, ncv), &
690 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
693 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
695 buffer =
'Geographical latitude' 696 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
698 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
700 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
705 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
707 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
709 call check( nf90_def_var(ncid,
'temp_s', nf90_float, nc2d, ncv), &
712 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
714 buffer =
'surface_temperature' 715 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
717 buffer =
'Temperature at the ice surface' 718 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
720 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
722 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
727 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
729 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
731 call check( nf90_def_var(ncid,
'prec', nf90_float, nc2d, ncv), &
734 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
736 buffer =
'land_ice_precipitation' 737 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
739 buffer =
'Annual precipitation at the ice surface' 740 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
742 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
744 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
749 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
751 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
753 call check( nf90_def_var(ncid,
'snowfall', nf90_float, nc2d, ncv), &
756 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
758 buffer =
'land_ice_snowfall' 759 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
761 buffer =
'Annual snowfall at the ice surface' 762 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
764 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
766 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
771 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
773 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
775 call check( nf90_def_var(ncid,
'rainfall', nf90_float, nc2d, ncv), &
778 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
780 buffer =
'land_ice_rainfall' 781 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
783 buffer =
'Annual rainfall at the ice surface' 784 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
786 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
788 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
793 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
795 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
797 call check( nf90_def_var(ncid,
'pdd', nf90_float, nc2d, ncv), &
800 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
802 buffer =
'land_ice_positive_degree_days' 803 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
805 buffer =
'Positive degree days at the ice surface' 806 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
808 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
810 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
815 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
817 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
819 call check( nf90_def_var(ncid,
'as_perp', nf90_float, nc2d, ncv), &
822 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
824 buffer =
'land_ice_surface_mass_balance' 825 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
827 buffer =
'Mass balance at the ice surface' 828 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
830 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
832 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
837 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
839 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
841 call check( nf90_def_var(ncid,
'as_perp_apl', nf90_float, nc2d, ncv), &
844 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
846 buffer =
'applied_land_ice_surface_mass_balance' 847 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
849 buffer =
'Applied mass balance at the ice surface' 850 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
852 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
854 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
859 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
861 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
863 call check( nf90_def_var(ncid,
'smb_corr', nf90_float, nc2d, ncv), &
866 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
868 buffer =
'land_ice_surface_mass_balance_diagnosed_correction' 869 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
871 buffer =
'Diagnosed correction of the mass balance at the ice surface' 872 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
874 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
876 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
879 #if (DISC>0) /* Ice discharge parameterisation */ 883 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
885 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
887 call check( nf90_def_var(ncid,
'dis_perp', nf90_float, nc2d, ncv), &
890 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
892 buffer =
'ice_discharge' 893 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
895 buffer =
'Ice discharge' 896 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
898 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
900 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
905 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
907 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
909 call check( nf90_def_var(ncid,
'cst_dist', nf90_float, nc2d, ncv), &
912 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
914 buffer =
'coastal_distance' 915 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
917 buffer =
'Coastal distance' 918 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
920 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
922 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
927 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
929 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
931 call check( nf90_def_var(ncid,
'cos_grad_tc', nf90_float, nc2d, ncv), &
934 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
937 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
939 buffer =
'Cosine of angle between surface gradient and cst dist gradient' 940 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
942 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
944 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
949 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
951 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
953 call check( nf90_def_var(ncid,
'mask_mar', nf90_short, nc2d, ncv), &
955 buffer =
'marginal_ring_mask' 956 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
958 buffer =
'Marginal ring mask' 959 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
962 call check( nf90_put_att(ncid, ncv,
'flag_values', nc2flag), &
964 buffer =
'no_ring '// &
966 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
968 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
970 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
977 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
979 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
981 call check( nf90_def_var(ncid,
'q_geo', nf90_float, nc2d, ncv), &
984 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
986 buffer =
'upward_geothermal_heat_flux_at_ground_level' 987 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
989 buffer =
'Geothermal heat flux' 990 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
992 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
994 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
999 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1001 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1003 call check( nf90_def_var(ncid,
'maske', nf90_short, nc2d, ncv), &
1005 buffer =
'ice_land_sea_mask' 1006 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1008 buffer =
'Ice-land-sea mask' 1009 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1011 nc4flag = (/ 0, 1, 2, 3 /)
1012 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
1014 buffer =
'glaciated_land '// &
1015 'ice_free_land '// &
1018 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
1020 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1022 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1027 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1029 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1031 call check( nf90_def_var(ncid,
'maske_old', nf90_short, nc2d, ncv), &
1033 buffer =
'ice_land_sea_mask_old' 1034 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1036 buffer =
'Ice-land-sea mask (old)' 1037 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1039 nc4flag = (/ 0, 1, 2, 3 /)
1040 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
1042 buffer =
'glaciated_land '// &
1043 'ice_free_land '// &
1046 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
1048 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1050 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1055 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1057 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1059 call check( nf90_def_var(ncid,
'mask_run', nf90_short, nc2d, ncv), &
1061 buffer =
'indicating_melt_type_mask' 1062 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1064 buffer =
'Mask indicating melt type' 1065 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1067 nc4flag = (/ -2, -1, 1, 2 /)
1068 call check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
1070 buffer =
'hidden in ocean '// &
1071 'hidden on land '// &
1072 'visible on land '// &
1074 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
1076 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1078 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1083 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1085 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1087 call check( nf90_def_var(ncid,
'n_cts', nf90_short, nc2d, ncv), &
1089 buffer =
'polythermal_condition_mask' 1090 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1092 buffer =
'Mask for polythermal conditions' 1093 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1095 nc3flag = (/ -1, 0, 1 /)
1096 call check( nf90_put_att(ncid, ncv,
'flag_values', nc3flag), &
1098 buffer =
'cold_base '// &
1099 'temperate_base_with_cold_ice_above '// &
1100 'temperate_base_with_temperate_ice_above' 1101 call check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
1103 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1105 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1110 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1112 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1114 call check( nf90_def_var(ncid,
'kc_cts', nf90_short, nc2d, ncv), &
1116 buffer =
'CTS_position_grid_index' 1117 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1119 buffer =
'Grid index of the CTS position' 1120 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1122 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1124 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1129 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1131 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1133 call check( nf90_def_var(ncid,
'zs', nf90_float, nc2d, ncv), &
1136 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1138 buffer =
'surface_altitude' 1139 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1141 buffer =
'Topography of the free surface' 1142 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1144 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1146 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1151 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1153 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1155 call check( nf90_def_var(ncid,
'zm', nf90_float, nc2d, ncv), &
1158 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1160 buffer =
'zm_interface_altitude' 1161 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1163 buffer =
'Topography of the z=zm interface' 1164 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1166 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1168 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1173 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1175 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1177 call check( nf90_def_var(ncid,
'zb', nf90_float, nc2d, ncv), &
1180 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1182 buffer =
'ice_base_altitude' 1183 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1185 buffer =
'Topography of the ice base' 1186 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1188 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1190 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1195 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1197 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1199 call check( nf90_def_var(ncid,
'zl', nf90_float, nc2d, ncv), &
1202 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1204 buffer =
'bedrock_altitude' 1205 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1207 buffer =
'Topography of the lithosphere surface' 1208 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1210 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1212 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1217 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1219 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1221 call check( nf90_def_var(ncid,
'zl0', nf90_float, nc2d, ncv), &
1224 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1226 buffer =
'isostatically_relaxed_bedrock_altitude' 1227 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1229 buffer =
'Topography of the isostatically relaxed lithosphere surface' 1230 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1232 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1234 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1239 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1241 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1243 call check( nf90_def_var(ncid,
'H_cold', nf90_float, nc2d, ncv), &
1246 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1248 buffer =
'land_ice_cold_layer_thickness' 1249 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1251 buffer =
'Thickness of the cold ice layer' 1252 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1254 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1256 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1261 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1263 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1265 call check( nf90_def_var(ncid,
'H_temp', nf90_float, nc2d, ncv), &
1268 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1270 buffer =
'land_ice_temperate_layer_thickness' 1271 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1273 buffer =
'Thickness of the temperate ice layer' 1274 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1276 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1278 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1283 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1285 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1287 call check( nf90_def_var(ncid,
'H', nf90_float, nc2d, ncv), &
1290 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1292 buffer =
'land_ice_thickness' 1293 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1295 buffer =
'Ice thickness' 1296 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1298 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1300 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1305 call check( nf90_def_var(ncid,
'H_R', nf90_float, ncv), &
1308 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1310 buffer =
'lithosphere_layer_thickness' 1311 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1313 buffer =
'Thickness of the lithosphere layer' 1314 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1319 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1321 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1323 call check( nf90_def_var(ncid,
'Q_bm', nf90_float, nc2d, ncv), &
1326 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1328 buffer =
'land_ice_basal_melt_rate' 1329 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1331 buffer =
'Basal melting rate' 1332 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1334 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1336 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1341 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1343 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1345 call check( nf90_def_var(ncid,
'Q_tld', nf90_float, nc2d, ncv), &
1348 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1350 buffer =
'land_ice_temperate_layer_water_drainage' 1351 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1353 buffer =
'Water drainage from the temperate layer' 1354 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1356 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1358 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1363 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1365 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1367 call check( nf90_def_var(ncid,
'am_perp', nf90_float, nc2d, ncv), &
1370 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1372 buffer =
'land_ice_volume_flux_across_zm_interface' 1373 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1375 buffer =
'Volume flux across the z=zm interface' 1376 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1378 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1380 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1385 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1387 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1389 call check( nf90_def_var(ncid,
'qx', nf90_float, nc2d, ncv), &
1392 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1394 buffer =
'land_ice_vertical_integral_x_velocity' 1395 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1397 buffer =
'Horizontal volume flux qx' 1398 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1400 buffer =
'Staggered grid variable, defined at (j,i+1/2)' 1401 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1403 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1405 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1410 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1412 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1414 call check( nf90_def_var(ncid,
'qy', nf90_float, nc2d, ncv), &
1417 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1419 buffer =
'land_ice_vertical_integral_y_velocity' 1420 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1422 buffer =
'Horizontal volume flux qy' 1423 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1425 buffer =
'Staggered grid variable, defined at (j+1/2,i)' 1426 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1428 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1430 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1435 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1437 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1439 call check( nf90_def_var(ncid,
'dzs_dt', nf90_float, nc2d, ncv), &
1442 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1444 buffer =
'tendency_of_surface_altitude' 1445 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1447 buffer =
'Rate of change of the topography of the free surface' 1448 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1450 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1452 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1457 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1459 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1461 call check( nf90_def_var(ncid,
'dzm_dt', nf90_float, nc2d, ncv), &
1464 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1466 buffer =
'tendency_of_zm_interface_altitude' 1467 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1469 buffer =
'Rate of change of the topography of the z=zm interface' 1470 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1472 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1474 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1479 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1481 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1483 call check( nf90_def_var(ncid,
'dzb_dt', nf90_float, nc2d, ncv), &
1486 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1488 buffer =
'tendency_of_ice_base_altitude' 1489 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1491 buffer =
'Rate of change of the topography of the ice base' 1492 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1494 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1496 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1501 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1503 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1505 call check( nf90_def_var(ncid,
'dzl_dt', nf90_float, nc2d, ncv), &
1508 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1510 buffer =
'tendency_of_bedrock_altitude' 1511 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1513 buffer =
'Rate of change of the topography of the lithosphere surface' 1514 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1516 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1518 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1523 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1525 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1527 call check( nf90_def_var(ncid,
'dH_c_dt', nf90_float, nc2d, ncv), &
1530 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1532 buffer =
'tendency_of_land_ice_kc_layer_thickness' 1533 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1535 buffer =
'Rate of change of the thickness of the upper (kc) ice layer' 1536 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1538 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1540 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1545 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1547 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1549 call check( nf90_def_var(ncid,
'dH_t_dt', nf90_float, nc2d, ncv), &
1552 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1554 buffer =
'tendency_of_land_ice_kt_layer_thickness' 1555 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1557 buffer =
'Rate of change of the thickness of the lower (kt) ice layer' 1558 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1560 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1562 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1567 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1569 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1571 call check( nf90_def_var(ncid,
'dH_dt', nf90_float, nc2d, ncv), &
1574 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1576 buffer =
'tendency_of_land_ice_thickness' 1577 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1579 buffer =
'Rate of change of the ice thickness' 1580 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1582 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1584 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1589 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1591 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1593 call check( nf90_def_var(ncid,
'vx_b_g', nf90_float, nc2d, ncv), &
1596 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1598 buffer =
'land_ice_base_x_velocity' 1599 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1601 buffer =
'Horizontal velocity vx at the ice base' 1602 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1604 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1606 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1611 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1613 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1615 call check( nf90_def_var(ncid,
'vy_b_g', nf90_float, nc2d, ncv), &
1618 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1620 buffer =
'land_ice_base_y_velocity' 1621 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1623 buffer =
'Horizontal velocity vy at the ice base' 1624 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1626 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1628 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1633 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1635 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1637 call check( nf90_def_var(ncid,
'vz_b', nf90_float, nc2d, ncv), &
1640 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1642 buffer =
'land_ice_base_z_velocity' 1643 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1645 buffer =
'Vertical velocity vz at the ice base' 1646 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1648 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1650 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1655 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1657 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1659 call check( nf90_def_var(ncid,
'vh_b', nf90_float, nc2d, ncv), &
1662 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1664 buffer =
'land_ice_base_horizontal_velocity' 1665 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1667 buffer =
'Horizontal velocity vh at the ice base' 1668 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1670 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1672 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1677 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1679 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1681 call check( nf90_def_var(ncid,
'vx_s_g', nf90_float, nc2d, ncv), &
1684 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1686 buffer =
'land_ice_surface_x_velocity' 1687 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1689 buffer =
'Horizontal velocity vx at the ice surface' 1690 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1692 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1694 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1699 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1701 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1703 call check( nf90_def_var(ncid,
'vy_s_g', nf90_float, nc2d, ncv), &
1706 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1708 buffer =
'land_ice_surface_y_velocity' 1709 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1711 buffer =
'Horizontal velocity vy at the ice surface' 1712 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1714 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1716 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1721 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1723 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1725 call check( nf90_def_var(ncid,
'vz_s', nf90_float, nc2d, ncv), &
1728 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1730 buffer =
'land_ice_surface_z_velocity' 1731 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1733 buffer =
'Vertical velocity vz at the ice surface' 1734 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1736 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1738 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1743 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1745 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1747 call check( nf90_def_var(ncid,
'vh_s', nf90_float, nc2d, ncv), &
1750 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1752 buffer =
'land_ice_surface_horizontal_velocity' 1753 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1755 buffer =
'Horizontal velocity vh at the ice surface' 1756 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1758 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1760 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1765 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1767 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1769 call check( nf90_def_var(ncid,
'vx_m_g', nf90_float, nc2d, ncv), &
1772 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1774 buffer =
'land_ice_vertical_mean_x_velocity' 1775 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1777 buffer =
'Vertical mean of horizontal velocity vx' 1778 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1780 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1782 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1787 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1789 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1791 call check( nf90_def_var(ncid,
'vy_m_g', nf90_float, nc2d, ncv), &
1794 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1796 buffer =
'land_ice_vertical_mean_y_velocity' 1797 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1799 buffer =
'Vertical mean of horizontal velocity vy' 1800 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1802 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1804 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1809 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1811 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1813 call check( nf90_def_var(ncid,
'vh_m', nf90_float, nc2d, ncv), &
1816 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1818 buffer =
'land_ice_vertical_mean_horizontal_velocity' 1819 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1821 buffer =
'Vertical mean of horizontal velocity vh' 1822 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1824 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1826 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1831 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1833 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1835 call check( nf90_def_var(ncid,
'temp_b', nf90_float, nc2d, ncv), &
1838 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1840 buffer =
'basal_temperature' 1841 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1843 buffer =
'Temperature at the ice base' 1844 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1846 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1848 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1853 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1855 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1857 call check( nf90_def_var(ncid,
'temph_b', nf90_float, nc2d, ncv), &
1860 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1862 buffer =
'basal_temperature_rel_to_pmp' 1863 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1865 buffer =
'Temperature at the ice base relative to the pressure melting point' 1866 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1868 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1870 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1875 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1877 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1879 call check( nf90_def_var(ncid,
'tau_b_driving', nf90_float, nc2d, ncv), &
1882 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1884 buffer =
'magnitude_of_land_ice_driving_stress' 1885 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1887 buffer =
'Driving stress' 1888 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1890 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1892 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1897 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1899 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1901 call check( nf90_def_var(ncid,
'tau_b_drag', nf90_float, nc2d, ncv), &
1904 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1906 buffer =
'magnitude_of_land_ice_basal_drag' 1907 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1909 buffer =
'Basal drag' 1910 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1912 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1914 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1919 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1921 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1923 call check( nf90_def_var(ncid,
'p_b_w', nf90_float, nc2d, ncv), &
1926 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1928 buffer =
'basal_water_pressure' 1929 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1931 buffer =
'Basal water pressure' 1932 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1934 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1936 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1941 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1943 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1945 call check( nf90_def_var(ncid,
'H_w', nf90_float, nc2d, ncv), &
1948 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1950 buffer =
'water_column_thickness' 1951 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1953 buffer =
'Thickness of the water column under the ice base' 1954 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1956 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1958 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1963 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1965 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1967 call check( nf90_def_var(ncid,
'q_gl_g', nf90_float, nc2d, ncv), &
1970 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1972 buffer =
'land_ice_volume_flux_across_gl' 1973 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1975 buffer =
'Horizontal volume flux across the grounding line' 1976 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1978 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1980 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1985 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
1987 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
1989 call check( nf90_def_var(ncid,
'q_cf_g', nf90_float, nc2d, ncv), &
1992 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1994 buffer =
'land_ice_volume_flux_due_to_calving' 1995 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1997 buffer =
'Calving flux' 1998 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2000 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2002 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2007 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2009 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2011 call check( nf90_def_var(ncid,
'ratio_sl_x', nf90_float, nc2d, ncv), &
2014 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2016 buffer =
'land_ice_x_slip_ratio' 2017 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2019 buffer =
'Ratio of basal to surface velocity (slip ratio) in x-direction, ' &
2021 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2023 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2025 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2030 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2032 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2034 call check( nf90_def_var(ncid,
'ratio_sl_y', nf90_float, nc2d, ncv), &
2037 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2039 buffer =
'land_ice_y_slip_ratio' 2040 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2042 buffer =
'Ratio of basal to surface velocity (slip ratio) in y-direction, ' &
2044 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2046 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2048 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2053 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2055 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2057 call check( nf90_def_var(ncid,
'flag_shelfy_stream_x', nf90_byte, nc2d, ncv), &
2060 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2062 buffer =
'land_ice_x_shelfy_stream_flag' 2063 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2065 buffer =
'Shelfy stream flag in x-direction, at (i+1/2,j)' 2066 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2068 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2070 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2075 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2077 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2079 call check( nf90_def_var(ncid,
'flag_shelfy_stream_y', nf90_byte, nc2d, ncv), &
2082 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2084 buffer =
'land_ice_y_shelfy_stream_flag' 2085 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2087 buffer =
'Shelfy stream flag in y-direction, at (i,j+1/2)' 2088 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2090 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2092 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2097 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2099 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2101 call check( nf90_def_var(ncid,
'flag_shelfy_stream', nf90_byte, nc2d, ncv), &
2104 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2106 buffer =
'land_ice_shelfy_stream_flag' 2107 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2109 buffer =
'Shelfy stream flag' 2110 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2112 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2114 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2119 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc2d(1)), &
2121 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc2d(2)), &
2123 call check( nf90_def_var(ncid,
'vis_int_g', nf90_float, nc2d, ncv), &
2126 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2128 buffer =
'land_ice_vertical_integral_viscosity' 2129 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2131 buffer =
'Depth-integrated viscosity' 2132 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2134 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2136 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2139 if (flag_3d_output)
then 2143 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2145 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2147 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2149 call check( nf90_def_var(ncid,
'vx_c', nf90_float, nc3d, ncv), &
2152 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2154 buffer =
'land_ice_kc_layer_x_velocity' 2155 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2157 buffer =
'Horizontal velocity vx in the upper (kc) ice layer' 2158 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2160 buffer =
'Staggered grid variable, defined at (kc,j,i+1/2)' 2161 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2163 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2165 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2170 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2172 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2174 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2176 call check( nf90_def_var(ncid,
'vy_c', nf90_float, nc3d, ncv), &
2179 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2181 buffer =
'land_ice_kc_layer_y_velocity' 2182 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2184 buffer =
'Horizontal velocity vy in the upper (kc) ice layer' 2185 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2187 buffer =
'Staggered grid variable, defined at (kc,j+1/2,i)' 2188 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2190 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2192 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2197 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2199 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2201 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2203 call check( nf90_def_var(ncid,
'vz_c', nf90_float, nc3d, ncv), &
2206 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2208 buffer =
'land_ice_kc_layer_z_velocity' 2209 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2211 buffer =
'Vertical velocity vz in the upper (kc) ice layer' 2212 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2214 buffer =
'Staggered grid variable, defined at (kc+1/2,j,i)' 2215 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2217 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2219 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2224 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2226 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2228 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2230 call check( nf90_def_var(ncid,
'vx_t', nf90_float, nc3d, ncv), &
2233 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2235 buffer =
'land_ice_kt_layer_x_velocity' 2236 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2238 buffer =
'Horizontal velocity vx in the lower (kt) ice layer' 2239 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2241 buffer =
'Staggered grid variable, defined at (kt,j,i+1/2)' 2242 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2244 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2246 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2251 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2253 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2255 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2257 call check( nf90_def_var(ncid,
'vy_t', nf90_float, nc3d, ncv), &
2260 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2262 buffer =
'land_ice_kt_layer_y_velocity' 2263 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2265 buffer =
'Horizontal velocity vy in the lower (kt) ice layer' 2266 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2268 buffer =
'Staggered grid variable, defined at (kt,j+1/2,i)' 2269 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2271 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2273 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2278 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2280 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2282 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2284 call check( nf90_def_var(ncid,
'vz_t', nf90_float, nc3d, ncv), &
2287 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2289 buffer =
'land_ice_kt_layer_z_velocity' 2290 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2292 buffer =
'Vertical velocity vz in the lower (kt) ice layer' 2293 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2295 buffer =
'Staggered grid variable, defined at (kt+1/2,j,i)' 2296 call check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
2298 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2300 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2305 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2307 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2309 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2311 call check( nf90_def_var(ncid,
'temp_c', nf90_float, nc3d, ncv), &
2314 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2316 buffer =
'land_ice_kc_layer_temperature' 2317 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2319 buffer =
'Temperature in the upper (kc) ice layer' 2320 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2322 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2324 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2329 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2331 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2333 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2335 call check( nf90_def_var(ncid,
'omega_t', nf90_float, nc3d, ncv), &
2338 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2340 buffer =
'land_ice_kt_layer_water_content' 2341 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2343 buffer =
'Water content in the lower (kt) ice layer' 2344 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2346 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2348 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2353 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2355 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2357 call check( nf90_inq_dimid(ncid, trim(coord_id(5)), nc3d(3)), &
2359 call check( nf90_def_var(ncid,
'temp_r', nf90_float, nc3d, ncv), &
2362 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2364 buffer =
'lithosphere_layer_temperature' 2365 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2367 buffer =
'Temperature in the lithosphere layer' 2368 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2370 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2372 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2377 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2379 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2381 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2383 call check( nf90_def_var(ncid,
'enth_c', nf90_float, nc3d, ncv), &
2386 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2388 buffer =
'land_ice_kc_layer_enthalpy' 2389 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2391 buffer =
'Enthalpy in the upper (kc) ice layer' 2392 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2394 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2396 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2401 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2403 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2405 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2407 call check( nf90_def_var(ncid,
'enth_t', nf90_float, nc3d, ncv), &
2410 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2412 buffer =
'land_ice_kt_layer_enthalpy' 2413 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2415 buffer =
'Enthalpy in the lower (kt) ice layer' 2416 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2418 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2420 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2425 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2427 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2429 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2431 call check( nf90_def_var(ncid,
'omega_c', nf90_float, nc3d, ncv), &
2434 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2436 buffer =
'land_ice_kc_layer_water_content' 2437 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2439 buffer =
'Water content in the upper (kc) ice layer' 2440 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2442 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2444 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2449 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2451 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2453 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2455 call check( nf90_def_var(ncid,
'enh_c', nf90_float, nc3d, ncv), &
2458 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2460 buffer =
'land_ice_kc_layer_flow_enhancement_factor' 2461 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2463 buffer =
'Flow enhancement factor in the upper (kc) ice layer' 2464 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2466 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2468 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2473 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2475 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2477 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2479 call check( nf90_def_var(ncid,
'enh_t', nf90_float, nc3d, ncv), &
2482 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2484 buffer =
'land_ice_kt_layer_flow_enhancement_factor' 2485 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2487 buffer =
'Flow enhancement factor in the lower (kt) ice layer' 2488 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2490 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2492 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2497 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2499 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2501 call check( nf90_inq_dimid(ncid, trim(coord_id(3)), nc3d(3)), &
2503 call check( nf90_def_var(ncid,
'age_c', nf90_float, nc3d, ncv), &
2506 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2508 buffer =
'land_ice_kc_layer_age' 2509 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2511 buffer =
'Age in the upper (kc) ice layer' 2512 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2514 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2516 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2521 call check( nf90_inq_dimid(ncid, trim(coord_id(1)), nc3d(1)), &
2523 call check( nf90_inq_dimid(ncid, trim(coord_id(2)), nc3d(2)), &
2525 call check( nf90_inq_dimid(ncid, trim(coord_id(4)), nc3d(3)), &
2527 call check( nf90_def_var(ncid,
'age_t', nf90_float, nc3d, ncv), &
2530 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
2532 buffer =
'land_ice_kt_layer_age' 2533 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
2535 buffer =
'Age in the lower (kt) ice layer' 2536 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
2538 call check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
2540 call check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
2547 call check( nf90_enddef(ncid), thisroutine )
2564 h_temp(j,i) =
h_t(j,i)
2567 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 2588 if ( (
maske(j,i)==0_i2b).and.(
n_cts(j,i)==1_i2b) )
then 2601 #elif (CALCMOD==0 || CALCMOD==-1) 2627 if ( (
maske(j,i)==0_i2b).or.(
maske(j,i)==3_i2b) )
then 2628 vx_m_g(j,i) = 0.5_dp*(
vx_m(j,i)+
vx_m(j,i-1))
2629 vy_m_g(j,i) = 0.5_dp*(
vy_m(j,i)+
vy_m(j-1,i))
2637 tau_b_driving = 0.0_dp
2643 if (
maske(j,i)==0_i2b)
then 2645 tau_b_driving(j,i) =
rho*
g*h(j,i) &
2649 tau_b_drag(j,i) = tau_b_driving(j,i)
2654 else if (
maske(j,i)==3_i2b)
then 2656 tau_b_driving(j,i) =
rho*
g*h(j,i) &
2659 tau_b_drag(j,i) = 0.0_dp
2682 if (
maske(j,i)==0_i2b)
then 2684 v_grounded = v_grounded + h(j,i)*
area(j,i)
2685 a_grounded = a_grounded +
area(j,i)
2686 v_gr_redu = v_gr_redu &
2687 + rhosw_rho_ratio*max((z_sl-
zl(j,i)),0.0_dp)*
area(j,i)
2689 else if (
maske(j,i)==3_i2b)
then 2691 v_floating = v_floating + h(j,i)*
area(j,i)
2692 a_floating = a_floating +
area(j,i)
2699 v_tot = v_grounded + v_floating
2700 v_af = v_grounded - v_gr_redu
2704 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 2706 #elif (OUT_TIMES==2) 2709 errormsg =
' >>> output1: OUT_TIMES must be either 1 or 2!' 2713 delta_ts_conv =
real(delta_ts,
sp)
2714 glac_index_conv =
real(glac_index,
sp)
2715 z_sl_conv =
real(z_sl,
sp)
2716 v_tot_conv =
real(v_tot,
sp)
2717 v_af_conv =
real(v_af,
sp)
2718 a_grounded_conv =
real(a_grounded,
sp)
2719 a_floating_conv =
real(a_floating,
sp)
2720 h_r_conv =
real(
h_r,
sp)
2723 xi_conv(i) =
real(xi(i),sp)
2727 eta_conv(j) =
real(eta(j),sp)
2731 sigma_level_c_conv(kc) =
real(eaz_c_quotient(kc),sp)
2735 sigma_level_t_conv(kt) =
real(zeta_t(kt),sp)
2739 sigma_level_r_conv(kr) =
real(kr,sp)/
real(krmax,sp)
2745 maske_conv(i,j) =
maske(j,i)
2748 n_cts_conv(i,j) =
n_cts(j,i)
2749 kc_cts_conv(i,j) =
kc_cts(j,i)
2751 lambda_conv(i,j) =
real(lambda(j,i),sp) 2752 phi_conv(i,j) =
real(phi(j,i),sp) 2753 lon_conv(i,j) =
real(lambda(j,i)*pi_180_inv,sp) 2754 lon_conv(i,j) = modulo(lon_conv(i,j)+180.0_sp, 360.0_sp)-180.0_sp
2756 lat_conv(i,j) =
real(phi(j,i) *pi_180_inv,sp) 2757 if (lat_conv(i,j) > 90.0_sp) lat_conv(i,j) = 90.0_sp
2758 if (lat_conv(i,j) < -90.0_sp) lat_conv(i,j) = -90.0_sp
2760 temp_s_conv(i,j) =
real(temp_s(j,i),sp)
2761 accum_conv(i,j) =
real(
accum(j,i)*year_sec,sp)
2762 snowfall_conv(i,j) =
real(
snowfall(j,i)*year_sec,sp)
2763 rainfall_conv(i,j) =
real(
rainfall(j,i)*year_sec,sp)
2764 pdd_conv(i,j) =
real(
et(j,i)*one_year,sp)
2765 as_perp_conv(i,j) =
real(
as_perp(j,i)*year_sec,sp)
2766 as_perp_apl_conv(i,j) =
real(
as_perp_apl(j,i)*year_sec,sp)
2767 smb_corr_conv(i,j) =
real(
smb_corr(j,i)*year_sec,sp)
2769 #if (DISC>0) /* Ice discharge parameterisation */ 2770 dis_perp_conv(i,j) =
real(
dis_perp(j,i)*year_sec,sp)
2771 cst_dist_conv(i,j) =
real(
cst_dist(j,i)*0.001_dp,sp)
2772 cos_grad_tc_conv(i,j) =
real(cos_grad_tc(j,i),sp)
2776 q_geo_conv(i,j) =
real(q_geo(j,i),sp)
2777 zs_conv(i,j) =
real(zs(j,i),sp)
2778 zm_conv(i,j) =
real(zm(j,i),sp)
2779 zb_conv(i,j) =
real(zb(j,i),sp)
2780 zl_conv(i,j) =
real(zl(j,i),sp)
2781 zl0_conv(i,j) =
real(zl0(j,i),sp)
2782 h_cold_conv(i,j) =
real(H_cold(j,i),sp)
2783 h_temp_conv(i,j) =
real(H_temp(j,i),sp)
2784 h_conv(i,j) =
real(H(j,i),sp)
2785 q_bm_conv(i,j) =
real(
q_bm(j,i)*year_sec,sp)
2786 q_tld_conv(i,j) =
real(
q_tld(j,i)*year_sec,sp)
2787 am_perp_conv(i,j) =
real(
am_perp(j,i)*year_sec,sp)
2788 qx_conv(i,j) =
real(
qx(j,i)*year_sec,sp)
2789 qy_conv(i,j) =
real(
qy(j,i)*year_sec,sp)
2790 dzs_dtau_conv(i,j) =
real(
dzs_dtau(j,i)*year_sec,sp)
2791 dzm_dtau_conv(i,j) =
real(
dzm_dtau(j,i)*year_sec,sp)
2792 dzb_dtau_conv(i,j) =
real(
dzb_dtau(j,i)*year_sec,sp)
2793 dzl_dtau_conv(i,j) =
real(
dzl_dtau(j,i)*year_sec,sp)
2794 dh_c_dtau_conv(i,j) =
real(
dh_c_dtau(j,i)*year_sec,sp)
2795 dh_t_dtau_conv(i,j) =
real(
dh_t_dtau(j,i)*year_sec,sp)
2796 dh_dtau_conv(i,j) =
real(dh_dtau(j,i)*year_sec,sp)
2797 vx_b_g_conv(i,j) =
real(
vx_b_g(j,i)*year_sec,sp)
2798 vy_b_g_conv(i,j) =
real(
vy_b_g(j,i)*year_sec,sp)
2799 vz_b_conv(i,j) =
real(
vz_b(j,i)*year_sec,sp)
2800 vh_b_conv(i,j) = sqrt( vx_b_g_conv(i,j)**2 + vy_b_g_conv(i,j)**2 )
2801 vx_s_g_conv(i,j) =
real(
vx_s_g(j,i)*year_sec,sp)
2802 vy_s_g_conv(i,j) =
real(
vy_s_g(j,i)*year_sec,sp)
2803 vz_s_conv(i,j) =
real(
vz_s(j,i)*year_sec,sp)
2804 vh_s_conv(i,j) = sqrt( vx_s_g_conv(i,j)**2 + vy_s_g_conv(i,j)**2 )
2805 vx_m_g_conv(i,j) =
real(vx_m_g(j,i)*year_sec,sp)
2806 vy_m_g_conv(i,j) =
real(vy_m_g(j,i)*year_sec,sp)
2807 vh_m_conv(i,j) = sqrt( vx_m_g_conv(i,j)**2 + vy_m_g_conv(i,j)**2 )
2808 temp_b_conv(i,j) =
real(temp_b(j,i),sp)
2809 temph_b_conv(i,j) =
real(temph_b(j,i),sp)
2810 tau_b_driving_conv(i,j) =
real(tau_b_driving(j,i),sp)
2811 tau_b_drag_conv(i,j) =
real(tau_b_drag(j,i),sp)
2812 p_b_w_conv(i,j) =
real(p_b_w(j,i),sp)
2813 h_w_conv(i,j) =
real(H_w(j,i),sp)
2814 q_gl_g_conv(i,j) =
real(
q_gl_g(j,i)*year_sec,sp)
2816 ratio_sl_x_conv(i,j) =
real(ratio_sl_x(j,i),sp)
2817 ratio_sl_y_conv(i,j) =
real(ratio_sl_y(j,i),sp)
2820 flag_shelfy_stream_x_conv(i,j) = 1_i1b
2822 flag_shelfy_stream_x_conv(i,j) = 0_i1b
2826 flag_shelfy_stream_y_conv(i,j) = 1_i1b
2828 flag_shelfy_stream_y_conv(i,j) = 0_i1b
2832 flag_shelfy_stream_conv(i,j) = 1_i1b
2834 flag_shelfy_stream_conv(i,j) = 0_i1b
2837 vis_int_g_conv(i,j) =
real(vis_int_g(j,i),sp)
2840 temp_r_conv(i,j,kr) =
real(temp_r(kr,j,i),sp)
2844 vx_t_conv(i,j,kt) =
real(
vx_t(kt,j,i)*year_sec,sp)
2845 vy_t_conv(i,j,kt) =
real(
vy_t(kt,j,i)*year_sec,sp)
2846 vz_t_conv(i,j,kt) =
real(
vz_t(kt,j,i)*year_sec,sp)
2847 omega_t_conv(i,j,kt) =
real(omega_t(kt,j,i),sp)
2849 enth_t_conv(i,j,kt) =
real(enth_t(kt,j,i),sp)
2850 enh_t_conv(i,j,kt) =
real(enh_t(kt,j,i),sp)
2854 vx_c_conv(i,j,kc) =
real(
vx_c(kc,j,i)*year_sec,sp)
2855 vy_c_conv(i,j,kc) =
real(
vy_c(kc,j,i)*year_sec,sp)
2856 vz_c_conv(i,j,kc) =
real(
vz_c(kc,j,i)*year_sec,sp)
2857 temp_c_conv(i,j,kc) =
real(temp_c(kc,j,i),sp)
2859 enth_c_conv(i,j,kc) =
real(enth_c(kc,j,i),sp)
2860 omega_c_conv(i,j,kc) =
real(omega_c(kc,j,i),sp)
2861 enh_c_conv(i,j,kc) =
real(enh_c(kc,j,i),sp)
2869 #if (NETCDF==1) /* time-slice file in native binary format */ 2871 write(unit=11) time_conv
2873 write(unit=11) delta_ts_conv
2875 write(unit=11) glac_index_conv
2877 glac_index_conv =
real(no_value_pos_1,sp) 2878 write(unit=11) glac_index_conv
2880 write(unit=11) z_sl_conv
2882 write(unit=11) v_tot_conv
2883 write(unit=11) v_af_conv
2884 write(unit=11) a_grounded_conv
2885 write(unit=11) a_floating_conv
2887 write(unit=11) xi_conv
2888 write(unit=11) eta_conv
2889 write(unit=11) sigma_level_c_conv
2890 write(unit=11) sigma_level_t_conv
2891 write(unit=11) sigma_level_r_conv
2892 write(unit=11) lon_conv
2893 write(unit=11) lat_conv
2894 write(unit=11) lambda_conv
2895 write(unit=11) phi_conv
2896 write(unit=11) temp_s_conv
2897 write(unit=11) accum_conv
2898 write(unit=11) snowfall_conv
2899 write(unit=11) rainfall_conv
2900 write(unit=11) pdd_conv
2901 write(unit=11) as_perp_conv
2902 write(unit=11) as_perp_apl_conv
2903 write(unit=11) smb_corr_conv
2905 #if (DISC>0) /* Ice discharge parameterisation */ 2907 write(unit=11) dis_perp_conv
2908 write(unit=11) cst_dist_conv
2909 write(unit=11) cos_grad_tc_conv
2910 write(unit=11) mask_mar_conv
2914 write(unit=11) q_geo_conv
2915 write(unit=11) maske_conv
2916 write(unit=11) maske_old_conv
2917 write(unit=11) n_cts_conv
2918 write(unit=11) kc_cts_conv
2919 write(unit=11) zs_conv
2920 write(unit=11) zm_conv
2921 write(unit=11) zb_conv
2922 write(unit=11) zl_conv
2923 write(unit=11) zl0_conv
2924 write(unit=11) h_cold_conv
2925 write(unit=11) h_temp_conv
2926 write(unit=11) h_conv
2927 write(unit=11) h_r_conv
2928 write(unit=11) q_bm_conv
2929 write(unit=11) q_tld_conv
2930 write(unit=11) am_perp_conv
2931 write(unit=11) qx_conv
2932 write(unit=11) qy_conv
2933 write(unit=11) dzs_dtau_conv
2934 write(unit=11) dzm_dtau_conv
2935 write(unit=11) dzb_dtau_conv
2936 write(unit=11) dzl_dtau_conv
2937 write(unit=11) dh_c_dtau_conv
2938 write(unit=11) dh_t_dtau_conv
2939 write(unit=11) dh_dtau_conv
2940 write(unit=11) vx_b_g_conv
2941 write(unit=11) vy_b_g_conv
2942 write(unit=11) vz_b_conv
2943 write(unit=11) vh_b_conv
2944 write(unit=11) vx_s_g_conv
2945 write(unit=11) vy_s_g_conv
2946 write(unit=11) vz_s_conv
2947 write(unit=11) vh_s_conv
2948 write(unit=11) vx_m_g_conv
2949 write(unit=11) vy_m_g_conv
2950 write(unit=11) vh_m_conv
2951 write(unit=11) temp_b_conv
2952 write(unit=11) temph_b_conv
2953 write(unit=11) tau_b_driving_conv
2954 write(unit=11) tau_b_drag_conv
2955 write(unit=11) p_b_w_conv
2956 write(unit=11) h_w_conv
2957 write(unit=11) q_gl_g_conv
2958 write(unit=11) q_cf_g_conv
2960 if (flag_3d_output)
then 2962 write(unit=11) vx_c_conv
2963 write(unit=11) vy_c_conv
2964 write(unit=11) vz_c_conv
2965 write(unit=11) vx_t_conv
2966 write(unit=11) vy_t_conv
2967 write(unit=11) vz_t_conv
2968 write(unit=11) temp_c_conv
2969 write(unit=11) omega_t_conv
2970 write(unit=11) temp_r_conv
2971 write(unit=11) enth_c_conv
2972 write(unit=11) enth_t_conv
2973 write(unit=11) omega_c_conv
2974 write(unit=11) enh_c_conv
2975 write(unit=11) enh_t_conv
2976 write(unit=11) age_c_conv
2977 write(unit=11) age_t_conv
2981 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 2983 call check( nf90_inq_varid(ncid,
'crs', ncv), thisroutine )
2984 call check( nf90_put_var(ncid, ncv, 0), thisroutine )
2986 call check( nf90_inq_varid(ncid,
'time', ncv), thisroutine )
2987 call check( nf90_put_var(ncid, ncv, time_conv), thisroutine )
2991 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
2992 call check( nf90_put_var(ncid, ncv, delta_ts_conv), thisroutine )
2996 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
2997 call check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
3001 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
3002 glac_index_conv =
real(no_value_pos_1,sp) 3003 call check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
3007 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
3008 call check( nf90_put_var(ncid, ncv, z_sl_conv), thisroutine )
3010 call check( nf90_inq_varid(ncid,
'V_tot', ncv), thisroutine )
3011 call check( nf90_put_var(ncid, ncv, v_tot_conv), thisroutine )
3013 call check( nf90_inq_varid(ncid,
'V_af', ncv), thisroutine )
3014 call check( nf90_put_var(ncid, ncv, v_af_conv), thisroutine )
3016 call check( nf90_inq_varid(ncid,
'A_grounded', ncv), thisroutine )
3017 call check( nf90_put_var(ncid, ncv, a_grounded_conv), thisroutine )
3019 call check( nf90_inq_varid(ncid,
'A_floating', ncv), thisroutine )
3020 call check( nf90_put_var(ncid, ncv, a_floating_conv), thisroutine )
3022 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
3023 call check( nf90_put_var(ncid, ncv, xi_conv, &
3024 start=nc1cor_i, count=nc1cnt_i), &
3027 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
3028 call check( nf90_put_var(ncid, ncv, eta_conv, &
3029 start=nc1cor_j, count=nc1cnt_j), &
3032 call check( nf90_inq_varid(ncid,
'sigma_level_c', ncv), thisroutine )
3033 call check( nf90_put_var(ncid, ncv, sigma_level_c_conv, &
3034 start=nc1cor_kc, count=nc1cnt_kc), &
3037 call check( nf90_inq_varid(ncid,
'sigma_level_t', ncv), thisroutine )
3038 call check( nf90_put_var(ncid, ncv, sigma_level_t_conv, &
3039 start=nc1cor_kt, count=nc1cnt_kt), &
3042 call check( nf90_inq_varid(ncid,
'sigma_level_r', ncv), thisroutine )
3043 call check( nf90_put_var(ncid, ncv, sigma_level_r_conv, &
3044 start=nc1cor_kr, count=nc1cnt_kr), &
3047 call check( nf90_inq_varid(ncid,
'lon', ncv), thisroutine )
3048 call check( nf90_put_var(ncid, ncv, lon_conv, &
3049 start=nc2cor_ij, count=nc2cnt_ij), &
3052 call check( nf90_inq_varid(ncid,
'lat', ncv), thisroutine )
3053 call check( nf90_put_var(ncid, ncv, lat_conv, &
3054 start=nc2cor_ij, count=nc2cnt_ij), &
3057 call check( nf90_inq_varid(ncid,
'lambda', ncv), thisroutine )
3058 call check( nf90_put_var(ncid, ncv, lambda_conv, &
3059 start=nc2cor_ij, count=nc2cnt_ij), &
3062 call check( nf90_inq_varid(ncid,
'phi', ncv), thisroutine )
3063 call check( nf90_put_var(ncid, ncv, phi_conv, &
3064 start=nc2cor_ij, count=nc2cnt_ij), &
3067 call check( nf90_inq_varid(ncid,
'temp_s', ncv), thisroutine )
3068 call check( nf90_put_var(ncid, ncv, temp_s_conv, &
3069 start=nc2cor_ij, count=nc2cnt_ij), &
3072 call check( nf90_inq_varid(ncid,
'prec', ncv), thisroutine )
3073 call check( nf90_put_var(ncid, ncv, accum_conv, &
3074 start=nc2cor_ij, count=nc2cnt_ij), &
3077 call check( nf90_inq_varid(ncid,
'snowfall', ncv), thisroutine )
3078 call check( nf90_put_var(ncid, ncv, snowfall_conv, &
3079 start=nc2cor_ij, count=nc2cnt_ij), &
3082 call check( nf90_inq_varid(ncid,
'rainfall', ncv), thisroutine )
3083 call check( nf90_put_var(ncid, ncv, rainfall_conv, &
3084 start=nc2cor_ij, count=nc2cnt_ij), &
3087 call check( nf90_inq_varid(ncid,
'pdd', ncv), thisroutine )
3088 call check( nf90_put_var(ncid, ncv, pdd_conv, &
3089 start=nc2cor_ij, count=nc2cnt_ij), &
3092 call check( nf90_inq_varid(ncid,
'as_perp', ncv), thisroutine )
3093 call check( nf90_put_var(ncid, ncv, as_perp_conv, &
3094 start=nc2cor_ij, count=nc2cnt_ij), &
3097 call check( nf90_inq_varid(ncid,
'as_perp_apl', ncv), thisroutine )
3098 call check( nf90_put_var(ncid, ncv, as_perp_apl_conv, &
3099 start=nc2cor_ij, count=nc2cnt_ij), &
3102 call check( nf90_inq_varid(ncid,
'smb_corr', ncv), thisroutine )
3103 call check( nf90_put_var(ncid, ncv, smb_corr_conv, &
3104 start=nc2cor_ij, count=nc2cnt_ij), &
3107 #if (DISC>0) /* Ice discharge parameterisation */ 3109 call check( nf90_inq_varid(ncid,
'dis_perp', ncv), thisroutine )
3110 call check( nf90_put_var(ncid, ncv, dis_perp_conv, &
3111 start=nc2cor_ij, count=nc2cnt_ij), &
3114 call check( nf90_inq_varid(ncid,
'cst_dist', ncv), thisroutine )
3115 call check( nf90_put_var(ncid, ncv, cst_dist_conv, &
3116 start=nc2cor_ij, count=nc2cnt_ij), &
3119 call check( nf90_inq_varid(ncid,
'cos_grad_tc', ncv), thisroutine )
3120 call check( nf90_put_var(ncid, ncv, cos_grad_tc_conv, &
3121 start=nc2cor_ij, count=nc2cnt_ij), &
3124 call check( nf90_inq_varid(ncid,
'mask_mar', ncv), thisroutine )
3125 call check( nf90_put_var(ncid, ncv, mask_mar_conv, &
3126 start=nc2cor_ij, count=nc2cnt_ij), &
3131 call check( nf90_inq_varid(ncid,
'q_geo', ncv), thisroutine )
3132 call check( nf90_put_var(ncid, ncv, q_geo_conv, &
3133 start=nc2cor_ij, count=nc2cnt_ij), &
3136 call check( nf90_inq_varid(ncid,
'maske', ncv), thisroutine )
3137 call check( nf90_put_var(ncid, ncv, maske_conv, &
3138 start=nc2cor_ij, count=nc2cnt_ij), &
3141 call check( nf90_inq_varid(ncid,
'maske_old', ncv), thisroutine )
3142 call check( nf90_put_var(ncid, ncv, maske_old_conv, &
3143 start=nc2cor_ij, count=nc2cnt_ij), &
3146 call check( nf90_inq_varid(ncid,
'mask_run', ncv), thisroutine )
3147 call check( nf90_put_var(ncid, ncv, mask_run_conv, &
3148 start=nc2cor_ij, count=nc2cnt_ij), &
3151 call check( nf90_inq_varid(ncid,
'n_cts', ncv), thisroutine )
3152 call check( nf90_put_var(ncid, ncv, n_cts_conv, &
3153 start=nc2cor_ij, count=nc2cnt_ij), &
3156 call check( nf90_inq_varid(ncid,
'kc_cts', ncv), thisroutine )
3157 call check( nf90_put_var(ncid, ncv, kc_cts_conv, &
3158 start=nc2cor_ij, count=nc2cnt_ij), &
3161 call check( nf90_inq_varid(ncid,
'zs', ncv), thisroutine )
3162 call check( nf90_put_var(ncid, ncv, zs_conv, &
3163 start=nc2cor_ij, count=nc2cnt_ij), &
3166 call check( nf90_inq_varid(ncid,
'zm', ncv), thisroutine )
3167 call check( nf90_put_var(ncid, ncv, zm_conv, &
3168 start=nc2cor_ij, count=nc2cnt_ij), &
3171 call check( nf90_inq_varid(ncid,
'zb', ncv), thisroutine )
3172 call check( nf90_put_var(ncid, ncv, zb_conv, &
3173 start=nc2cor_ij, count=nc2cnt_ij), &
3176 call check( nf90_inq_varid(ncid,
'zl', ncv), thisroutine )
3177 call check( nf90_put_var(ncid, ncv, zl_conv, &
3178 start=nc2cor_ij, count=nc2cnt_ij), &
3181 call check( nf90_inq_varid(ncid,
'zl0', ncv), thisroutine )
3182 call check( nf90_put_var(ncid, ncv, zl0_conv, &
3183 start=nc2cor_ij, count=nc2cnt_ij), &
3186 call check( nf90_inq_varid(ncid,
'H_cold', ncv), thisroutine )
3187 call check( nf90_put_var(ncid, ncv, h_cold_conv, &
3188 start=nc2cor_ij, count=nc2cnt_ij), &
3191 call check( nf90_inq_varid(ncid,
'H_temp', ncv), thisroutine )
3192 call check( nf90_put_var(ncid, ncv, h_temp_conv, &
3193 start=nc2cor_ij, count=nc2cnt_ij), &
3196 call check( nf90_inq_varid(ncid,
'H', ncv), thisroutine )
3197 call check( nf90_put_var(ncid, ncv, h_conv, &
3198 start=nc2cor_ij, count=nc2cnt_ij), &
3201 call check( nf90_inq_varid(ncid,
'H_R', ncv), thisroutine )
3202 call check( nf90_put_var(ncid, ncv, h_r_conv), thisroutine )
3204 call check( nf90_inq_varid(ncid,
'Q_bm', ncv), thisroutine )
3205 call check( nf90_put_var(ncid, ncv, q_bm_conv, &
3206 start=nc2cor_ij, count=nc2cnt_ij), &
3209 call check( nf90_inq_varid(ncid,
'Q_tld', ncv), thisroutine )
3210 call check( nf90_put_var(ncid, ncv, q_tld_conv, &
3211 start=nc2cor_ij, count=nc2cnt_ij), &
3214 call check( nf90_inq_varid(ncid,
'am_perp', ncv), thisroutine )
3215 call check( nf90_put_var(ncid, ncv, am_perp_conv, &
3216 start=nc2cor_ij, count=nc2cnt_ij), &
3219 call check( nf90_inq_varid(ncid,
'qx', ncv), thisroutine )
3220 call check( nf90_put_var(ncid, ncv, qx_conv, &
3221 start=nc2cor_ij, count=nc2cnt_ij), &
3224 call check( nf90_inq_varid(ncid,
'qy', ncv), thisroutine )
3225 call check( nf90_put_var(ncid, ncv, qy_conv, &
3226 start=nc2cor_ij, count=nc2cnt_ij), &
3229 call check( nf90_inq_varid(ncid,
'dzs_dt', ncv), thisroutine )
3230 call check( nf90_put_var(ncid, ncv, dzs_dtau_conv, &
3231 start=nc2cor_ij, count=nc2cnt_ij), &
3234 call check( nf90_inq_varid(ncid,
'dzm_dt', ncv), thisroutine )
3235 call check( nf90_put_var(ncid, ncv, dzm_dtau_conv, &
3236 start=nc2cor_ij, count=nc2cnt_ij), &
3239 call check( nf90_inq_varid(ncid,
'dzb_dt', ncv), thisroutine )
3240 call check( nf90_put_var(ncid, ncv, dzb_dtau_conv, &
3241 start=nc2cor_ij, count=nc2cnt_ij), &
3244 call check( nf90_inq_varid(ncid,
'dzl_dt', ncv), thisroutine )
3245 call check( nf90_put_var(ncid, ncv, dzl_dtau_conv, &
3246 start=nc2cor_ij, count=nc2cnt_ij), &
3249 call check( nf90_inq_varid(ncid,
'dH_c_dt', ncv), thisroutine )
3250 call check( nf90_put_var(ncid, ncv, dh_c_dtau_conv, &
3251 start=nc2cor_ij, count=nc2cnt_ij), &
3254 call check( nf90_inq_varid(ncid,
'dH_t_dt', ncv), thisroutine )
3255 call check( nf90_put_var(ncid, ncv, dh_t_dtau_conv, &
3256 start=nc2cor_ij, count=nc2cnt_ij), &
3259 call check( nf90_inq_varid(ncid,
'dH_dt', ncv), thisroutine )
3260 call check( nf90_put_var(ncid, ncv, dh_dtau_conv, &
3261 start=nc2cor_ij, count=nc2cnt_ij), &
3264 call check( nf90_inq_varid(ncid,
'vx_b_g', ncv), thisroutine )
3265 call check( nf90_put_var(ncid, ncv, vx_b_g_conv, &
3266 start=nc2cor_ij, count=nc2cnt_ij), &
3269 call check( nf90_inq_varid(ncid,
'vy_b_g', ncv), thisroutine )
3270 call check( nf90_put_var(ncid, ncv, vy_b_g_conv, &
3271 start=nc2cor_ij, count=nc2cnt_ij), &
3274 call check( nf90_inq_varid(ncid,
'vz_b', ncv), thisroutine )
3275 call check( nf90_put_var(ncid, ncv, vz_b_conv, &
3276 start=nc2cor_ij, count=nc2cnt_ij), &
3279 call check( nf90_inq_varid(ncid,
'vh_b', ncv), thisroutine )
3280 call check( nf90_put_var(ncid, ncv, vh_b_conv, &
3281 start=nc2cor_ij, count=nc2cnt_ij), &
3284 call check( nf90_inq_varid(ncid,
'vx_s_g', ncv), thisroutine )
3285 call check( nf90_put_var(ncid, ncv, vx_s_g_conv, &
3286 start=nc2cor_ij, count=nc2cnt_ij), &
3289 call check( nf90_inq_varid(ncid,
'vy_s_g', ncv), thisroutine )
3290 call check( nf90_put_var(ncid, ncv, vy_s_g_conv, &
3291 start=nc2cor_ij, count=nc2cnt_ij), &
3294 call check( nf90_inq_varid(ncid,
'vz_s', ncv), thisroutine )
3295 call check( nf90_put_var(ncid, ncv, vz_s_conv, &
3296 start=nc2cor_ij, count=nc2cnt_ij), &
3299 call check( nf90_inq_varid(ncid,
'vh_s', ncv), thisroutine )
3300 call check( nf90_put_var(ncid, ncv, vh_s_conv, &
3301 start=nc2cor_ij, count=nc2cnt_ij), &
3304 call check( nf90_inq_varid(ncid,
'vx_m_g', ncv), thisroutine )
3305 call check( nf90_put_var(ncid, ncv, vx_m_g_conv, &
3306 start=nc2cor_ij, count=nc2cnt_ij), &
3309 call check( nf90_inq_varid(ncid,
'vy_m_g', ncv), thisroutine )
3310 call check( nf90_put_var(ncid, ncv, vy_m_g_conv, &
3311 start=nc2cor_ij, count=nc2cnt_ij), &
3314 call check( nf90_inq_varid(ncid,
'vh_m', ncv), thisroutine )
3315 call check( nf90_put_var(ncid, ncv, vh_m_conv, &
3316 start=nc2cor_ij, count=nc2cnt_ij), &
3319 call check( nf90_inq_varid(ncid,
'temp_b', ncv), thisroutine )
3320 call check( nf90_put_var(ncid, ncv, temp_b_conv, &
3321 start=nc2cor_ij, count=nc2cnt_ij), &
3324 call check( nf90_inq_varid(ncid,
'temph_b', ncv), thisroutine )
3325 call check( nf90_put_var(ncid, ncv, temph_b_conv, &
3326 start=nc2cor_ij, count=nc2cnt_ij), &
3329 call check( nf90_inq_varid(ncid,
'tau_b_driving', ncv), thisroutine )
3330 call check( nf90_put_var(ncid, ncv, tau_b_driving_conv, &
3331 start=nc2cor_ij, count=nc2cnt_ij), &
3334 call check( nf90_inq_varid(ncid,
'tau_b_drag', ncv), thisroutine )
3335 call check( nf90_put_var(ncid, ncv, tau_b_drag_conv, &
3336 start=nc2cor_ij, count=nc2cnt_ij), &
3339 call check( nf90_inq_varid(ncid,
'p_b_w', ncv), thisroutine )
3340 call check( nf90_put_var(ncid, ncv, p_b_w_conv, &
3341 start=nc2cor_ij, count=nc2cnt_ij), &
3344 call check( nf90_inq_varid(ncid,
'H_w', ncv), thisroutine )
3345 call check( nf90_put_var(ncid, ncv, h_w_conv, &
3346 start=nc2cor_ij, count=nc2cnt_ij), &
3349 call check( nf90_inq_varid(ncid,
'q_gl_g', ncv), thisroutine )
3350 call check( nf90_put_var(ncid, ncv, q_gl_g_conv, &
3351 start=nc2cor_ij, count=nc2cnt_ij), &
3354 call check( nf90_inq_varid(ncid,
'q_cf_g', ncv), thisroutine )
3355 call check( nf90_put_var(ncid, ncv, q_cf_g_conv, &
3356 start=nc2cor_ij, count=nc2cnt_ij), &
3359 call check( nf90_inq_varid(ncid,
'ratio_sl_x', ncv), thisroutine )
3360 call check( nf90_put_var(ncid, ncv, ratio_sl_x_conv, &
3361 start=nc2cor_ij, count=nc2cnt_ij), &
3364 call check( nf90_inq_varid(ncid,
'ratio_sl_y', ncv), thisroutine )
3365 call check( nf90_put_var(ncid, ncv, ratio_sl_y_conv, &
3366 start=nc2cor_ij, count=nc2cnt_ij), &
3369 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream_x', ncv), thisroutine )
3370 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_x_conv, &
3371 start=nc2cor_ij, count=nc2cnt_ij), &
3374 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream_y', ncv), thisroutine )
3375 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_y_conv, &
3376 start=nc2cor_ij, count=nc2cnt_ij), &
3379 call check( nf90_inq_varid(ncid,
'flag_shelfy_stream', ncv), thisroutine )
3380 call check( nf90_put_var(ncid, ncv, flag_shelfy_stream_conv, &
3381 start=nc2cor_ij, count=nc2cnt_ij), &
3384 call check( nf90_inq_varid(ncid,
'vis_int_g', ncv), thisroutine )
3385 call check( nf90_put_var(ncid, ncv, vis_int_g_conv, &
3386 start=nc2cor_ij, count=nc2cnt_ij), &
3389 if (flag_3d_output)
then 3391 call check( nf90_inq_varid(ncid,
'vx_c', ncv), thisroutine )
3392 call check( nf90_put_var(ncid, ncv, vx_c_conv, &
3393 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3396 call check( nf90_inq_varid(ncid,
'vy_c', ncv), thisroutine )
3397 call check( nf90_put_var(ncid, ncv, vy_c_conv, &
3398 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3401 call check( nf90_inq_varid(ncid,
'vz_c', ncv), thisroutine )
3402 call check( nf90_put_var(ncid, ncv, vz_c_conv, &
3403 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3406 call check( nf90_inq_varid(ncid,
'vx_t', ncv), thisroutine )
3407 call check( nf90_put_var(ncid, ncv, vx_t_conv, &
3408 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3411 call check( nf90_inq_varid(ncid,
'vy_t', ncv), thisroutine )
3412 call check( nf90_put_var(ncid, ncv, vy_t_conv, &
3413 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3416 call check( nf90_inq_varid(ncid,
'vz_t', ncv), thisroutine )
3417 call check( nf90_put_var(ncid, ncv, vz_t_conv, &
3418 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3421 call check( nf90_inq_varid(ncid,
'temp_c', ncv), thisroutine )
3422 call check( nf90_put_var(ncid, ncv, temp_c_conv, &
3423 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3426 call check( nf90_inq_varid(ncid,
'omega_t', ncv), thisroutine )
3427 call check( nf90_put_var(ncid, ncv, omega_t_conv, &
3428 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3431 call check( nf90_inq_varid(ncid,
'temp_r', ncv), thisroutine )
3432 call check( nf90_put_var(ncid, ncv, temp_r_conv, &
3433 start=nc3cor_ijkr, count=nc3cnt_ijkr), &
3436 call check( nf90_inq_varid(ncid,
'enth_c', ncv), thisroutine )
3437 call check( nf90_put_var(ncid, ncv, enth_c_conv, &
3438 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3441 call check( nf90_inq_varid(ncid,
'enth_t', ncv), thisroutine )
3442 call check( nf90_put_var(ncid, ncv, enth_t_conv, &
3443 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3446 call check( nf90_inq_varid(ncid,
'omega_c', ncv), thisroutine )
3447 call check( nf90_put_var(ncid, ncv, omega_c_conv, &
3448 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3451 call check( nf90_inq_varid(ncid,
'enh_c', ncv), thisroutine )
3452 call check( nf90_put_var(ncid, ncv, enh_c_conv, &
3453 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3456 call check( nf90_inq_varid(ncid,
'enh_t', ncv), thisroutine )
3457 call check( nf90_put_var(ncid, ncv, enh_t_conv, &
3458 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3461 call check( nf90_inq_varid(ncid,
'age_c', ncv), thisroutine )
3462 call check( nf90_put_var(ncid, ncv, age_c_conv, &
3463 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
3466 call check( nf90_inq_varid(ncid,
'age_t', ncv), thisroutine )
3467 call check( nf90_put_var(ncid, ncv, age_t_conv, &
3468 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
3477 #if (NETCDF==1) /* time-slice file in native binary format */ 3479 close(unit=11, status=
'keep')
3481 #elif (NETCDF==2) /* time-slice file in NetCDF format */ 3483 call check( nf90_sync(ncid), thisroutine )
3484 call check( nf90_close(ncid), thisroutine )
3486 deallocate(coord_id)
3494 if (flag_3d_output)
then 3506 subroutine output2(time, dxi, deta, delta_ts, glac_index, z_sl)
3519 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
3521 integer(i4b) :: i, j
3522 integer(i4b) :: n_base, n_tempbase
3523 real(dp) :: time_val, &
3524 V_tot, V_grounded, V_floating, A_tot, A_grounded, A_floating, &
3525 V_af, V_sle, V_temp, A_temp, &
3527 H_max, H_t_max, zs_max, vs_max, Tbh_max, &
3528 accum_tot, calv_tot, mbp, &
3529 MB, LMT, OMT, LMB, OMB, LMH, OMH, ODT, ODH, &
3531 real(dp) :: x_pos, y_pos
3532 real(dp),
dimension(0:JMAX,0:IMAX) :: H, H_cold, H_temp
3533 real(dp) :: V_gr_redu, A_surf, rhosw_rho_ratio
3534 real(dp) :: vs_help, Tbh_help
3535 real(dp) :: H_ave_sed, Tbh_ave_sed, Atb_sed
3536 real(dp) :: sum_area_sed
3539 integer(i4b),
save :: ncid
3540 integer(i4b) :: ncd, ncv, nc1d
3541 integer(i4b) :: nc1cor(1), nc1cnt(1)
3542 integer(i4b) :: n_sync
3543 real(dp) :: dV_dt, precip_tot, runoff_tot, bmb_tot, mb_resid
3544 real(dp),
save :: time_add_offset_val
3545 character(len= 16) :: ch_date, ch_time, ch_zone
3546 character(len=256) :: filename, filename_with_path, buffer
3547 logical,
save :: grads_nc_tweaks
3550 integer(i4b),
save :: counter = 0
3551 logical,
save :: firstcall = .true.
3553 character(len=64),
parameter :: thisroutine =
'output2' 3555 character(len=128),
parameter :: &
3556 fmt1 =
'(1pe13.6,2(1pe13.4),/,' // &
3557 '13x,6(1pe13.4),/,' // &
3558 '26x,3(1pe13.4),/,' // &
3561 character(len=128),
parameter :: &
3562 fmt2 =
'(1pe13.6,2(1pe13.4),/,' // &
3565 character(len=128),
parameter :: &
3566 fmt3 =
'(1pe13.6,3(1pe13.4),/)' 3568 counter = counter + 1
3582 h_temp(j,i) =
h_t(j,i)
3585 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1) 3611 || defined(emtp2sge) \
3612 || defined(xyz)) /* terrestrial ice sheet */
3616 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3618 rhosw_rho_ratio = 0.0_dp
3621 errormsg =
' >>> output2: No valid domain specified!' 3645 if (
maske(j,i)==0_i2b)
then 3647 if (
zs(j,i) > zs_max) zs_max =
zs(j,i)
3648 if (h(j,i) > h_max ) h_max = h(j,i)
3649 if (h_temp(j,i) > h_t_max) h_t_max = h_temp(j,i)
3651 v_grounded = v_grounded + h(j,i) *
area(j,i)
3652 v_temp = v_temp + h_temp(j,i)*
area(j,i)
3660 || defined(emtp2sge) \
3661 || defined(xyz)) /* terrestrial ice sheet */
3663 v_gr_redu = v_gr_redu &
3664 + rhosw_rho_ratio*max((z_sl-
zl(j,i)),0.0_dp)*
area(j,i)
3668 a_grounded = a_grounded +
area(j,i)
3670 if (
n_cts(j,i) /= -1) a_temp = a_temp +
area(j,i)
3673 0.25_dp*(
vx_c(kcmax,j,i)+
vx_c(kcmax,j,i-1))**2 &
3674 +0.25_dp*(
vy_c(kcmax,j,i)+
vy_c(kcmax,j-1,i))**2 )
3675 if (vs_help > vs_max) vs_max = vs_help
3677 if (
n_cts(j,i) >= 0)
then 3681 if (tbh_help > tbh_max) tbh_max = tbh_help
3684 accum_tot = accum_tot +
accum(j,i)*
area(j,i)
3686 else if (
maske(j,i)==3_i2b)
then 3690 if (
zs(j,i) > zs_max) zs_max =
zs(j,i)
3691 if (h(j,i) > h_max) h_max = h(j,i)
3693 v_floating = v_floating + h(j,i)*
area(j,i)
3694 a_floating = a_floating +
area(j,i)
3697 0.25_dp*(
vx_c(kcmax,j,i)+
vx_c(kcmax,j,i-1))**2 &
3698 +0.25_dp*(
vy_c(kcmax,j,i)+
vy_c(kcmax,j-1,i))**2 )
3699 if (vs_help > vs_max) vs_max = vs_help
3702 if (tbh_help > tbh_max) tbh_max = tbh_help
3704 accum_tot = accum_tot +
accum(j,i)*
area(j,i)
3720 q_temp = q_temp +
q_tld(j,i) *
area(j,i)
3735 || defined(emtp2sge) \
3736 || defined(xyz)) /* terrestrial ice sheet */
3738 a_surf = 3.61132e+14_dp
3740 v_af = v_grounded - v_gr_redu
3743 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3745 a_surf = 1.4441e+14_dp
3746 v_sle = v_grounded*(
rho_i/
rho_w)*(1.0_dp-frac_dust)/a_surf
3751 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 3753 #elif (OUT_TIMES==2) 3756 errormsg =
' >>> output2: OUT_TIMES must be either 1 or 2!' 3760 v_tot = v_grounded + v_floating
3761 a_tot = a_grounded + a_floating
3763 vs_max = vs_max *year_sec
3771 || defined(emtp2sge) \
3772 || defined(xyz)) /* terrestrial ice sheet */
3778 q_temp = q_temp *year_sec *(
rho/
rho_w)
3781 accum_tot = accum_tot *year_sec *(
rho/
rho_w)
3784 #elif (defined(NMARS) || defined(SMARS)) /* Martian ice sheet */ 3786 q_s = q_s *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3788 q_b = q_b *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3790 q_temp = q_temp *year_sec *(
rho_i/
rho_w)*(1.0_dp-frac_dust)
3798 write(unit=12, fmt=trim(fmt1)) time_val, delta_ts, z_sl, &
3799 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3800 v_sle, v_temp, a_temp, &
3801 h_max, h_t_max, zs_max, vs_max, tbh_max
3805 write(unit=12, fmt=trim(fmt1)) time_val, glac_index, z_sl, &
3806 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3807 v_sle, v_temp, a_temp, &
3808 h_max, h_t_max, zs_max, vs_max, tbh_max
3813 v_tot, v_grounded, v_floating, a_tot, a_grounded, a_floating, &
3814 v_sle, v_temp, a_temp, &
3815 h_max, h_t_max, zs_max, vs_max, tbh_max
3825 #if (defined(HEINO)) 3831 tbh_ave_sed = 0.0_dp
3833 sum_area_sed = 0.0_dp
3840 sum_area_sed = sum_area_sed +
area(j,i)
3842 h_ave_sed = h_ave_sed +
area(j,i)*h(j,i)
3844 if (
n_cts(j,i) /= -1)
then 3849 tbh_ave_sed = tbh_ave_sed +
area(j,i)*tbh_help
3851 if (
n_cts(j,i) /= -1) atb_sed = atb_sed +
area(j,i)
3858 if (sum_area_sed >
eps)
then 3859 h_ave_sed = h_ave_sed / sum_area_sed
3860 tbh_ave_sed = tbh_ave_sed / sum_area_sed
3862 errormsg =
' >>> output2: No sediment area found!' 3869 write(unit=15, fmt=trim(fmt2)) time_val, delta_ts, z_sl, &
3870 h_ave_sed, tbh_ave_sed, atb_sed
3872 write(unit=15, fmt=trim(fmt2)) time_val, glac_index, z_sl, &
3873 h_ave_sed, tbh_ave_sed, atb_sed
3876 h_ave_sed, tbh_ave_sed, atb_sed
3891 filename = trim(runname)//
'_ser.nc' 3892 filename_with_path = trim(outpath)//
'/'//trim(filename)
3894 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
3901 buffer =
'Time-series output of simulation '//trim(runname)
3902 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
3905 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
3907 call check( nf90_put_att(ncid, nf90_global,
'institution', trim(buffer)), &
3910 buffer =
'SICOPOLIS Version '//version
3911 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
3914 call date_and_time(ch_date, ch_time, ch_zone)
3915 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
3916 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
3917 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 3918 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
3921 buffer =
'http://www.sicopolis.net/' 3922 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
3929 if (grads_nc_tweaks)
then 3930 call check( nf90_def_dim(ncid,
'x', 1, ncd), thisroutine )
3931 call check( nf90_def_dim(ncid,
'y', 1, ncd), thisroutine )
3934 call check( nf90_def_dim(ncid,
't', nf90_unlimited, ncd), thisroutine )
3938 if (grads_nc_tweaks)
then 3942 call check( nf90_inq_dimid(ncid,
'x', nc1d), thisroutine )
3943 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
3946 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3949 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3951 buffer =
'Dummy x-coordinate for one point' 3952 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3954 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), thisroutine )
3958 call check( nf90_inq_dimid(ncid,
'y', nc1d), thisroutine )
3959 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
3962 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3965 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3967 buffer =
'Dummy y-coordinate for one point' 3968 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3970 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), thisroutine )
3976 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3977 call check( nf90_def_var(ncid,
't', nf90_float, nc1d, ncv), &
3980 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
3983 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
3986 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
3988 call check( nf90_put_att(ncid, ncv,
'axis',
't'), thisroutine )
3990 if (grads_nc_tweaks)
then 3994 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
3995 call check( nf90_def_var(ncid,
't_add_offset', nf90_float, nc1d, ncv), &
3998 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4000 buffer =
'time_add_offset' 4001 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4003 buffer =
'Time offset' 4004 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4007 time_add_offset_val = min(time_val, 0.0_dp)
4015 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4016 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, nc1d, ncv), &
4019 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4021 buffer =
'surface_temperature_anomaly' 4022 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4024 buffer =
'Surface temperature anomaly' 4025 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4032 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4033 call check( nf90_def_var(ncid,
'glac_index', nf90_float, nc1d, ncv), &
4036 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4038 buffer =
'glacial_index' 4039 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4041 buffer =
'Glacial index' 4042 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4049 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4050 call check( nf90_def_var(ncid,
'z_sl', nf90_float, nc1d, ncv), &
4053 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4055 buffer =
'global_average_sea_level_change' 4056 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4058 buffer =
'Sea level' 4059 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4064 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4065 call check( nf90_def_var(ncid,
'V_tot', nf90_float, nc1d, ncv), &
4068 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4070 buffer =
'land_ice_volume' 4071 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4073 buffer =
'Ice volume' 4074 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4079 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4080 call check( nf90_def_var(ncid,
'V_grounded', nf90_float, nc1d, ncv), &
4083 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4085 buffer =
'grounded_land_ice_volume' 4086 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4088 buffer =
'Volume of grounded ice' 4089 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4094 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4095 call check( nf90_def_var(ncid,
'V_floating', nf90_float, nc1d, ncv), &
4098 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4100 buffer =
'floating_ice_shelf_volume' 4101 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4103 buffer =
'Volume of floating ice' 4104 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4109 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4110 call check( nf90_def_var(ncid,
'A_tot', nf90_float, nc1d, ncv), &
4113 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4115 buffer =
'land_ice_area' 4116 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4119 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4124 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4125 call check( nf90_def_var(ncid,
'A_grounded', nf90_float, nc1d, ncv), &
4128 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4130 buffer =
'grounded_land_ice_area' 4131 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4133 buffer =
'Area covered by grounded ice' 4134 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4139 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4140 call check( nf90_def_var(ncid,
'A_floating', nf90_float, nc1d, ncv), &
4143 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4145 buffer =
'floating_ice_shelf_area' 4146 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4148 buffer =
'Area covered by floating ice' 4149 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4154 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4155 call check( nf90_def_var(ncid,
'V_af', nf90_float, nc1d, ncv), &
4158 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4160 buffer =
'land_ice_volume_not_displacing_sea_water' 4161 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4163 buffer =
'Ice volume above flotation' 4164 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4169 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4170 call check( nf90_def_var(ncid,
'V_sle', nf90_float, nc1d, ncv), &
4173 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4175 buffer =
'land_ice_volume_sle' 4176 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4178 buffer =
'Ice volume in SLE' 4179 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4184 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4185 call check( nf90_def_var(ncid,
'V_temp', nf90_float, nc1d, ncv), &
4188 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4190 buffer =
'temperate_land_ice_volume' 4191 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4193 buffer =
'Volume of temperate ice' 4194 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4199 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4200 call check( nf90_def_var(ncid,
'A_temp', nf90_float, nc1d, ncv), &
4203 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4205 buffer =
'temperate_land_ice_area' 4206 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4208 buffer =
'Area covered by temperate ice' 4209 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4214 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4215 call check( nf90_def_var(ncid,
'Q_s', nf90_float, nc1d, ncv), &
4217 buffer =
'm3 ice equiv. a-1' 4218 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4220 buffer =
'tendency_of_land_ice_volume_due_to_surface_mass_balance' 4221 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4223 buffer =
'Total surface mass balance' 4224 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4229 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4230 call check( nf90_def_var(ncid,
'precip_tot', nf90_float, nc1d, ncv), &
4232 buffer =
'm3 ice equiv. a-1' 4233 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4235 buffer =
'precipitation_rate' 4236 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4238 buffer =
'Precipitation rate' 4239 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4244 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4245 call check( nf90_def_var(ncid,
'runoff_tot', nf90_float, nc1d, ncv), &
4247 buffer =
'm3 ice equiv. a-1' 4248 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4250 buffer =
'runoff_rate' 4251 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4253 buffer =
'Runoff rate' 4254 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4259 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4260 call check( nf90_def_var(ncid,
'bmb_tot', nf90_float, nc1d, ncv), &
4262 buffer =
'm3 ice equiv. a-1' 4263 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4265 buffer =
'tendency_of_land_ice_volume_due_to_basal_mass_balance' 4266 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4268 buffer =
'Total basal mass balance' 4269 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4274 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4275 call check( nf90_def_var(ncid,
'Q_b', nf90_float, nc1d, ncv), &
4277 buffer =
'm3 ice equiv. a-1' 4278 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4280 buffer =
'basal_melting_rate' 4281 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4283 buffer =
'Basal melting rate' 4284 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4289 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4290 call check( nf90_def_var(ncid,
'Q_temp', nf90_float, nc1d, ncv), &
4292 buffer =
'm3 ice equiv. a-1' 4293 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4295 buffer =
'temperate_layer_drainage_rate' 4296 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4298 buffer =
'Drainage rate from the temperate ice layer' 4299 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4304 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4305 call check( nf90_def_var(ncid,
'calv_tot', nf90_float, nc1d, ncv), &
4307 buffer =
'm3 ice equiv. a-1' 4308 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4310 buffer =
'tendency_of_land_ice_volume_due_to_calving' 4311 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4313 buffer =
'Total calving rate' 4314 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4321 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4322 call check( nf90_def_var(ncid,
'disc_lsc', nf90_float, nc1d, ncv), &
4324 buffer =
'm3 ice equiv. a-1' 4325 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4327 buffer =
'large_scale_ice_lost_into_the_ocean' 4328 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4330 buffer =
'Large scale ice lost into the ocean' 4331 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4336 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4337 call check( nf90_def_var(ncid,
'disc_ssc', nf90_float, nc1d, ncv), &
4339 buffer =
'm3 ice equiv. a-1' 4340 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4342 buffer =
'small_scale_ice_lost_into_the_ocean' 4343 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4345 buffer =
'Small scale ice lost into the ocean' 4346 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4351 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4352 call check( nf90_def_var(ncid,
'dT_glann', nf90_float, nc1d, ncv), &
4355 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4357 buffer =
'global_annual_temperature_anomaly' 4358 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4360 buffer =
'Global annual temperature anomaly' 4361 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4366 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4367 call check( nf90_def_var(ncid,
'dT_sub', nf90_float, nc1d, ncv), &
4370 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4372 buffer =
'subsurface_ocean_temperature_anomaly' 4373 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4375 buffer =
'Subsurface ocean temperature anomaly' 4376 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4383 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4384 call check( nf90_def_var(ncid,
'dV_dt', nf90_float, nc1d, ncv), &
4387 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4389 buffer =
'tendency_of_land_ice_volume' 4390 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4392 buffer =
'Rate of ice volume change' 4393 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4398 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4399 call check( nf90_def_var(ncid,
'mb_resid', nf90_float, nc1d, ncv), &
4401 buffer =
'm3 ice equiv. a-1' 4402 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4404 buffer =
'total_mass_balance_residual' 4405 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4407 buffer =
'Residual of the total mass balance' 4408 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4413 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4414 call check( nf90_def_var(ncid,
'mbp', nf90_float, nc1d, ncv), &
4417 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4419 buffer =
'mass_balance_partition' 4420 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4422 buffer =
'Mass balance partition' 4423 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4428 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4429 call check( nf90_def_var(ncid,
'H_max', nf90_float, nc1d, ncv), &
4432 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4434 buffer =
'maximum_ice_thickness' 4435 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4437 buffer =
'Maximum ice thickness' 4438 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4443 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4444 call check( nf90_def_var(ncid,
'H_t_max', nf90_float, nc1d, ncv), &
4447 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4449 buffer =
'maximum_thickness_of_temperate_ice' 4450 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4452 buffer =
'Maximum thickness of temperate ice' 4453 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4458 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4459 call check( nf90_def_var(ncid,
'zs_max', nf90_float, nc1d, ncv), &
4462 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4464 buffer =
'maximum_surface_elevation' 4465 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4467 buffer =
'Maximum surface elevation' 4468 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4473 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4474 call check( nf90_def_var(ncid,
'vs_max', nf90_float, nc1d, ncv), &
4477 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4479 buffer =
'maximum_surface_speed' 4480 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4482 buffer =
'Maximum surface speed' 4483 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4488 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
4489 call check( nf90_def_var(ncid,
'Tbh_max', nf90_float, nc1d, ncv), &
4492 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
4494 buffer =
'maximum_basal_temperature_relative_to_pmp' 4495 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
4497 buffer =
'Maximum basal temperature relative to pmp' 4498 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
4503 call check( nf90_enddef(ncid), thisroutine )
4531 precip_tot = precip_tot +
accum(j,i)*
area(j,i)
4538 precip_tot = precip_tot *year_sec
4540 dv_dt = dv_dt *year_sec
4555 runoff_tot = runoff_tot +
runoff(j,i)*
area(j,i)
4563 bmb_tot = -(q_b+q_temp)
4565 #elif (MB_ACCOUNT==1) 4578 lmt = 0.0_dp; omt = 0.0_dp
4579 lmb = 0.0_dp; omb = 0.0_dp
4580 lmh = 0.0_dp; omh = 0.0_dp
4581 odt = 0.0_dp; odh = 0.0_dp
4618 runoff_tot = lmt + lmh
4620 calv_tot = omt + omh + odt + odh
4622 disc_lsc = omt + omh
4624 disc_ssc = odt + odh
4630 disc_lsc = disc_lsc * year_sec
4632 disc_ssc = disc_ssc * year_sec
4634 bmb_tot = bmb_tot * year_sec
4637 #endif /* if (MB_ACCOUNT==0) elif (MB_ACCOUNT==1) */ 4639 runoff_tot = runoff_tot *year_sec
4641 calv_tot = calv_tot * year_sec
4644 if (precip_tot.ne.0.0_dp)
then 4645 mbp = calv_tot/precip_tot
4651 mb_resid = q_s + bmb_tot - calv_tot - dv_dt
4652 #elif(MB_ACCOUNT==1) 4653 mb_resid = mb - dv_dt
4658 if (firstcall.and.grads_nc_tweaks)
then 4662 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
4663 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
4665 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
4666 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
4668 call check( nf90_sync(ncid), thisroutine )
4675 call check( nf90_inq_varid(ncid,
't', ncv), thisroutine )
4677 if (.not.grads_nc_tweaks)
then 4678 call check( nf90_put_var(ncid, ncv,
real(time_val,sp), &
4679 start=nc1cor), thisroutine )
4681 call check( nf90_put_var(ncid, ncv, &
4682 real(time_val-time_add_offset_val,sp), &
4683 start=nc1cor), thisroutine )
4686 call check( nf90_inq_varid(ncid,
't_add_offset', ncv), thisroutine )
4687 call check( nf90_put_var(ncid, ncv, &
4688 real(time_add_offset_val,sp), &
4689 start=nc1cor), thisroutine )
4694 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
4695 call check( nf90_put_var(ncid, ncv,
real(delta_ts,sp), &
4696 start=nc1cor), thisroutine )
4700 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
4701 call check( nf90_put_var(ncid, ncv,
real(glac_index,sp), &
4702 start=nc1cor), thisroutine )
4706 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
4707 call check( nf90_put_var(ncid, ncv,
real(no_value_neg_2,sp), &
4708 start=nc1cor), thisroutine )
4712 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
4713 call check( nf90_put_var(ncid, ncv,
real(z_sl,sp), &
4714 start=nc1cor), thisroutine )
4716 call check( nf90_inq_varid(ncid,
'V_tot', ncv), thisroutine )
4717 call check( nf90_put_var(ncid, ncv,
real(V_tot,sp), &
4718 start=nc1cor), thisroutine )
4720 call check( nf90_inq_varid(ncid,
'V_grounded', ncv), thisroutine )
4721 call check( nf90_put_var(ncid, ncv,
real(V_grounded,sp), &
4722 start=nc1cor), thisroutine )
4724 call check( nf90_inq_varid(ncid,
'V_floating', ncv), thisroutine )
4725 call check( nf90_put_var(ncid, ncv,
real(V_floating,sp), &
4726 start=nc1cor), thisroutine )
4728 call check( nf90_inq_varid(ncid,
'A_tot', ncv), thisroutine )
4729 call check( nf90_put_var(ncid, ncv,
real(A_tot,sp), &
4730 start=nc1cor), thisroutine )
4732 call check( nf90_inq_varid(ncid,
'A_grounded', ncv), thisroutine )
4733 call check( nf90_put_var(ncid, ncv,
real(A_grounded,sp), &
4734 start=nc1cor), thisroutine )
4736 call check( nf90_inq_varid(ncid,
'A_floating', ncv), thisroutine )
4737 call check( nf90_put_var(ncid, ncv,
real(A_floating,sp), &
4738 start=nc1cor), thisroutine )
4740 call check( nf90_inq_varid(ncid,
'V_af', ncv), thisroutine )
4741 call check( nf90_put_var(ncid, ncv,
real(V_af,sp), &
4742 start=nc1cor), thisroutine )
4744 call check( nf90_inq_varid(ncid,
'V_sle', ncv), thisroutine )
4745 call check( nf90_put_var(ncid, ncv,
real(V_sle,sp), &
4746 start=nc1cor), thisroutine )
4748 call check( nf90_inq_varid(ncid,
'V_temp', ncv), thisroutine )
4749 call check( nf90_put_var(ncid, ncv,
real(V_temp,sp), &
4750 start=nc1cor), thisroutine )
4752 call check( nf90_inq_varid(ncid,
'A_temp', ncv), thisroutine )
4753 call check( nf90_put_var(ncid, ncv,
real(A_temp,sp), &
4754 start=nc1cor), thisroutine )
4756 call check( nf90_inq_varid(ncid,
'Q_s', ncv), thisroutine )
4757 call check( nf90_put_var(ncid, ncv,
real(Q_s,sp), &
4758 start=nc1cor), thisroutine )
4760 call check( nf90_inq_varid(ncid,
'precip_tot', ncv), thisroutine )
4761 call check( nf90_put_var(ncid, ncv,
real(precip_tot,sp), &
4762 start=nc1cor), thisroutine )
4764 call check( nf90_inq_varid(ncid,
'runoff_tot', ncv), thisroutine )
4765 call check( nf90_put_var(ncid, ncv,
real(runoff_tot,sp), &
4766 start=nc1cor), thisroutine )
4768 call check( nf90_inq_varid(ncid,
'bmb_tot', ncv), thisroutine )
4769 call check( nf90_put_var(ncid, ncv,
real(bmb_tot,sp), &
4770 start=nc1cor), thisroutine )
4772 call check( nf90_inq_varid(ncid,
'Q_b', ncv), thisroutine )
4773 call check( nf90_put_var(ncid, ncv,
real(Q_b,sp), &
4774 start=nc1cor), thisroutine )
4776 call check( nf90_inq_varid(ncid,
'Q_temp', ncv), thisroutine )
4777 call check( nf90_put_var(ncid, ncv,
real(Q_temp,sp), &
4778 start=nc1cor), thisroutine )
4780 call check( nf90_inq_varid(ncid,
'calv_tot', ncv), thisroutine )
4781 call check( nf90_put_var(ncid, ncv,
real(calv_tot,sp), &
4782 start=nc1cor), thisroutine )
4785 call check( nf90_inq_varid(ncid,
'disc_lsc', ncv), thisroutine )
4786 call check( nf90_put_var(ncid, ncv,
real(disc_lsc,sp), &
4787 start=nc1cor), thisroutine )
4789 call check( nf90_inq_varid(ncid,
'disc_ssc', ncv), thisroutine )
4790 call check( nf90_put_var(ncid, ncv,
real(disc_ssc,sp), &
4791 start=nc1cor), thisroutine )
4793 call check( nf90_inq_varid(ncid,
'dT_glann', ncv), thisroutine )
4794 call check( nf90_put_var(ncid, ncv,
real(dT_glann,sp), &
4795 start=nc1cor), thisroutine )
4797 call check( nf90_inq_varid(ncid,
'dT_sub', ncv), thisroutine )
4798 call check( nf90_put_var(ncid, ncv,
real(dT_sub,sp), &
4799 start=nc1cor), thisroutine )
4802 call check( nf90_inq_varid(ncid,
'dV_dt', ncv), thisroutine )
4803 call check( nf90_put_var(ncid, ncv,
real(dV_dt,sp), &
4804 start=nc1cor), thisroutine )
4806 call check( nf90_inq_varid(ncid,
'mb_resid', ncv), thisroutine )
4807 call check( nf90_put_var(ncid, ncv,
real(mb_resid,sp), &
4808 start=nc1cor), thisroutine )
4810 call check( nf90_inq_varid(ncid,
'mbp', ncv), thisroutine )
4811 call check( nf90_put_var(ncid, ncv,
real(mbp,sp), &
4812 start=nc1cor), thisroutine )
4814 call check( nf90_inq_varid(ncid,
'H_max', ncv), thisroutine )
4815 call check( nf90_put_var(ncid, ncv,
real(H_max,sp), &
4816 start=nc1cor), thisroutine )
4818 call check( nf90_inq_varid(ncid,
'H_t_max', ncv), thisroutine )
4819 call check( nf90_put_var(ncid, ncv,
real(H_t_max,sp), &
4820 start=nc1cor), thisroutine )
4822 call check( nf90_inq_varid(ncid,
'zs_max', ncv), thisroutine )
4823 call check( nf90_put_var(ncid, ncv,
real(zs_max,sp), &
4824 start=nc1cor), thisroutine )
4826 call check( nf90_inq_varid(ncid,
'vs_max', ncv), thisroutine )
4827 call check( nf90_put_var(ncid, ncv,
real(vs_max,sp), &
4828 start=nc1cor), thisroutine )
4830 call check( nf90_inq_varid(ncid,
'Tbh_max', ncv), thisroutine )
4831 call check( nf90_put_var(ncid, ncv,
real(Tbh_max,sp), &
4832 start=nc1cor), thisroutine )
4838 if ( mod((counter-1), n_sync) == 0 ) &
4839 call check( nf90_sync(ncid), thisroutine )
4843 if (firstcall) firstcall = .false.
4851 subroutine output4(time, dxi, deta, delta_ts, glac_index, z_sl)
4860 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
4862 integer(i4b) :: i, j, n
4863 real(sp),
dimension(:),
allocatable :: r_n_core
4864 real(dp) :: time_val
4865 real(dp),
dimension(0:JMAX,0:IMAX) :: field
4866 real(dp),
dimension(:),
allocatable :: H_core, temp_b_core, &
4867 vx_b_core, vy_b_core, vh_b_core, &
4868 vx_s_core, vy_s_core, vh_s_core, &
4869 Rx_b_core, Ry_b_core, R_b_core, &
4873 integer(i4b),
save :: ncid
4874 integer(i4b) :: ncd, ncv, nc1d, nc2d(2)
4875 integer(i4b) :: nc1cor(1), nc1cnt(1), nc2cor(2), nc2cnt(2)
4876 integer(i4b) :: n_sync
4877 real(dp),
save :: time_add_offset_val
4878 character(len= 16) :: ch_date, ch_time, ch_zone
4879 character(len=256) :: filename, filename_with_path, buffer
4880 logical,
save :: grads_nc_tweaks
4883 integer(i4b),
save :: counter = 0
4884 logical,
save :: firstcall = .true.
4886 character(len=64),
parameter :: thisroutine =
'output4' 4888 counter = counter + 1
4904 r_n_core(n) =
real(n,
sp)
4915 field(j,i) =
vx_t(0,j,i)
4923 field(j,i) =
vy_t(0,j,i)
4929 vh_b_core(n) = sqrt(vx_b_core(n)**2+vy_b_core(n)**2)
4935 field(j,i) =
vx_c(kcmax,j,i)
4943 field(j,i) =
vy_c(kcmax,j,i)
4949 vh_s_core(n) = sqrt(vx_s_core(n)**2+vy_s_core(n)**2)
4955 field(j,i) =
temp_r(krmax,j,i)
4979 r_b_core(n) = rx_b_core(n) + ry_b_core(n)
4990 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 4992 #elif (OUT_TIMES==2) 4995 errormsg =
' >>> output4: OUT_TIMES must be either 1 or 2!' 4999 vh_b_core = vh_b_core *year_sec
5000 vh_s_core = vh_s_core *year_sec
5002 bmb_core = bmb_core *year_sec
5007 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5009 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5011 write(unit=14, fmt=
'(1pe13.6,2(1pe13.4))') time_val,
no_value_pos_1, z_sl
5015 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') h_core(n)
5017 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') h_core(n)
5020 write(unit=14, fmt=
'(1pe13.4)') h_core(n)
5023 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') vh_s_core(n)
5025 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') vh_s_core(n)
5028 write(unit=14, fmt=
'(1pe13.4)') vh_s_core(n)
5031 write(unit=14, fmt=
'(13x,1pe13.4)', advance=
'no') temp_b_core(n)
5033 write(unit=14, fmt=
'(1pe13.4)', advance=
'no') temp_b_core(n)
5036 write(unit=14, fmt=
'(1pe13.4,/)') temp_b_core(n)
5046 filename = trim(runname)//
'_core.nc' 5047 filename_with_path = trim(outpath)//
'/'//trim(filename)
5049 call check( nf90_create(trim(filename_with_path), nf90_noclobber, ncid), &
5056 buffer =
'Time-series output for the deep ice cores of simulation '// &
5058 call check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
5061 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
5063 call check( nf90_put_att(ncid, nf90_global,
'institution', &
5067 buffer =
'SICOPOLIS Version '//version
5068 call check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
5071 call date_and_time(ch_date, ch_time, ch_zone)
5072 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
5073 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
5074 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced' 5075 call check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
5078 buffer =
'http://www.sicopolis.net/' 5079 call check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
5086 if (grads_nc_tweaks)
then 5087 call check( nf90_def_dim(ncid,
'x', 1, ncd), thisroutine )
5088 call check( nf90_def_dim(ncid,
'y', 1, ncd), thisroutine )
5091 call check( nf90_def_dim(ncid,
'n',
n_core, ncd), thisroutine )
5092 call check( nf90_def_dim(ncid,
't', nf90_unlimited, ncd), thisroutine )
5096 if (grads_nc_tweaks)
then 5100 call check( nf90_inq_dimid(ncid,
'x', nc1d), thisroutine )
5101 call check( nf90_def_var(ncid,
'x', nf90_float, nc1d, ncv), &
5104 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5107 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5109 buffer =
'Dummy x-coordinate for one point' 5110 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5112 call check( nf90_put_att(ncid, ncv,
'axis',
'x'), thisroutine )
5116 call check( nf90_inq_dimid(ncid,
'y', nc1d), thisroutine )
5117 call check( nf90_def_var(ncid,
'y', nf90_float, nc1d, ncv), &
5120 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5123 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5125 buffer =
'Dummy y-coordinate for one point' 5126 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5128 call check( nf90_put_att(ncid, ncv,
'axis',
'y'), thisroutine )
5134 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5135 call check( nf90_def_var(ncid,
't', nf90_float, nc1d, ncv), &
5138 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5141 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5144 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5146 call check( nf90_put_att(ncid, ncv,
'axis',
't'), thisroutine )
5148 if (grads_nc_tweaks)
then 5152 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5153 call check( nf90_def_var(ncid,
't_add_offset', &
5154 nf90_float, nc1d, ncv), &
5157 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5159 buffer =
'time_add_offset' 5160 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5162 buffer =
'Time offset' 5163 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5166 time_add_offset_val = min(time_val, 0.0_dp)
5172 call check( nf90_inq_dimid(ncid,
'n', nc1d), thisroutine )
5173 call check( nf90_def_var(ncid,
'n', nf90_float, nc1d, ncv), &
5176 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5178 buffer =
'ice_core_number' 5179 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5181 buffer =
'Ice core number' 5182 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5185 do n=2,
n_core; buffer = trim(buffer)//
', '//trim(
ch_core(n));
end do 5186 call check( nf90_put_att(ncid, ncv,
'ice_core_names', trim(buffer)), &
5188 call check( nf90_put_att(ncid, ncv,
'axis',
'n'), thisroutine )
5194 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5195 call check( nf90_def_var(ncid,
'delta_ts', nf90_float, nc1d, ncv), &
5198 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5200 buffer =
'surface_temperature_anomaly' 5201 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5203 buffer =
'Surface temperature anomaly' 5204 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5211 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5212 call check( nf90_def_var(ncid,
'glac_index', nf90_float, nc1d, ncv), &
5215 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5217 buffer =
'glacial_index' 5218 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5220 buffer =
'Glacial index' 5221 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5228 call check( nf90_inq_dimid(ncid,
't', nc1d), thisroutine )
5229 call check( nf90_def_var(ncid,
'z_sl', nf90_float, nc1d, ncv), &
5232 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5234 buffer =
'global_average_sea_level_change' 5235 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5237 buffer =
'Sea level' 5238 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5243 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5244 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5245 call check( nf90_def_var(ncid,
'H_core', nf90_float, nc2d, ncv), &
5248 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5250 buffer =
'land_ice_thickness' 5251 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5253 buffer =
'Ice thickness' 5254 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5259 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5260 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5261 call check( nf90_def_var(ncid,
'vh_b_core', nf90_float, nc2d, ncv), &
5264 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5266 buffer =
'land_ice_basal_horizontal_velocity' 5267 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5269 buffer =
'Horizontal velocity at the ice base' 5270 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5275 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5276 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5277 call check( nf90_def_var(ncid,
'vh_s_core', nf90_float, nc2d, ncv), &
5280 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5282 buffer =
'land_ice_surface_horizontal_velocity' 5283 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5285 buffer =
'Horizontal velocity at the ice surface' 5286 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5291 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5292 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5293 call check( nf90_def_var(ncid,
'temp_b_core', nf90_float, nc2d, ncv), &
5296 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5298 buffer =
'basal_temperature' 5299 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5301 buffer =
'Temperature at the ice base' 5302 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5307 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5308 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5309 call check( nf90_def_var(ncid,
'R_b_core', nf90_float, nc2d, ncv), &
5312 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5314 buffer =
'basal_frictional_heating' 5315 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5317 buffer =
'Basal frictional heating' 5318 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5323 call check( nf90_inq_dimid(ncid,
'n', nc2d(1)), thisroutine )
5324 call check( nf90_inq_dimid(ncid,
't', nc2d(2)), thisroutine )
5325 call check( nf90_def_var(ncid,
'bmb_core', nf90_float, nc2d, ncv), &
5327 buffer =
'm ice equiv. a-1' 5328 call check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
5330 buffer =
'land_ice_basal_mass_balance' 5331 call check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
5333 buffer =
'Basal mass balance' 5334 call check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
5339 call check( nf90_enddef(ncid), thisroutine )
5345 if (firstcall.and.grads_nc_tweaks)
then 5349 call check( nf90_inq_varid(ncid,
'x', ncv), thisroutine )
5350 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
5352 call check( nf90_inq_varid(ncid,
'y', ncv), thisroutine )
5353 call check( nf90_put_var(ncid, ncv, 0.0_sp, start=nc1cor), thisroutine )
5355 call check( nf90_sync(ncid), thisroutine )
5363 call check( nf90_inq_varid(ncid,
'n', ncv), thisroutine )
5364 call check( nf90_put_var(ncid, ncv, r_n_core, &
5365 start=nc1cor), thisroutine )
5377 call check( nf90_inq_varid(ncid,
't', ncv), thisroutine )
5379 if (.not.grads_nc_tweaks)
then 5380 call check( nf90_put_var(ncid, ncv,
real(time_val,sp), &
5381 start=nc1cor), thisroutine )
5383 call check( nf90_put_var(ncid, ncv, &
5384 real(time_val-time_add_offset_val,sp), &
5385 start=nc1cor), thisroutine )
5388 call check( nf90_inq_varid(ncid,
't_add_offset', ncv), thisroutine )
5389 call check( nf90_put_var(ncid, ncv, &
5390 real(time_add_offset_val,sp), &
5391 start=nc1cor), thisroutine )
5396 call check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
5397 call check( nf90_put_var(ncid, ncv,
real(delta_ts,sp), &
5398 start=nc1cor), thisroutine )
5402 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
5403 call check( nf90_put_var(ncid, ncv,
real(glac_index,sp), &
5404 start=nc1cor), thisroutine )
5408 call check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
5409 call check( nf90_put_var(ncid, ncv,
real(no_value_neg_2,sp), &
5410 start=nc1cor), thisroutine )
5414 call check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
5415 call check( nf90_put_var(ncid, ncv,
real(z_sl,sp), &
5416 start=nc1cor), thisroutine )
5418 call check( nf90_inq_varid(ncid,
'H_core', ncv), thisroutine )
5419 call check( nf90_put_var(ncid, ncv,
real(H_core,sp), &
5420 start=nc2cor, count=nc2cnt), thisroutine )
5422 call check( nf90_inq_varid(ncid,
'vh_b_core', ncv), thisroutine )
5423 call check( nf90_put_var(ncid, ncv,
real(vh_b_core,sp), &
5424 start=nc2cor, count=nc2cnt), thisroutine )
5426 call check( nf90_inq_varid(ncid,
'vh_s_core', ncv), thisroutine )
5427 call check( nf90_put_var(ncid, ncv,
real(vh_s_core,sp), &
5428 start=nc2cor, count=nc2cnt), thisroutine )
5430 call check( nf90_inq_varid(ncid,
'temp_b_core', ncv), thisroutine )
5431 call check( nf90_put_var(ncid, ncv,
real(temp_b_core,sp), &
5432 start=nc2cor, count=nc2cnt), thisroutine )
5434 call check( nf90_inq_varid(ncid,
'R_b_core', ncv), thisroutine )
5435 call check( nf90_put_var(ncid, ncv,
real(R_b_core,sp), &
5436 start=nc2cor, count=nc2cnt), thisroutine )
5438 call check( nf90_inq_varid(ncid,
'bmb_core', ncv), thisroutine )
5439 call check( nf90_put_var(ncid, ncv,
real(bmb_core,sp), &
5440 start=nc2cor, count=nc2cnt), thisroutine )
5446 if ( mod((counter-1), n_sync) == 0 ) &
5447 call check( nf90_sync(ncid), thisroutine )
5451 deallocate(r_n_core, h_core, &
5452 vx_b_core, vy_b_core, vh_b_core, &
5453 vx_s_core, vy_s_core, vh_s_core, &
5455 rx_b_core, ry_b_core, r_b_core, &
5464 if (firstcall) firstcall = .false.
5474 subroutine output5(time, dxi, deta, delta_ts, glac_index, z_sl)
5478 real(dp),
intent(in) :: time, dxi, deta, delta_ts, glac_index, z_sl
5480 integer(i4b) :: n, k
5481 real(dp) :: time_val
5482 real(dp),
dimension(0:JMAX,0:IMAX) :: field
5483 real(dp),
dimension(:),
allocatable :: zl_surf, zs_surf, &
5484 accum_surf, as_perp_surf, &
5485 snowfall_surf, rainfall_surf, runoff_surf, &
5486 vx_surf, vy_surf, vz_surf, &
5487 vx_base, vy_base, vz_base, &
5519 'grid', accum_surf(n))
5525 'grid', as_perp_surf(n))
5531 'grid', snowfall_surf(n))
5537 'grid', rainfall_surf(n))
5543 'grid', runoff_surf(n))
5577 'grid', temp_base_pmp(n))
5584 #if (!defined(OUT_TIMES) || OUT_TIMES==1) 5586 #elif (OUT_TIMES==2) 5589 errormsg =
' >>> output5: OUT_TIMES must be either 1 or 2!' 5594 accum_surf(n) = accum_surf(n) *year_sec
5595 as_perp_surf(n) = as_perp_surf(n) *year_sec
5596 snowfall_surf(n) = snowfall_surf(n) *year_sec
5597 rainfall_surf(n) = rainfall_surf(n) *year_sec
5598 runoff_surf(n) = runoff_surf(n) *year_sec
5599 vx_surf(n) = vx_surf(n) *year_sec
5600 vy_surf(n) = vy_surf(n) *year_sec
5601 vz_surf(n) = vz_surf(n) *year_sec
5602 vx_base(n) = vx_base(n) *year_sec
5603 vy_base(n) = vy_base(n) *year_sec
5604 vz_base(n) = vz_base(n) *year_sec
5610 write(41,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5611 write(42,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5612 write(43,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5613 write(44,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5614 write(45,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5615 write(46,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5616 write(47,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5617 write(48,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5618 write(49,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5619 write(50,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5620 write(51,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5621 write(52,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5622 write(53,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5623 write(54,
'(1pe13.6,2(1pe13.4))') time_val, delta_ts, z_sl
5625 write(41,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5626 write(42,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5627 write(43,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5628 write(44,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5629 write(45,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5630 write(46,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5631 write(47,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5632 write(48,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5633 write(49,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5634 write(50,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5635 write(51,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5636 write(52,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5637 write(53,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5638 write(54,
'(1pe13.6,2(1pe13.4))') time_val, glac_index, z_sl
5642 write(41,
'(1pe13.4)',advance=
'no') zl_surf(n)
5643 write(42,
'(1pe13.4)',advance=
'no') zs_surf(n)
5644 write(43,
'(1pe13.4)',advance=
'no') accum_surf(n)
5645 write(44,
'(1pe13.4)',advance=
'no') as_perp_surf(n)
5646 write(45,
'(1pe13.4)',advance=
'no') snowfall_surf(n)
5647 write(46,
'(1pe13.4)',advance=
'no') rainfall_surf(n)
5648 write(47,
'(1pe13.4)',advance=
'no') runoff_surf(n)
5649 write(48,
'(1pe13.4)',advance=
'no') vx_surf(n)
5650 write(49,
'(1pe13.4)',advance=
'no') vy_surf(n)
5651 write(50,
'(1pe13.4)',advance=
'no') vz_surf(n)
5652 write(51,
'(1pe13.4)',advance=
'no') vx_base(n)
5653 write(52,
'(1pe13.4)',advance=
'no') vy_base(n)
5654 write(53,
'(1pe13.4)',advance=
'no') vz_base(n)
5655 write(54,
'(1pe13.4)',advance=
'no') temp_base_pmp(n)
5659 write(41,
'(1pe13.4)') zl_surf(n)
5660 write(42,
'(1pe13.4)') zs_surf(n)
5661 write(43,
'(1pe13.4)') accum_surf(n)
5662 write(44,
'(1pe13.4)') as_perp_surf(n)
5663 write(45,
'(1pe13.4)') snowfall_surf(n)
5664 write(46,
'(1pe13.4)') rainfall_surf(n)
5665 write(47,
'(1pe13.4)') runoff_surf(n)
5666 write(48,
'(1pe13.4)') vx_surf(n)
5667 write(49,
'(1pe13.4)') vy_surf(n)
5668 write(50,
'(1pe13.4)') vz_surf(n)
5669 write(51,
'(1pe13.4)') vx_base(n)
5670 write(52,
'(1pe13.4)') vy_base(n)
5671 write(53,
'(1pe13.4)') vz_base(n)
5672 write(54,
'(1pe13.4)') temp_base_pmp(n)
5674 deallocate(zl_surf, zs_surf, accum_surf, as_perp_surf, &
5675 snowfall_surf, rainfall_surf, runoff_surf, &
5676 vx_surf, vy_surf, vz_surf, &
5677 vx_base, vy_base, vz_base,temp_base_pmp)
5679 end subroutine output5
5681 #endif /* (defined(ASF)) */ 5688 subroutine borehole(field, x_pos, y_pos, dxi, deta, ch_grid, field_val)
5690 #ifndef ALLOW_OPENAD /* Normal */ 5694 #endif /* Normal vs. OpenAD */ 5698 real(dp),
dimension(0:JMAX,0:IMAX),
intent(in) :: field
5699 real(dp),
intent(in) :: x_pos, y_pos, dxi, deta
5700 character (len=*),
intent(in) :: ch_grid
5702 real(dp),
intent(out) :: field_val
5704 integer(i4b) :: i1, i2, j1, j2
5705 real(dp) :: real_i, real_j
5709 real_i = (x_pos-
xi(0)) /dxi
5710 real_j = (y_pos-
eta(0))/deta
5712 if (ch_grid==
'sg_x') real_i = real_i - 0.5_dp
5713 if (ch_grid==
'sg_y') real_j = real_j - 0.5_dp
5715 if (real_i < 0.5_dp*
real(imax,
dp)) then
5719 i2 = ceiling(real_i)
5723 if (real_j < 0.5_dp*
real(jmax,
dp)) then
5727 j2 = ceiling(real_j)
5731 if (ch_grid==
'grid')
then 5734 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax).or.(j2 > jmax))
then 5735 errormsg =
' >>> borehole: Borehole position out of domain!' 5739 else if (ch_grid==
'sg_x')
then 5742 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax-1).or.(j2 > jmax))
then 5743 errormsg =
' >>> borehole: Borehole position out of domain!' 5747 else if (ch_grid==
'sg_y')
then 5750 if ((i1 < 0).or.(j1 < 0).or.(i2 > imax).or.(j2 > jmax-1))
then 5751 errormsg =
' >>> borehole: Borehole position out of domain!' 5757 errormsg =
' >>> borehole: Parameter ch_grid has undefined value!' 5764 #ifndef ALLOW_OPENAD /* Normal */ 5765 field_val =
bilinint(
real(i1,dp),
real(i2,dp),
real(j1,dp),
real(j2,dp), &
5766 field(j1,i1), field(j2,i1), field(j1,i2), field(j2,i2), &
5769 call bilinint(
real(i1,dp),
real(i2,dp),
real(j1,dp),
real(j2,dp), &
5770 field(j1,i1), field(j2,i1), field(j1,i2), field(j2,i2), &
5771 real_i, real_j, field_val)
5772 #endif /* Normal vs. OpenAD */ 5783 logical,
intent(out) :: grads_nc_tweaks
5785 character(len=16) :: ch_value
5789 grads_nc_tweaks = .false.
5793 call get_environment_variable(
'SICO_GRADS_NC_TWEAKS', ch_value)
5795 if ( (trim(ch_value)==
'true') &
5796 .or.(trim(ch_value)==
'True').or.(trim(ch_value)==
'TRUE') ) &
5797 grads_nc_tweaks = .true.
5799 if ( (trim(ch_value)==
'yes') &
5800 .or.(trim(ch_value)==
'Yes').or.(trim(ch_value)==
'YES') &
5801 .or.(trim(ch_value)==
'y').or.(trim(ch_value)==
'Y') ) &
5802 grads_nc_tweaks = .true.
5806 #if (defined(GRADS_NC_TWEAKS)) 5807 #if (GRADS_NC_TWEAKS==1) 5808 grads_nc_tweaks = .true.
5810 grads_nc_tweaks = .false.
5814 #else /* NetCDF not used */ 5815 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)