45 private :: file_history_cartesc_set_dims
46 private :: file_history_cartesc_set_axes
47 private :: file_history_cartesc_set_axes_attributes
53 integer,
parameter :: nzs = 3
54 character(len=8),
parameter :: zs(nzs) = (/
"model ", &
58 integer :: FILE_HISTORY_CARTESC_MODEL_nlayer
59 integer :: FILE_HISTORY_CARTESC_PRES_nlayer
60 real(RP),
allocatable :: FILE_HISTORY_CARTESC_PRES_val(:)
68 integer :: FILE_HISTORY_CARTESC_STARTDATE(6)
69 real(DP) :: FILE_HISTORY_CARTESC_STARTSUBSEC
71 logical :: FILE_HISTORY_CARTESC_BOUNDARY
73 logical :: pres_set = .false.
109 integer,
parameter :: nlayer_max = 300
110 real(rp) :: file_history_cartesc_pres(nlayer_max)
112 namelist / param_file_history_cartesc / &
113 file_history_cartesc_model_nlayer, &
114 file_history_cartesc_pres_nlayer, &
115 file_history_cartesc_pres, &
116 file_history_cartesc_boundary
118 character(len=H_MID) :: file_history_cartesc_h_title =
'SCALE-RM FILE_HISTORY_CARTESC OUTPUT'
119 character(len=H_MID) :: file_history_cartesc_t_since
121 character(len=FILE_HSHORT) :: calendar
122 real(dp) :: start_daysec
128 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Setup'
130 file_history_cartesc_model_nlayer = -1
131 file_history_cartesc_pres_nlayer = 0
132 file_history_cartesc_pres(:) = 0.0_rp
133 file_history_cartesc_boundary = .false.
137 read(
io_fid_conf,nml=param_file_history_cartesc,iostat=ierr)
139 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Not found namelist. Default used.'
140 elseif( ierr > 0 )
then
141 log_error(
"FILE_HISTORY_CARTESC_setup",*)
'Not appropriate names in namelist PARAM_FILE_HISTORY_CARTESC. Check!'
144 log_nml(param_file_history_cartesc)
146 if ( file_history_cartesc_model_nlayer < 0 )
then
147 file_history_cartesc_model_nlayer =
kmax
152 if ( file_history_cartesc_pres_nlayer > 0 )
then
153 if ( file_history_cartesc_pres_nlayer > nlayer_max )
then
154 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3)')
'FILE_HISTORY_CARTESC_PRES_nlayer must be <= ', nlayer_max
157 allocate( file_history_cartesc_pres_val(file_history_cartesc_pres_nlayer) )
159 do k = 1, file_history_cartesc_pres_nlayer
160 if ( file_history_cartesc_pres(k) <= 0.0_rp )
then
161 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3,f7.1)')
'Invalid value found in pressure coordinate! (k,value)=', k, file_history_cartesc_pres(k)
163 elseif ( file_history_cartesc_pres(k+1) >= file_history_cartesc_pres(k) )
then
164 log_error(
"FILE_HISTORY_CARTESC_setup",
'(a,i3,2f7.1)')
'The value of pressure coordinate must be descending order! ', &
165 '(k,value[k],value[k+1])=', k, file_history_cartesc_pres(k), file_history_cartesc_pres(k+1)
168 file_history_cartesc_pres_val(k) = file_history_cartesc_pres(k) * 100.0_rp
173 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'FILE_HISTORY_CARTESC_PRES_nlayer is not set.'
174 log_info(
"FILE_HISTORY_CARTESC_setup",*)
'Output with pressure coordinate is disabled'
184 write(file_history_cartesc_t_since,
'(I4.4,5(A1,I2.2))')
time_nowdate(1), &
192 file_history_cartesc_t_since =
''
195 if ( file_history_cartesc_boundary )
then
237 time_since = file_history_cartesc_t_since, &
238 calendar = calendar, &
239 default_zcoord =
'model', &
244 call file_history_cartesc_set_dims
246 call file_history_cartesc_set_axes
248 call file_history_cartesc_set_axes_attributes
264 if ( file_history_cartesc_pres_nlayer > 0 )
then
266 deallocate( file_history_cartesc_pres_val )
282 real(rp),
intent(in) :: pres (:,:,:)
283 real(rp),
intent(in) :: presh (:,:,:)
284 real(rp),
intent(in) :: sfc_pres( :,:)
287 if ( file_history_cartesc_pres_nlayer > 0 )
then
295 file_history_cartesc_pres_val(:) )
307 subroutine file_history_cartesc_set_dims
322 character(len=H_SHORT) :: mapping
324 character(len=H_SHORT) :: dims(3,3)
326 integer :: start(3,3), count(3,3)
327 integer :: xs, xc, ys, yc
328 integer :: xoff, yoff
332 if ( file_history_cartesc_boundary )
then
370 count(1,1) = file_history_cartesc_model_nlayer
373 count(1,1) = file_history_cartesc_model_nlayer + 1
380 count(1,1) =
okmax + 1
387 count(1,1) =
lkmax + 1
394 count(1,1) =
ukmax + 1
404 call file_history_set_dim(
"XY", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face" )
407 dims(3,:) = (/
"height ",
"z ",
"pressure " /)
408 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
409 call file_history_set_dim(
"ZXY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, &
410 area=
"cell_area", area_x=
"cell_area_xyz_x", area_y=
"cell_area_xyz_y", volume=
"cell_volume", location=
"face" )
411 dims(3,:) = (/
"height_xyw",
"zh ",
"pressure " /)
412 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
413 call file_history_set_dim(
"ZHXY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyw", location=
"face" )
415 if (
okmax > 0 )
then
418 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" )
420 count(3,1) =
okmax + 1
421 call file_history_set_dim(
"OHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"ocean" )
424 if (
lkmax > 0 )
then
427 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" )
429 count(3,1) =
lkmax + 1
430 call file_history_set_dim(
"LHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"land" )
433 if (
ukmax > 0 )
then
436 call file_history_set_dim(
"UXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", volume=
"cell_volume_xyu", grid=
"urban" )
438 count(3,1) =
ukmax + 1
439 call file_history_set_dim(
"UHXY", 3, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area", location=
"face", grid=
"urban" )
452 call file_history_set_dim(
"XHY", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", location=
"edge1" )
454 dims(3,:) = (/
"height_uyz",
"z ",
"pressure " /)
455 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
456 call file_history_set_dim(
"ZXHY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", volume=
"cell_volume_uyz", location=
"edge1" )
457 dims(3,:) = (/
"height_uyw",
"zh ",
"pressure " /)
458 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
459 call file_history_set_dim(
"ZHXHY", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_uy", location=
"edge1" )
473 call file_history_set_dim(
"XYH", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", location=
"edge2" )
475 dims(3,:) = (/
"height_xvz",
"z ",
"pressure " /)
476 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
477 call file_history_set_dim(
"ZXYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", volume=
"cell_volume_xvz", location=
"edge2" )
478 dims(3,:) = (/
"height_xvw",
"zh ",
"pressure " /)
479 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
480 call file_history_set_dim(
"ZHXYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, area=
"cell_area_xv", location=
"edge2" )
492 call file_history_set_dim(
"XHYH", 2, 1, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, location=
"face" )
494 dims(3,:) = (/
"height_uvz",
"z ",
"pressure " /)
495 count(3,:) = (/ file_history_cartesc_model_nlayer, file_history_cartesc_model_nlayer, file_history_cartesc_pres_nlayer /)
496 call file_history_set_dim(
"ZXHYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, &
497 area=
"cell_area_uv", area_x=
"cell_area_uvz_x", area_y=
"cell_area_uvz_y", location=
"node" )
498 dims(3,:) = (/
"height_uvw",
"zh ",
"pressure " /)
499 count(3,:) = (/ file_history_cartesc_model_nlayer+1, file_history_cartesc_model_nlayer+1, file_history_cartesc_pres_nlayer /)
500 call file_history_set_dim(
"ZHXHYH", 3, nzs, dims(:,:), zs(:), start(:,:), count(:,:), mapping=mapping, location=
"node" )
503 end subroutine file_history_cartesc_set_dims
509 dim_type, zcoord, fill_halo, &
513 real(RP),
intent(in) :: src(:)
514 character(len=*),
intent(in) :: dim_type
515 character(len=*),
intent(in) :: zcoord
516 logical,
intent(in) :: fill_halo
518 real(DP),
intent(out) :: dst(:)
526 select case ( dim_type )
528 ksize = file_history_cartesc_model_nlayer
531 ksize = file_history_cartesc_model_nlayer+1
552 log_error(
"FILE_HISTORY_CARTESC_truncate_1D",*)
'dim_type is invalid: ', trim(dim_type)
557 dst(k) = src(kstart+k-1)
565 subroutine file_history_cartesc_truncate_2d( &
567 dim_type, zcoord, fill_halo, &
573 real(RP),
intent(in) :: src(:,:)
574 character(len=*),
intent(in) :: dim_type
575 character(len=*),
intent(in) :: zcoord
576 logical,
intent(in) :: fill_halo
578 real(DP),
intent(out) :: dst(:)
580 integer :: isize, jsize
581 integer :: istart, jstart
586 select case( dim_type )
590 case (
'XHY',
'XHYH' )
594 log_error(
"FILE_HISTORY_CARTESC_truncate_2D",*)
'dim_type is invalid: ', trim(dim_type)
598 select case ( dim_type )
602 case (
'XYH',
'XHYH' )
606 log_error(
"FILE_HISTORY_CARTESC_truncate_2D",*)
'dim_type is invalid: ', trim(dim_type)
613 dst((j-1)*isize+i) = src(istart+i-1,jstart+j-1)
617 if ( fill_halo )
then
621 dst((j-1)*isize+i) = rmiss
626 do i =
ie-istart+2, ime-istart+1
627 dst((j-1)*isize+i) = rmiss
633 dst((j-1)*isize+i) = rmiss
637 do j =
je-jstart+2, jme-jstart+1
639 dst((j-1)*isize+i) = rmiss
646 end subroutine file_history_cartesc_truncate_2d
652 dim_type, zcoord, fill_halo, &
672 real(RP),
intent(in) :: src(:,:,:)
673 character(len=*),
intent(in) :: dim_type
674 character(len=*),
intent(in) :: zcoord
675 logical,
intent(in) :: fill_halo
676 real(DP),
intent(out) :: dst(:)
678 real(RP) :: src_Z(KA,IA,JA)
679 real(RP) :: src_P(FILE_HISTORY_CARTESC_PRES_nlayer,IA,JA)
683 integer :: isize, jsize, ksize
684 integer :: istart, jstart, kstart
689 if ( index( dim_type,
'XH' ) == 0 )
then
697 if ( index( dim_type,
'YH' ) == 0 )
then
705 select case( dim_type(1:1) )
707 ksize = file_history_cartesc_model_nlayer
723 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'dim_type is invalid: ', trim(dim_type)
726 if ( dim_type(2:2) ==
'H' )
then
732 if ( ksize == file_history_cartesc_model_nlayer .and. zcoord ==
"z" .and.
interp_available .and. atmos )
then
746 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_z(kstart+k-1,istart+i-1,jstart+j-1)
751 else if( ksize == file_history_cartesc_model_nlayer+1 .and. zcoord ==
"z" .and.
interp_available .and. atmos )
then
766 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_z(kstart+k-1,istart+i-1,jstart+j-1)
771 elseif( zcoord ==
"pressure" .and. ksize == file_history_cartesc_model_nlayer .and. atmos )
then
772 ksize = file_history_cartesc_pres_nlayer
773 if ( ksize == 0 )
then
774 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'FILE_HISTORY_CARTESC_PRES_nlayer must be set to output variable with the pressure coordinate'
793 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_p(k,istart+i-1,jstart+j-1)
804 dst((k-1)*jsize*isize+(j-1)*isize+i) = undef
811 elseif( zcoord ==
"pressure" .and. ksize == file_history_cartesc_model_nlayer+1 .and. atmos )
then
812 ksize = file_history_cartesc_pres_nlayer
813 if ( ksize == 0 )
then
814 log_error(
"FILE_HISTORY_CARTESC_truncate_3D",*)
'FILE_HISTORY_CARTESC_PRES_nlayer must be set to output variable with the pressure coordinate'
833 dst((k-1)*jsize*isize+(j-1)*isize+i) = src_p(k,istart+i-1,jstart+j-1)
844 dst((k-1)*jsize*isize+(j-1)*isize+i) = undef
856 dst((k-1)*jsize*isize+(j-1)*isize+i) = src(kstart+k-1,istart+i-1,jstart+j-1)
863 if ( fill_halo )
then
868 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
875 do i =
ie-istart+2, ime-istart+1
876 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
884 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
890 do j =
je-jstart+2, jme-jstart+1
892 dst((k-1)*jsize*isize+(j-1)*isize+i) = rmiss
905 subroutine file_history_cartesc_set_axes
909 file_history_set_associatedcoordinate
1005 real(RP) :: AXIS (imh,jmh,0:FILE_HISTORY_CARTESC_MODEL_nlayer)
1006 real(RP) :: AXISO(im, jm, OKMAX)
1007 real(RP) :: AXISL(im, jm, LKMAX)
1008 real(RP) :: AXISU(im, jm, UKMAX)
1009 character(len=2) :: AXIS_name(3)
1011 integer :: rankidx(2)
1012 integer :: start(3,4)
1013 integer :: startX, startY, startZ
1014 integer :: startXH, startYH
1016 integer :: XAGH, YAGH
1018 real(RP) :: z_bnds(2,KA), zh_bnds(2,0:KA)
1019 real(RP) :: oz_bnds(2,OKA), ozh_bnds(2,0:OKA)
1020 real(RP) :: lz_bnds(2,LKA), lzh_bnds(2,0:LKA)
1021 real(RP) :: uz_bnds(2,UKA), uzh_bnds(2,0:UKA)
1022 real(RP) :: x_bnds(2,IA), xh_bnds(2,0:IA)
1023 real(RP) :: y_bnds(2,JA), yh_bnds(2,0:JA)
1025 real(RP) :: FDXG(0:IAG), FDYG(0:JAG)
1026 real(RP) :: FDX(0:IA), FDY(0:JA)
1049 if ( file_history_cartesc_boundary )
then
1083 if ( rankidx(2) > 0 )
then
1087 if ( rankidx(1) > 0 )
then
1156 if ( imsh == 0 )
then
1165 if ( ime == ia )
then
1175 if ( jmsh == 0 )
then
1184 if ( jme == ja )
then
1218 bounds=z_bnds(:,
ks :
ks+file_history_cartesc_model_nlayer-1), gsize=file_history_cartesc_model_nlayer, start=startz )
1220 bounds=zh_bnds(:,
ks-1:
ks+file_history_cartesc_model_nlayer-1), gsize=file_history_cartesc_model_nlayer+1, start=startz )
1222 if ( file_history_cartesc_pres_nlayer > 0 )
then
1223 call file_history_set_axis(
'pressure',
'Pressure',
'hPa',
'pressure', file_history_cartesc_pres_val(:)/100.0_rp, &
1224 gsize=file_history_cartesc_pres_nlayer, start=startz, down=.true. )
1229 bounds=oz_bnds(:,
oks :
oke), gsize=okmax , start=startz, down=.true. )
1231 bounds=ozh_bnds(:,
oks-1:
oke), gsize=okmax+1, start=startz, down=.true. )
1236 bounds=lz_bnds(:,
lks :
lke), gsize=lkmax , start=startz, down=.true. )
1238 bounds=lzh_bnds(:,
lks-1:
lke), gsize=lkmax+1, start=startz, down=.true. )
1243 bounds=uz_bnds(:,
uks :
uke), gsize=ukmax , start=startz, down=.true. )
1245 bounds=uzh_bnds(:,
uks-1:
uke), gsize=ukmax+1, start=startz, down=.true. )
1249 bounds=x_bnds(:,ims :ime), gsize=xag , start=startx )
1251 bounds=xh_bnds(:,imsh:ime), gsize=xagh, start=startxh )
1254 bounds=y_bnds(:,jms :jme), gsize=yag , start=starty )
1256 bounds=yh_bnds(:,jmsh:jme), gsize=yagh, start=startyh )
1266 if ( okmax > 0 )
then
1272 if ( lkmax > 0 )
then
1278 if ( ukmax > 0 )
then
1318 call file_history_set_axis(
'FDXG',
'Grid distance X (global)',
'm',
'FDXG', fdxg, gsize=iag+1, start=startz )
1319 call file_history_set_axis(
'FDYG',
'Grid distance Y (global)',
'm',
'FDYG', fdyg, gsize=jag+1, start=startz )
1329 if ( file_history_cartesc_boundary )
then
1336 start(1,2) = start(1,2) + 1
1337 start(1,4) = start(1,4) + 1
1340 start(2,3) = start(2,3) + 1
1341 start(2,4) = start(2,4) + 1
1349 do k = 1, file_history_cartesc_model_nlayer
1352 axis_name(1:3) = (/
'x ',
'y ',
'z '/)
1353 call file_history_set_associatedcoordinate(
'height',
'height above sea level', &
1354 'm', axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1356 do k = 0, file_history_cartesc_model_nlayer
1359 axis_name(1:3) = (/
'x ',
'y ',
'zh'/)
1360 call file_history_set_associatedcoordinate(
'height_xyw',
'height above sea level (half level xyw)', &
1361 'm' , axis_name(1:3), axis(1:im,1:jm,0:), start=start(:,1) )
1365 do k = 1, file_history_cartesc_model_nlayer
1372 do k = 1, file_history_cartesc_model_nlayer
1374 do i = 1, min(imh,ia-imsh)
1379 if ( imh == ia-imsh+1 )
then
1381 do k = 1, file_history_cartesc_model_nlayer
1388 axis_name(1:3) = (/
'xh',
'y ',
'z '/)
1389 call file_history_set_associatedcoordinate(
'height_uyz',
'height above sea level (half level uyz)', &
1390 'm', axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1392 do k = 1, file_history_cartesc_model_nlayer
1393 do j = 1, min(jmh,ja-jmsh)
1399 if ( jmh == ja-jmsh+1 )
then
1400 do k = 1, file_history_cartesc_model_nlayer
1406 axis_name(1:3) = (/
'x ',
'yh',
'z '/)
1407 call file_history_set_associatedcoordinate(
'height_xvz',
'height above sea level (half level xvz)', &
1408 'm', axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1410 do k = 1, file_history_cartesc_model_nlayer
1411 do j = 1, min(jmh,ja-jmsh)
1412 do i = 1, min(imh,ia-imsh)
1418 if ( jmh == ja-jmsh+1 )
then
1419 do k = 1, file_history_cartesc_model_nlayer
1420 do i = 1, min(imh,ia-imsh)
1425 if ( imh == ia-imsh+1 )
then
1426 do k = 1, file_history_cartesc_model_nlayer
1427 do j = 1, min(jmh,ja-jmsh)
1432 if ( imh == ia-imsh+1 .AND. jmh == ja-jmsh+1 )
then
1433 do k = 1, file_history_cartesc_model_nlayer
1437 axis_name(1:3) = (/
'xh',
'yh',
'z '/)
1438 call file_history_set_associatedcoordinate(
'height_uvz',
'height above sea level (half level uvz)', &
1439 'm', axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1441 do k = 0, file_history_cartesc_model_nlayer
1443 do i = 1, min(imh,ia-imsh)
1448 if ( imh == ia-imsh+1 )
then
1449 do k = 0, file_history_cartesc_model_nlayer
1455 axis_name(1:3) = (/
'xh',
'y ',
'zh'/)
1456 call file_history_set_associatedcoordinate(
'height_uyw',
'height above sea level (half level uyw)', &
1457 'm', axis_name(1:3), axis(1:imh,1:jm,0:), start=start(:,2) )
1459 do k = 0, file_history_cartesc_model_nlayer
1460 do j = 1, min(jmh,ja-jmsh)
1466 if ( jmh == ja-jmsh+1 )
then
1467 do k = 0, file_history_cartesc_model_nlayer
1473 axis_name(1:3) = (/
'x ',
'yh',
'zh'/)
1474 call file_history_set_associatedcoordinate(
'height_xvw',
'height above sea level (half level xvw)', &
1475 'm', axis_name(1:3), axis(1:im,1:jmh,0:), start=start(:,3) )
1477 do k = 0, file_history_cartesc_model_nlayer
1478 do j = 1, min(jmh,ja-jmsh)
1479 do i = 1, min(imh,ia-imsh)
1485 if ( jmh == ja-jmsh+1 )
then
1486 do k = 0, file_history_cartesc_model_nlayer
1487 do i = 1, min(imh,ia-imsh)
1492 if ( imh == ia-imsh+1 )
then
1493 do k = 0, file_history_cartesc_model_nlayer
1494 do j = 1, min(jmh,ja-jmsh)
1499 if ( imh == ia-imsh+1 .AND. jm == ja-jmsh+1 )
then
1500 do k = 0, file_history_cartesc_model_nlayer
1504 axis_name(1:3) = (/
'xh',
'yh',
'zh'/)
1505 call file_history_set_associatedcoordinate(
'height_uvw',
'height above sea level (half level uvw)',
'm', &
1506 axis_name(1:3), axis(1:imh,1:jmh,0:), start=start(:,4) )
1509 axis_name(1:2) = (/
'x ',
'y '/)
1510 call file_history_set_associatedcoordinate(
'lon',
'longitude',
'degrees_east', &
1511 axis_name(1:2), axis(1:im,1:jm,1), start=start(:,1) )
1514 axis_name(1:2) = (/
'xh',
'y '/)
1515 call file_history_set_associatedcoordinate(
'lon_uy',
'longitude (half level uy)',
'degrees_east', &
1516 axis_name(1:2), axis(1:imh,1:jm,1), start=start(:,2) )
1519 axis_name(1:2) = (/
'x ',
'yh'/)
1520 call file_history_set_associatedcoordinate(
'lon_xv',
'longitude (half level xv)',
'degrees_east', &
1521 axis_name(1:2), axis(1:im,1:jmh,1), start=start(:,3) )
1524 axis_name(1:2) = (/
'xh',
'yh'/)
1525 call file_history_set_associatedcoordinate(
'lon_uv',
'longitude (half level uv)',
'degrees_east', &
1526 axis_name(1:2), axis(1:imh,1:jmh,1), start=start(:,4) )
1529 axis_name(1:2) = (/
'x ',
'y '/)
1530 call file_history_set_associatedcoordinate(
'lat',
'latitude',
'degrees_north', &
1531 axis_name(1:2), axis(1:im,1:jm,1), start=start(:,1) )
1534 axis_name(1:2) = (/
'xh',
'y '/)
1535 call file_history_set_associatedcoordinate(
'lat_uy',
'latitude (half level uy)',
'degrees_north', &
1536 axis_name(1:2), axis(1:imh,1:jm,1), start=start(:,2) )
1539 axis_name(1:2) = (/
'x ',
'yh'/)
1540 call file_history_set_associatedcoordinate(
'lat_xv',
'latitude (half level xv)',
'degrees_north', &
1541 axis_name(1:2), axis(1:im,1:jmh,1), start=start(:,3) )
1544 axis_name(1:2) = (/
'xh',
'yh'/)
1545 call file_history_set_associatedcoordinate(
'lat_uv',
'latitude (half level uv)',
'degrees_north', &
1546 axis_name(1:2), axis(1:imh,1:jmh,1), start=start(:,4) )
1548 axis_name(1:2) = (/
'x ',
'y '/)
1549 call file_history_set_associatedcoordinate(
'topo',
'topography',
'm', axis_name(1:2), &
1552 axis_name(1:2) = (/
'x ',
'y '/)
1553 call file_history_set_associatedcoordinate(
'lsmask',
'fraction for land-sea mask',
'1', axis_name(1:2), &
1556 axis_name(1:2) = (/
'x ',
'y '/)
1557 call file_history_set_associatedcoordinate(
'cell_area',
'area of grid cell',
'm2', axis_name(1:2), &
1558 area(ims:ime,jms:jme), start=start(:,1) )
1559 axis_name(1:2) = (/
'xh',
'y '/)
1560 call file_history_set_associatedcoordinate(
'cell_area_uy',
'area of grid cell (half level uy)',
'm2', axis_name(1:2), &
1561 areauy(imsh:ime,jms:jme), start=start(:,2) )
1562 axis_name(1:2) = (/
'x ',
'yh'/)
1563 call file_history_set_associatedcoordinate(
'cell_area_xv',
'area of grid cell (half level xv)',
'm2', axis_name(1:2), &
1564 areaxv(ims:ime,jmsh:jme), start=start(:,3) )
1566 do k = 1, file_history_cartesc_model_nlayer
1569 axis(i,j,k) = areazuy_x(
ks+k-1,imsh+i-1,jms+j-1)
1573 axis_name = (/
'xh',
'y ',
'z '/)
1574 call file_history_set_associatedcoordinate(
'cell_area_uyz_x',
'area of grid cell face (half level uyz, normal x)',
'm2', &
1575 axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1576 do k = 1, file_history_cartesc_model_nlayer
1579 axis(i,j,k) = areazxv_y(
ks+k-1,ims+i-1,jmsh+j-1)
1583 axis_name = (/
'x ',
'yh',
'z '/)
1584 call file_history_set_associatedcoordinate(
'cell_area_xvz_y',
'area of grid cell face (half level xvz, normal y)',
'm2', &
1585 axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1586 do k = 0, file_history_cartesc_model_nlayer
1589 axis(i,j,k) = areawuy_x(
ks+k-1,imsh+i-1,jmsh+j-1)
1593 axis_name = (/
'xh',
'y ',
'zh'/)
1594 call file_history_set_associatedcoordinate(
'cell_area_uyw_x',
'area of grid cell face (half level uyw, normal x)',
'm2', &
1595 axis_name(1:3), axis(1:imh,1:jm,0:), start=start(:,2) )
1596 do k = 0, file_history_cartesc_model_nlayer
1599 axis(i,j,k) = areawxv_y(
ks+k-1,ims+i-1,jmsh+j-1)
1603 axis_name = (/
'x ',
'yh',
'zh'/)
1604 call file_history_set_associatedcoordinate(
'cell_area_xvw_y',
'area of grid cell face (half level xvw, normal y)',
'm2', &
1605 axis_name(1:3), axis(1:im,1:jmh,0:), start=start(:,3) )
1606 do k = 1, file_history_cartesc_model_nlayer
1609 axis(i,j,k) = areazxy_x(
ks+k-1,ims+i-1,jms+j-1)
1613 axis_name = (/
'x ',
'y ',
'z '/)
1614 call file_history_set_associatedcoordinate(
'cell_area_xyz_x',
'area of grid cell face (half level xyz, normal x)',
'm2', &
1615 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1616 do k = 1, file_history_cartesc_model_nlayer
1619 axis(i,j,k) = areazuv_y(
ks+k-1,imsh+i-1,jmsh+j-1)
1623 axis_name = (/
'xh',
'yh',
'z '/)
1624 call file_history_set_associatedcoordinate(
'cell_area_uvz_y',
'area of grid cell face (half level uvz, normal y)',
'm2', &
1625 axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1626 do k = 1, file_history_cartesc_model_nlayer
1629 axis(i,j,k) = areazuv_x(
ks+k-1,imsh+i-1,jmsh+j-1)
1633 axis_name = (/
'xh',
'yh',
'z '/)
1634 call file_history_set_associatedcoordinate(
'cell_area_uvz_x',
'area of grid cell face (half level uvz, normal x)',
'm2', &
1635 axis_name(1:3), axis(1:imh,1:jmh,1:), start=start(:,4) )
1636 do k = 1, file_history_cartesc_model_nlayer
1639 axis(i,j,k) = areazxy_y(
ks+k-1,ims+i-1,jms+j-1)
1643 axis_name = (/
'x ',
'y ',
'z '/)
1644 call file_history_set_associatedcoordinate(
'cell_area_xyz_y',
'area of grid cell face (half level xyz, normal y)',
'm2', &
1645 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1647 do k = 1, file_history_cartesc_model_nlayer
1650 axis(i,j,k) = vol(
ks+k-1,ims+i-1,jms+j-1)
1654 axis_name = (/
'x ',
'y ',
'z '/)
1655 call file_history_set_associatedcoordinate(
'cell_volume',
'volume of grid cell',
'm3', &
1656 axis_name(1:3), axis(1:im,1:jm,1:), start=start(:,1) )
1657 do k = 0, file_history_cartesc_model_nlayer
1660 axis(i,j,k) = volwxy(
ks+k-1,ims+i-1,jms+j-1)
1664 axis_name = (/
'x ',
'y ',
'zh'/)
1665 call file_history_set_associatedcoordinate(
'cell_volume_xyw',
'volume of grid cell (half level xyw)',
'm3', &
1666 axis_name(1:3), axis(1:im,1:jm,0:), start=start(:,1) )
1667 do k = 1, file_history_cartesc_model_nlayer
1670 axis(i,j,k) = volzuy(
ks+k-1,imsh+i-1,jms+j-1)
1674 axis_name = (/
'xh',
'y ',
'z '/)
1675 call file_history_set_associatedcoordinate(
'cell_volume_uyz',
'volume of grid cell (half level uyz)',
'm3', &
1676 axis_name(1:3), axis(1:imh,1:jm,1:), start=start(:,2) )
1677 do k = 1, file_history_cartesc_model_nlayer
1680 axis(i,j,k) = volzxv(
ks+k-1,ims+i-1,jmsh+j-1)
1684 axis_name = (/
'x ',
'yh',
'z '/)
1685 call file_history_set_associatedcoordinate(
'cell_volume_xvz',
'volume of grid cell (half level xvz)',
'm3', &
1686 axis_name(1:3), axis(1:im,1:jmh,1:), start=start(:,3) )
1688 if ( okmax > 0 )
then
1692 axiso(i,j,k) = volo(
oks+k-1,ims+i-1,jms+j-1)
1696 axis_name = (/
'x ',
'y ',
'oz'/)
1697 call file_history_set_associatedcoordinate(
'cell_volume_xyo',
'volume of grid cell',
'm3', &
1698 axis_name(1:3), axiso(:,:,:), start=start(:,1) )
1701 if ( lkmax > 0 )
then
1705 axisl(i,j,k) = voll(
lks+k-1,ims+i-1,jms+j-1)
1709 axis_name = (/
'x ',
'y ',
'lz'/)
1710 call file_history_set_associatedcoordinate(
'cell_volume_xyl',
'volume of grid cell',
'm3', &
1711 axis_name(1:3), axisl(:,:,:), start=start(:,1) )
1714 if ( ukmax > 0 )
then
1718 axisu(i,j,k) = volu(
uks+k-1,ims+i-1,jms+j-1)
1722 axis_name = (/
'x ',
'y ',
'uz'/)
1723 call file_history_set_associatedcoordinate(
'cell_volume_xyu',
'volume of grid cell',
'm3', &
1724 axis_name(1:3), axisu(:,:,:), start=start(:,1) )
1728 end subroutine file_history_cartesc_set_axes
1731 subroutine file_history_cartesc_set_axes_attributes
1738 file_history_set_attribute
1761 character(len=34) :: tunits
1762 character(len=H_SHORT) :: calendar
1767 call file_history_set_attribute(
"global",
"Conventions",
"CF-1.6" )
1772 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_x", (/0/) )
1773 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_y", (/0/) )
1775 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_x", (/1/) )
1776 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_y", (/1/) )
1778 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_x", (/
prc_2drank(
prc_myrank,1)/) )
1779 call file_history_set_attribute(
"global",
"scale_cartesC_prc_rank_y", (/
prc_2drank(
prc_myrank,2)/) )
1781 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_x", (/
prc_num_x/) )
1782 call file_history_set_attribute(
"global",
"scale_cartesC_prc_num_y", (/
prc_num_y/) )
1785 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_z", .false. )
1786 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_x",
prc_periodic_x )
1787 call file_history_set_attribute(
"global",
"scale_cartesC_prc_periodic_y",
prc_periodic_y )
1789 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_imaxg", (/
imaxg/) )
1790 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_jmaxg", (/
jmaxg/) )
1792 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_kmax", (/
kmax/) )
1793 if (
okmax > 0 )
call file_history_set_attribute(
"global",
"scale_ocean_grid_cartesC_index_kmax", (/
okmax/) )
1794 if (
lkmax > 0 )
call file_history_set_attribute(
"global",
"scale_land_grid_cartesC_index_kmax", (/
lkmax/) )
1795 if (
ukmax > 0 )
call file_history_set_attribute(
"global",
"scale_urban_grid_cartesC_index_kmax", (/
ukmax/) )
1797 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_khalo", (/
khalo/) )
1798 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_ihalo", (/
ihalo/) )
1799 call file_history_set_attribute(
"global",
"scale_atmos_grid_cartesC_index_jhalo", (/
jhalo/) )
1802 if ( calendar /=
"" )
call file_history_set_attribute(
"global",
"calendar", calendar )
1804 call file_history_set_attribute(
"global",
"time_units", tunits )
1805 call file_history_set_attribute(
"global",
"time_start", (/file_history_cartesc_startsubsec/) )
1808 ainfo(1)%periodic = .true.
1809 ainfo(2)%periodic = .true.
1811 ainfo(1)%periodic = .false.
1812 ainfo(2)%periodic = .false.
1816 ainfo(3)%periodic = .true.
1817 ainfo(4)%periodic = .true.
1819 ainfo(3)%periodic = .false.
1820 ainfo(4)%periodic = .false.
1824 if (
prc_periodic_x .OR. .NOT. file_history_cartesc_boundary )
then
1827 ainfo(1)%halo_global (1) = 0
1828 ainfo(1)%halo_global (2) = 0
1829 ainfo(1)%halo_local (1) = 0
1830 ainfo(1)%halo_local (2) = 0
1832 ainfo(1)%size_global (1) =
iag
1833 ainfo(1)%start_global(1) =
isga
1834 ainfo(1)%halo_global (1) =
ihalo
1835 ainfo(1)%halo_global (2) =
ihalo
1836 ainfo(1)%halo_local (1) =
ihalo
1837 ainfo(1)%halo_local (2) =
ihalo
1839 if(
prc_has_w ) ainfo(1)%halo_local(1) = 0
1840 if(
prc_has_e ) ainfo(1)%halo_local(2) = 0
1846 if ( .NOT.
prc_periodic_x .AND. .NOT. file_history_cartesc_boundary )
then
1847 ainfo(2)%size_global (1) = ainfo(2)%size_global (1) + 1
1848 ainfo(2)%halo_global (1) = ainfo(2)%halo_global (1) + 1
1850 ainfo(2)%start_global(1) = ainfo(2)%start_global(1) + 1
1852 ainfo(2)%halo_local (1) = ainfo(2)%halo_local (1) + 1
1857 if (
prc_periodic_y .OR. .NOT. file_history_cartesc_boundary )
then
1860 ainfo(3)%halo_global (1) = 0
1861 ainfo(3)%halo_global (2) = 0
1862 ainfo(3)%halo_local (1) = 0
1863 ainfo(3)%halo_local (2) = 0
1865 ainfo(3)%size_global (1) =
jag
1866 ainfo(3)%start_global(1) =
jsga
1867 ainfo(3)%halo_global (1) =
jhalo
1868 ainfo(3)%halo_global (2) =
jhalo
1869 ainfo(3)%halo_local (1) =
jhalo
1870 ainfo(3)%halo_local (2) =
jhalo
1872 if(
prc_has_s ) ainfo(3)%halo_local(1) = 0
1873 if(
prc_has_n ) ainfo(3)%halo_local(2) = 0
1879 if ( .NOT.
prc_periodic_y .AND. .NOT. file_history_cartesc_boundary )
then
1880 ainfo(4)%size_global (1) = ainfo(4)%size_global (1) + 1
1881 ainfo(4)%halo_global (1) = ainfo(4)%halo_global (1) + 1
1883 ainfo(4)%start_global(1) = ainfo(4)%start_global(1) + 1
1885 ainfo(4)%halo_local (1) = ainfo(4)%halo_local (1) + 1
1890 ainfo(1)%start_global(1) = 1
1891 ainfo(2)%start_global(1) = 1
1892 ainfo(3)%start_global(1) = 1
1893 ainfo(4)%start_global(1) = 1
1896 call file_history_set_attribute(
"x" ,
"size_global" , ainfo(1)%size_global (:) )
1897 call file_history_set_attribute(
"x" ,
"start_global", ainfo(1)%start_global(:) )
1898 call file_history_set_attribute(
"x" ,
"halo_global" , ainfo(1)%halo_global (:) )
1899 call file_history_set_attribute(
"x" ,
"halo_local" , ainfo(1)%halo_local (:) )
1900 call file_history_set_attribute(
"x" ,
"periodic" , ainfo(1)%periodic )
1902 call file_history_set_attribute(
"xh",
"size_global" , ainfo(2)%size_global (:) )
1903 call file_history_set_attribute(
"xh",
"start_global", ainfo(2)%start_global(:) )
1904 call file_history_set_attribute(
"xh",
"halo_global" , ainfo(2)%halo_global (:) )
1905 call file_history_set_attribute(
"xh",
"halo_local" , ainfo(2)%halo_local (:) )
1906 call file_history_set_attribute(
"xh",
"periodic" , ainfo(2)%periodic )
1908 call file_history_set_attribute(
"y" ,
"size_global" , ainfo(3)%size_global (:) )
1909 call file_history_set_attribute(
"y" ,
"start_global", ainfo(3)%start_global(:) )
1910 call file_history_set_attribute(
"y" ,
"halo_global" , ainfo(3)%halo_global (:) )
1911 call file_history_set_attribute(
"y" ,
"halo_local" , ainfo(3)%halo_local (:) )
1912 call file_history_set_attribute(
"y" ,
"periodic" , ainfo(3)%periodic )
1914 call file_history_set_attribute(
"yh",
"size_global" , ainfo(4)%size_global (:) )
1915 call file_history_set_attribute(
"yh",
"start_global", ainfo(4)%start_global(:) )
1916 call file_history_set_attribute(
"yh",
"halo_global" , ainfo(4)%halo_global (:) )
1917 call file_history_set_attribute(
"yh",
"halo_local" , ainfo(4)%halo_local (:) )
1918 call file_history_set_attribute(
"yh",
"periodic" , ainfo(4)%periodic )
1922 if ( minfo%mapping_name /=
"" )
then
1923 call file_history_set_attribute(
"x" ,
"standard_name",
"projection_x_coordinate" )
1924 call file_history_set_attribute(
"xh",
"standard_name",
"projection_x_coordinate" )
1925 call file_history_set_attribute(
"y" ,
"standard_name",
"projection_y_coordinate" )
1926 call file_history_set_attribute(
"yh",
"standard_name",
"projection_y_coordinate" )
1928 call file_history_set_attribute( minfo%mapping_name,
"grid_mapping_name", minfo%mapping_name, add_variable=.true. )
1930 if ( minfo%false_easting /= undef )
then
1931 call file_history_set_attribute( minfo%mapping_name, &
1933 minfo%false_easting )
1936 if ( minfo%false_northing /= undef )
then
1937 call file_history_set_attribute( minfo%mapping_name, &
1939 minfo%false_northing )
1942 if ( minfo%longitude_of_central_meridian /= undef )
then
1943 call file_history_set_attribute( minfo%mapping_name, &
1944 "longitude_of_central_meridian", &
1945 minfo%longitude_of_central_meridian )
1948 if ( minfo%longitude_of_projection_origin /= undef )
then
1949 call file_history_set_attribute( minfo%mapping_name, &
1950 "longitude_of_projection_origin", &
1951 minfo%longitude_of_projection_origin )
1954 if ( minfo%latitude_of_projection_origin /= undef )
then
1955 call file_history_set_attribute( minfo%mapping_name, &
1956 "latitude_of_projection_origin", &
1957 minfo%latitude_of_projection_origin )
1960 if ( minfo%straight_vertical_longitude_from_pole /= undef )
then
1961 call file_history_set_attribute( minfo%mapping_name, &
1962 "straight_vertical_longitude_from_pole", &
1963 minfo%straight_vertical_longitude_from_pole )
1966 if ( minfo%standard_parallel(1) /= undef )
then
1967 if ( minfo%standard_parallel(2) /= undef )
then
1968 call file_history_set_attribute( minfo%mapping_name, &
1969 "standard_parallel", &
1970 minfo%standard_parallel(:) )
1972 call file_history_set_attribute( minfo%mapping_name, &
1973 "standard_parallel", &
1974 minfo%standard_parallel(1) )
1978 if ( minfo%rotation /= undef )
then
1979 call file_history_set_attribute( minfo%mapping_name, &
1987 call file_history_set_attribute(
"cell_area",
"standard_name",
"area" )
1988 call file_history_set_attribute(
"cell_area_uy",
"standard_name",
"area" )
1989 call file_history_set_attribute(
"cell_area_xv",
"standard_name",
"area" )
1991 call file_history_set_attribute(
"cell_area_uyz_x",
"standard_name",
"area" )
1992 call file_history_set_attribute(
"cell_area_xvz_y",
"standard_name",
"area" )
1993 call file_history_set_attribute(
"cell_area_uyw_x",
"standard_name",
"area" )
1994 call file_history_set_attribute(
"cell_area_xvw_y",
"standard_name",
"area" )
1995 call file_history_set_attribute(
"cell_area_xyz_x",
"standard_name",
"area" )
1996 call file_history_set_attribute(
"cell_area_uvz_y",
"standard_name",
"area" )
1997 call file_history_set_attribute(
"cell_area_uvz_x",
"standard_name",
"area" )
1998 call file_history_set_attribute(
"cell_area_xyz_y",
"standard_name",
"area" )
2000 call file_history_set_attribute(
"cell_volume",
"standard_name",
"volume" )
2001 call file_history_set_attribute(
"cell_volume_xyw",
"standard_name",
"volume" )
2002 call file_history_set_attribute(
"cell_volume_uyz",
"standard_name",
"volume" )
2003 call file_history_set_attribute(
"cell_volume_xvz",
"standard_name",
"volume" )
2005 if (
okmax > 0 )
then
2006 call file_history_set_attribute(
"cell_volume_xyo",
"standard_name",
"volume" )
2008 if (
lkmax > 0 )
then
2009 call file_history_set_attribute(
"cell_volume_xyl",
"standard_name",
"volume" )
2011 if (
ukmax > 0 )
then
2012 call file_history_set_attribute(
"cell_volume_xyu",
"standard_name",
"volume" )
2016 call file_history_set_attribute(
"grid",
"cf_role",
"grid_topology", add_variable=.true. )
2017 call file_history_set_attribute(
"grid",
"topology_dimension", (/ 2 /) )
2018 call file_history_set_attribute(
"grid",
"node_dimensions",
"xh yh" )
2019 call file_history_set_attribute(
"grid",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2020 call file_history_set_attribute(
"grid",
"node_coordinates",
"lon_uv lat_uv" )
2021 call file_history_set_attribute(
"grid",
"face_coordinates",
"lon lat" )
2022 call file_history_set_attribute(
"grid",
"edge1_coordinates",
"lon_uy lat_uy" )
2023 call file_history_set_attribute(
"grid",
"edge2_coordinates",
"lon_xv lat_xv" )
2024 call file_history_set_attribute(
"grid",
"vertical_dimensions",
"z: zh (padding: none)" )
2026 call file_history_set_attribute(
"grid_ocean",
"cf_role",
"grid_topology", add_variable=.true. )
2027 call file_history_set_attribute(
"grid_ocean",
"topology_dimension", (/ 2 /) )
2028 call file_history_set_attribute(
"grid_ocean",
"node_dimensions",
"xh yh" )
2029 call file_history_set_attribute(
"grid_ocean",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2030 call file_history_set_attribute(
"grid_ocean",
"node_coordinates",
"lon_uv lat_uv" )
2031 call file_history_set_attribute(
"grid_ocean",
"face_coordinates",
"lon lat" )
2032 call file_history_set_attribute(
"grid_ocean",
"edge1_coordinates",
"lon_uy lat_uy" )
2033 call file_history_set_attribute(
"grid_ocean",
"edge2_coordinates",
"lon_xv lat_xv" )
2034 call file_history_set_attribute(
"grid_ocean",
"vertical_dimensions",
"oz: ozh (padding: none)" )
2036 call file_history_set_attribute(
"grid_land",
"cf_role",
"grid_topology", add_variable=.true. )
2037 call file_history_set_attribute(
"grid_land",
"topology_dimension", (/ 2 /) )
2038 call file_history_set_attribute(
"grid_land",
"node_dimensions",
"xh yh" )
2039 call file_history_set_attribute(
"grid_land",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2040 call file_history_set_attribute(
"grid_land",
"node_coordinates",
"lon_uv lat_uv" )
2041 call file_history_set_attribute(
"grid_land",
"face_coordinates",
"lon lat" )
2042 call file_history_set_attribute(
"grid_land",
"edge1_coordinates",
"lon_uy lat_uy" )
2043 call file_history_set_attribute(
"grid_land",
"edge2_coordinates",
"lon_xv lat_xv" )
2044 call file_history_set_attribute(
"grid_land",
"vertical_dimensions",
"lz: lzh (padding: none)" )
2046 call file_history_set_attribute(
"grid_urban",
"cf_role",
"grid_topology", add_variable=.true. )
2047 call file_history_set_attribute(
"grid_urban",
"topology_dimension", (/ 2 /) )
2048 call file_history_set_attribute(
"grid_urban",
"node_dimensions",
"xh yh" )
2049 call file_history_set_attribute(
"grid_urban",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2050 call file_history_set_attribute(
"grid_urban",
"node_coordinates",
"lon_uv lat_uv" )
2051 call file_history_set_attribute(
"grid_urban",
"face_coordinates",
"lon lat" )
2052 call file_history_set_attribute(
"grid_urban",
"edge1_coordinates",
"lon_uy lat_uy" )
2053 call file_history_set_attribute(
"grid_urban",
"edge2_coordinates",
"lon_xv lat_xv" )
2054 call file_history_set_attribute(
"grid_urban",
"vertical_dimensions",
"uz: uzh (padding: none)" )
2056 call file_history_set_attribute(
"grid_pressure",
"cf_role",
"grid_topology", add_variable=.true. )
2057 call file_history_set_attribute(
"grid_pressure",
"topology_dimension", (/ 2 /) )
2058 call file_history_set_attribute(
"grid_pressure",
"node_dimensions",
"xh yh" )
2059 call file_history_set_attribute(
"grid_pressure",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2060 call file_history_set_attribute(
"grid_pressure",
"node_coordinates",
"lon_uv lat_uv" )
2061 call file_history_set_attribute(
"grid_pressure",
"face_coordinates",
"lon lat" )
2062 call file_history_set_attribute(
"grid_pressure",
"edge1_coordinates",
"lon_uy lat_uy" )
2063 call file_history_set_attribute(
"grid_pressure",
"edge2_coordinates",
"lon_xv lat_xv" )
2064 call file_history_set_attribute(
"grid_pressure",
"vertical_dimensions",
"pressure" )
2066 call file_history_set_attribute(
"grid_z",
"cf_role",
"grid_topology", add_variable=.true. )
2067 call file_history_set_attribute(
"grid_z",
"topology_dimension", (/ 2 /) )
2068 call file_history_set_attribute(
"grid_z",
"node_dimensions",
"xh yh" )
2069 call file_history_set_attribute(
"grid_z",
"face_dimensions",
"x: xh (padding: none) y: yh (padding: none)" )
2070 call file_history_set_attribute(
"grid_z",
"node_coordinates",
"lon_uv lat_uv" )
2071 call file_history_set_attribute(
"grid_z",
"face_coordinates",
"lon lat" )
2072 call file_history_set_attribute(
"grid_z",
"edge1_coordinates",
"lon_uy lat_uy" )
2073 call file_history_set_attribute(
"grid_z",
"edge2_coordinates",
"lon_xv lat_xv" )
2074 call file_history_set_attribute(
"grid_z",
"vertical_dimensions",
"height_xyw: height (padding: none)" )
2076 call file_history_set_attribute(
"grid_model",
"cf_role",
"grid_topology", add_variable=.true. )
2077 call file_history_set_attribute(
"grid_model",
"topology_dimension", (/ 2 /) )
2078 call file_history_set_attribute(
"grid_model",
"node_dimensions",
"FX FY" )
2079 call file_history_set_attribute(
"grid_model",
"face_dimensions",
"CX: FY (padding: none) CY: FY (padding: none)" )
2080 call file_history_set_attribute(
"grid_model",
"vertical_dimensions",
"CZ: FZ (padding: none)" )
2082 call file_history_set_attribute(
"grid_model_global",
"cf_role",
"grid_topology", add_variable=.true. )
2083 call file_history_set_attribute(
"grid_model_global",
"topology_dimension", (/ 2 /) )
2084 call file_history_set_attribute(
"grid_model_global",
"node_dimensions",
"FXG FYG" )
2085 call file_history_set_attribute(
"grid_model_global",
"face_dimensions",
"CXG: FYG (padding: none) CYG: FYG (padding: none)" )
2086 call file_history_set_attribute(
"grid_model_global",
"vertical_dimensions",
"CZ: FZ (padding: none)" )
2089 end subroutine file_history_cartesc_set_axes_attributes