This module contains subroutines that initialize, update and extract the user-specified fields over user-defined intervals. Each interval and accumulation type is unique to each field processed. Subroutine [initAccumFlds] defines the fields to be processed and the type of accumulation. Subroutine [updateAccumFlds] does the actual accumulation for a given field. Fields are accumulated by calls to subroutine [update_accum_field]. To accumulate a field, it must first be defined in subroutine [initAccumFlds] and then accumulated by calls to [updateAccumFlds]. Four types of accumulations are possible: o average over time interval o running mean over time interval o running accumulation over time interval Time average fields are only valid at the end of the averaging interval. Running means are valid once the length of the simulation exceeds the averaging interval. Accumulated fields are continuously accumulated. The trigger value "-99999." resets the accumulation to zero.
USES:
use shr_kind_mod, only: r8 => shr_kind_r8 use abortutils, only: endrun use clm_varctl, only: iulog use surfrdMod, only: crop_progPUBLIC TYPES:
implicit none savePUBLIC MEMBER FUNCTIONS:
public :: initAccFlds ! Initialization accumulator fields public :: initAccClmtype ! Initialize clmtype variables obtained from accum fields public :: updateAccFlds ! Update accumulator fieldsREVISION HISTORY:
Created by M. Vertenstein 03/2003