chgres_cube  1.3.0
 All Data Structures Files Functions Variables
surface Module Reference

Process surface and nst fields. More...

Public Member Functions

subroutine adjust_soil_levels (localpet)
 Adjust soil levels of the input grid if there is a mismatch between input and target grids. More...
 
subroutine adjust_soilt_for_terrain
 Adjust soil temperature for changes in terrain height between the input and target grids. More...
 
subroutine calc_liq_soil_moisture
 Compute liquid portion of the total soil moisture. More...
 
subroutine check_smois_land
 Check soil mositure. More...
 
subroutine create_nst_esmf_fields
 Create ESMF fields for the target grid nst variables. More...
 
subroutine create_surface_esmf_fields
 Create ESMF fields for the target grid surface variables. More...
 
real function frh2o (TKELV, SMC, SH2O, SMCMAX, BEXP, PSIS)
 Calculate supercooled soil moisture. More...
 
subroutine ij_to_i_j (ij, itile, jtile, i, j)
 Convert 1d index to 2d indices. More...
 
subroutine interp (localpet)
 Horizontally interpolate surface fields from input to target FV3 grid using esmf routines. More...
 
subroutine nst_land_fill
 nst is not active at land or sea ice points. More...
 
subroutine qc_check
 Perform some quality control checks before output. More...
 
subroutine replace_land_sfcparams (localpet)
 Replace bad surface points. More...
 
subroutine rescale_soil_moisture
 Adjust soil moisture for changes in soil type between the input and target grids. More...
 
subroutine roughness
 Set roughness length at land and sea ice. More...
 
subroutine, public surface_driver (localpet)
 Driver routine to process surface/nst data. More...
 

Data Fields

type(esmf_field), public c_0_target_grid
 Coefficient 1 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public c_d_target_grid
 Coefficient 2 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public canopy_mc_target_grid
 canopy moisture content More...
 
type(esmf_field), public d_conv_target_grid
 Thickness of free convection layer. More...
 
type(esmf_field), public dt_cool_target_grid
 Sub-layer cooling amount. More...
 
type(esmf_field), public f10m_target_grid
 log((z0+10)*1/z0) See sfc_diff.f for details More...
 
type(esmf_field), public ffmm_target_grid
 log((z0+z1)*1/z0) See sfc_diff.f for details More...
 
type(esmf_field), public ifd_target_grid
 Model mode index. More...
 
type(esmf_field), public lai_target_grid
 leaf area index More...
 
type(esmf_field), public q2m_target_grid
 2-m specific humidity More...
 
type(esmf_field), public qrain_target_grid
 Sensible heat flux due to rainfall. More...
 
type(esmf_field), public seaice_depth_target_grid
 sea ice depth More...
 
type(esmf_field), public seaice_fract_target_grid
 sea ice fraction More...
 
type(esmf_field), public seaice_skin_temp_target_grid
 sea ice skin temperature More...
 
type(esmf_field), public skin_temp_target_grid
 skin temperature/sst More...
 
type(esmf_field), public snow_depth_target_grid
 physical snow depth More...
 
type(esmf_field), public snow_liq_equiv_target_grid
 liquid equiv snow depth More...
 
type(esmf_field), public soil_temp_target_grid
 3-d soil temperature More...
 
type(esmf_field), public soilm_liq_target_grid
 3-d liquid soil moisture More...
 
type(esmf_field), public soilm_tot_target_grid
 3-d total soil moisture More...
 
type(esmf_field), public srflag_target_grid
 snow/rain flag More...
 
type(esmf_field), public t2m_target_grid
 2-m temperatrure More...
 
type(esmf_field), public tprcp_target_grid
 precip More...
 
type(esmf_field), public tref_target_grid
 reference temperature More...
 
type(esmf_field), public ustar_target_grid
 friction velocity More...
 
type(esmf_field), public w_0_target_grid
 Coefficient 3 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public w_d_target_grid
 Coefficient 4 to calculate d(tz)/d(ts) More...
 
type(esmf_field), public xs_target_grid
 Salinity content in diurnal thermocline layer. More...
 
type(esmf_field), public xt_target_grid
 Heat content in diurnal thermocline layer. More...
 
type(esmf_field), public xtts_target_grid
 d(xt)/d(ts) More...
 
type(esmf_field), public xu_target_grid
 u-current content in diurnal thermocline layer More...
 
type(esmf_field), public xv_target_grid
 v-current content in diurnal thermocline layer More...
 
type(esmf_field), public xz_target_grid
 Diurnal thermocline layer thickness. More...
 
type(esmf_field), public xzts_target_grid
 d(xz)/d(ts) More...
 
