44 private :: file_history_cartesc_set_dims
45 private :: file_history_cartesc_set_axes
46 private :: file_history_cartesc_set_axes_attributes
52 integer,
parameter :: nzs = 3
53 character(len=8),
parameter :: zs(nzs) = (/
"model ", &
57 integer :: FILE_HISTORY_CARTESC_MODEL_nlayer = -1
58 integer :: FILE_HISTORY_CARTESC_PRES_nlayer = 0
59 real(RP),
allocatable :: FILE_HISTORY_CARTESC_PRES_val(:)
67 integer :: FILE_HISTORY_CARTESC_STARTDATE(6)
68 real(DP) :: FILE_HISTORY_CARTESC_STARTSUBSEC
70 logical :: FILE_HISTORY_CARTESC_BOUNDARY = .false.
72 logical :: pres_set = .false.
108 integer,
parameter :: nlayer_max = 300
109 real(rp) :: file_history_cartesc_pres(nlayer_max)
111 namelist / param_file_history_cartesc / &
112 file_history_cartesc_model_nlayer, &
113 file_history_cartesc_pres_nlayer, &
114 file_history_cartesc_pres, &
115 file_history_cartesc_boundary
117 character(len=H_MID) :: file_history_cartesc_h_title =
'SCALE-RM FILE_HISTORY_CARTESC OUTPUT'
118 character(len=H_MID) :: file_history_cartesc_t_since
120 character(len=FILE_HSHORT) :: calendar
121 real(dp) :: start_daysec
127 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Setup'
129 file_history_cartesc_pres(:) = 0.0_rp
133 read(
io_fid_conf,nml=param_file_history_cartesc,iostat=ierr)
135 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Not found namelist. Default used.'
136 elseif( ierr > 0 )
then
137 log_error(
"FILE_HISTORY_CARTESC_setup",*)
'Not appropriate names in namelist PARAM_FILE_HISTORY_CARTESC. Check!'
140 log_nml(param_file_history_cartesc)
142 if ( file_history_cartesc_model_nlayer < 0 )
then
143 file_history_cartesc_model_nlayer =
kmax
148 if ( file_history_cartesc_pres_nlayer > 0 )
then
149 if ( file_history_cartesc_pres_nlayer > nlayer_max )
then
150 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3)')
'FILE_HISTORY_CARTESC_PRES_nlayer must be <= ', nlayer_max
153 allocate( file_history_cartesc_pres_val(file_history_cartesc_pres_nlayer) )
155 do k = 1, file_history_cartesc_pres_nlayer
156 if ( file_history_cartesc_pres(k) <= 0.0_rp )
then
157 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3,f7.1)')
'Invalid value found in pressure coordinate! (k,value)=', k, file_history_cartesc_pres(k)
159 elseif ( file_history_cartesc_pres(k+1) >= file_history_cartesc_pres(k) )
then
160 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3,2f7.1)')
'The value of pressure coordinate must be descending order! ', &
161 '(k,value[k],value[k+1])=', k, file_history_cartesc_pres(k), file_history_cartesc_pres(k+1)
164 file_history_cartesc_pres_val(k) = file_history_cartesc_pres(k) * 100.0_rp
169 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'FILE_HISTORY_CARTESC_PRES_nlayer is not set.'
170 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Output with pressure coordinate is disabled'
180 write(file_history_cartesc_t_since,
'(I4.4,5(A1,I2.2))')
time_nowdate(1), &
188 file_history_cartesc_t_since =
''
191 if ( file_history_cartesc_boundary )
then
233 time_since = file_history_cartesc_t_since, &
234 calendar = calendar, &
235 default_zcoord =
'model', &
240 call file_history_cartesc_set_dims
242 call file_history_cartesc_set_axes
244 call file_history_cartesc_set_axes_attributes
264 real(rp),
intent(in) :: pres (:,:,:)
265 real(rp),
intent(in) :: presh (:,:,:)
266 real(rp),
intent(in) :: sfc_pres( :,:)
269 if ( file_history_cartesc_pres_nlayer > 0 )
then
277 file_history_cartesc_pres_val(:) )
289 subroutine file_history_cartesc_set_dims
304 character(len=H_SHORT) :: mapping
306 character(len=H_SHORT) :: dims(3,3)
308 integer :: start(3,3), count(3,3)
309 integer :: xs, xc, ys, yc
310 integer :: xoff, yoff
314 if ( file_history_cartesc_boundary )
then
352 count(1,1) = file_history_cartesc_model_nlayer
355 count(1,1) = file_history_cartesc_model_nlayer + 1
362 count(1,1) =
okmax + 1
369 count(1,1) =
lkmax + 1
376 count(1,1) =
ukmax + 1
386 call file_history_set_dim(
"XY", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face" )
389 dims(3,:) = (/
"height ",
"z ",
"pressure " /)
390 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
391 call file_history_set_dim(
"ZXY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, &
392 area=
"cell_area", area_x=
"cell_area_xyz_x", area_y=
"cell_area_xyz_y", volume=
"cell_volume", location=
"face" )
393 dims(3,:) = (/
"height_xyw",
"zh ",
"pressure " /)
394 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
395 call file_history_set_dim(
"ZHXY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyw", location=
"face" )
397 if (
okmax > 0 )
then
400 call file_history_set_dim(
"OXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyo", location=
"face", grid=
"ocean" )
402 count(3,1) =
okmax + 1
403 call file_history_set_dim(
"OHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"ocean" )
406 if (
lkmax > 0 )
then
409 call file_history_set_dim(
"LXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyl", location=
"face", grid=
"land" )
411 count(3,1) =
lkmax + 1
412 call file_history_set_dim(
"LHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"land" )
415 if (
ukmax > 0 )
then
418 call file_history_set_dim(
"UXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyu", grid=
"urban" )
420 count(3,1) =
ukmax + 1
421 call file_history_set_dim(
"UHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"urban" )
434 call file_history_set_dim(
"XHY", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", location=
"edge1" )
436 dims(3,:) = (/
"height_uyz",
"z ",
"pressure " /)
437 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
438 call file_history_set_dim(
"ZXHY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", volume=
"cell_volume_uyz", location=
"edge1" )
439 dims(3,:) = (/
"height_uyw",
"zh ",
"pressure " /)
440 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
441 call file_history_set_dim(
"ZHXHY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", location=
"edge1" )
455 call file_history_set_dim(
"XYH", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", location=
"edge2" )
457 dims(3,:) = (/
"height_xvz",
"z ",
"pressure " /)
458 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
459 call file_history_set_dim(
"ZXYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", volume=
"cell_volume_xvz", location=
"edge2" )
460 dims(3,:) = (/
"height_xvw",
"zh ",
"pressure " /)
461 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
462 call file_history_set_dim(
"ZHXYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", location=
"edge2" )
474 call file_history_set_dim(
"XHYH", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, location=
"face" )
476 dims(3,:) = (/
"height_uvz",
"z ",
"pressure " /)
477 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
478 call file_history_set_dim(
"ZXHYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, &
479 area=
"cell_area_uv", area_x=
"cell_area_uvz_x", area_y=
"cell_area_uvz_y", location=
"node" )
480 dims(3,:) = (/
"height_uvw",
"zh ",
"pressure " /)
481 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
482 call file_history_set_dim(
"ZHXHYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, location=
"node" )
485 end subroutine file_history_cartesc_set_dims
491 dim_type, zcoord, fill_halo, &
495 real(RP),
intent(in) :: src(:)
496 character(len=*),
intent(in) :: dim_type
497 character(len=*),
intent(in) :: zcoord
498 logical,
intent(in) :: fill_halo
500 real(DP),
intent(out) :: dst(:)
508 select case ( dim_type )
510 ksize = file_history_cartesc_model_nlayer
513 ksize = file_history_cartesc_model_nlayer+1
534 log_error(
"FILE_HISTORY_CARTESC_truncate_1D",*)
'dim_type is invalid: ', trim(dim_type)
539 dst(k) = src(kstart+k-1)
547 subroutine file_history_cartesc_truncate_2d( &
549 dim_type, zcoord, fill_halo, &
555 real(RP),
intent(in) :: src(:,:)
556 character(len=*),
intent(in) :: dim_type
557 character(len=*),
intent(in) :: zcoord
558 logical,
intent(in) :: fill_halo
560 real(DP),
intent(out) :: dst(:)
562 integer :: isize, jsize
563 integer :: istart, jstart
568 select case( dim_type )
572 case (
'XHY',
'XHYH' )
576 log_error(
"FILE_HISTORY_CARTESC_truncate_2D",*)
'dim_type is invalid: ', trim(dim_type)
580 select case ( dim_type )
584 case (
'XYH',
'XHYH' )
588 log_error(
"FILE_HISTORY_CARTESC_truncate_2D",*)
'dim_type is invalid: ', trim(dim_type)
595 dst((j-1)*isize+i) = src(istart+i-1,jstart+j-1)
599 if ( fill_halo )
then
603 dst((j-1)*isize+i) = rmiss
608 do i =
ie-istart+2, ime-istart+1
609 dst((j-1)*isize+i) = rmiss
615 dst((j-1)*isize+i) = rmiss
619 do j =
je-jstart+2, jme-jstart+1
621 dst((j-1)*isize+i) = rmiss
628 end subroutine file_history_cartesc_truncate_2d
634 dim_type, zcoord, fill_halo, &
654 real(RP),
intent(in) :: src(:,:,:)
655 character(len=*),
intent(in) :: dim_type
656 character(len=*),
intent(in) :: zcoord
657 logical,
intent(in) :: fill_halo
658 real(DP),
intent(out) :: dst(:)
660 real(RP) :: src_Z(KA,IA,JA)
661 real(RP) :: src_P(FILE_HISTORY_CARTESC_PRES_nlayer,IA,JA)
665 integer :: isize, jsize, ksize
666 integer :: istart, jstart, kstart
671 if ( index( dim_type,
'XH' ) == 0 )
then
679 if ( index( dim_type,
'YH' ) == 0 )
then
687 select case( dim_type(1:1) )
689 ksize = file_history_cartesc_model_nlayer
705 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'dim_type is invalid: ', trim(dim_type)
708 if ( dim_type(2:2) ==
'H' )
then
714 if ( ksize == file_history_cartesc_model_nlayer .and. zcoord ==
"z" .and.
interp_available .and. atmos )
then
728 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_z(kstart+k-1,istart+i-1,jstart+j-1)
733 else if( ksize == file_history_cartesc_model_nlayer+1 .and. zcoord ==
"z" .and.
interp_available .and. atmos )
then
748 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_z(kstart+k-1,istart+i-1,jstart+j-1)
753 elseif( zcoord ==
"pressure" .and. ksize == file_history_cartesc_model_nlayer .and. atmos )
then
754 ksize = file_history_cartesc_pres_nlayer
755 if ( ksize == 0 )
then
756 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'FILE_HISTORY_CARTESC_PRES_nlayer must be set to output variable with the pressure coordinate'
775 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_p(k,istart+i-1,jstart+j-1)
786 dst((k-1)*jsize*isize+(j-1)*isize+i) = undef
793 elseif( zcoord ==
"pressure" .and. ksize == file_history_cartesc_model_nlayer+1 .and. atmos )
then
794 ksize = file_history_cartesc_pres_nlayer
795 if ( ksize == 0 )
then
796 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'FILE_HISTORY_CARTESC_PRES_nlayer must be set to output variable with the pressure coordinate'
815 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_p(k,istart+i-1,jstart+j-1)
826 dst((k-1)*jsize*isize+(j-1)*isize+i) = undef
838 dst((k-1)*jsize*isize+(j-1)*isize+i) = src(kstart+k-1,istart+i-1,jstart+j-1)
845 if ( fill_halo )
then
850 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
857 do i =
ie-istart+2, ime-istart+1
858 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
866 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
872 do j =
je-jstart+2, jme-jstart+1
874 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
887 subroutine file_history_cartesc_set_axes
891 file_history_set_associatedcoordinate
987 real(RP) :: AXIS (imh,jmh,0:FILE_HISTORY_CARTESC_MODEL_nlayer)
988 real(RP) :: AXISO(im, jm, OKMAX)
989 real(RP) :: AXISL(im, jm, LKMAX)
990 real(RP) :: AXISU(im, jm, UKMAX)
991 character(len=2) :: AXIS_name(3)
993 integer :: rankidx(2)
994 integer :: start(3,4)
995 integer :: startX, startY, startZ
996 integer :: startXH, startYH
998 integer :: XAGH, YAGH
1000 real(RP) :: z_bnds(2,KA), zh_bnds(2,0:KA)
1001 real(RP) :: oz_bnds(2,OKA), ozh_bnds(2,0:OKA)
1002 real(RP) :: lz_bnds(2,LKA), lzh_bnds(2,0:LKA)
1003 real(RP) :: uz_bnds(2,UKA), uzh_bnds(2,0:UKA)
1004 real(RP) :: x_bnds(2,IA), xh_bnds(2,0:IA)
1005 real(RP) :: y_bnds(2,JA), yh_bnds(2,0:JA)
1007 real(RP) :: FDXG(0:IAG), FDYG(0:JAG)
1008 real(RP) :: FDX(0:IA), FDY(0:JA)
1031 if ( file_history_cartesc_boundary )
then
1065 if ( rankidx(2) > 0 )
then
1069 if ( rankidx(1) > 0 )
then
1138 if ( imsh == 0 )
then
1147 if ( ime == ia )
then
1157 if ( jmsh == 0 )
then
1166 if ( jme == ja )
then
1200 bounds=z_bnds(:,
ks :
ks+file_history_cartesc_model_nlayer-1), gsize=file_history_cartesc_model_nlayer, start=startz )
1202 bounds=zh_bnds(:,
ks-1:
ks+file_history_cartesc_model_nlayer-1), gsize=file_history_cartesc_model_nlayer+1, start=startz )
1204 if ( file_history_cartesc_pres_nlayer > 0 )
then
1205 call file_history_set_axis(
'pressure',
'Pressure',
'hPa',
'pressure', file_history_cartesc_pres_val(:)/100.0_rp, &
1206 gsize=file_history_cartesc_pres_nlayer, start=startz, down=.true. )
1211 bounds=oz_bnds(:,
oks :
oke), gsize=okmax , start=startz, down=.true. )
1213 bounds=ozh_bnds(:,
oks-1:
oke), gsize=okmax+1, start=startz, down=.true. )
1218 bounds=lz_bnds(:,
lks :
lke), gsize=lkmax , start=startz, down=.true. )
1220 bounds=lzh_bnds(:,
lks-1:
lke), gsize=lkmax+1, start=startz, down=.true. )
1225 bounds=uz_bnds(:,
uks :
uke), gsize=ukmax , start=startz, down=.true. )
1227 bounds=uzh_bnds(:,
uks-1:
uke), gsize=ukmax+1, start=startz, down=.true. )
1231 bounds=x_bnds(:,ims :ime), gsize=xag , start=startx )
1233 bounds=xh_bnds(:,imsh:ime), gsize=xagh, start=startxh )
1236 bounds=y_bnds(:,jms :jme), gsize=yag , start=starty )
1238 bounds=yh_bnds(:,jmsh:jme), gsize=yagh, start=startyh )
1248 if ( okmax > 0 )
then
1254 if ( lkmax > 0 )
then
1260 if ( ukmax > 0 )
then
1300 call file_history_set_axis(
'FDXG',
'Grid distance X (global)',
'm',
'FDXG', fdxg, gsize=iag+1, start=startz )
1301 call file_history_set_axis(
'FDYG',
'Grid distance Y (global)',
'm',
'FDYG', fdyg, gsize=jag+1, start=startz )
1311 if ( file_history_cartesc_boundary )
then
1318 start(1,2) = start(1,2) + 1
1319 start(1,4) = start(1,4) + 1
1322 start(2,3) = start(2,3) + 1
1323 start(2,4) = start(2,4) + 1
1331 do k = 1, file_history_cartesc_model_nlayer
1334 axis_name(1:3) = (/
'x ',
'y ',
'z '/)
1335 call file_history_set_associatedcoordinate(
'height',
'height above ground level', &
1336 'm', axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1338 do k = 0, file_history_cartesc_model_nlayer
1341 axis_name(1:3) = (/
'x ',
'y ',
'zh'/)
1342 call file_history_set_associatedcoordinate(
'height_xyw',
'height above ground level (half level xyw)', &
1343 'm' , axis_name(1:3), axis(1:im,1:jm,0:), start=start(:,1) )
1347 do k = 1, file_history_cartesc_model_nlayer
1354 do k = 1, file_history_cartesc_model_nlayer
1356 do i = 1, min(imh,ia-imsh)
1361 if ( imh == ia-imsh+1 )
then
1363 do k = 1, file_history_cartesc_model_nlayer
1370 axis_name(1:3) = (/
'xh',
'y ',
'z '/)
1371 call file_history_set_associatedcoordinate(
'height_uyz',
'height above ground level (half level uyz)', &
1372 'm', axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1374 do k = 1, file_history_cartesc_model_nlayer
1375 do j = 1, min(jmh,ja-jmsh)
1381 if ( jmh == ja-jmsh+1 )
then
1382 do k = 1, file_history_cartesc_model_nlayer
1388 axis_name(1:3) = (/
'x ',
'yh',
'z '/)
1389 call file_history_set_associatedcoordinate(
'height_xvz',
'height above ground level (half level xvz)', &
1390 'm', axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1392 do k = 1, file_history_cartesc_model_nlayer
1393 do j = 1, min(jmh,ja-jmsh)
1394 do i = 1, min(imh,ia-imsh)
1400 if ( jmh == ja-jmsh+1 )
then
1401 do k = 1, file_history_cartesc_model_nlayer
1402 do i = 1, min(imh,ia-imsh)
1407 if ( imh == ia-imsh+1 )
then
1408 do k = 1, file_history_cartesc_model_nlayer
1409 do j = 1, min(jmh,ja-jmsh)
1414 if ( imh == ia-imsh+1 .AND. jmh == ja-jmsh+1 )
then
1415 do k = 1, file_history_cartesc_model_nlayer
1419 axis_name(1:3) = (/
'xh',
'yh',
'z '/)
1420 call file_history_set_associatedcoordinate(
'height_uvz',
'height above ground level (half level uvz)', &
1421 'm', axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1423 do k = 0, file_history_cartesc_model_nlayer
1425 do i = 1, min(imh,ia-imsh)
1430 if ( imh == ia-imsh+1 )
then
1431 do k = 0, file_history_cartesc_model_nlayer
1437 axis_name(1:3) = (/
'xh',
'y ',
'zh'/)
1438 call file_history_set_associatedcoordinate(
'height_uyw',
'height above ground level (half level uyw)', &
1439 'm', axis_name(1:3), axis(1:imh,1:jm,0:), start=start(:,2) )
1441 do k = 0, file_history_cartesc_model_nlayer
1442 do j = 1, min(jmh,ja-jmsh)
1448 if ( jmh == ja-jmsh+1 )
then
1449 do k = 0, file_history_cartesc_model_nlayer
1455 axis_name(1:3) = (/
'x ',
'yh',
'zh'/)
1456 call file_history_set_associatedcoordinate(
'height_xvw',
'height above ground level (half level xvw)', &
1457 'm', axis_name(1:3), axis(1:im,1:jmh,0:), start=start(:,3) )
1459 do k = 0, file_history_cartesc_model_nlayer
1460 do j = 1, min(jmh,ja-jmsh)
1461 do i = 1, min(imh,ia-imsh)
1467 if ( jmh == ja-jmsh+1 )
then
1468 do k = 0, file_history_cartesc_model_nlayer
1469 do i = 1, min(imh,ia-imsh)
1474 if ( imh == ia-imsh+1 )
then
1475 do k = 0, file_history_cartesc_model_nlayer
1476 do j = 1, min(jmh,ja-jmsh)
1481 if ( imh == ia-imsh+1 .AND. jm == ja-jmsh+1 )
then
1482 do k = 0, file_history_cartesc_model_nlayer
1486 axis_name(1:3) = (/
'xh',
'yh',
'zh'/)
1487 call file_history_set_associatedcoordinate(
'height_uvw',
'height above ground level (half level uvw)',
'm', &
1488 axis_name(1:3), axis(1:imh,1:jmh,0:), start=start(:,4) )
1491 axis_name(1:2) = (/
'x ',
'y '/)
1492 call file_history_set_associatedcoordinate(
'lon',
'longitude',
'degrees_east', &
1493 axis_name(1:2), axis(1:im,1:jm,1), start=start(:,1) )
1496 axis_name(1:2) = (/
'xh',
'y '/)
1497 call file_history_set_associatedcoordinate(
'lon_uy',
'longitude (half level uy)',
'degrees_east', &
1498 axis_name(1:2), axis(1:imh,1:jm,1), start=start(:,2) )
1501 axis_name(1:2) = (/
'x ',
'yh'/)
1502 call file_history_set_associatedcoordinate(
'lon_xv',
'longitude (half level xv)',
'degrees_east', &
1503 axis_name(1:2), axis(1:im,1:jmh,1), start=start(:,3) )
1506 axis_name(1:2) = (/
'xh',
'yh'/)
1507 call file_history_set_associatedcoordinate(
'lon_uv',
'longitude (half level uv)',
'degrees_east', &
1508 axis_name(1:2), axis(1:imh,1:jmh,1), start=start(:,4) )
1511 axis_name(1:2) = (/
'x ',
'y '/)
1512 call file_history_set_associatedcoordinate(
'lat',
'latitude',
'degrees_north', &
1513 axis_name(1:2), axis(1:im,1:jm,1), start=start(:,1) )
1516 axis_name(1:2) = (/
'xh',
'y '/)
1517 call file_history_set_associatedcoordinate(
'lat_uy',
'latitude (half level uy)',
'degrees_north', &
1518 axis_name(1:2), axis(1:imh,1:jm,1), start=start(:,2) )
1521 axis_name(1:2) = (/
'x ',
'yh'/)
1522 call file_history_set_associatedcoordinate(
'lat_xv',
'latitude (half level xv)',
'degrees_north', &
1523 axis_name(1:2), axis(1:im,1:jmh,1), start=start(:,3) )
1526 axis_name(1:2) = (/
'xh',
'yh'/)
1527 call file_history_set_associatedcoordinate(
'lat_uv',
'latitude (half level uv)',
'degrees_north', &
1528 axis_name(1:2), axis(1:imh,1:jmh,1), start=start(:,4) )
1530 axis_name(1:2) = (/
'x ',
'y '/)
1531 call file_history_set_associatedcoordinate(
'topo',
'topography',
'm', axis_name(1:2), &
1534 axis_name(1:2) = (/
'x ',
'y '/)
1535 call file_history_set_associatedcoordinate(
'lsmask',
'fraction for land-sea mask',
'1', axis_name(1:2), &
1538 axis_name(1:2) = (/
'x ',
'y '/)
1539 call file_history_set_associatedcoordinate(
'cell_area',
'area of grid cell',
'm2', axis_name(1:2), &
1540 area(ims:ime,jms:jme), start=start(:,1) )
1541 axis_name(1:2) = (/
'xh',
'y '/)
1542 call file_history_set_associatedcoordinate(
'cell_area_uy',
'area of grid cell (half level uy)',
'm2', axis_name(1:2), &
1543 areauy(imsh:ime,jms:jme), start=start(:,2) )
1544 axis_name(1:2) = (/
'x ',
'yh'/)
1545 call file_history_set_associatedcoordinate(
'cell_area_xv',
'area of grid cell (half level xv)',
'm2', axis_name(1:2), &
1546 areaxv(ims:ime,jmsh:jme), start=start(:,3) )
1548 do k = 1, file_history_cartesc_model_nlayer
1551 axis(i,j,k) = areazuy_x(
ks+k-1,imsh+i-1,jms+j-1)
1555 axis_name = (/
'xh',
'y ',
'z '/)
1556 call file_history_set_associatedcoordinate(
'cell_area_uyz_x',
'area of grid cell face (half level uyz, normal x)',
'm2', &
1557 axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1558 do k = 1, file_history_cartesc_model_nlayer
1561 axis(i,j,k) = areazxv_y(
ks+k-1,ims+i-1,jmsh+j-1)
1565 axis_name = (/
'x ',
'yh',
'z '/)
1566 call file_history_set_associatedcoordinate(
'cell_area_xvz_y',
'area of grid cell face (half level xvz, normal y)',
'm2', &
1567 axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1568 do k = 0, file_history_cartesc_model_nlayer
1571 axis(i,j,k) = areawuy_x(
ks+k-1,imsh+i-1,jmsh+j-1)
1575 axis_name = (/
'xh',
'y ',
'zh'/)
1576 call file_history_set_associatedcoordinate(
'cell_area_uyw_x',
'area of grid cell face (half level uyw, normal x)',
'm2', &
1577 axis_name(1:3), axis(1:imh,1:jmh,0:), start=start(:,2) )
1578 do k = 0, file_history_cartesc_model_nlayer
1581 axis(i,j,k) = areawxv_y(
ks+k-1,ims+i-1,jmsh+j-1)
1585 axis_name = (/
'x ',
'yh',
'zh'/)
1586 call file_history_set_associatedcoordinate(
'cell_area_xvw_y',
'area of grid cell face (half level xvw, normal y)',
'm2', &
1587 axis_name(1:3), axis(1:im,1:jmh,0:), start=start(:,3) )
1588 do k = 1, file_history_cartesc_model_nlayer
1591 axis(i,j,k) = areazxy_x(
ks+k-1,ims+i-1,jms+j-1)
1595 axis_name = (/
'x ',
'y ',
'z '/)
1596 call file_history_set_associatedcoordinate(
'cell_area_xyz_x',
'area of grid cell face (half level xyz, normal x)',
'm2', &
1597 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1598 do k = 1, file_history_cartesc_model_nlayer
1601 axis(i,j,k) = areazuv_y(
ks+k-1,imsh+i-1,jmsh+j-1)
1605 axis_name = (/
'xh',
'yh',
'z '/)
1606 call file_history_set_associatedcoordinate(
'cell_area_uvz_y',
'area of grid cell face (half level uvz, normal y)',
'm2', &
1607 axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1608 do k = 1, file_history_cartesc_model_nlayer
1611 axis(i,j,k) = areazuv_x(
ks+k-1,imsh+i-1,jmsh+j-1)
1615 axis_name = (/
'xh',
'yh',
'z '/)
1616 call file_history_set_associatedcoordinate(
'cell_area_uvz_x',
'area of grid cell face (half level uvz, normal x)',
'm2', &
1617 axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1618 do k = 1, file_history_cartesc_model_nlayer
1621 axis(i,j,k) = areazxy_y(
ks+k-1,ims+i-1,jms+j-1)
1625 axis_name = (/
'x ',
'y ',
'z '/)
1626 call file_history_set_associatedcoordinate(
'cell_area_xyz_y',
'area of grid cell face (half level xyz, normal y)',
'm2', &
1627 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1629 do k = 1, file_history_cartesc_model_nlayer
1632 axis(i,j,k) = vol(
ks+k-1,ims+i-1,jms+j-1)
1636 axis_name = (/
'x ',
'y ',
'z '/)
1637 call file_history_set_associatedcoordinate(
'cell_volume',
'volume of grid cell',
'm3', &
1638 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1639 do k = 0, file_history_cartesc_model_nlayer
1642 axis(i,j,k) = volwxy(
ks+k-1,ims+i-1,jms+j-1)
1646 axis_name = (/
'x ',
'y ',
'zh'/)
1647 call file_history_set_associatedcoordinate(
'cell_volume_xyw',
'volume of grid cell (half level xyw)',
'm3', &
1648 axis_name(1:3), axis(1:im,1:jm,0:), start=start(:,1) )
1649 do k = 1, file_history_cartesc_model_nlayer
1652 axis(i,j,k) = volzuy(
ks+k-1,imsh+i-1,jms+j-1)
1656 axis_name = (/
'xh',
'y ',
'z '/)
1657 call file_history_set_associatedcoordinate(
'cell_volume_uyz',
'volume of grid cell (half level uyz)',
'm3', &
1658 axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1659 do k = 1, file_history_cartesc_model_nlayer
1662 axis(i,j,k) = volzxv(
ks+k-1,ims+i-1,jmsh+j-1)
1666 axis_name = (/
'x ',
'yh',
'z '/)
1667 call file_history_set_associatedcoordinate(
'cell_volume_xvz',
'volume of grid cell (half level xvz)',
'm3', &
1668 axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1670 if ( okmax > 0 )
then
1674 axiso(i,j,k) = volo(
oks+k-1,ims+i-1,jms+j-1)
1678 axis_name = (/
'x ',
'y ',
'oz'/)
1679 call file_history_set_associatedcoordinate(
'cell_volume_xyo',
'volume of grid cell',
'm3', &
1680 axis_name(1:3), axiso(:,:,:), start=start(:,1) )
1683 if ( lkmax > 0 )
then
1687 axisl(i,j,k) = voll(
lks+k-1,ims+i-1,jms+j-1)
1691 axis_name = (/
'x ',
'y ',
'lz'/)
1692 call file_history_set_associatedcoordinate(
'cell_volume_xyl',
'volume of grid cell',
'm3', &
1693 axis_name(1:3), axisl(:,:,:), start=start(:,1) )
1696 if ( ukmax > 0 )
then
1700 axisu(i,j,k) = volu(
uks+k-1,ims+i-1,jms+j-1)
1704 axis_name = (/
'x ',
'y ',
'uz'/)
1705 call file_history_set_associatedcoordinate(
'cell_volume_xyu',
'volume of grid cell',
'm3', &
1706 axis_name(1:3), axisu(:,:,:), start=start(:,1) )
1710 end subroutine file_history_cartesc_set_axes
1713 subroutine file_history_cartesc_set_axes_attributes
1720 file_history_set_attribute
1743 character(len=34) :: tunits
1744 character(len=H_SHORT) :: calendar
1749 call file_history_set_attribute(
"global",
"Conventions",
"CF-1.6" )
1754 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_x", (/0/) )
1755 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_y", (/0/) )
1757 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_x", (/1/) )
1758 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_y", (/1/) )
1760 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_x", (/
prc_2drank(
prc_myrank,1)/) )
1761 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_y", (/
prc_2drank(
prc_myrank,2)/) )
1763 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_x", (/
prc_num_x/) )
1764 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_y", (/
prc_num_y/) )
1767 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_z", .false. )
1768 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_x",
prc_periodic_x )
1769 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_y",
prc_periodic_y )
1771 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_imaxg", (/
imaxg/) )
1772 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_jmaxg", (/
jmaxg/) )
1774 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_kmax", (/
kmax/) )
1775 if (
okmax > 0 )
call file_history_set_attribute(
"global",
"scale_ocean_grid_cartesC_index_kmax", (/
okmax/) )
1776 if (
lkmax > 0 )
call file_history_set_attribute(
"global",
"scale_land_grid_cartesC_index_kmax", (/
lkmax/) )
1777 if (
ukmax > 0 )
call file_history_set_attribute(
"global",
"scale_urban_grid_cartesC_index_kmax", (/
ukmax/) )
1779 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_khalo", (/
khalo/) )
1780 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_ihalo", (/
ihalo/) )
1781 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_jhalo", (/
jhalo/) )
1784 if ( calendar /=
"" )
call file_history_set_attribute(
"global",
"calendar", calendar )
1786 call file_history_set_attribute(
"global",
"time_units", tunits )
1787 call file_history_set_attribute(
"global",
"time_start", (/file_history_cartesc_startsubsec/) )
1790 ainfo(1)%periodic = .true.
1791 ainfo(2)%periodic = .true.
1793 ainfo(1)%periodic = .false.
1794 ainfo(2)%periodic = .false.
1798 ainfo(3)%periodic = .true.
1799 ainfo(4)%periodic = .true.
1801 ainfo(3)%periodic = .false.
1802 ainfo(4)%periodic = .false.
1806 if (
prc_periodic_x .OR. .NOT. file_history_cartesc_boundary )
then
1809 ainfo(1)%halo_global (1) = 0
1810 ainfo(1)%halo_global (2) = 0
1811 ainfo(1)%halo_local (1) = 0
1812 ainfo(1)%halo_local (2) = 0
1814 ainfo(1)%size_global (1) =
iag
1815 ainfo(1)%start_global(1) =
isga
1816 ainfo(1)%halo_global (1) =
ihalo
1817 ainfo(1)%halo_global (2) =
ihalo
1818 ainfo(1)%halo_local (1) =
ihalo
1819 ainfo(1)%halo_local (2) =
ihalo
1821 if(
prc_has_w ) ainfo(1)%halo_local(1) = 0
1822 if(
prc_has_e ) ainfo(1)%halo_local(2) = 0
1828 if ( .NOT.
prc_periodic_x .AND. .NOT. file_history_cartesc_boundary )
then
1829 ainfo(2)%size_global (1) = ainfo(2)%size_global (1) + 1
1830 ainfo(2)%halo_global (1) = ainfo(2)%halo_global (1) + 1
1832 ainfo(2)%start_global(1) = ainfo(2)%start_global(1) + 1
1834 ainfo(2)%halo_local (1) = ainfo(2)%halo_local (1) + 1
1839 if (
prc_periodic_y .OR. .NOT. file_history_cartesc_boundary )
then
1842 ainfo(3)%halo_global (1) = 0
1843 ainfo(3)%halo_global (2) = 0
1844 ainfo(3)%halo_local (1) = 0
1845 ainfo(3)%halo_local (2) = 0
1847 ainfo(3)%size_global (1) =
jag
1848 ainfo(3)%start_global(1) =
jsga
1849 ainfo(3)%halo_global (1) =
jhalo
1850 ainfo(3)%halo_global (2) =
jhalo
1851 ainfo(3)%halo_local (1) =
jhalo
1852 ainfo(3)%halo_local (2) =
jhalo
1854 if(
prc_has_s ) ainfo(3)%halo_local(1) = 0
1855 if(
prc_has_n ) ainfo(3)%halo_local(2) = 0
1861 if ( .NOT.
prc_periodic_y .AND. .NOT. file_history_cartesc_boundary )
then
1862 ainfo(4)%size_global (1) = ainfo(4)%size_global (1) + 1
1863 ainfo(4)%halo_global (1) = ainfo(4)%halo_global (1) + 1
1865 ainfo(4)%start_global(1) = ainfo(4)%start_global(1) + 1
1867 ainfo(4)%halo_local (1) = ainfo(4)%halo_local (1) + 1
1872 ainfo(1)%start_global(1) = 1
1873 ainfo(2)%start_global(1) = 1
1874 ainfo(3)%start_global(1) = 1
1875 ainfo(4)%start_global(1) = 1
1878 call file_history_set_attribute(
"x" ,
"size_global" , ainfo(1)%size_global (:) )
1879 call file_history_set_attribute(
"x" ,
"start_global", ainfo(1)%start_global(:) )
1880 call file_history_set_attribute(
"x" ,
"halo_global" , ainfo(1)%halo_global (:) )
1881 call file_history_set_attribute(
"x" ,
"halo_local" , ainfo(1)%halo_local (:) )
1882 call file_history_set_attribute(
"x" ,
"periodic" , ainfo(1)%periodic )
1884 call file_history_set_attribute(
"xh",
"size_global" , ainfo(2)%size_global (:) )
1885 call file_history_set_attribute(
"xh",
"start_global", ainfo(2)%start_global(:) )
1886 call file_history_set_attribute(
"xh",
"halo_global" , ainfo(2)%halo_global (:) )
1887 call file_history_set_attribute(
"xh",
"halo_local" , ainfo(2)%halo_local (:) )
1888 call file_history_set_attribute(
"xh",
"periodic" , ainfo(2)%periodic )
1890 call file_history_set_attribute(
"y" ,
"size_global" , ainfo(3)%size_global (:) )
1891 call file_history_set_attribute(
"y" ,
"start_global", ainfo(3)%start_global(:) )
1892 call file_history_set_attribute(
"y" ,
"halo_global" , ainfo(3)%halo_global (:) )
1893 call file_history_set_attribute(
"y" ,
"halo_local" , ainfo(3)%halo_local (:) )
1894 call file_history_set_attribute(
"y" ,
"periodic" , ainfo(3)%periodic )
1896 call file_history_set_attribute(
"yh",
"size_global" , ainfo(4)%size_global (:) )
1897 call file_history_set_attribute(
"yh",
"start_global", ainfo(4)%start_global(:) )
1898 call file_history_set_attribute(
"yh",
"halo_global" , ainfo(4)%halo_global (:) )
1899 call file_history_set_attribute(
"yh",
"halo_local" , ainfo(4)%halo_local (:) )
1900 call file_history_set_attribute(
"yh",
"periodic" , ainfo(4)%periodic )
1904 if ( minfo%mapping_name /=
"" )
then
1905 call file_history_set_attribute(
"x" ,
"standard_name",
"projection_x_coordinate" )
1906 call file_history_set_attribute(
"xh",
"standard_name",
"projection_x_coordinate" )
1907 call file_history_set_attribute(
"y" ,
"standard_name",
"projection_y_coordinate" )
1908 call file_history_set_attribute(
"yh",
"standard_name",
"projection_y_coordinate" )
1910 call file_history_set_attribute( minfo%mapping_name,
"grid_mapping_name", minfo%mapping_name, add_variable=.true. )
1912 if ( minfo%false_easting /= undef )
then
1913 call file_history_set_attribute( minfo%mapping_name, &
1915 minfo%false_easting )
1918 if ( minfo%false_northing /= undef )
then
1919 call file_history_set_attribute( minfo%mapping_name, &
1921 minfo%false_northing )
1924 if ( minfo%longitude_of_central_meridian /= undef )
then
1925 call file_history_set_attribute( minfo%mapping_name, &
1926 "longitude_of_central_meridian", &
1927 minfo%longitude_of_central_meridian )
1930 if ( minfo%longitude_of_projection_origin /= undef )
then
1931 call file_history_set_attribute( minfo%mapping_name, &
1932 "longitude_of_projection_origin", &
1933 minfo%longitude_of_projection_origin )
1936 if ( minfo%latitude_of_projection_origin /= undef )
then
1937 call file_history_set_attribute( minfo%mapping_name, &
1938 "latitude_of_projection_origin", &
1939 minfo%latitude_of_projection_origin )
1942 if ( minfo%straight_vertical_longitude_from_pole /= undef )
then
1943 call file_history_set_attribute( minfo%mapping_name, &
1944 "straight_vertical_longitude_from_pole", &
1945 minfo%straight_vertical_longitude_from_pole )
1948 if ( minfo%standard_parallel(1) /= undef )
then
1949 if ( minfo%standard_parallel(2) /= undef )
then
1950 call file_history_set_attribute( minfo%mapping_name, &
1951 "standard_parallel", &
1952 minfo%standard_parallel(:) )
1954 call file_history_set_attribute( minfo%mapping_name, &
1955 "standard_parallel", &
1956 minfo%standard_parallel(1) )
1960 if ( minfo%rotation /= undef )
then
1961 call file_history_set_attribute( minfo%mapping_name, &
1969 call file_history_set_attribute(
"cell_area",
"standard_name",
"area" )
1970 call file_history_set_attribute(
"cell_area_uy",
"standard_name",
"area" )
1971 call file_history_set_attribute(
"cell_area_xv",
"standard_name",
"area" )
1973 call file_history_set_attribute(
"cell_area_uyz_x",
"standard_name",
"area" )
1974 call file_history_set_attribute(
"cell_area_xvz_y",
"standard_name",
"area" )
1975 call file_history_set_attribute(
"cell_area_uyw_x",
"standard_name",
"area" )
1976 call file_history_set_attribute(
"cell_area_xvw_y",
"standard_name",
"area" )
1977 call file_history_set_attribute(
"cell_area_xyz_x",
"standard_name",
"area" )
1978 call file_history_set_attribute(
"cell_area_uvz_y",
"standard_name",
"area" )
1979 call file_history_set_attribute(
"cell_area_uvz_x",
"standard_name",
"area" )
1980 call file_history_set_attribute(
"cell_area_xyz_y",
"standard_name",
"area" )
1982 call file_history_set_attribute(
"cell_volume",
"standard_name",
"volume" )
1983 call file_history_set_attribute(
"cell_volume_xyw",
"standard_name",
"volume" )
1984 call file_history_set_attribute(
"cell_volume_uyz",
"standard_name",
"volume" )
1985 call file_history_set_attribute(
"cell_volume_xvz",
"standard_name",
"volume" )
1987 if (
okmax > 0 )
then
1988 call file_history_set_attribute(
"cell_volume_xyo",
"standard_name",
"volume" )
1990 if (
lkmax > 0 )
then
1991 call file_history_set_attribute(
"cell_volume_xyl",
"standard_name",
"volume" )
1993 if (
ukmax > 0 )
then
1994 call file_history_set_attribute(
"cell_volume_xyu",
"standard_name",
"volume" )
1998 call file_history_set_attribute(
"grid",
"cf_role",
"grid_topology", add_variable=.true. )
1999 call file_history_set_attribute(
"grid",
"topology_dimension", (/ 2 /) )
2000 call file_history_set_attribute(
"grid",
"node_dimensions",
"xh yh" )
2001 call file_history_set_attribute(
"grid",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2002 call file_history_set_attribute(
"grid",
"node_coordinates",
"lon_uv lat_uv" )
2003 call file_history_set_attribute(
"grid",
"face_coordinates",
"lon lat" )
2004 call file_history_set_attribute(
"grid",
"edge1_coordinates",
"lon_uy lat_uy" )
2005 call file_history_set_attribute(
"grid",
"edge2_coordinates",
"lon_xv lat_xv" )
2006 call file_history_set_attribute(
"grid",
"vertical_dimensions",
"z: zh (padding: none)" )
2008 call file_history_set_attribute(
"grid_ocean",
"cf_role",
"grid_topology", add_variable=.true. )
2009 call file_history_set_attribute(
"grid_ocean",
"topology_dimension", (/ 2 /) )
2010 call file_history_set_attribute(
"grid_ocean",
"node_dimensions",
"xh yh" )
2011 call file_history_set_attribute(
"grid_ocean",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2012 call file_history_set_attribute(
"grid_ocean",
"node_coordinates",
"lon_uv lat_uv" )
2013 call file_history_set_attribute(
"grid_ocean",
"face_coordinates",
"lon lat" )
2014 call file_history_set_attribute(
"grid_ocean",
"edge1_coordinates",
"lon_uy lat_uy" )
2015 call file_history_set_attribute(
"grid_ocean",
"edge2_coordinates",
"lon_xv lat_xv" )
2016 call file_history_set_attribute(
"grid_ocean",
"vertical_dimensions",
"oz: ozh (padding: none)" )
2018 call file_history_set_attribute(
"grid_land",
"cf_role",
"grid_topology", add_variable=.true. )
2019 call file_history_set_attribute(
"grid_land",
"topology_dimension", (/ 2 /) )
2020 call file_history_set_attribute(
"grid_land",
"node_dimensions",
"xh yh" )
2021 call file_history_set_attribute(
"grid_land",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2022 call file_history_set_attribute(
"grid_land",
"node_coordinates",
"lon_uv lat_uv" )
2023 call file_history_set_attribute(
"grid_land",
"face_coordinates",
"lon lat" )
2024 call file_history_set_attribute(
"grid_land",
"edge1_coordinates",
"lon_uy lat_uy" )
2025 call file_history_set_attribute(
"grid_land",
"edge2_coordinates",
"lon_xv lat_xv" )
2026 call file_history_set_attribute(
"grid_land",
"vertical_dimensions",
"lz: lzh (padding: none)" )
2028 call file_history_set_attribute(
"grid_urban",
"cf_role",
"grid_topology", add_variable=.true. )
2029 call file_history_set_attribute(
"grid_urban",
"topology_dimension", (/ 2 /) )
2030 call file_history_set_attribute(
"grid_urban",
"node_dimensions",
"xh yh" )
2031 call file_history_set_attribute(
"grid_urban",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2032 call file_history_set_attribute(
"grid_urban",
"node_coordinates",
"lon_uv lat_uv" )
2033 call file_history_set_attribute(
"grid_urban",
"face_coordinates",
"lon lat" )
2034 call file_history_set_attribute(
"grid_urban",
"edge1_coordinates",
"lon_uy lat_uy" )
2035 call file_history_set_attribute(
"grid_urban",
"edge2_coordinates",
"lon_xv lat_xv" )
2036 call file_history_set_attribute(
"grid_urban",
"vertical_dimensions",
"uz: uzh (padding: none)" )
2038 call file_history_set_attribute(
"grid_pressure",
"cf_role",
"grid_topology", add_variable=.true. )
2039 call file_history_set_attribute(
"grid_pressure",
"topology_dimension", (/ 2 /) )
2040 call file_history_set_attribute(
"grid_pressure",
"node_dimensions",
"xh yh" )
2041 call file_history_set_attribute(
"grid_pressure",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2042 call file_history_set_attribute(
"grid_pressure",
"node_coordinates",
"lon_uv lat_uv" )
2043 call file_history_set_attribute(
"grid_pressure",
"face_coordinates",
"lon lat" )
2044 call file_history_set_attribute(
"grid_pressure",
"edge1_coordinates",
"lon_uy lat_uy" )
2045 call file_history_set_attribute(
"grid_pressure",
"edge2_coordinates",
"lon_xv lat_xv" )
2046 call file_history_set_attribute(
"grid_pressure",
"vertical_dimensions",
"pressure" )
2048 call file_history_set_attribute(
"grid_z",
"cf_role",
"grid_topology", add_variable=.true. )
2049 call file_history_set_attribute(
"grid_z",
"topology_dimension", (/ 2 /) )
2050 call file_history_set_attribute(
"grid_z",
"node_dimensions",
"xh yh" )
2051 call file_history_set_attribute(
"grid_z",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2052 call file_history_set_attribute(
"grid_z",
"node_coordinates",
"lon_uv lat_uv" )
2053 call file_history_set_attribute(
"grid_z",
"face_coordinates",
"lon lat" )
2054 call file_history_set_attribute(
"grid_z",
"edge1_coordinates",
"lon_uy lat_uy" )
2055 call file_history_set_attribute(
"grid_z",
"edge2_coordinates",
"lon_xv lat_xv" )
2056 call file_history_set_attribute(
"grid_z",
"vertical_dimensions",
"height_xyw: height (padding: none)" )
2058 call file_history_set_attribute(
"grid_model",
"cf_role",
"grid_topology", add_variable=.true. )
2059 call file_history_set_attribute(
"grid_model",
"topology_dimension", (/ 2 /) )
2060 call file_history_set_attribute(
"grid_model",
"node_dimensions",
"FX FY" )
2061 call file_history_set_attribute(
"grid_model",
"face_dimensions",
"CX: FY (padding: none) CY: FY (padding: none)" )
2062 call file_history_set_attribute(
"grid_model",
"vertical_dimensions",
"CZ: FZ (padding: none)" )
2064 call file_history_set_attribute(
"grid_model_global",
"cf_role",
"grid_topology", add_variable=.true. )
2065 call file_history_set_attribute(
"grid_model_global",
"topology_dimension", (/ 2 /) )
2066 call file_history_set_attribute(
"grid_model_global",
"node_dimensions",
"FXG FYG" )
2067 call file_history_set_attribute(
"grid_model_global",
"face_dimensions",
"CXG: FYG (padding: none) CYG: FYG (padding: none)" )
2068 call file_history_set_attribute(
"grid_model_global",
"vertical_dimensions",
"CZ: FZ (padding: none)" )
2071 end subroutine file_history_cartesc_set_axes_attributes