35 subroutine output_nc(runname, time, delta_ts, glac_index, z_sl, &
36 flag_3d_output, ndat2d, ndat3d)
42 #if (CALCMOD==1 || CALCMOD==0 || CALCMOD==-1)
51 real(dp),
intent(in) :: time, delta_ts, glac_index, z_sl
52 character(len=100),
intent(in) :: runname
53 logical,
intent(in) :: flag_3d_output
55 integer(i4b),
intent(inout) :: ndat2d, ndat3d
57 integer(i4b) :: i, j, kc, kt, kr
58 integer(i4b) :: ndat, ndat_help, ndat_1000s, ndat_100s, ndat_10s, ndat_1s
59 real(dp),
dimension(0:JMAX,0:IMAX) :: h, h_cold, h_temp, dh_dtau
60 real(dp) :: v_tot, a_grounded, a_floating
61 real(sp) :: lon0, lat0
62 character(len=256) :: filename
63 character :: ch_1000s, ch_100s, ch_10s, ch_1s
65 integer(i2b),
dimension(0:IMAX,0:JMAX) :: maske_conv, n_cts_conv, kc_cts_conv
66 real(sp) :: time_conv, delta_ts_conv, glac_index_conv, z_sl_conv, &
67 v_tot_conv, a_grounded_conv, a_floating_conv, &
69 xi_conv(0:imax), eta_conv(0:jmax), &
70 sigma_level_c_conv(0:kcmax), sigma_level_t_conv(0:ktmax), &
71 sigma_level_r_conv(0:krmax)
72 real(sp),
dimension(0:IMAX,0:JMAX) :: lambda_conv, phi_conv, &
74 temp_s_conv, as_perp_conv, &
75 zs_conv, zm_conv, zb_conv, zl_conv, &
76 h_cold_conv, h_temp_conv, h_conv, &
77 q_bm_conv, q_tld_conv, &
80 dzs_dtau_conv, dzm_dtau_conv, dzb_dtau_conv, dzl_dtau_conv, &
81 dh_c_dtau_conv, dh_t_dtau_conv, dh_dtau_conv, &
82 vx_b_g_conv, vy_b_g_conv, vz_b_conv, vh_b_conv, &
83 vx_s_g_conv, vy_s_g_conv, vz_s_conv, vh_s_conv, &
84 temp_b_conv, temph_b_conv, &
85 p_b_w_conv, h_w_conv, q_gl_g_conv
86 real(sp),
dimension(0:IMAX,0:JMAX,0:KCMAX) :: vx_c_conv, vy_c_conv, vz_c_conv, &
87 temp_c_conv, age_c_conv, &
88 enth_c_conv, omega_c_conv, &
90 real(sp),
dimension(0:IMAX,0:JMAX,0:KTMAX) :: vx_t_conv, vy_t_conv, vz_t_conv, &
91 omega_t_conv, age_t_conv, &
94 real(sp),
dimension(0:IMAX,0:JMAX,0:KRMAX) :: temp_r_conv
96 integer(i4b) :: ncid, ncv
99 integer(i4b) :: ncd, nc1d, nc2d(2), nc3d(3)
104 integer(i4b) :: nc3flag(3), nc4flag(4)
107 integer(i4b) :: nc1cor_i(1), nc1cor_j(1), &
108 nc1cor_kc(1), nc1cor_kt(1), nc1cor_kr(1), &
110 nc3cor_ijkc(3), nc3cor_ijkt(3), nc3cor_ijkr(3)
114 integer(i4b) :: nc1cnt_i(1), nc1cnt_j(1), &
115 nc1cnt_kc(1), nc1cnt_kt(1), nc1cnt_kr(1), &
117 nc3cnt_ijkc(3), nc3cnt_ijkt(3), nc3cnt_ijkr(3)
121 character (len= 16) :: ch_date, ch_time, ch_zone
122 character (len=256) :: buffer
124 character(len=64),
parameter :: thisroutine =
'output_nc'
127 nc1cnt_i = (/ imax+1 /)
130 nc1cnt_j = (/ jmax+1 /)
133 nc1cnt_kc = (/ kcmax+1 /)
136 nc1cnt_kt = (/ ktmax+1 /)
139 nc1cnt_kr = (/ krmax+1 /)
141 nc2cor_ij = (/ 1, 1 /)
142 nc2cnt_ij = (/ imax+1, jmax+1 /)
144 nc3cor_ijkc = (/ 1, 1, 1 /)
145 nc3cnt_ijkc = (/ imax+1, jmax+1, kcmax+1 /)
147 nc3cor_ijkt = (/ 1, 1, 1 /)
148 nc3cnt_ijkt = (/ imax+1, jmax+1, ktmax+1 /)
150 nc3cor_ijkr = (/ 1, 1, 1 /)
151 nc3cnt_ijkr = (/ imax+1, jmax+1, krmax+1 /)
155 if (flag_3d_output)
then
161 if (ndat > 9999) stop
' output_nc: Too many time-slice files!'
164 ndat_1000s = ndat_help/1000
165 ndat_help = ndat_help-ndat_1000s*1000
166 ndat_100s = ndat_help/100
167 ndat_help = ndat_help-ndat_100s*100
168 ndat_10s = ndat_help/10
169 ndat_help = ndat_help-ndat_10s*10
172 ch_1000s = char(ndat_1000s+ichar(
'0'))
173 ch_100s = char(ndat_100s +ichar(
'0'))
174 ch_10s = char(ndat_10s +ichar(
'0'))
175 ch_1s = char(ndat_1s +ichar(
'0'))
177 if (flag_3d_output)
then
178 filename = trim(runname)//ch_1000s//ch_100s//ch_10s//ch_1s//
'.nc'
180 filename = trim(runname)//
'_2d_'//ch_1000s//ch_100s//ch_10s//ch_1s//
'.nc'
187 buffer = outpath//
'/'//trim(filename)
188 call
check( nf90_create(trim(buffer), nf90_noclobber, ncid), thisroutine )
192 buffer =
'Time-slice output no. '//ch_1000s//ch_100s//ch_10s//ch_1s//
' '// &
193 'of simulation '//trim(runname)
194 call
check( nf90_put_att(ncid, nf90_global,
'title', trim(buffer)), &
197 buffer =
'Institute of Low Temperature Science, Hokkaido University, '// &
199 call
check( nf90_put_att(ncid, nf90_global,
'institution', trim(buffer)), &
202 buffer =
'SICOPOLIS Version '//version
203 call
check( nf90_put_att(ncid, nf90_global,
'source', trim(buffer)), &
206 call date_and_time(ch_date, ch_time, ch_zone)
207 buffer = ch_date(1:4)//
'-'//ch_date(5:6)//
'-'//ch_date(7:8)//
' '// &
208 ch_time(1:2)//
':'//ch_time(3:4)//
':'//ch_time(5:6)//
' '// &
209 ch_zone(1:3)//
':'//ch_zone(4:5)//
' - Data produced'
210 call
check( nf90_put_att(ncid, nf90_global,
'history', trim(buffer)), &
213 buffer =
'http://www.sicopolis.net/'
214 call
check( nf90_put_att(ncid, nf90_global,
'references', trim(buffer)), &
219 call
check( nf90_def_dim(ncid,
'IMAX', imax+1, ncd), thisroutine )
220 call
check( nf90_def_dim(ncid,
'JMAX', jmax+1, ncd), thisroutine )
221 call
check( nf90_def_dim(ncid,
'KCMAX', kcmax+1, ncd), thisroutine )
222 call
check( nf90_def_dim(ncid,
'KTMAX', ktmax+1, ncd), thisroutine )
223 call
check( nf90_def_dim(ncid,
'KRMAX', krmax+1, ncd), thisroutine )
229 call
check( nf90_def_var(ncid,
'crs', nf90_short, ncv), thisroutine )
230 #if ( (GRID == 0) || (GRID == 1) )
231 buffer =
'polar_stereographic'
232 call
check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
235 buffer =
'latitude_longitude'
236 call
check( nf90_put_att(ncid, ncv,
'grid_mapping_name', trim(buffer)), &
245 || defined(emtp2sge) \
246 || defined(xyz) ) /* terrestrial ice sheet */
248 call
check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
250 #elif ( defined(NMARS) \
251 || defined(smars) ) /* martian ice sheet */
252 buffer =
'Mars_ellipsoid'
253 call
check( nf90_put_att(ncid, ncv,
'ellipsoid', trim(buffer)), &
256 stop
' output_nc: No valid domain (ANT, GRL etc.) specified!'
258 #if ( (GRID == 0) || (GRID == 1) )
259 call
check( nf90_put_att(ncid, ncv,
'false_easting', 0.0), &
261 call
check( nf90_put_att(ncid, ncv,
'false_northing', 0.0), &
263 lon0 = lambda0 *pi_180_inv
264 lon0 = modulo(lon0+180.0_sp, 360.0_sp)-180.0_sp
265 lon0 = nint(lon0*1.0e+04_sp)*1.0e-04_sp
266 lat0 = phi0 *pi_180_inv
267 if (lat0 > 90.0_sp) lat0 = 90.0_sp
268 if (lat0 < -90.0_sp) lat0 = -90.0_sp
269 lat0 = nint(lat0*1.0e+04_sp)*1.0e-04_sp
271 if (lat0 >= 0.0_sp)
then
272 call
check( nf90_put_att(ncid, ncv, &
273 'latitude_of_projection_origin', 90.0), &
276 call
check( nf90_put_att(ncid, ncv, &
277 'latitude_of_projection_origin', -90.0), &
280 call
check( nf90_put_att(ncid, ncv, &
281 'straight_vertical_longitude_from_pole', lon0), &
283 call
check( nf90_put_att(ncid, ncv, &
284 'standard_parallel', lat0), &
290 call
check( nf90_def_var(ncid,
'time', nf90_float, ncv), &
293 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
296 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
299 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
302 if (forcing_flag == 1)
then
306 call
check( nf90_def_var(ncid,
'delta_ts', nf90_float, ncv), &
309 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
311 buffer =
'surface_temperature_anomaly'
312 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
314 buffer =
'Surface temperature anomaly'
315 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
318 else if (forcing_flag == 2)
then
322 call
check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
325 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
327 buffer =
'glacial_index'
328 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
330 buffer =
'Glacial index'
331 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
334 else if (forcing_flag == 3)
then
338 call
check( nf90_def_var(ncid,
'glac_index', nf90_float, ncv), &
341 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
343 buffer =
'glacial_index'
344 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
346 buffer =
'Glacial index'
347 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
349 buffer =
'This variable will be assigned a dummy value only!'
350 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
357 call
check( nf90_def_var(ncid,
'z_sl', nf90_float, ncv), &
360 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
362 buffer =
'global_average_sea_level_change'
363 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
366 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
371 call
check( nf90_inq_dimid(ncid,
'IMAX', nc1d), &
373 call
check( nf90_def_var(ncid,
'xi', nf90_float, nc1d, ncv), &
376 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
378 buffer =
'projection_x_coordinate'
379 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
381 buffer =
'x-coordinate of the grid point i'
382 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
387 call
check( nf90_inq_dimid(ncid,
'JMAX', nc1d), &
389 call
check( nf90_def_var(ncid,
'eta', nf90_float, nc1d, ncv), &
392 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
394 buffer =
'projection_y_coordinate'
395 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
397 buffer =
'y-coordinate of the grid point j'
398 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
403 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc1d), &
405 call
check( nf90_def_var(ncid,
'sigma_level_c', nf90_float, nc1d, ncv), &
408 call
check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
410 buffer =
'land_ice_kc_layer_sigma_coordinate'
411 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
413 buffer =
'sigma-coordinate of the grid point kc'
414 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
419 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc1d), &
421 call
check( nf90_def_var(ncid,
'sigma_level_t', nf90_float, nc1d, ncv), &
424 call
check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
426 buffer =
'land_ice_kt_layer_sigma_coordinate'
427 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
429 buffer =
'sigma-coordinate of the grid point kt'
430 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
435 call
check( nf90_inq_dimid(ncid,
'KRMAX', nc1d), &
437 call
check( nf90_def_var(ncid,
'sigma_level_r', nf90_float, nc1d, ncv), &
440 call
check( nf90_put_att(ncid, ncv,
'positive', trim(buffer)), &
442 buffer =
'lithosphere_layer_sigma_coordinate'
443 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
445 buffer =
'sigma-coordinate of the grid point kr'
446 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
451 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
453 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
455 call
check( nf90_def_var(ncid,
'lon', nf90_float, nc2d, ncv), &
458 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
461 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
463 buffer =
'Geographical longitude'
464 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
469 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
471 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
473 call
check( nf90_def_var(ncid,
'lat', nf90_float, nc2d, ncv), &
476 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
479 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
481 buffer =
'Geographical latitude'
482 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
487 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
489 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
491 call
check( nf90_def_var(ncid,
'lambda', nf90_float, nc2d, ncv), &
494 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
497 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
499 buffer =
'Geographical longitude'
500 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
502 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
504 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
509 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
511 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
513 call
check( nf90_def_var(ncid,
'phi', nf90_float, nc2d, ncv), &
516 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
519 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
521 buffer =
'Geographical latitude'
522 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
524 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
526 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
531 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
533 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
535 call
check( nf90_def_var(ncid,
'temp_s', nf90_float, nc2d, ncv), &
538 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
540 buffer =
'surface_temperature'
541 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
543 buffer =
'Temperature at the ice surface'
544 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
546 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
548 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
553 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
555 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
557 call
check( nf90_def_var(ncid,
'as_perp', nf90_float, nc2d, ncv), &
560 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
562 buffer =
'land_ice_surface_mass_balance'
563 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
565 buffer =
'Mass balance at the ice surface'
566 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
568 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
570 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
575 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
577 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
579 call
check( nf90_def_var(ncid,
'maske', nf90_short, nc2d, ncv), &
581 buffer =
'ice_land_sea_mask'
582 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
584 buffer =
'Ice-land-sea mask'
585 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
587 nc4flag = (/ 0, 1, 2, 3 /)
588 call
check( nf90_put_att(ncid, ncv,
'flag_values', nc4flag), &
590 buffer =
'glaciated_land '// &
594 call
check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
596 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
598 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
603 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
605 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
607 call
check( nf90_def_var(ncid,
'n_cts', nf90_short, nc2d, ncv), &
609 buffer =
'polythermal_condition_mask'
610 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
612 buffer =
'Mask for polythermal conditions'
613 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
615 nc3flag = (/ -1, 0, 1 /)
616 call
check( nf90_put_att(ncid, ncv,
'flag_values', nc3flag), &
618 buffer =
'cold_base '// &
619 'temperate_base_with_cold_ice_above '// &
620 'temperate_base_with_temperate_ice_above'
621 call
check( nf90_put_att(ncid, ncv,
'flag_meanings', trim(buffer)), &
623 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
625 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
630 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
632 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
634 call
check( nf90_def_var(ncid,
'kc_cts', nf90_short, nc2d, ncv), &
636 buffer =
'CTS_position_grid_index'
637 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
639 buffer =
'Grid index of the CTS position'
640 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
642 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
644 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
649 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
651 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
653 call
check( nf90_def_var(ncid,
'zs', nf90_float, nc2d, ncv), &
656 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
658 buffer =
'surface_altitude'
659 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
661 buffer =
'Topography of the free surface'
662 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
664 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
666 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
671 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
673 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
675 call
check( nf90_def_var(ncid,
'zm', nf90_float, nc2d, ncv), &
678 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
680 buffer =
'zm_interface_altitude'
681 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
683 buffer =
'Topography of the z=zm interface'
684 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
686 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
688 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
693 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
695 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
697 call
check( nf90_def_var(ncid,
'zb', nf90_float, nc2d, ncv), &
700 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
702 buffer =
'ice_base_altitude'
703 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
705 buffer =
'Topography of the ice base'
706 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
708 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
710 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
715 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
717 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
719 call
check( nf90_def_var(ncid,
'zl', nf90_float, nc2d, ncv), &
722 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
724 buffer =
'bedrock_altitude'
725 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
727 buffer =
'Topography of the lithosphere surface'
728 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
730 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
732 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
737 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
739 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
741 call
check( nf90_def_var(ncid,
'H_cold', nf90_float, nc2d, ncv), &
744 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
746 buffer =
'land_ice_cold_layer_thickness'
747 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
749 buffer =
'Thickness of the cold ice layer'
750 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
752 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
754 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
759 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
761 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
763 call
check( nf90_def_var(ncid,
'H_temp', nf90_float, nc2d, ncv), &
766 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
768 buffer =
'land_ice_temperate_layer_thickness'
769 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
771 buffer =
'Thickness of the temperate ice layer'
772 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
774 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
776 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
781 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
783 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
785 call
check( nf90_def_var(ncid,
'H', nf90_float, nc2d, ncv), &
788 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
790 buffer =
'land_ice_thickness'
791 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
793 buffer =
'Ice thickness'
794 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
796 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
798 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
803 call
check( nf90_def_var(ncid,
'H_R', nf90_float, ncv), &
806 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
808 buffer =
'lithosphere_layer_thickness'
809 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
811 buffer =
'Thickness of the lithosphere layer'
812 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
815 if (flag_3d_output)
then
819 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
821 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
823 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
825 call
check( nf90_def_var(ncid,
'vx_c', nf90_float, nc3d, ncv), &
828 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
830 buffer =
'land_ice_kc_layer_x_velocity'
831 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
833 buffer =
'Horizontal velocity vx in the upper (kc) ice layer'
834 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
836 buffer =
'Staggered grid variable, defined at (kc,j,i+1/2)'
837 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
839 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
841 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
846 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
848 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
850 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
852 call
check( nf90_def_var(ncid,
'vy_c', nf90_float, nc3d, ncv), &
855 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
857 buffer =
'land_ice_kc_layer_y_velocity'
858 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
860 buffer =
'Horizontal velocity vy in the upper (kc) ice layer'
861 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
863 buffer =
'Staggered grid variable, defined at (kc,j+1/2,i)'
864 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
866 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
868 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
873 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
875 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
877 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
879 call
check( nf90_def_var(ncid,
'vz_c', nf90_float, nc3d, ncv), &
882 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
884 buffer =
'land_ice_kc_layer_z_velocity'
885 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
887 buffer =
'Vertical velocity vz in the upper (kc) ice layer'
888 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
890 buffer =
'Staggered grid variable, defined at (kc+1/2,j,i)'
891 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
893 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
895 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
900 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
902 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
904 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
906 call
check( nf90_def_var(ncid,
'vx_t', nf90_float, nc3d, ncv), &
909 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
911 buffer =
'land_ice_kt_layer_x_velocity'
912 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
914 buffer =
'Horizontal velocity vx in the lower (kt) ice layer'
915 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
917 buffer =
'Staggered grid variable, defined at (kt,j,i+1/2)'
918 call
check( nf90_put_att(ncid, ncv,
'comment', 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,
'IMAX', nc3d(1)), &
929 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
931 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
933 call
check( nf90_def_var(ncid,
'vy_t', nf90_float, nc3d, ncv), &
936 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
938 buffer =
'land_ice_kt_layer_y_velocity'
939 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
941 buffer =
'Horizontal velocity vy in the lower (kt) ice layer'
942 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
944 buffer =
'Staggered grid variable, defined at (kt,j+1/2,i)'
945 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
947 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
949 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
954 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
956 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
958 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
960 call
check( nf90_def_var(ncid,
'vz_t', nf90_float, nc3d, ncv), &
963 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
965 buffer =
'land_ice_kt_layer_z_velocity'
966 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
968 buffer =
'Vertical velocity vz in the lower (kt) ice layer'
969 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
971 buffer =
'Staggered grid variable, defined at (kt+1/2,j,i)'
972 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
974 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
976 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
981 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
983 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
985 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
987 call
check( nf90_def_var(ncid,
'temp_c', nf90_float, nc3d, ncv), &
990 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
992 buffer =
'land_ice_kc_layer_temperature'
993 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
995 buffer =
'Temperature in the upper (kc) ice layer'
996 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
998 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1000 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1005 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1007 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1009 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
1011 call
check( nf90_def_var(ncid,
'omega_t', nf90_float, nc3d, ncv), &
1014 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1016 buffer =
'land_ice_kt_layer_water_content'
1017 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1019 buffer =
'Water content in the lower (kt) ice layer'
1020 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1022 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1024 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1029 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1031 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1033 call
check( nf90_inq_dimid(ncid,
'KRMAX', nc3d(3)), &
1035 call
check( nf90_def_var(ncid,
'temp_r', nf90_float, nc3d, ncv), &
1038 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1040 buffer =
'lithosphere_layer_temperature'
1041 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1043 buffer =
'Temperature in the lithosphere layer'
1044 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1046 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1048 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1053 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1055 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1057 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
1059 call
check( nf90_def_var(ncid,
'enth_c', nf90_float, nc3d, ncv), &
1062 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1064 buffer =
'land_ice_kc_layer_enthalpy'
1065 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1067 buffer =
'Enthalpy in the upper (kc) ice layer'
1068 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1070 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1072 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1077 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1079 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1081 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
1083 call
check( nf90_def_var(ncid,
'enth_t', nf90_float, nc3d, ncv), &
1086 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1088 buffer =
'land_ice_kt_layer_enthalpy'
1089 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1091 buffer =
'Enthalpy in the lower (kt) ice layer'
1092 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1094 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1096 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1101 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1103 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1105 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
1107 call
check( nf90_def_var(ncid,
'omega_c', nf90_float, nc3d, ncv), &
1110 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1112 buffer =
'land_ice_kc_layer_water_content'
1113 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1115 buffer =
'Water content in the upper (kc) ice layer'
1116 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1118 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1120 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1125 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1127 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1129 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
1131 call
check( nf90_def_var(ncid,
'enh_c', nf90_float, nc3d, ncv), &
1134 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1136 buffer =
'land_ice_kc_layer_flow_enhancement_factor'
1137 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1139 buffer =
'Flow enhancement factor in the upper (kc) ice layer'
1140 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1142 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1144 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1149 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1151 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1153 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
1155 call
check( nf90_def_var(ncid,
'enh_t', nf90_float, nc3d, ncv), &
1158 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1160 buffer =
'land_ice_kt_layer_flow_enhancement_factor'
1161 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1163 buffer =
'Flow enhancement factor in the lower (kt) ice layer'
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'), &
1175 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1177 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1179 call
check( nf90_def_var(ncid,
'Q_bm', nf90_float, nc2d, ncv), &
1182 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1184 buffer =
'land_ice_basal_melt_rate'
1185 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1187 buffer =
'Basal melting rate'
1188 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1190 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1192 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1197 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1199 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1201 call
check( nf90_def_var(ncid,
'Q_tld', nf90_float, nc2d, ncv), &
1204 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1206 buffer =
'land_ice_temperate_layer_water_drainage'
1207 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1209 buffer =
'Water drainage from the temperate layer'
1210 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1212 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1214 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1219 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1221 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1223 call
check( nf90_def_var(ncid,
'am_perp', nf90_float, nc2d, ncv), &
1226 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1228 buffer =
'land_ice_volume_flux_across_zm_interface'
1229 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1231 buffer =
'Volume flux across the z=zm interface'
1232 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1234 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1236 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1241 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1243 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1245 call
check( nf90_def_var(ncid,
'qx', nf90_float, nc2d, ncv), &
1248 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1250 buffer =
'land_ice_vertical_integral_x_velocity'
1251 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1253 buffer =
'Horizontal volume flux qx'
1254 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1256 buffer =
'Staggered grid variable, defined at (j,i+1/2)'
1257 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1259 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1261 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1266 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1268 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1270 call
check( nf90_def_var(ncid,
'qy', nf90_float, nc2d, ncv), &
1273 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1275 buffer =
'land_ice_vertical_integral_y_velocity'
1276 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1278 buffer =
'Horizontal volume flux qy'
1279 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1281 buffer =
'Staggered grid variable, defined at (j+1/2,i)'
1282 call
check( nf90_put_att(ncid, ncv,
'comment', trim(buffer)), &
1284 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1286 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1289 if (flag_3d_output)
then
1293 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1295 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1297 call
check( nf90_inq_dimid(ncid,
'KCMAX', nc3d(3)), &
1299 call
check( nf90_def_var(ncid,
'age_c', nf90_float, nc3d, ncv), &
1302 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1304 buffer =
'land_ice_kc_layer_age'
1305 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1307 buffer =
'Age in the upper (kc) ice layer'
1308 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1310 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1312 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1317 call
check( nf90_inq_dimid(ncid,
'IMAX', nc3d(1)), &
1319 call
check( nf90_inq_dimid(ncid,
'JMAX', nc3d(2)), &
1321 call
check( nf90_inq_dimid(ncid,
'KTMAX', nc3d(3)), &
1323 call
check( nf90_def_var(ncid,
'age_t', nf90_float, nc3d, ncv), &
1326 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1328 buffer =
'land_ice_kt_layer_age'
1329 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1331 buffer =
'Age in the lower (kt) ice layer'
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'), &
1343 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1345 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1347 call
check( nf90_def_var(ncid,
'dzs_dtau', nf90_float, nc2d, ncv), &
1350 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1352 buffer =
'tendency_of_surface_altitude'
1353 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1355 buffer =
'Rate of change of the topography of the free surface'
1356 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1358 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1360 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1365 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1367 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1369 call
check( nf90_def_var(ncid,
'dzm_dtau', nf90_float, nc2d, ncv), &
1372 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1374 buffer =
'tendency_of_zm_interface_altitude'
1375 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1377 buffer =
'Rate of change of the topography of the z=zm interface'
1378 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1380 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1382 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1387 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1389 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1391 call
check( nf90_def_var(ncid,
'dzb_dtau', nf90_float, nc2d, ncv), &
1394 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1396 buffer =
'tendency_of_ice_base_altitude'
1397 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1399 buffer =
'Rate of change of the topography of the ice base'
1400 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1402 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1404 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1409 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1411 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1413 call
check( nf90_def_var(ncid,
'dzl_dtau', nf90_float, nc2d, ncv), &
1416 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1418 buffer =
'tendency_of_bedrock_altitude'
1419 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1421 buffer =
'Rate of change of the topography of the lithosphere surface'
1422 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1424 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1426 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1431 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1433 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1435 call
check( nf90_def_var(ncid,
'dH_c_dtau', nf90_float, nc2d, ncv), &
1438 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1440 buffer =
'tendency_of_land_ice_kc_layer_thickness'
1441 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1443 buffer =
'Rate of change of the thickness of the upper (kc) ice layer'
1444 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1446 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1448 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1453 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1455 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1457 call
check( nf90_def_var(ncid,
'dH_t_dtau', nf90_float, nc2d, ncv), &
1460 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1462 buffer =
'tendency_of_land_ice_kt_layer_thickness'
1463 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1465 buffer =
'Rate of change of the thickness of the lower (kt) ice layer'
1466 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1468 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1470 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1475 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1477 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1479 call
check( nf90_def_var(ncid,
'dH_dtau', nf90_float, nc2d, ncv), &
1482 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1484 buffer =
'tendency_of_land_ice_thickness'
1485 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1487 buffer =
'Rate of change of the ice thickness'
1488 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1490 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1492 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1497 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1499 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1501 call
check( nf90_def_var(ncid,
'vx_b_g', nf90_float, nc2d, ncv), &
1504 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1506 buffer =
'land_ice_base_x_velocity'
1507 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1509 buffer =
'Horizontal velocity vx at the ice base'
1510 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1512 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1514 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1519 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1521 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1523 call
check( nf90_def_var(ncid,
'vy_b_g', nf90_float, nc2d, ncv), &
1526 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1528 buffer =
'land_ice_base_y_velocity'
1529 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1531 buffer =
'Horizontal velocity vy at the ice base'
1532 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1534 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1536 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1541 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1543 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1545 call
check( nf90_def_var(ncid,
'vz_b', nf90_float, nc2d, ncv), &
1548 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1550 buffer =
'land_ice_base_z_velocity'
1551 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1553 buffer =
'Vertical velocity vz at the ice base'
1554 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1556 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1558 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1563 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1565 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1567 call
check( nf90_def_var(ncid,
'vh_b', nf90_float, nc2d, ncv), &
1570 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1572 buffer =
'land_ice_base_horizontal_velocity'
1573 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1575 buffer =
'Horizontal velocity vh at the ice base'
1576 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1578 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1580 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1585 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1587 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1589 call
check( nf90_def_var(ncid,
'vx_s_g', nf90_float, nc2d, ncv), &
1592 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1594 buffer =
'land_ice_surface_x_velocity'
1595 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1597 buffer =
'Horizontal velocity vx at the ice surface'
1598 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1600 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1602 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1607 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1609 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1611 call
check( nf90_def_var(ncid,
'vy_s_g', nf90_float, nc2d, ncv), &
1614 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1616 buffer =
'land_ice_surface_y_velocity'
1617 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1619 buffer =
'Horizontal velocity vy at the ice surface'
1620 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1622 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1624 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1629 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1631 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1633 call
check( nf90_def_var(ncid,
'vz_s', nf90_float, nc2d, ncv), &
1636 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1638 buffer =
'land_ice_surface_z_velocity'
1639 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1641 buffer =
'Vertical velocity vz at the ice surface'
1642 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1644 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1646 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1651 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1653 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1655 call
check( nf90_def_var(ncid,
'vh_s', nf90_float, nc2d, ncv), &
1658 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1660 buffer =
'land_ice_surface_horizontal_velocity'
1661 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1663 buffer =
'Horizontal velocity vh at the ice surface'
1664 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1666 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1668 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1673 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1675 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1677 call
check( nf90_def_var(ncid,
'temp_b', nf90_float, nc2d, ncv), &
1680 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1682 buffer =
'basal_temperature'
1683 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1685 buffer =
'Temperature at the ice base'
1686 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1688 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1690 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1695 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1697 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1699 call
check( nf90_def_var(ncid,
'temph_b', nf90_float, nc2d, ncv), &
1702 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1704 buffer =
'basal_temperature_rel_to_pmp'
1705 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1707 buffer =
'Temperature at the ice base relative to the pressure melting point'
1708 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1710 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1712 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1717 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1719 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1721 call
check( nf90_def_var(ncid,
'p_b_w', nf90_float, nc2d, ncv), &
1724 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1726 buffer =
'basal_water_pressure'
1727 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1729 buffer =
'Basal water pressure'
1730 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1732 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1734 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1739 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1741 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1743 call
check( nf90_def_var(ncid,
'H_w', nf90_float, nc2d, ncv), &
1746 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1748 buffer =
'water_column_thickness'
1749 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1751 buffer =
'Thickness of the water column under the ice base'
1752 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1754 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1756 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1761 call
check( nf90_inq_dimid(ncid,
'IMAX', nc2d(1)), &
1763 call
check( nf90_inq_dimid(ncid,
'JMAX', nc2d(2)), &
1765 call
check( nf90_def_var(ncid,
'q_gl_g', nf90_float, nc2d, ncv), &
1768 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1770 buffer =
'land_ice_volume_flux_across_gl'
1771 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1773 buffer =
'Horizontal volume flux across the grounding line'
1774 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1776 call
check( nf90_put_att(ncid, ncv,
'grid_mapping',
'crs'), &
1778 call
check( nf90_put_att(ncid, ncv,
'coordinates',
'lat lon'), &
1783 call
check( nf90_def_var(ncid,
'V_tot', nf90_float, ncv), &
1786 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1788 buffer =
'land_ice_volume'
1789 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1791 buffer =
'Ice volume'
1792 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1797 call
check( nf90_def_var(ncid,
'A_grounded', nf90_float, ncv), &
1800 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1802 buffer =
'land_ice_area_grounded'
1803 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1805 buffer =
'Area covered by grounded ice'
1806 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1811 call
check( nf90_def_var(ncid,
'A_floating', nf90_float, ncv), &
1814 call
check( nf90_put_att(ncid, ncv,
'units', trim(buffer)), &
1816 buffer =
'land_ice_area_floating'
1817 call
check( nf90_put_att(ncid, ncv,
'standard_name', trim(buffer)), &
1819 buffer =
'Area covered by floating ice'
1820 call
check( nf90_put_att(ncid, ncv,
'long_name', trim(buffer)), &
1823 call
check( nf90_enddef(ncid), thisroutine )
1828 dh_dtau = dh_c_dtau + dh_t_dtau
1838 h_temp(j,i) = h_t(j,i)
1841 #elif (CALCMOD==0 || CALCMOD==2 || CALCMOD==3 || CALCMOD==-1)
1844 h_temp(j,i) = h_c(j,i)*eaz_c_quotient(kc_cts(j,i))
1862 if ( (maske(j,i) == 0_i2b).and.(n_cts(j,i) == 1_i2b) )
then
1868 enth_t(kt,j,i) = enth_c(0,j,i)
1875 #elif (CALCMOD==0 || CALCMOD==-1)
1885 enth_t(kt,j,i) = enth_c(0,j,i)
1904 if ( (maske(j,i)==0).or.(maske(j,i)==3) ) &
1905 v_tot = v_tot + h(j,i)*area(j,i)
1907 if (maske(j,i)==0) &
1908 a_grounded = a_grounded + area(j,i)
1910 if (maske(j,i)==3) &
1911 a_floating = a_floating + area(j,i)
1918 #if ( !defined(OUT_TIMES) || OUT_TIMES==1 )
1919 time_conv =
real(time/year_sec,sp)
1920 #elif OUT_TIMES == 2
1921 time_conv =
real((time+year_zero)/year_sec,sp)
1923 stop
' output_nc: OUT_TIMES must be either 1 or 2!'
1926 delta_ts_conv =
real(delta_ts,sp)
1927 glac_index_conv =
real(glac_index,sp)
1928 z_sl_conv =
real(z_sl,sp)
1929 v_tot_conv =
real(v_tot,sp)
1930 a_grounded_conv =
real(a_grounded,sp)
1931 a_floating_conv =
real(a_floating,sp)
1932 h_r_conv =
real(h_r,sp)
1935 xi_conv(i) =
real(xi(i),sp)
1939 eta_conv(j) =
real(eta(j),sp)
1943 sigma_level_c_conv(kc) =
real(eaz_c_quotient(kc),sp)
1947 sigma_level_t_conv(kt) =
real(zeta_t(kt),sp)
1951 sigma_level_r_conv(kr) =
real(kr,sp)/
real(krmax,sp)
1957 maske_conv(i,j) = maske(j,i)
1958 n_cts_conv(i,j) = n_cts(j,i)
1959 kc_cts_conv(i,j) = kc_cts(j,i)
1961 lambda_conv(i,j) =
real(lambda(j,i),sp)
1962 phi_conv(i,j) =
real(phi(j,i),sp)
1963 lon_conv(i,j) =
real(lambda(j,i)*pi_180_inv,sp)
1964 lon_conv(i,j) = modulo(lon_conv(i,j)+180.0_sp, 360.0_sp)-180.0_sp
1966 lat_conv(i,j) =
real(phi(j,i) *pi_180_inv,sp)
1967 if (lat_conv(i,j) > 90.0_sp) lat_conv(i,j) = 90.0_sp
1968 if (lat_conv(i,j) < -90.0_sp) lat_conv(i,j) = -90.0_sp
1970 temp_s_conv(i,j) =
real(temp_s(j,i),sp)
1971 as_perp_conv(i,j) =
real(as_perp(j,i)*year_sec,sp)
1972 zs_conv(i,j) =
real(zs(j,i),sp)
1973 zm_conv(i,j) =
real(zm(j,i),sp)
1974 zb_conv(i,j) =
real(zb(j,i),sp)
1975 zl_conv(i,j) =
real(zl(j,i),sp)
1976 h_cold_conv(i,j) =
real(H_cold(j,i),sp)
1977 h_temp_conv(i,j) =
real(H_temp(j,i),sp)
1978 h_conv(i,j) =
real(H(j,i),sp)
1979 q_bm_conv(i,j) =
real(q_bm(j,i)*year_sec,sp)
1980 q_tld_conv(i,j) =
real(q_tld(j,i)*year_sec,sp)
1981 am_perp_conv(i,j) =
real(am_perp(j,i)*year_sec,sp)
1982 qx_conv(i,j) =
real(qx(j,i)*year_sec,sp)
1983 qy_conv(i,j) =
real(qy(j,i)*year_sec,sp)
1984 dzs_dtau_conv(i,j) =
real(dzs_dtau(j,i)*year_sec,sp)
1985 dzm_dtau_conv(i,j) =
real(dzm_dtau(j,i)*year_sec,sp)
1986 dzb_dtau_conv(i,j) =
real(dzb_dtau(j,i)*year_sec,sp)
1987 dzl_dtau_conv(i,j) =
real(dzl_dtau(j,i)*year_sec,sp)
1988 dh_c_dtau_conv(i,j) =
real(dh_c_dtau(j,i)*year_sec,sp)
1989 dh_t_dtau_conv(i,j) =
real(dh_t_dtau(j,i)*year_sec,sp)
1990 dh_dtau_conv(i,j) =
real(dh_dtau(j,i)*year_sec,sp)
1991 vx_b_g_conv(i,j) =
real(vx_b_g(j,i)*year_sec,sp)
1992 vy_b_g_conv(i,j) =
real(vy_b_g(j,i)*year_sec,sp)
1993 vz_b_conv(i,j) =
real(vz_b(j,i)*year_sec,sp)
1994 vh_b_conv(i,j) = sqrt( vx_b_g_conv(i,j)**2 + vy_b_g_conv(i,j)**2 )
1995 vx_s_g_conv(i,j) =
real(vx_s_g(j,i)*year_sec,sp)
1996 vy_s_g_conv(i,j) =
real(vy_s_g(j,i)*year_sec,sp)
1997 vz_s_conv(i,j) =
real(vz_s(j,i)*year_sec,sp)
1998 vh_s_conv(i,j) = sqrt( vx_s_g_conv(i,j)**2 + vy_s_g_conv(i,j)**2 )
1999 temp_b_conv(i,j) =
real(temp_b(j,i),sp)
2000 temph_b_conv(i,j) =
real(temph_b(j,i),sp)
2001 p_b_w_conv(i,j) =
real(p_b_w(j,i),sp)
2002 h_w_conv(i,j) =
real(H_w(j,i),sp)
2003 q_gl_g_conv(i,j) =
real(q_gl_g(j,i)*year_sec,sp)
2006 temp_r_conv(i,j,kr) =
real(temp_r(kr,j,i),sp)
2010 vx_t_conv(i,j,kt) =
real(vx_t(kt,j,i)*year_sec,sp)
2011 vy_t_conv(i,j,kt) =
real(vy_t(kt,j,i)*year_sec,sp)
2012 vz_t_conv(i,j,kt) =
real(vz_t(kt,j,i)*year_sec,sp)
2013 omega_t_conv(i,j,kt) =
real(omega_t(kt,j,i),sp)
2014 age_t_conv(i,j,kt) =
real(age_t(kt,j,i)/year_sec,sp)
2015 enth_t_conv(i,j,kt) =
real(enth_t(kt,j,i),sp)
2016 enh_t_conv(i,j,kt) =
real(enh_t(kt,j,i),sp)
2020 vx_c_conv(i,j,kc) =
real(vx_c(kc,j,i)*year_sec,sp)
2021 vy_c_conv(i,j,kc) =
real(vy_c(kc,j,i)*year_sec,sp)
2022 vz_c_conv(i,j,kc) =
real(vz_c(kc,j,i)*year_sec,sp)
2023 temp_c_conv(i,j,kc) =
real(temp_c(kc,j,i),sp)
2024 age_c_conv(i,j,kc) =
real(age_c(kc,j,i)/year_sec,sp)
2025 enth_c_conv(i,j,kc) =
real(enth_c(kc,j,i),sp)
2026 omega_c_conv(i,j,kc) =
real(omega_c(kc,j,i),sp)
2027 enh_c_conv(i,j,kc) =
real(enh_c(kc,j,i),sp)
2035 call
check( nf90_inq_varid(ncid,
'crs', ncv), thisroutine )
2036 call
check( nf90_put_var(ncid, ncv, 0), thisroutine )
2038 call
check( nf90_inq_varid(ncid,
'time', ncv), thisroutine )
2039 call
check( nf90_put_var(ncid, ncv, time_conv), thisroutine )
2041 if (forcing_flag == 1)
then
2043 call
check( nf90_inq_varid(ncid,
'delta_ts', ncv), thisroutine )
2044 call
check( nf90_put_var(ncid, ncv, delta_ts_conv), thisroutine )
2046 else if (forcing_flag == 2)
then
2048 call
check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
2049 call
check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
2051 else if (forcing_flag == 3)
then
2053 call
check( nf90_inq_varid(ncid,
'glac_index', ncv), thisroutine )
2054 glac_index_conv = 1.11e+11
2055 call
check( nf90_put_var(ncid, ncv, glac_index_conv), thisroutine )
2059 call
check( nf90_inq_varid(ncid,
'z_sl', ncv), thisroutine )
2060 call
check( nf90_put_var(ncid, ncv, z_sl_conv), thisroutine )
2062 call
check( nf90_inq_varid(ncid,
'xi', ncv), thisroutine )
2063 call
check( nf90_put_var(ncid, ncv, xi_conv, &
2064 start=nc1cor_i, count=nc1cnt_i), &
2067 call
check( nf90_inq_varid(ncid,
'eta', ncv), thisroutine )
2068 call
check( nf90_put_var(ncid, ncv, eta_conv, &
2069 start=nc1cor_j, count=nc1cnt_j), &
2072 call
check( nf90_inq_varid(ncid,
'sigma_level_c', ncv), thisroutine )
2073 call
check( nf90_put_var(ncid, ncv, sigma_level_c_conv, &
2074 start=nc1cor_kc, count=nc1cnt_kc), &
2077 call
check( nf90_inq_varid(ncid,
'sigma_level_t', ncv), thisroutine )
2078 call
check( nf90_put_var(ncid, ncv, sigma_level_t_conv, &
2079 start=nc1cor_kt, count=nc1cnt_kt), &
2082 call
check( nf90_inq_varid(ncid,
'sigma_level_r', ncv), thisroutine )
2083 call
check( nf90_put_var(ncid, ncv, sigma_level_r_conv, &
2084 start=nc1cor_kr, count=nc1cnt_kr), &
2087 call
check( nf90_inq_varid(ncid,
'lon', ncv), thisroutine )
2088 call
check( nf90_put_var(ncid, ncv, lon_conv, &
2089 start=nc2cor_ij, count=nc2cnt_ij), &
2092 call
check( nf90_inq_varid(ncid,
'lat', ncv), thisroutine )
2093 call
check( nf90_put_var(ncid, ncv, lat_conv, &
2094 start=nc2cor_ij, count=nc2cnt_ij), &
2097 call
check( nf90_inq_varid(ncid,
'lambda', ncv), thisroutine )
2098 call
check( nf90_put_var(ncid, ncv, lambda_conv, &
2099 start=nc2cor_ij, count=nc2cnt_ij), &
2102 call
check( nf90_inq_varid(ncid,
'phi', ncv), thisroutine )
2103 call
check( nf90_put_var(ncid, ncv, phi_conv, &
2104 start=nc2cor_ij, count=nc2cnt_ij), &
2107 call
check( nf90_inq_varid(ncid,
'temp_s', ncv), thisroutine )
2108 call
check( nf90_put_var(ncid, ncv, temp_s_conv, &
2109 start=nc2cor_ij, count=nc2cnt_ij), &
2112 call
check( nf90_inq_varid(ncid,
'as_perp', ncv), thisroutine )
2113 call
check( nf90_put_var(ncid, ncv, as_perp_conv, &
2114 start=nc2cor_ij, count=nc2cnt_ij), &
2117 call
check( nf90_inq_varid(ncid,
'maske', ncv), thisroutine )
2118 call
check( nf90_put_var(ncid, ncv, maske_conv, &
2119 start=nc2cor_ij, count=nc2cnt_ij), &
2122 call
check( nf90_inq_varid(ncid,
'n_cts', ncv), thisroutine )
2123 call
check( nf90_put_var(ncid, ncv, n_cts_conv, &
2124 start=nc2cor_ij, count=nc2cnt_ij), &
2127 call
check( nf90_inq_varid(ncid,
'kc_cts', ncv), thisroutine )
2128 call
check( nf90_put_var(ncid, ncv, kc_cts_conv, &
2129 start=nc2cor_ij, count=nc2cnt_ij), &
2132 call
check( nf90_inq_varid(ncid,
'zs', ncv), thisroutine )
2133 call
check( nf90_put_var(ncid, ncv, zs_conv, &
2134 start=nc2cor_ij, count=nc2cnt_ij), &
2137 call
check( nf90_inq_varid(ncid,
'zm', ncv), thisroutine )
2138 call
check( nf90_put_var(ncid, ncv, zm_conv, &
2139 start=nc2cor_ij, count=nc2cnt_ij), &
2142 call
check( nf90_inq_varid(ncid,
'zb', ncv), thisroutine )
2143 call
check( nf90_put_var(ncid, ncv, zb_conv, &
2144 start=nc2cor_ij, count=nc2cnt_ij), &
2147 call
check( nf90_inq_varid(ncid,
'zl', ncv), thisroutine )
2148 call
check( nf90_put_var(ncid, ncv, zl_conv, &
2149 start=nc2cor_ij, count=nc2cnt_ij), &
2152 call
check( nf90_inq_varid(ncid,
'H_cold', ncv), thisroutine )
2153 call
check( nf90_put_var(ncid, ncv, h_cold_conv, &
2154 start=nc2cor_ij, count=nc2cnt_ij), &
2157 call
check( nf90_inq_varid(ncid,
'H_temp', ncv), thisroutine )
2158 call
check( nf90_put_var(ncid, ncv, h_temp_conv, &
2159 start=nc2cor_ij, count=nc2cnt_ij), &
2162 call
check( nf90_inq_varid(ncid,
'H', ncv), thisroutine )
2163 call
check( nf90_put_var(ncid, ncv, h_conv, &
2164 start=nc2cor_ij, count=nc2cnt_ij), &
2167 call
check( nf90_inq_varid(ncid,
'H_R', ncv), thisroutine )
2168 call
check( nf90_put_var(ncid, ncv, h_r_conv), thisroutine )
2170 if (flag_3d_output)
then
2172 call
check( nf90_inq_varid(ncid,
'vx_c', ncv), thisroutine )
2173 call
check( nf90_put_var(ncid, ncv, vx_c_conv, &
2174 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2177 call
check( nf90_inq_varid(ncid,
'vy_c', ncv), thisroutine )
2178 call
check( nf90_put_var(ncid, ncv, vy_c_conv, &
2179 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2182 call
check( nf90_inq_varid(ncid,
'vz_c', ncv), thisroutine )
2183 call
check( nf90_put_var(ncid, ncv, vz_c_conv, &
2184 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2187 call
check( nf90_inq_varid(ncid,
'vx_t', ncv), thisroutine )
2188 call
check( nf90_put_var(ncid, ncv, vx_t_conv, &
2189 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2192 call
check( nf90_inq_varid(ncid,
'vy_t', ncv), thisroutine )
2193 call
check( nf90_put_var(ncid, ncv, vy_t_conv, &
2194 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2197 call
check( nf90_inq_varid(ncid,
'vz_t', ncv), thisroutine )
2198 call
check( nf90_put_var(ncid, ncv, vz_t_conv, &
2199 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2202 call
check( nf90_inq_varid(ncid,
'temp_c', ncv), thisroutine )
2203 call
check( nf90_put_var(ncid, ncv, temp_c_conv, &
2204 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2207 call
check( nf90_inq_varid(ncid,
'omega_t', ncv), thisroutine )
2208 call
check( nf90_put_var(ncid, ncv, omega_t_conv, &
2209 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2212 call
check( nf90_inq_varid(ncid,
'temp_r', ncv), thisroutine )
2213 call
check( nf90_put_var(ncid, ncv, temp_r_conv, &
2214 start=nc3cor_ijkr, count=nc3cnt_ijkr), &
2217 call
check( nf90_inq_varid(ncid,
'enth_c', ncv), thisroutine )
2218 call
check( nf90_put_var(ncid, ncv, enth_c_conv, &
2219 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2222 call
check( nf90_inq_varid(ncid,
'enth_t', ncv), thisroutine )
2223 call
check( nf90_put_var(ncid, ncv, enth_t_conv, &
2224 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2227 call
check( nf90_inq_varid(ncid,
'omega_c', ncv), thisroutine )
2228 call
check( nf90_put_var(ncid, ncv, omega_c_conv, &
2229 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2232 call
check( nf90_inq_varid(ncid,
'enh_c', ncv), thisroutine )
2233 call
check( nf90_put_var(ncid, ncv, enh_c_conv, &
2234 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2237 call
check( nf90_inq_varid(ncid,
'enh_t', ncv), thisroutine )
2238 call
check( nf90_put_var(ncid, ncv, enh_t_conv, &
2239 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2244 call
check( nf90_inq_varid(ncid,
'Q_bm', ncv), thisroutine )
2245 call
check( nf90_put_var(ncid, ncv, q_bm_conv, &
2246 start=nc2cor_ij, count=nc2cnt_ij), &
2249 call
check( nf90_inq_varid(ncid,
'Q_tld', ncv), thisroutine )
2250 call
check( nf90_put_var(ncid, ncv, q_tld_conv, &
2251 start=nc2cor_ij, count=nc2cnt_ij), &
2254 call
check( nf90_inq_varid(ncid,
'am_perp', ncv), thisroutine )
2255 call
check( nf90_put_var(ncid, ncv, am_perp_conv, &
2256 start=nc2cor_ij, count=nc2cnt_ij), &
2259 call
check( nf90_inq_varid(ncid,
'qx', ncv), thisroutine )
2260 call
check( nf90_put_var(ncid, ncv, qx_conv, &
2261 start=nc2cor_ij, count=nc2cnt_ij), &
2264 call
check( nf90_inq_varid(ncid,
'qy', ncv), thisroutine )
2265 call
check( nf90_put_var(ncid, ncv, qy_conv, &
2266 start=nc2cor_ij, count=nc2cnt_ij), &
2269 if (flag_3d_output)
then
2271 call
check( nf90_inq_varid(ncid,
'age_c', ncv), thisroutine )
2272 call
check( nf90_put_var(ncid, ncv, age_c_conv, &
2273 start=nc3cor_ijkc, count=nc3cnt_ijkc), &
2276 call
check( nf90_inq_varid(ncid,
'age_t', ncv), thisroutine )
2277 call
check( nf90_put_var(ncid, ncv, age_t_conv, &
2278 start=nc3cor_ijkt, count=nc3cnt_ijkt), &
2283 call
check( nf90_inq_varid(ncid,
'dzs_dtau', ncv), thisroutine )
2284 call
check( nf90_put_var(ncid, ncv, dzs_dtau_conv, &
2285 start=nc2cor_ij, count=nc2cnt_ij), &
2288 call
check( nf90_inq_varid(ncid,
'dzm_dtau', ncv), thisroutine )
2289 call
check( nf90_put_var(ncid, ncv, dzm_dtau_conv, &
2290 start=nc2cor_ij, count=nc2cnt_ij), &
2293 call
check( nf90_inq_varid(ncid,
'dzb_dtau', ncv), thisroutine )
2294 call
check( nf90_put_var(ncid, ncv, dzb_dtau_conv, &
2295 start=nc2cor_ij, count=nc2cnt_ij), &
2298 call
check( nf90_inq_varid(ncid,
'dzl_dtau', ncv), thisroutine )
2299 call
check( nf90_put_var(ncid, ncv, dzl_dtau_conv, &
2300 start=nc2cor_ij, count=nc2cnt_ij), &
2303 call
check( nf90_inq_varid(ncid,
'dH_c_dtau', ncv), thisroutine )
2304 call
check( nf90_put_var(ncid, ncv, dh_c_dtau_conv, &
2305 start=nc2cor_ij, count=nc2cnt_ij), &
2308 call
check( nf90_inq_varid(ncid,
'dH_t_dtau', ncv), thisroutine )
2309 call
check( nf90_put_var(ncid, ncv, dh_t_dtau_conv, &
2310 start=nc2cor_ij, count=nc2cnt_ij), &
2313 call
check( nf90_inq_varid(ncid,
'dH_dtau', ncv), thisroutine )
2314 call
check( nf90_put_var(ncid, ncv, dh_dtau_conv, &
2315 start=nc2cor_ij, count=nc2cnt_ij), &
2318 call
check( nf90_inq_varid(ncid,
'vx_b_g', ncv), thisroutine )
2319 call
check( nf90_put_var(ncid, ncv, vx_b_g_conv, &
2320 start=nc2cor_ij, count=nc2cnt_ij), &
2323 call
check( nf90_inq_varid(ncid,
'vy_b_g', ncv), thisroutine )
2324 call
check( nf90_put_var(ncid, ncv, vy_b_g_conv, &
2325 start=nc2cor_ij, count=nc2cnt_ij), &
2328 call
check( nf90_inq_varid(ncid,
'vz_b', ncv), thisroutine )
2329 call
check( nf90_put_var(ncid, ncv, vz_b_conv, &
2330 start=nc2cor_ij, count=nc2cnt_ij), &
2333 call
check( nf90_inq_varid(ncid,
'vh_b', ncv), thisroutine )
2334 call
check( nf90_put_var(ncid, ncv, vh_b_conv, &
2335 start=nc2cor_ij, count=nc2cnt_ij), &
2338 call
check( nf90_inq_varid(ncid,
'vx_s_g', ncv), thisroutine )
2339 call
check( nf90_put_var(ncid, ncv, vx_s_g_conv, &
2340 start=nc2cor_ij, count=nc2cnt_ij), &
2343 call
check( nf90_inq_varid(ncid,
'vy_s_g', ncv), thisroutine )
2344 call
check( nf90_put_var(ncid, ncv, vy_s_g_conv, &
2345 start=nc2cor_ij, count=nc2cnt_ij), &
2348 call
check( nf90_inq_varid(ncid,
'vz_s', ncv), thisroutine )
2349 call
check( nf90_put_var(ncid, ncv, vz_s_conv, &
2350 start=nc2cor_ij, count=nc2cnt_ij), &
2353 call
check( nf90_inq_varid(ncid,
'vh_s', ncv), thisroutine )
2354 call
check( nf90_put_var(ncid, ncv, vh_s_conv, &
2355 start=nc2cor_ij, count=nc2cnt_ij), &
2358 call
check( nf90_inq_varid(ncid,
'temp_b', ncv), thisroutine )
2359 call
check( nf90_put_var(ncid, ncv, temp_b_conv, &
2360 start=nc2cor_ij, count=nc2cnt_ij), &
2363 call
check( nf90_inq_varid(ncid,
'temph_b', ncv), thisroutine )
2364 call
check( nf90_put_var(ncid, ncv, temph_b_conv, &
2365 start=nc2cor_ij, count=nc2cnt_ij), &
2368 call
check( nf90_inq_varid(ncid,
'p_b_w', ncv), thisroutine )
2369 call
check( nf90_put_var(ncid, ncv, p_b_w_conv, &
2370 start=nc2cor_ij, count=nc2cnt_ij), &
2373 call
check( nf90_inq_varid(ncid,
'H_w', ncv), thisroutine )
2374 call
check( nf90_put_var(ncid, ncv, h_w_conv, &
2375 start=nc2cor_ij, count=nc2cnt_ij), &
2378 call
check( nf90_inq_varid(ncid,
'q_gl_g', ncv), thisroutine )
2379 call
check( nf90_put_var(ncid, ncv, q_gl_g_conv, &
2380 start=nc2cor_ij, count=nc2cnt_ij), &
2383 call
check( nf90_inq_varid(ncid,
'V_tot', ncv), thisroutine )
2384 call
check( nf90_put_var(ncid, ncv, v_tot_conv), thisroutine )
2386 call
check( nf90_inq_varid(ncid,
'A_grounded', ncv), thisroutine )
2387 call
check( nf90_put_var(ncid, ncv, a_grounded_conv), thisroutine )
2389 call
check( nf90_inq_varid(ncid,
'A_floating', ncv), thisroutine )
2390 call
check( nf90_put_var(ncid, ncv, a_floating_conv), thisroutine )
2394 call
check( nf90_sync(ncid), thisroutine )
2396 call
check( nf90_close(ncid), thisroutine )
2402 if (flag_3d_output)
then
Declarations of kind types for SICOPOLIS.
subroutine output_nc(runname, time, delta_ts, glac_index, z_sl, flag_3d_output, ndat2d, ndat3d)
Writing of time-slice files in NetCDF format.
subroutine check(status, ch_calling_routine)
NetCDF error capturing.
Declarations of global variables for SICOPOLIS (for the ANT domain).
Declarations of global variables for SICOPOLIS.
Conversion from temperature (temp) and water content (omega) to enthalpy (enth) and vice versa...
real(dp) function, public enth_fct_temp_omega(temp_val, omega_val)
Enthalpy as a function of temperature and water content.