next up previous contents
Next: check_dim Up: Routine/Function Prologues Previous: Fortran: Module Interface nanMod   Contents

Fortran: Module Interface ncdioMod (Source File: ncdio.F90)

Generic interfaces to write fields to netcdf files


USES:

   use shr_kind_mod   , only : r8 => shr_kind_r8
   use spmdMod        , only : masterproc, mpicom, MPI_REAL8, MPI_INTEGER, &
                               MPI_LOGICAL
   use clmtype        , only : gratm, grlnd, nameg, namel, namec, namep, allrof
   use clm_varcon     , only : spval,ispval
   use shr_sys_mod    , only : shr_sys_flush
   use abortutils     , only : endrun
   use clm_varctl     , only : single_column
   use clm_varctl     , only : iulog
   use clm_varctl     , only : ncd_lowmem2d, ncd_pio_def
   use clm_varctl     , only : ncd_pio_UseRearranger, ncd_pio_useBoxRearr
   use clm_varctl     , only : ncd_pio_SerialCDF, ncd_pio_IODOF_rootonly
   use clm_varctl     , only : ncd_pio_DebugLevel, ncd_pio_num_iotasks
   use clm_mct_mod
   use spmdGathScatMod
   use decompMod      , only : get_clmlevel_gsize,get_clmlevel_dsize
   use perf_mod       , only : t_startf, t_stopf
 #if (defined BUILDPIO)
   use piolib_mod     ! _EXTERNAL
   use pio_types      ! _EXTERNAL
   use pio_kinds      , only : pio_offset
 #endif
PUBLIC TYPES:
   implicit none
   include 'netcdf.inc'
   save
PUBLIC MEMBER FUNCTIONS:
   public :: check_ret   ! checks return status of netcdf calls
 #if (defined BUILDPIO)
   public :: check_ret_pio   ! checks return status of pio calls
 #endif
   public :: check_var   ! determine if variable is on netcdf file
   public :: check_dim   ! validity check on dimension
   public :: ncd_open    ! open file
   public :: ncd_close   ! close file
   public :: ncd_redef   ! enter define mode
   public :: ncd_enddef  ! end define mode
   public :: ncd_setfill ! set file value
   public :: ncd_putatt  ! put attribute
   public :: ncd_defdim  ! define dimension
   public :: ncd_inqdid  ! inquire dimension id
   public :: ncd_inqdname ! inquire dimension name
   public :: ncd_inqdlen ! inquire dimension length
   public :: ncd_defvar  ! define variables
   public :: ncd_inqvid  ! inquire variable id
   public :: ncd_inqvname ! inquire variable name
   public :: ncd_inqvdims ! inquire variable ndims
   public :: ncd_inqvdids ! inquire variable dimids
   public :: ncd_iolocal ! write local data
   public :: ncd_ioglobal! write global data
 
   integer,parameter,public :: ncd_int       = nf_int
   integer,parameter,public :: ncd_float     = nf_float
   integer,parameter,public :: ncd_double    = nf_double
   integer,parameter,public :: ncd_char      = nf_char
   integer,parameter,public :: ncd_global    = nf_global
   integer,parameter,public :: ncd_write     = nf_write
   integer,parameter,public :: ncd_nowrite   = nf_nowrite
   integer,parameter,public :: ncd_clobber   = nf_clobber
   integer,parameter,public :: ncd_noclobber = nf_noclobber
   integer,parameter,public :: ncd_share     = nf_share
   integer,parameter,public :: ncd_fill      = nf_fill
   integer,parameter,public :: ncd_nofill    = nf_nofill
   integer,parameter,public :: ncd_unlimited = nf_unlimited
REVISION HISTORY:
PRIVATE MEMBER FUNCTIONS:
   interface ncd_putatt
      module procedure ncd_putatt_int
      module procedure ncd_putatt_real
      module procedure ncd_putatt_char
   end interface
   interface ncd_defvar
      module procedure ncd_defvar_bynf
      module procedure ncd_defvar_bygrid
   end interface
   interface ncd_iolocal
      module procedure ncd_iolocal_int_1d
      module procedure ncd_iolocal_real_1d
      module procedure ncd_iolocal_int_2d
      module procedure ncd_iolocal_real_2d
      module procedure ncd_iolocal_gs_real1d
      module procedure ncd_iolocal_gs_int1d
   end interface
   interface ncd_ioglobal
      module procedure ncd_ioglobal_int_var
      module procedure ncd_ioglobal_real_var
      module procedure ncd_ioglobal_int_1d
      module procedure ncd_ioglobal_real_1d
      module procedure ncd_ioglobal_char_1d
      module procedure ncd_ioglobal_int_2d
      module procedure ncd_ioglobal_real_2d
      module procedure ncd_ioglobal_int_3d
      module procedure ncd_ioglobal_real_3d
   end interface
   private :: ncd_inqvdesc  ! inquire variable descriptor
   private :: ncd_inqiodesc ! inquire variable descriptor
 #if (defined BUILDPIO)
   private :: ncd_setDOF    ! set DOF arrays for pio
 #endif
   private :: scam_field_offsets ! get offset to proper lat/lon gridcell for SCAM
 
   logical,parameter,private :: lbcast_def = .false.  ! lbcast default
   integer,parameter,private :: debug = 0             ! local debug level
 
 #if (defined BUILDPIO)
   integer,private           :: pio_num_iotasks
   integer,private           :: pio_num_aggregator
   integer,private           :: pio_io_rank
   logical,private           :: pio_IOproc
 
   type(File_desc_t)         :: pio_File
 
   type pio_iodesc_plus_type
      character(len=32) :: name
      logical           :: set
      integer           :: ndims
      integer           :: dimids(4)
      integer           :: type
      type(IO_desc_t),pointer   :: pio_ioDesc
   end type pio_iodesc_plus_type
   integer,parameter     ,private :: pio_max_iodesc = 50
   integer               ,private :: pio_num_iodesc = 0
   type(pio_iodesc_plus_type) ,private, target :: pio_iodesc_list(pio_max_iodesc)
 
   type pio_vardesc_plus_type
      character(len=64) :: name
      integer           :: iodnum   ! iodesc associated with vardesc
      type(Var_desc_t)  :: pio_varDesc
   end type pio_vardesc_plus_type
   integer,parameter     ,private :: pio_max_vardesc = 500
   integer               ,private :: pio_num_vardesc = 0
   type(pio_vardesc_plus_type),private, target :: pio_varDesc_list(pio_max_vardesc)
 
 #endif



Subsections

Erik Kluzek 2010-06-21