diff --git a/io/module_fv3_io_def.F90 b/io/module_fv3_io_def.F90 index dfef37500..ce600d8e1 100644 --- a/io/module_fv3_io_def.F90 +++ b/io/module_fv3_io_def.F90 @@ -1,36 +1,126 @@ +!> @file +!> @brief fv3 I/O related configration variables. +!> @author Jun Wang @date 01/2017 + +!> @brief fv3 I/O related configration variables. +!> +!> @author Jun Wang @date 01/2017 module module_fv3_io_def -! -!*** fv3 io related configration variables -! -! revision history -! 01/2017 Jun Wang Initial code -! -!------------------------------------------------------------------------ -! use esmf, only : esmf_maxstr implicit none + !> Number of processors used in the forecast grid component integer :: num_pes_fcst - integer :: wrttasks_per_group, write_groups - integer :: n_group - integer :: num_files - integer :: nbdlphys - integer :: iau_offset - logical :: lflname_fulltime - logical :: time_unlimited - - character(len=esmf_maxstr),dimension(:),allocatable :: filename_base - character(len=esmf_maxstr),dimension(:),allocatable :: output_file - - integer,dimension(:),allocatable :: lead_wrttask, last_wrttask - - character(len=esmf_maxstr),dimension(:),allocatable :: output_grid - integer,dimension(:),allocatable :: imo,jmo - real,dimension(:),allocatable :: cen_lon, cen_lat - real,dimension(:),allocatable :: lon1, lat1, lon2, lat2, dlon, dlat - real,dimension(:),allocatable :: stdlat1, stdlat2, dx, dy - integer,dimension(:),allocatable :: ideflate, quantize_nsd, zstandard_level + + !> Number of write tasks per write group. + integer :: wrttasks_per_group + + !> Number of the write groups + integer :: write_groups + + !> Current write group + integer :: n_group + + !> Number of history files + integer :: num_files + + !> Number of the ESMF field bundles for physics fields + integer :: nbdlphys + + !> IAU running window length + integer :: iau_offset + + !> Logical variable to decide if full time (HH.MM.SS) is used in the history + !! file names + logical :: lflname_fulltime + + !> Logical variable to decide if unlimited time dimension is used + logical :: time_unlimited + + + !> Base names for model history output files + character(len=esmf_maxstr),dimension(:),allocatable :: filename_base + + !> Output file format + character(len=esmf_maxstr),dimension(:),allocatable :: output_file + + + !> The first write task in a write group + integer,dimension(:),allocatable :: lead_wrttask + + !> The last write task in a write group + integer,dimension(:),allocatable :: last_wrttask + + !> Output grid type, e.g. "gaussian_grid" + character(len=esmf_maxstr),dimension(:),allocatable :: output_grid + + !> The i-dimension in the output grid + integer,dimension(:),allocatable :: imo + + !> The j-dimension in the output grid + integer,dimension(:),allocatable :: jmo + + !> Longitude of the center point in the output grid + real,dimension(:),allocatable :: cen_lon + + !> Latitude of the center pointer in the output grid + real,dimension(:),allocatable :: cen_lat + + !> Longitude of the first grid point in the output grid + real,dimension(:),allocatable :: lon1 + + !> Latitude of the first pointer in the output grid + real,dimension(:),allocatable :: lat1 + + !> Longitude of the last grid point in the output grid + real,dimension(:),allocatable :: lon2 + + !> Latitude of the last pointer in the output grid + real,dimension(:),allocatable :: lat2 + + !> Longitude increment + real,dimension(:),allocatable :: dlon + + !> Latitude increment + real,dimension(:),allocatable :: dlat + + !> The first latitude from the pole at which the secant cone cuts the sphere + real,dimension(:),allocatable :: stdlat1 + + !> The second latitude from the pole at which the secant cone cuts the sphere + real,dimension(:),allocatable :: stdlat2 + + !> x-direction grid length + real,dimension(:),allocatable :: dx + + !> y-direction grid length + real,dimension(:),allocatable :: dy + + !> Deflate level to use, 0 means no deflate. + integer,dimension(:),allocatable :: ideflate + + !> Number of significant digits for lossy compression. + integer,dimension(:),allocatable :: quantize_nsd + + !> Zstandard compression level, 0 means no zstandard compression. + integer,dimension(:),allocatable :: zstandard_level + + !> Quantize mode to use for lossy compression. character(len=esmf_maxstr),dimension(:),allocatable :: quantize_mode - integer,dimension(:),allocatable :: ichunk2d, jchunk2d, ichunk3d, jchunk3d, kchunk3d + + !> Chunk size in i dimension for 2D data. + integer,dimension(:),allocatable :: ichunk2d + + !> Chunk size in j dimension for 2D data. + integer,dimension(:),allocatable :: jchunk2d + + !> Chunk size in i dimension for 3D data. + integer,dimension(:),allocatable :: ichunk3d + + !> Chunk size in j dimension for 3D data. + integer,dimension(:),allocatable :: jchunk3d + + !> Chunk size in k dimension for 3D data. + integer,dimension(:),allocatable :: kchunk3d end module module_fv3_io_def diff --git a/module_fv3_config.F90 b/module_fv3_config.F90 index 7e82c8e24..9733fa8fc 100644 --- a/module_fv3_config.F90 +++ b/module_fv3_config.F90 @@ -1,28 +1,48 @@ +!> @file +!> @brief fv3 configure variables from model_configure. +!> @author Jun Wang @date 01/2017 +!> @brief fv3 configure variables from model_configure. +!> +!> @author Jun Wang @date 01/2017 module module_fv3_config -!------------------------------------------------------------------------ -! -!*** fv3 configure variables from model_configure -! -! revision history -! 01/2017 Jun Wang Initial code -! -!------------------------------------------------------------------------ -! use esmf implicit none -! + + + !> Atmosphere time step in seconds integer :: dt_atmos + + !> The first integration step integer :: first_kdt - integer :: fcst_mpi_comm, fcst_ntasks -! + + !> MPI communicator for the forecast grid component + integer :: fcst_mpi_comm + + !> Total number of mpi tasks for the forecast grid components + integer :: fcst_ntasks + + + !> ID number for the coupled grids integer :: cpl_grid_id + + !> Flag to decide if model writes out coupled diagnostic fields logical :: cplprint_flag - logical :: quilting, quilting_restart -! + + !> Flag to decide if write grid components is used + logical :: quilting + + !> Flag to decide if write grid component writes out restart files + logical :: quilting_restart + + + !> Output frequency if this array has only two elements and the value of + !! the second eletment is -1. Otherwise, it is the specific output forecast + !! hours real,dimension(:),allocatable :: output_fh - character(esmf_maxstr),dimension(:),allocatable :: filename_base + + !> Calendar type character(17) :: calendar=' ' -! + end module module_fv3_config