anchor.diff:      ! ------------------------------------------------
       type, extends(linearizable_type) :: domain_type
           ! 3D atmospheric fields
  -        real, allocatable, dimension(:,:,:) :: w,ur,vr,wr ! w, and u,v,w * density
  -        real, allocatable, dimension(:,:,:) :: w_real     ! real space w on the mass grid (including U,V*dz/dx component)
  -        real, allocatable, dimension(:,:,:) :: nice,nrain ! number concentration for ice and rain
  -        real, allocatable, dimension(:,:,:) :: qgrau      ! graupel mass mixing ratio 
  -        real, allocatable, dimension(:,:,:) :: p_inter    ! pressure on the vertical interfaces (p[:,1,:]=psfc)
  -        real, allocatable, dimension(:,:,:) :: z_inter    ! z height on interface levels
  -        real, allocatable, dimension(:,:,:) :: dz_inter   ! dz between interface levels
  -        real, allocatable, dimension(:,:,:) :: mut        ! mass in a given cell ? (pbot-ptop)
  +        real, allocatable, dimension(:,:,:) :: w,ur,vr,wr   ! w, and u,v,w * density
  +        real, allocatable, dimension(:,:,:) :: w_real       ! real space w on the mass grid (including U,V*dz/dx component) for output
  +        real, allocatable, dimension(:,:,:) :: nice,nrain   ! number concentration for ice and rain
  +        real, allocatable, dimension(:,:,:) :: qgrau        ! graupel mass mixing ratio 
  +        real, allocatable, dimension(:,:,:) :: p_inter      ! pressure on the vertical interfaces (p[:,1,:]=psfc)
  +        real, allocatable, dimension(:,:,:) :: z_inter      ! z height on interface levels
  +        real, allocatable, dimension(:,:,:) :: dz_inter     ! dz between interface levels
  +        real, allocatable, dimension(:,:,:) :: mut          ! mass in a given cell ? (pbot-ptop) used in some physics schemes
           ! 3D soil field
  -        real, allocatable, dimension(:,:,:) :: soil_t, soil_vwc
  +        real, allocatable, dimension(:,:,:) :: soil_t       ! soil temperature (nx, nsoil, ny)  [K]
  +        real, allocatable, dimension(:,:,:) :: soil_vwc     ! soil volumetric water content     []
           
           ! 2D fields, primarily fluxes to/from the land surface
  -        ! surface pressure
  +        ! surface pressure and model top pressure
           real, allocatable, dimension(:,:)   :: psfc, ptop
  -        ! precip fluxes
  -        real, allocatable, dimension(:,:)   :: rain,crain,snow,graupel
  -        real, allocatable, dimension(:,:)   :: current_rain, current_snow
  -        integer, allocatable, dimension(:,:):: rain_bucket,crain_bucket,snow_bucket,graupel_bucket
  +        ! precipitation fluxes
  +        real, allocatable, dimension(:,:)   :: rain, crain, snow, graupel   ! accumulated : total precip, convective precip, snow, and graupel
  +        real, allocatable, dimension(:,:)   :: current_rain, current_snow   ! current time step rain and snow
  +        integer, allocatable, dimension(:,:):: rain_bucket,crain_bucket,snow_bucket,graupel_bucket  ! buckets to preserve accuracy in all variables
           
           ! radiative fluxes (and cloud fraction)
  -        real, allocatable, dimension(:,:)   :: swdown, lwdown, cloudfrac, lwup
  +        real, allocatable, dimension(:,:)   :: swdown       ! shortwave down at the surface
  +        real, allocatable, dimension(:,:)   :: lwdown       ! longwave down at the surface
  +        real, allocatable, dimension(:,:)   :: cloudfrac    ! total column cloud fraction
  +        real, allocatable, dimension(:,:)   :: lwup         ! longwave up at/from the surface
           
           ! turbulent fluxes (and ground heat flux)
  -        real, allocatable, dimension(:,:)   :: sensible_heat,latent_heat,ground_heat
  +        real, allocatable, dimension(:,:)   :: sensible_heat, latent_heat, ground_heat
           
           ! domain parameters
  -        real, allocatable, dimension(:,:)   :: landmask ! store the land-sea mask
  -        real, allocatable, dimension(:,:)   :: sintheta, costheta  ! rotations about the E-W, N-S grid
  -        real, allocatable, dimension(:)     :: ZNU, ZNW            ! = (p-p_top)/(psfc-ptop)
  -        
  -        ! land surface state and parameters
  -        real, allocatable, dimension(:,:)   :: soil_tdeep, skin_t, soil_totalmoisture, snow_swe,canopy_water
  -        real, allocatable, dimension(:,:,:)   :: vegfrac
  -        integer, allocatable, dimension(:,:):: soil_type,veg_type
  +        real, allocatable, dimension(:,:)   :: landmask             ! store the land-sea mask
  +        real, allocatable, dimension(:,:)   :: sintheta, costheta   ! rotations about the E-W, N-S grid
  +        real, allocatable, dimension(:)     :: ZNU, ZNW             ! = (p-p_top)/(psfc-ptop),  (p_inter-p_top)/(psfc-ptop)
  +        
  +        ! land surface state and parameters primarily used by Noah LSM
  +        real, allocatable, dimension(:,:)   :: soil_tdeep           ! specified deep soil temperature               [K]
  +        real, allocatable, dimension(:,:)   :: skin_t               ! land surface skin temperature                 [K]
  +        real, allocatable, dimension(:,:)   :: soil_totalmoisture   ! total column soil moisture                    [kg/m^2]
  +        real, allocatable, dimension(:,:)   :: snow_swe             ! snow water equivalent                         [kg/m^2]
  +        real, allocatable, dimension(:,:)   :: canopy_water         ! canopy water content                          [kg/m^2]
  +        real, allocatable, dimension(:,:,:) :: vegfrac              ! specified monthly vegetation fraction         [%?]
  +        integer, allocatable, dimension(:,:):: soil_type            ! soil type index into SOILPARM.TBL
  +        integer, allocatable, dimension(:,:):: veg_type             ! vegetation type index into VEGPARM.TBL
  +        
           ! ocean surface state
  -        real, allocatable, dimension(:,:)   :: sst
  +        real, allocatable, dimension(:,:)   :: sst                  ! Sea surface temperature (from forcing data)
  +        
           ! surface and PBL parameter
  -        real, allocatable, dimension(:,:)   :: znt, ustar, pbl_height
  -        real, allocatable, dimension(:,:)   :: u10, v10, t2m, q2m
  +        real, allocatable, dimension(:,:)   :: znt                  ! surface (background?) roughness length        [m]
  +        real, allocatable, dimension(:,:)   :: ustar                ! surface shear velocity u*                     [m/s]
  +        real, allocatable, dimension(:,:)   :: pbl_height           ! height of the PBL (only used with PBL=1 & LSM=1)
  +        real, allocatable, dimension(:,:)   :: u10, v10             ! 10m height u and v winds                      [m/s]
  +        real, allocatable, dimension(:,:)   :: t2m, q2m             ! 2m height air temperature                     [K] 
  +                                                                    ! and water vapor mixing ratio                  [kg/kg]
           
           ! current model time step length (should this be somewhere else?)
           real::dt
  