type(esmf_field), public z0_target_grid
 roughness length More...
 
type(esmf_field), public z_c_target_grid
 Sub-layer cooling thickness. More...
 
type(esmf_field), public zm_target_grid
 Oceanic mixed layer depth. More...
 

Private Member Functions

subroutine cleanup_target_nst_data
 Free up memory once the target grid nst fields are no longer needed. More...
 
subroutine cleanup_target_sfc_data
 Free up memory once the target grid surface fields are no longer needed. More...
 

Private Attributes

real, parameter, private blim = 5.5
 soil 'b' parameter limit More...
 
real, parameter, private frz_h2o = 273.15
 melting pt water More...
 
real, parameter, private frz_ice = 271.21
 melting pt sea ice More...
 
real, parameter, private grav = 9.81
 gravity More...
 
real, parameter, private hlice = 3.335E5
 latent heat of fusion More...
 
type(esmf_field) soil_type_from_input_grid
 soil type interpolated from input grid More...
 
type(esmf_field) terrain_from_input_grid
 terrain height interpolated from input grid More...
 
type(esmf_field) terrain_from_input_grid_land
 terrain height interpolated from input grid at all land points More...
 
integer, parameter veg_type_landice_target = 15
 Vegetation type category that defines permanent land ice points. More...
 

Detailed Description

Process surface and nst fields.

Interpolates fields from the input to target grids. Adjusts soil temperature according to differences in input and target grid terrain. Rescales soil moisture for soil type differences between input and target grid. Computes frozen portion of total soil moisture.

Assumes the input land data are Noah LSM-based, and the fv3 run will use the Noah LSM. NSST fields are not available when using GRIB2 input data.

Public variables are defined below. "target" indicates field associated with the target grid. "input" indicates field associated with the input grid.

Author
George Gayno NCEP/EMC

Definition at line 21 of file surface.F90.

Member Function/Subroutine Documentation

subroutine surface::adjust_soil_levels ( integer, intent(in)  localpet)

Adjust soil levels of the input grid if there is a mismatch between input and target grids.

Presently can only convert from 9 to 4 levels.

Parameters
[in]localpetESMF local persistent execution thread
Author
Larissa Reames
Jeff Beck

Definition at line 3563 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::adjust_soilt_for_terrain ( )

Adjust soil temperature for changes in terrain height between the input and target grids.

Author
George Gayno NOAA/EMC

Definition at line 3487 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::calc_liq_soil_moisture ( )

Compute liquid portion of the total soil moisture.

Author
George Gayno NOAA/EMC

Definition at line 2521 of file surface.F90.

References error_handler(), and frh2o().

Referenced by surface_driver().

subroutine surface::check_smois_land ( )

Check soil mositure.

When using vegetation type from the input data instead of the orography file, there are frequently points with ~0 soil moisture at land points. For these points, set values in all relevant target grid surface arrays to fill values (done in check_smois_land) then run the search routine again to fill with appropriate values from nearby points (done in replace_land_sfcparams).

Author
Larissa Reames
Jeff Beck

Definition at line 2794 of file surface.F90.

References error_handler().

subroutine surface::cleanup_target_nst_data ( )
private

Free up memory once the target grid nst fields are no longer needed.

Author
George Gayno NOAA/EMC

Definition at line 4823 of file surface.F90.

Referenced by surface_driver().

subroutine surface::cleanup_target_sfc_data ( )
private

Free up memory once the target grid surface fields are no longer needed.

Author
George Gayno NOAA/EMC

Definition at line 4787 of file surface.F90.

Referenced by surface_driver().

subroutine surface::create_nst_esmf_fields ( )

Create ESMF fields for the target grid nst variables.

Author
George Gayno

Definition at line 4614 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::create_surface_esmf_fields ( )

Create ESMF fields for the target grid surface variables.

Author
George Gayno NOAA/EMC

Definition at line 4277 of file surface.F90.

References error_handler().

Referenced by surface_driver().

real function surface::frh2o ( real(esmf_kind_r8)  TKELV,
real(esmf_kind_r8)  SMC,
real(esmf_kind_r8)  SH2O,
real  SMCMAX,
real  BEXP,
real  PSIS 
)

Calculate supercooled soil moisture.

Calculate amount of supercooled liquid soil water content if temperature is below 273.15K. Requires Newton-type iteration to solve the nonlinear implicit equation given in eqn 17 of Koren et. al (1999, JGR, VOL 104(D16), 19569-19585).

