global_cycle
1.13.0
|
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... | |
Routines for applyng land DA increments.
Definition in file land_increments.f90.
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.
[in] | SLCINC | Liquid soil moisture increments on the cubed-sphere tile |
[in] | STCINC | Soil temperature increments on the cubed-sphere tile |
[in,out] | STC_STATE | Soil temperature state vector |
[in,out] | SMC_STATE | Soil moisture (liquid plus solid) state vector |
[in,out] | SLC_STATE | Liquid soil moisture state vector |
[out] | stc_updated | Integer to record whether STC in each grid cell was updated |
[out] | slc_updated | Integer to record whether SMC in each grid cell was updated |
[in] | SOILSNOW_TILE | Land mask for increments on the cubed-sphere tile |
[in] | SOILSNOW_FG_TILE | First guess land mask for increments on the cubed-sphere tile |
[in] | LENSFC | Number of land points on a tile |
[in] | LSOIL | Number of soil layers |
[in] | LSOIL_INCR | Number of soil layers (from top) to apply soil increments to |
[in] | lsm | Integer flag indicating which land model is used |
[in] | MYRANK | MPI rank number |
Definition at line 297 of file land_increments.f90.
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.
[in] | lensfc | Number of land points on this tile |
[in] | snd_inc | Soil depth increments |
[in] | mask | Land mask for increments |
[in,out] | snd | Soil depth background (in), and analysis (out) |
Definition at line 445 of file land_increments.f90.
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.
[in] | lsm | Integer code for the LSM |
[in] | lensfc | Number of land points for this tile |
[in] | mask | Land mask for increments |
[in] | swe_bck | Background SWE |
[in] | snd_bck | Background snow depth |
[in] | snd_anl | Analysis snow depth |
[in,out] | swe_adj | SWE to be adjusted |
Definition at line 707 of file land_increments.f90.
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
[in] | lsm | Integer code for the LSM |
[in] | isot | Integer code for the soil type data set |
[in] | ivegsrc | Integer code for the vegetation type data set |
[in] | lensfc | Number of land points for this tile |
[in] | lsoil | Number of soil layers |
[in] | lsoil_incr | Number of soil layers (from top) to apply soil increments to |
[in] | rsoiltype | Array of input soil types |
[in] | mask | Mask indicating surface type |
[in] | stc_bck | Background soil temperature states |
[in] | stc_adj | Analysis soil temperature states |
[in,out] | smc_adj | Analysis soil moisture states |
[in,out] | slc_adj | Analysis liquid soil moisture states |
[in] | stc_updated | Integer to record whether STC in each grid cell was updated |
[in] | slc_updated | Integer to record whether SLC in each grid cell was updated |
[in] | zsoil | Depth of bottom of each soil layer |
Definition at line 536 of file land_increments.f90.
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.
[in] | lensfc | Number of land points for this tile |
[in] | veg_type_landice | Value of vegetion class that indicates land-ice |
[in] | stype | Soil type |
[in] | swe | Model snow water equivalent |
[in] | vtype | Model vegetation type |
[out] | mask | Land mask for increments |
Definition at line 476 of file land_increments.f90.
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.
[in,out] | RLA | Latitude on the cubed-sphere tile |
[in,out] | RLO | Longitude on the cubed-sphere tile |
[in] | SOILSNOW_TILE | Land mask for increments on the cubed-sphere tile |
[in] | LENSFC | Number of land points on a tile |
[in] | LSOIL | Number of soil layers |
[in] | LSOIL_INCR | Number 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] | lsm | Integer flag indicating which land model is used (1-Noah, 2-Noah-MP) |
[in] | MYRANK | MPI rank number |
[out] | stcinc | Soil temperature increments on the cubed-sphere tile |
[out] | slcinc | Liquid soil moisture increments on the cubed-sphere tile |
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.
integer, parameter, public land_increments::lsm_noah =1 |
flag for NOAH land surface model
Definition at line 17 of file land_increments.f90.
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.
|
private |
con_t0c in physcons
Definition at line 23 of file land_increments.f90.