positive.code:     ! store Advection options
      ! ------------------------------------------------
      type adv_options_type
          logical :: boundary_buffer
          logical :: flux_corrected_transport
          integer :: mpdata_order
      end type adv_options_type
  
  
  
negative.code: !!   2D fields ---- NX x NY
  !! skin_t       = Land surface skin temperature             [K]
  !! soil_tdeep   = Temperature at the soil column bottom     [K]
  !! snow_swe     = Snow water equivalent on the land surface [mm]
  !! soil_totalmoisture = Soil column total water content     [mm]
  !! soil_type    = Soil type (index for SOILPARM.TBL)        [1-n]
  !! veg_type     = Vegetation type (index for VEGPARM.TBL)   [1-n]
  !! landmask     = Map of Land vs Water grid cells           [0,1,2]
  !!
  !! ---- NOTE ----
  !! dX_dt variables are the increment in boundary conditions between internal model time steps
  !! some of these are 2d, some are 3d
  !! 
  !! ---- model structure ----
  !! terrain  = surface elevation                 [m]
  !! z        = model layer height (at mid point) [m]
  !! dz       = layer thickness                   [m]
  !!
  !! sintheta = sine of the angle between grid and geographic coords   []
  !! costheta = cosine of the angle between grid and geographic coords []
  