New version (June 2001): Much faster and more accurate Newton iteration achieved by first taking log of eqn cited above – less than 4 (typically 1 or 2) iterations achieves convergence. Also, explicit 1-step solution option for special case of parameter ck=0, which reduces the original implicit equation to a simpler explicit form, known as the "Flerchinger eqn". Improved handling of solution in the limit of freezing point temperature.

Parameters
[in]tkelvTemperature (Kelvin)
[in]smcTotal soil moisture content (volumetric)
[in]sh2OLiquid soil moisture content (volumetric)
[in]smcmaxSaturation soil moisture content
[in]bexpSoil type "b" parameter
[in]psisSaturated soil matric potential
Returns
frh2O Supercooled liquid water content
Author
George Gayno NOAA/EMC
Date
2005-05-20

Definition at line 3181 of file surface.F90.

Referenced by calc_liq_soil_moisture().

subroutine surface::ij_to_i_j ( integer(esmf_kind_i4), intent(in)  ij,
integer, intent(in)  itile,
integer, intent(in)  jtile,
integer, intent(out)  i,
integer, intent(out)  j 
)

Convert 1d index to 2d indices.

Parameters
[in]ijthe 1d index
[in]itilei-dimension of the tile
[in]jtilej-dimension of the tile
[out]ithe "i" index
[out]jthe "j" index
Author
George Gayno NOAA/EMC

Definition at line 4758 of file surface.F90.

Referenced by interp().

subroutine surface::interp ( integer, intent(in)  localpet)

Horizontally interpolate surface fields from input to target FV3 grid using esmf routines.

Parameters
[in]localpetESMF local persistent execution thread
Author
George Gayno NOAA/EMC

Definition at line 308 of file surface.F90.

References error_handler(), ij_to_i_j(), and search_util::search().

Referenced by surface_driver().

subroutine surface::nst_land_fill ( )

nst is not active at land or sea ice points.

Set nst fields to flag values at these points.

Author
George Gayno NOAA/EMC

Definition at line 4068 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::qc_check ( )

Perform some quality control checks before output.

Author
George Gayno NOAA/EMC

Definition at line 3733 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::replace_land_sfcparams ( integer, intent(in)  localpet)

Replace bad surface points.

When using vegetation type from the input data instead of the orography file, there are frequently points with ~0 soil moisture at land points. For these points, set values in all relevant target grid surface arrays to fill values (done in check_smois_land) then run the search routine again to fill with appropriate values from nearby points (done in replace_land_sfcparams).

Parameters
[in]localpetESMF local persistent execution thread
Author
Larissa Reames
Jeff Beck

Definition at line 2978 of file surface.F90.

References error_handler(), and search_util::search().

subroutine surface::rescale_soil_moisture ( )

Adjust soil moisture for changes in soil type between the input and target grids.

Works for Noah land model only. Required to preserve latent/sensible heat fluxes.

Author
George Gayno NOAA/EMC

Definition at line 3319 of file surface.F90.

References error_handler().

Referenced by surface_driver().

subroutine surface::roughness ( )

Set roughness length at land and sea ice.

At land, roughness is set from a lookup table based on the vegetation type. At sea ice, roughness is set to 1 cm.

Author
George Gayno NOAA/EMC

Definition at line 3679 of file surface.F90.

References error_handler().

Referenced by surface_driver().

Field Documentation

real, parameter, private surface::blim = 5.5
private

soil 'b' parameter limit

Definition at line 130 of file surface.F90.

type(esmf_field), public surface::c_0_target_grid

Coefficient 1 to calculate d(tz)/d(ts)

Definition at line 80 of file surface.F90.

type(esmf_field), public surface::c_d_target_grid

Coefficient 2 to calculate d(tz)/d(ts)

Definition at line 78 of file surface.F90.

type(esmf_field), public surface::canopy_mc_target_grid

canopy moisture content

Definition at line 36 of file surface.F90.

type(esmf_field), public surface::d_conv_target_grid

Thickness of free convection layer.

Definition at line 82 of file surface.F90.

type(esmf_field), public surface::dt_cool_target_grid

Sub-layer cooling amount.

Definition at line 84 of file surface.F90.

type(esmf_field), public surface::f10m_target_grid

log((z0+10)*1/z0) See sfc_diff.f for details

Definition at line 38 of file surface.F90.

type(esmf_field), public surface::ffmm_target_grid

log((z0+z1)*1/z0) See sfc_diff.f for details

Definition at line 41 of file surface.F90.

real, parameter, private surface::frz_h2o = 273.15
private

melting pt water

Definition at line 132 of file surface.F90.

real, parameter, private surface::frz_ice = 271.21
private

melting pt sea ice

Definition at line 134 of file surface.F90.

real, parameter, private surface::grav = 9.81
private

gravity

Definition at line 136 of file surface.F90.

