Module containing methods to for CLM history file handling.
USES:
use shr_kind_mod, only : r8 => shr_kind_r8 use shr_sys_mod , only : shr_sys_getenv, shr_sys_flush use abortutils , only : endrun use clm_varcon , only : spval implicit none save private include "netcdf.inc"PUBLIC TYPES:
Constants
integer , public, parameter :: max_tapes = 6 ! max number of histo
integer , public, parameter :: max_flds = 1000 ! max number of histo
integer , public, parameter :: max_namlen = 32 ! maximum number of c
Counters
integer , public :: ntapes = 0 ! index of max history file request
Namelist
integer :: ni ! implicit index below
logical, public :: &
hist_empty_htapes = .false. ! namelist: flag indicates no defaul
integer, public :: &
hist_ndens(max_tapes) = 2 ! namelist: output density of netcdf
integer, public :: &
hist_mfilt(max_tapes) = 30 ! namelist: number of time samples p
logical, public :: &
hist_dov2xy(max_tapes) = (/.true.,(.true.,ni=2,max_tapes)/) ! namelist
integer, public :: &
hist_nhtfrq(max_tapes) = (/0, (-24, ni=2,max_tapes)/) ! namelis
character(len=1), public :: &
hist_avgflag_pertape(max_tapes) = (/(' ',ni=1,max_tapes)/) ! namelis
character(len=max_namlen), public :: &
hist_type1d_pertape(max_tapes) = (/(' ',ni=1,max_tapes)/) ! namelis
character(len=max_namlen+2), public :: &
hist_fincl1(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
hist_fincl2(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
hist_fincl3(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
hist_fincl4(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
hist_fincl5(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
hist_fincl6(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen+2), public :: &
fincl(max_flds,max_tapes) ! namelist-equivalence list of fields to
character(len=max_namlen), public :: &
hist_fexcl1(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
hist_fexcl2(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
hist_fexcl3(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
hist_fexcl4(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
hist_fexcl5(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
hist_fexcl6(max_flds) = (/(' ',ni=1,max_flds)/) ! namelist: list of fi
character(len=max_namlen), public :: &
fexcl(max_flds,max_tapes) ! namelist-equivalence list of fields to
Equivalence used to satisfy namelist on a wide variety of platforms
NOTE: It is *ASSUMED* that max_tapes is 6
equivalence (hist_fincl1,fincl(1,1))
equivalence (hist_fincl2,fincl(1,2))
equivalence (hist_fincl3,fincl(1,3))
equivalence (hist_fincl4,fincl(1,4))
equivalence (hist_fincl5,fincl(1,5))
equivalence (hist_fincl6,fincl(1,6))
equivalence (hist_fexcl1,fexcl(1,1))
equivalence (hist_fexcl2,fexcl(1,2))
equivalence (hist_fexcl3,fexcl(1,3))
equivalence (hist_fexcl4,fexcl(1,4))
equivalence (hist_fexcl5,fexcl(1,5))
equivalence (hist_fexcl6,fexcl(1,6))
Restart
logical, public :: if_writrest ! true=> write restart file now
PUBLIC MEMBER FUNCTIONS:
public :: add_fld1d ! Add a 1d single-level field to the mast public :: add_fld2d ! Add a 2d multi-level field to the maste public :: add_subscript ! Add a 2d subscript dimension public :: masterlist_make_active ! Add a field to the given history file d public :: masterlist_printflds ! Print summary of master field list public :: htapes_build ! Initialize history file handler for ini public :: update_hbuf ! Updates history buffer for all fields a public :: htapes_wrapup ! Write and/or dispose history tape(s) public :: restart_history ! Read/write history file restart dataREVISION HISTORY:
Created by Mariana Vertenstein