Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions driver/fvGFS/fv_ufs_restart_io.F90
Original file line number Diff line number Diff line change
Expand Up @@ -435,7 +435,7 @@ subroutine add_zaxis_to_field(field, axis_name, num_levels)
character(len=*), intent(in) :: axis_name
integer, intent(in) :: num_levels

real(8), allocatable, dimension(:) :: buffer
real, allocatable, dimension(:) :: buffer
integer :: rc, i

call ESMF_AttributeAdd(field, convention="NetCDF", purpose="FV3", &
Expand Down Expand Up @@ -485,6 +485,12 @@ subroutine write_ak_bk(Atm, timestamp)
character(len=8), dimension(2) :: dim_names_2d
integer :: j

#ifdef OVERLOAD_R4
character(len=5), parameter :: axis_type = 'float'
#else
character(len=6), parameter :: axis_type = 'double'
#endif

dim_names_2d(1) = "xaxis_1"
dim_names_2d(2) = "Time"

Expand All @@ -501,7 +507,7 @@ subroutine write_ak_bk(Atm, timestamp)

call register_axis(Fv_restart, "xaxis_1", size(Atm%ak(:), 1))
call register_axis(Fv_restart, "Time", unlimited)
call register_field(Fv_restart, "xaxis_1", "double", (/"xaxis_1"/))
call register_field(Fv_restart, "xaxis_1", axis_type, (/"xaxis_1"/))
call register_variable_attribute(Fv_restart,"xaxis_1", "axis", "X", str_len=1)
if (allocated(buffer)) deallocate(buffer)
allocate(buffer(size(Atm%ak(:), 1)))
Expand All @@ -510,7 +516,7 @@ subroutine write_ak_bk(Atm, timestamp)
end do
call write_data(Fv_restart, "xaxis_1", buffer)
deallocate(buffer)
call register_field(Fv_restart, "Time", "double", (/"Time"/))
call register_field(Fv_restart, "Time", axis_type, (/"Time"/))
call register_variable_attribute(Fv_restart, dim_names_2d(2), "cartesian_axis", "T", str_len=1)
call register_variable_attribute(Fv_restart, dim_names_2d(2), "units", "time level", str_len=len("time level"))
call register_variable_attribute(Fv_restart, dim_names_2d(2), "long_name", dim_names_2d(2), str_len=len(dim_names_2d(2)))
Expand Down
18 changes: 12 additions & 6 deletions tools/fv_io.F90
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,12 @@ module fv_io_mod
integer ::grid_xtdimid, grid_ytdimid, haloid, pfullid !For writing BCs
integer ::grid_xtstagdimid, grid_ytstagdimid, oneid

#ifdef OVERLOAD_R4
character(len=5), parameter :: axis_type = 'float'
#else
character(len=6), parameter :: axis_type = 'double'
#endif

contains


Expand Down Expand Up @@ -163,7 +169,7 @@ subroutine fv_io_register_axis(file_obj, numx, xpos, numy, ypos, numz, zsize)
axisname = 'xaxis_'//suffix
call register_axis(file_obj, axisname, 'X', domain_position=xpos(i))
if (.not. file_obj%is_readonly) then !if writing file
call register_field(file_obj, axisname, "double", (/axisname/))
call register_field(file_obj, axisname, axis_type, (/axisname/))
call register_variable_attribute(file_obj,axisname, "axis", "X", str_len=1)
call get_global_io_domain_indices(file_obj, axisname, is, ie, buffer)
call write_data(file_obj, axisname, buffer)
Expand All @@ -177,7 +183,7 @@ subroutine fv_io_register_axis(file_obj, numx, xpos, numy, ypos, numz, zsize)
axisname = 'yaxis_'//suffix
call register_axis(file_obj, axisname, 'Y', domain_position=ypos(i))
if (.not. file_obj%is_readonly) then !if writing file
call register_field(file_obj, axisname, "double", (/axisname/))
call register_field(file_obj, axisname, axis_type, (/axisname/))
call register_variable_attribute(file_obj,axisname, "axis", "Y", str_len=1)
call get_global_io_domain_indices(file_obj, axisname, is, ie, buffer)
call write_data(file_obj, axisname, buffer)
Expand All @@ -191,7 +197,7 @@ subroutine fv_io_register_axis(file_obj, numx, xpos, numy, ypos, numz, zsize)
axisname = 'zaxis_'//suffix
call register_axis(file_obj, axisname, zsize(i))
if (.not. file_obj%is_readonly) then !if writing file
call register_field(file_obj, axisname, "double", (/axisname/))
call register_field(file_obj, axisname, axis_type, (/axisname/))
call register_variable_attribute(file_obj,axisname, "axis", "Z", str_len=1)
if (allocated(buffer)) deallocate(buffer)
allocate(buffer(zsize(i)))
Expand All @@ -206,7 +212,7 @@ subroutine fv_io_register_axis(file_obj, numx, xpos, numy, ypos, numz, zsize)

call register_axis(file_obj, "Time", unlimited)
if (.not. file_obj%is_readonly) then !if writing file
call register_field(file_obj, "Time", "double", (/"Time"/))
call register_field(file_obj, "Time", axis_type, (/"Time"/))
call register_variable_attribute(file_obj, "Time", "cartesian_axis", "T", str_len=1)
call register_variable_attribute(file_obj, "Time", "units", "time level", &
str_len=len("time level"))
Expand Down Expand Up @@ -307,7 +313,7 @@ subroutine fv_io_register_restart(Atm)
call register_axis(Atm%Fv_restart, "xaxis_1", size(Atm%ak(:), 1))
call register_axis(Atm%Fv_restart, "Time", unlimited)
if (.not. Atm%Fv_restart%is_readonly) then !if writing file
call register_field(Atm%Fv_restart, "xaxis_1", "double", (/"xaxis_1"/))
call register_field(Atm%Fv_restart, "xaxis_1", axis_type, (/"xaxis_1"/))
call register_variable_attribute(Atm%Fv_restart,"xaxis_1", "axis", "X", str_len=1)
if (allocated(buffer)) deallocate(buffer)
allocate(buffer(size(Atm%ak(:), 1)))
Expand All @@ -316,7 +322,7 @@ subroutine fv_io_register_restart(Atm)
end do
call write_data(Atm%Fv_restart, "xaxis_1", buffer)
deallocate(buffer)
call register_field(Atm%Fv_restart, "Time", "double", (/"Time"/))
call register_field(Atm%Fv_restart, "Time", axis_type, (/"Time"/))
call register_variable_attribute(Atm%Fv_restart, dim_names_2d(2), "cartesian_axis", "T", str_len=1)
call register_variable_attribute(Atm%Fv_restart, dim_names_2d(2), "units", "time level", str_len=len("time level"))
call register_variable_attribute(Atm%Fv_restart, dim_names_2d(2), "long_name", dim_names_2d(2), str_len=len(dim_names_2d(2)))
Expand Down