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

Fortran: Module Interface ncdio_pioMod (Source File: ncdio_pio.F90)

Generic interfaces to write fields to netcdf files for CLM


USES:

   use shr_kind_mod   , only : r8 => shr_kind_r8, i8=>shr_kind_i8, shr_kind_cl
   use spmdMod        , only : masterproc, mpicom, iam, npes,  &
                             MPI_REAL8, MPI_INTEGER, MPI_LOGICAL
   use clmtype        , only : gratm, grlnd, nameg, namel, namec, namep, allrof
   use clm_varcon     , only : spval,ispval
   use clm_varctl     , only : single_column, iulog
   use shr_sys_mod    , only : shr_sys_flush
   use shr_file_mod   , only : shr_file_getunit, shr_file_freeunit
   use shr_string_mod , only : shr_string_toUpper
   use abortutils     , only : endrun
   use decompMod      , only : get_clmlevel_gsize,get_clmlevel_gsmap
   use perf_mod       , only : t_startf, t_stopf
   use fileutils      , only : getavu, relavu
   use clm_mct_mod
   use pio
PUBLIC TYPES:
   implicit none
   private
PUBLIC MEMBER FUNCTIONS:
   public :: check_var          ! determine if variable is on netcdf file
   public :: check_dim          ! validity check on dimension
   public :: ncd_pio_openfile   ! open a file
   public :: ncd_pio_createfile ! create a new file
   public :: ncd_pio_closefile  ! close a file
   public :: ncd_pio_init       ! called from clm_comp
   public :: ncd_enddef         ! end define mode
   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_io             ! write local data
 
   integer,parameter,public :: ncd_int       = pio_int
   integer,parameter,public :: ncd_log       =-pio_int
   integer,parameter,public :: ncd_float     = pio_real
   integer,parameter,public :: ncd_double    = pio_double
   integer,parameter,public :: ncd_char      = pio_char
   integer,parameter,public :: ncd_global    = pio_global
   integer,parameter,public :: ncd_write     = pio_write
   integer,parameter,public :: ncd_nowrite   = pio_nowrite
   integer,parameter,public :: ncd_clobber   = pio_clobber
   integer,parameter,public :: ncd_noclobber = pio_noclobber
   integer,parameter,public :: ncd_nofill    = pio_nofill
   integer,parameter,public :: ncd_unlimited = pio_unlimited
 
   ! PIO types needed for ncdio_pio interface calls
   public file_desc_t
   public var_desc_t
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_io 
      module procedure ncd_io_log_var0_nf
      module procedure ncd_io_int_var0_nf
      module procedure ncd_io_real_var0_nf
      module procedure ncd_io_int_var1_nf
      module procedure ncd_io_log_var1_nf
      module procedure ncd_io_real_var1_nf
      module procedure ncd_io_char_var1_nf
      module procedure ncd_io_int_var2_nf
      module procedure ncd_io_real_var2_nf
      module procedure ncd_io_char_var2_nf
      module procedure ncd_io_char_var3_nf
      module procedure ncd_io_char_varn_strt_nf
      module procedure ncd_io_int_var1
      module procedure ncd_io_log_var1
      module procedure ncd_io_real_var1
      module procedure ncd_io_int_var2
      module procedure ncd_io_real_var2
      module procedure ncd_io_int_var3
      module procedure ncd_io_real_var3
      module procedure ncd_io_real_var3_nf
   end interface
 
   private :: ncd_inqiodesc      ! inquire variable descriptor
   private :: ncd_getiodesc      ! obtain iodesc
   private :: scam_field_offsets ! get offset to proper lat/lon gridcell for SCAM
 
   integer,parameter,private :: debug = 0             ! local debug level
 
   integer , parameter  , public  :: max_string_len = 256     ! length of strings
   real(r8), parameter  , public  :: fillvalue = 1.e36_r8     ! fill value for netcdf fields
 
   integer, private :: io_type
 
   type(iosystem_desc_t), pointer, public  :: pio_subsystem
 
   type iodesc_plus_type
      character(len=32) :: name
      type(IO_desc_t)   :: iodesc
      integer           :: type
      integer           :: ndims
      integer           :: dims(4)
   end type iodesc_plus_type
   integer,parameter      ,private :: max_iodesc = 100
   integer                ,private :: num_iodesc = 0
   type(iodesc_plus_type) ,private, target :: iodesc_list(max_iodesc)



Subsections

Erik Kluzek 2011-06-15