real, parameter, private surface::hlice = 3.335E5
private

latent heat of fusion

Definition at line 138 of file surface.F90.

type(esmf_field), public surface::ifd_target_grid

Model mode index.

0-diurnal model not started; 1-diurnal model started.

Definition at line 86 of file surface.F90.

type(esmf_field), public surface::lai_target_grid

leaf area index

Definition at line 74 of file surface.F90.

type(esmf_field), public surface::q2m_target_grid

2-m specific humidity

Definition at line 44 of file surface.F90.

type(esmf_field), public surface::qrain_target_grid

Sensible heat flux due to rainfall.

Definition at line 89 of file surface.F90.

type(esmf_field), public surface::seaice_depth_target_grid

sea ice depth

Definition at line 46 of file surface.F90.

type(esmf_field), public surface::seaice_fract_target_grid

sea ice fraction

Definition at line 48 of file surface.F90.

type(esmf_field), public surface::seaice_skin_temp_target_grid

sea ice skin temperature

Definition at line 50 of file surface.F90.

type(esmf_field), public surface::skin_temp_target_grid

skin temperature/sst

Definition at line 52 of file surface.F90.

type(esmf_field), public surface::snow_depth_target_grid

physical snow depth

Definition at line 58 of file surface.F90.

type(esmf_field), public surface::snow_liq_equiv_target_grid

liquid equiv snow depth

Definition at line 56 of file surface.F90.

type(esmf_field), public surface::soil_temp_target_grid

3-d soil temperature

Definition at line 60 of file surface.F90.

type(esmf_field) surface::soil_type_from_input_grid
private

soil type interpolated from input grid

Definition at line 120 of file surface.F90.

type(esmf_field), public surface::soilm_liq_target_grid

3-d liquid soil moisture

Definition at line 62 of file surface.F90.

type(esmf_field), public surface::soilm_tot_target_grid

3-d total soil moisture

Definition at line 64 of file surface.F90.

type(esmf_field), public surface::srflag_target_grid

snow/rain flag

Definition at line 54 of file surface.F90.

type(esmf_field), public surface::t2m_target_grid

2-m temperatrure

Definition at line 66 of file surface.F90.

type(esmf_field) surface::terrain_from_input_grid
private

terrain height interpolated from input grid

Definition at line 123 of file surface.F90.

type(esmf_field) surface::terrain_from_input_grid_land
private

terrain height interpolated from input grid at all land points

Definition at line 126 of file surface.F90.

type(esmf_field), public surface::tprcp_target_grid

precip

Definition at line 68 of file surface.F90.

type(esmf_field), public surface::tref_target_grid

reference temperature

Definition at line 91 of file surface.F90.

type(esmf_field), public surface::ustar_target_grid

friction velocity

Definition at line 70 of file surface.F90.

integer, parameter surface::veg_type_landice_target = 15
private

Vegetation type category that defines permanent land ice points.

The Noah LSM land ice physics are applied at these points.

Definition at line 29 of file surface.F90.

type(esmf_field), public surface::w_0_target_grid

Coefficient 3 to calculate d(tz)/d(ts)

Definition at line 95 of file surface.F90.

type(esmf_field), public surface::w_d_target_grid

Coefficient 4 to calculate d(tz)/d(ts)

Definition at line 93 of file surface.F90.

type(esmf_field), public surface::xs_target_grid

Salinity content in diurnal thermocline layer.

Definition at line 97 of file surface.F90.

type(esmf_field), public surface::xt_target_grid

Heat content in diurnal thermocline layer.

Definition at line 100 of file surface.F90.

type(esmf_field), public surface::xtts_target_grid

d(xt)/d(ts)

Definition at line 111 of file surface.F90.

type(esmf_field), public surface::xu_target_grid

u-current content in diurnal thermocline layer

Definition at line 103 of file surface.F90.

type(esmf_field), public surface::xv_target_grid

v-current content in diurnal thermocline layer

Definition at line 106 of file surface.F90.

type(esmf_field), public surface::xz_target_grid

Diurnal thermocline layer thickness.

Definition at line 109 of file surface.F90.

type(esmf_field), public surface::xzts_target_grid

d(xz)/d(ts)

Definition at line 113 of file surface.F90.

type(esmf_field), public surface::z0_target_grid

roughness length

Definition at line 72 of file surface.F90.

type(esmf_field), public surface::z_c_target_grid

Sub-layer cooling thickness.

Definition at line 115 of file surface.F90.

type(esmf_field), public surface::zm_target_grid

Oceanic mixed layer depth.

Definition at line 117 of file surface.F90.


The documentation for this module was generated from the following file: