global_cycle  1.9.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, soilsnow_tile, soilsnow_fg_tile, lensfc, lsoil, idim, jdim, 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_stc (lsm, isot, ivegsrc, lensfc, lsoil, rsoiltype, mask, stc_bck, stc_anl, smc_adj, slc_adj)
 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 land_increments::lsm_noah =1
 flag for NOAH land surface model copied from GFS_typedefs.F90 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 315 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,
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)  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_STATE
[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]MYRANKMPI rank number
Author
Clara Draper.
Date
March 2021

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

◆ apply_land_da_adjustments_stc()

subroutine, public land_increments::apply_land_da_adjustments_stc ( 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(in)  stc_anl,
real, dimension(lensfc,lsoil), intent(inout)  smc_adj,
real, dimension(lensfc,lsoil), intent(inout)  slc_adj 
)

Make adjustments to dependent variables after applying land increments.

These adjustments are model-dependent, and are currently only coded for Noah LSM. For Noah LSM, copy relevent code blocks from model code (same as has been done in sfc_sub). 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_anlAnalysis soil temperature states
[in,out]smc_adjSoil moisture state to be adjusted
[in,out]slc_adjLiquid soil moisture states to be adjusted
Author
Clara Draper
Date
April 2021

Definition at line 396 of file land_increments.f90.

References tfreez().

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

Variable Documentation

◆ lsm_noah

integer, parameter land_increments::lsm_noah =1
private

flag for NOAH land surface model copied from GFS_typedefs.F90

Definition at line 15 of file land_increments.f90.