global_cycle  1.13.0
land_increments.f90 File Reference

Routines for applyng land DA increments. More...

Go to the source code of this file.

Functions/Subroutines

subroutine, public land_increments::add_increment_soil (lsoil_incr, stcinc, slcinc, stc_state, smc_state, slc_state, stc_updated, slc_updated, soilsnow_tile, soilsnow_fg_tile, lensfc, lsoil, lsm, myrank)
 Read in soil state increments (on the cubed-sphere grid),and add to the soil states. More...
 
subroutine, public land_increments::add_jedi_increment_snow (snd_inc, mask, lensfc, snd)
 Add snow depth increment to model snow depth state, and limit output to be non-negative. More...
 
subroutine, public land_increments::apply_land_da_adjustments_snd (lsm, lensfc, mask, swe_bck, snd_bck, snd_anl, swe_adj)
 Make adjustments to dependent variables after applying land increments. More...
 
subroutine, public land_increments::apply_land_da_adjustments_soil (lsoil_incr, lsm, isot, ivegsrc, lensfc, lsoil, rsoiltype, mask, stc_bck, stc_adj, smc_adj, slc_adj, stc_updated, slc_updated, zsoil)
 Make adjustments to dependent variables after applying land increments. More...
 
subroutine, public land_increments::calculate_landinc_mask (swe, vtype, stype, lensfc, veg_type_landice, mask)
 Calculate soil mask for land on model grid. More...
 
subroutine, public land_increments::gaussian_to_fv3_interp (lsoil_incr, rla, rlo, stcinc, slcinc, soilsnow_tile, lensfc, lsoil, idim, jdim, lsm, myrank)
 Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile Adapted from adjust_nsst. More...
 

Variables

integer, parameter, public land_increments::lsm_noah =1
 flag for NOAH land surface model More...
 
integer, parameter, public land_increments::lsm_noahmp =2
 flag for NOAHMP land surface model copied from GFS_typedefs.F90 More...
 
real, parameter land_increments::tfreez =273.16
 con_t0c in physcons More...
 

Detailed Description

Routines for applyng land DA increments.

Author
Clara Draper ESRL/PSL

Definition in file land_increments.f90.

Function/Subroutine Documentation

◆ add_increment_soil()

subroutine, public land_increments::add_increment_soil ( integer, intent(in)  lsoil_incr,
real, dimension(lensfc,lsoil)  stcinc,
real, dimension(lensfc,lsoil)  slcinc,
real, dimension(lensfc, lsoil), intent(inout)  stc_state,
real, dimension(lensfc, lsoil), intent(inout)  smc_state,
real, dimension(lensfc, lsoil), intent(inout)  slc_state,
integer, dimension(lensfc), intent(out)  stc_updated,
integer, dimension(lensfc), intent(out)  slc_updated,
integer, dimension(lensfc), intent(in)  soilsnow_tile,
integer, dimension(lensfc), intent(in)  soilsnow_fg_tile,
integer, intent(in)  lensfc,
integer, intent(in)  lsoil,
integer, intent(in)  lsm,
integer, intent(in)  myrank 
)

Read in soil state increments (on the cubed-sphere grid),and add to the soil states.

Adapted from original add_gsi_increment_soil routine.

Parameters
[in]SLCINCLiquid soil moisture increments on the cubed-sphere tile
[in]STCINCSoil temperature increments on the cubed-sphere tile
[in,out]STC_STATESoil temperature state vector
[in,out]SMC_STATESoil moisture (liquid plus solid) state vector
[in,out]SLC_STATELiquid soil moisture state vector
[out]stc_updatedInteger to record whether STC in each grid cell was updated
[out]slc_updatedInteger to record whether SMC in each grid cell was updated
[in]SOILSNOW_TILELand mask for increments on the cubed-sphere tile
[in]SOILSNOW_FG_TILEFirst guess land mask for increments on the cubed-sphere tile
[in]LENSFCNumber of land points on a tile
[in]LSOILNumber of soil layers
[in]LSOIL_INCRNumber of soil layers (from top) to apply soil increments to
[in]lsmInteger flag indicating which land model is used
[in]MYRANKMPI rank number
Author
Yuan Xue. 11/2023

Definition at line 297 of file land_increments.f90.

◆ add_jedi_increment_snow()

subroutine, public land_increments::add_jedi_increment_snow ( real, dimension(lensfc), intent(in)  snd_inc,
integer, dimension(lensfc), intent(in)  mask,
integer, intent(in)  lensfc,
real, dimension(lensfc), intent(inout)  snd 
)

Add snow depth increment to model snow depth state, and limit output to be non-negative.

JEDI increments are calculated globally, so must be screened to land-only locations here.

Parameters
[in]lensfcNumber of land points on this tile
[in]snd_incSoil depth increments
[in]maskLand mask for increments
[in,out]sndSoil depth background (in), and analysis (out)
Author
Clara Draper.
Date
August 2021

Definition at line 445 of file land_increments.f90.

◆ apply_land_da_adjustments_snd()

subroutine, public land_increments::apply_land_da_adjustments_snd ( integer, intent(in)  lsm,
integer, intent(in)  lensfc,
integer, dimension(lensfc), intent(in)  mask,
real, dimension(lensfc), intent(in)  swe_bck,
real, dimension(lensfc), intent(in)  snd_bck,
real, dimension(lensfc), intent(in)  snd_anl,
real, dimension(lensfc), intent(inout)  swe_adj 
)

Make adjustments to dependent variables after applying land increments.

These adjustments are model-dependent, and are currently only coded for Noah LSM. Here: adjust SWE to be consistent with updated SND, using snow density from the forecast.

Parameters
[in]lsmInteger code for the LSM
[in]lensfcNumber of land points for this tile
[in]maskLand mask for increments
[in]swe_bckBackground SWE
[in]snd_bckBackground snow depth
[in]snd_anlAnalysis snow depth
[in,out]swe_adjSWE to be adjusted
Author
Clara Draper
Date
August 2021

Definition at line 707 of file land_increments.f90.

◆ apply_land_da_adjustments_soil()

subroutine, public land_increments::apply_land_da_adjustments_soil ( integer, intent(in)  lsoil_incr,
integer, intent(in)  lsm,
integer, intent(in)  isot,
integer, intent(in)  ivegsrc,
integer, intent(in)  lensfc,
integer, intent(in)  lsoil,
real, dimension(lensfc), intent(in)  rsoiltype,
integer, dimension(lensfc), intent(in)  mask,
real, dimension(lensfc, lsoil), intent(in)  stc_bck,
real, dimension(lensfc, lsoil), intent(inout)  stc_adj,
real, dimension(lensfc,lsoil), intent(inout)  smc_adj,
real, dimension(lensfc,lsoil), intent(inout)  slc_adj,
integer, dimension(lensfc), intent(in)  stc_updated,
integer, dimension(lensfc), intent(in)  slc_updated,
real(kind=4), dimension(lsoil), intent(in)  zsoil 
)

Make adjustments to dependent variables after applying land increments.

These adjustments are model-dependent, and are currently only coded if full for Noah LSM. For Noah LSM, copy relevent code blocks from model code (same as has been done in sfc_sub). For Noah-MP, the adjustment scheme shown below as of 11/09/2023: Case 1: frozen ==> frozen, recalculate slc following opt_frz=1, smc remains Case 2: unfrozen ==> frozen, recalculate slc following opt_frz=1, smc remains Case 3: frozen ==> unfrozen, melt all soil ice (if any) Case 4: unfrozen ==> unfrozen along with other cases, (e.g., soil temp=tfrz),do nothing Note: For Case 3, Yuan Xue thoroughly evaluated a total of four options and current option is found to be the best as of 11/09/2023

Parameters
[in]lsmInteger code for the LSM
[in]isotInteger code for the soil type data set
[in]ivegsrcInteger code for the vegetation type data set
[in]lensfcNumber of land points for this tile
[in]lsoilNumber of soil layers
[in]lsoil_incrNumber of soil layers (from top) to apply soil increments to
[in]rsoiltypeArray of input soil types
[in]maskMask indicating surface type
[in]stc_bckBackground soil temperature states
[in]stc_adjAnalysis soil temperature states
[in,out]smc_adjAnalysis soil moisture states
[in,out]slc_adjAnalysis liquid soil moisture states
[in]stc_updatedInteger to record whether STC in each grid cell was updated
[in]slc_updatedInteger to record whether SLC in each grid cell was updated
[in]zsoilDepth of bottom of each soil layer
Author
Clara Draper
Date
April 2021

Definition at line 536 of file land_increments.f90.

◆ calculate_landinc_mask()

subroutine, public land_increments::calculate_landinc_mask ( real, dimension(lensfc), intent(in)  swe,
real, dimension(lensfc), intent(in)  vtype,
real, dimension(lensfc), intent(in)  stype,
integer, intent(in)  lensfc,
integer, intent(in)  veg_type_landice,
integer, dimension(lensfc), intent(out)  mask 
)

Calculate soil mask for land on model grid.

Output is 1 - soil, 2 - snow-covered, 0 - land ice, -1 not land.

Parameters
[in]lensfcNumber of land points for this tile
[in]veg_type_landiceValue of vegetion class that indicates land-ice
[in]stypeSoil type
[in]sweModel snow water equivalent
[in]vtypeModel vegetation type
[out]maskLand mask for increments
Author
Clara Draper
Date
March 2021
Author
Yuan Xue: introduce stype to make the mask calculation more generic

Definition at line 476 of file land_increments.f90.

◆ gaussian_to_fv3_interp()

subroutine, public land_increments::gaussian_to_fv3_interp ( integer, intent(in)  lsoil_incr,
real, dimension(lensfc), intent(inout)  rla,
real, dimension(lensfc), intent(inout)  rlo,
real, dimension(lensfc,lsoil), intent(out)  stcinc,
real, dimension(lensfc,lsoil), intent(out)  slcinc,
integer, dimension(lensfc), intent(in)  soilsnow_tile,
integer, intent(in)  lensfc,
integer, intent(in)  lsoil,
integer, intent(in)  idim,
integer, intent(in)  jdim,
integer, intent(in)  lsm,
integer, intent(in)  myrank 
)

Read in gsi file with soil state increments (on the gaussian grid), interpolate increments to the cubed-sphere tile Adapted from adjust_nsst.

Parameters
[in,out]RLALatitude on the cubed-sphere tile
[in,out]RLOLongitude on the cubed-sphere tile
[in]SOILSNOW_TILELand mask for increments on the cubed-sphere tile
[in]LENSFCNumber of land points on a tile
[in]LSOILNumber of soil layers
[in]LSOIL_INCRNumber of soil layers (from top) to apply soil increments to
[in]IDIM'I' dimension of a tile
[in]JDIM'J' dimension of a tile
[in]lsmInteger flag indicating which land model is used (1-Noah, 2-Noah-MP)
[in]MYRANKMPI rank number
[out]stcincSoil temperature increments on the cubed-sphere tile
[out]slcincLiquid soil moisture increments on the cubed-sphere tile
Author
Clara Draper.
Date
March 2021
Author
Yuan Xue.
Date
Mar 2024

Definition at line 48 of file land_increments.f90.

References read_write_data::idim_gaus, read_write_data::jdim_gaus, utils::remap_coef(), read_write_data::slc_inc_gaus, read_write_data::soilsnow_gaus, and read_write_data::stc_inc_gaus.

Variable Documentation

◆ lsm_noah

integer, parameter, public land_increments::lsm_noah =1

flag for NOAH land surface model

Definition at line 17 of file land_increments.f90.

◆ lsm_noahmp

integer, parameter, public land_increments::lsm_noahmp =2

flag for NOAHMP land surface model copied from GFS_typedefs.F90

Definition at line 18 of file land_increments.f90.

◆ tfreez

real, parameter land_increments::tfreez =273.16
private

con_t0c in physcons

Definition at line 23 of file land_increments.f90.