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_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::add_increment_soil (rla, rlo, stc_state, smc_state, slc_state, stc_updated, slc_updated, soilsnow_tile, soilsnow_fg_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, and add to the soil states. 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 (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 (smc, swe, vtype, lensfc, veg_type_landice, mask)
 Calculate soil mask for land on model grid. 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...
 
integer, parameter land_increments::lsoil_incr =3
 number of layers to add incrments to 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_snow()

subroutine, public land_increments::add_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 379 of file land_increments.f90.

◆ add_increment_soil()

subroutine, public land_increments::add_increment_soil ( real, dimension(lensfc), intent(inout)  rla,
real, dimension(lensfc), intent(inout)  rlo,
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)  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, and add to the soil states.

Adapted from adjust_nsst. Currently only coded for soil temperature. Soil moisture will need the model soil moisture paramaters for regridding.

Does not make a temperature update if snow differ between fg and anal (allow correction of snow to address temperature error first), or if snow is present (will eventually updating of snow temperature in this case)

Parameters
[in,out]RLALatitude on the cubed-sphere tile
[in,out]RLOLongitude 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]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
Author
Clara Draper.
Date
March 2021

Definition at line 57 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.

◆ 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 627 of file land_increments.f90.

◆ apply_land_da_adjustments_soil()

subroutine, public land_increments::apply_land_da_adjustments_soil ( 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, have inserted place-holders to simply reset the model
variables back to the analysis if adjustments are needed. Later, will replace this with appropriate adjustmenets (in summary, for now we do not make STC updates if soils are frozen, and are also not applying the appropriate max. values for SMC). Here: adjust (frozen) soil moisture to be consistent with changes in soil temperature from DA

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]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 468 of file land_increments.f90.

◆ calculate_landinc_mask()

subroutine, public land_increments::calculate_landinc_mask ( real, dimension(lensfc), intent(in)  smc,
real, dimension(lensfc), intent(in)  swe,
real, dimension(lensfc), intent(in)  vtype,
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]smcModel soil moisture.
[in]sweModel snow water equivalent
[in]vtypeModel vegetation type
[out]maskLand mask for increments
Author
Clara Draper
Date
March 2021

Definition at line 409 of file land_increments.f90.

Variable Documentation

◆ lsm_noah

integer, parameter, public land_increments::lsm_noah =1

flag for NOAH land surface model

Definition at line 16 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 17 of file land_increments.f90.

◆ lsoil_incr

integer, parameter land_increments::lsoil_incr =3
private

number of layers to add incrments to

Definition at line 21 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.