horizontal_diffusion Module

For performing horizontal diffusion.


Uses

  • module~~horizontal_diffusion~~UsesGraph module~horizontal_diffusion horizontal_diffusion module~geometry geometry module~horizontal_diffusion->module~geometry module~types types module~horizontal_diffusion->module~types module~params params module~horizontal_diffusion->module~params module~geometry->module~types module~geometry->module~params iso_fortran_env iso_fortran_env module~types->iso_fortran_env module~params->module~types

Used by

  • module~~horizontal_diffusion~~UsedByGraph module~horizontal_diffusion horizontal_diffusion module~model_state model_state module~model_state->module~horizontal_diffusion module~implicit implicit module~model_state->module~implicit proc~modimplicit_initialize ModImplicit_initialize proc~modimplicit_initialize->module~horizontal_diffusion proc~modimplicit_set_time_step ModImplicit_set_time_step proc~modimplicit_set_time_step->module~horizontal_diffusion proc~step step proc~step->module~horizontal_diffusion proc~step->module~model_state proc~step->module~implicit proc~modimplicit_delete ModImplicit_delete proc~modimplicit_delete->module~horizontal_diffusion module~implicit->module~horizontal_diffusion proc~get_tendencies get_tendencies proc~get_tendencies->module~model_state proc~initialize_geopotential initialize_geopotential proc~initialize_geopotential->module~model_state proc~modelstate_init_sst_anom modelstate_init_sst_anom proc~modelstate_init_sst_anom->module~model_state proc~initialize_boundaries initialize_boundaries proc~initialize_boundaries->module~model_state proc~get_grid_point_tendencies get_grid_point_tendencies proc~get_grid_point_tendencies->module~model_state proc~get_grid_point_tendencies->module~implicit proc~land_model_init land_model_init proc~land_model_init->module~model_state proc~get_physical_tendencies get_physical_tendencies proc~get_physical_tendencies->module~model_state proc~do_single_step do_single_step proc~do_single_step->module~model_state proc~initialize_coupler initialize_coupler proc~initialize_coupler->module~model_state proc~run_land_model run_land_model proc~run_land_model->module~model_state proc~set_forcing set_forcing proc~set_forcing->module~model_state proc~sea_model_init sea_model_init proc~sea_model_init->module~model_state proc~run_sea_model run_sea_model proc~run_sea_model->module~model_state module~speedy_driver speedy_driver module~speedy_driver->module~model_state module~prognostics prognostics module~prognostics->module~model_state proc~couple_sea_land couple_sea_land proc~couple_sea_land->module~model_state proc~couple_land_atm couple_land_atm proc~couple_land_atm->module~model_state proc~set_geopotential set_geopotential proc~set_geopotential->module~model_state proc~first_step first_step proc~first_step->module~model_state proc~initialize_state initialize_state proc~initialize_state->module~model_state proc~initialize_state->module~prognostics proc~get_zonal_average_fields get_zonal_average_fields proc~get_zonal_average_fields->module~model_state proc~get_spectral_tendencies get_spectral_tendencies proc~get_spectral_tendencies->module~model_state proc~get_spectral_tendencies->module~implicit proc~get_shortwave_rad_fluxes get_shortwave_rad_fluxes proc~get_shortwave_rad_fluxes->module~model_state proc~couple_sea_atm couple_sea_atm proc~couple_sea_atm->module~model_state proc~transform_grid2spectral transform_grid2spectral proc~transform_grid2spectral->module~prognostics proc~transform_spectral2grid transform_spectral2grid proc~transform_spectral2grid->module~prognostics proc~apply_grid_filter apply_grid_filter proc~apply_grid_filter->module~prognostics

Contents


Interfaces

public interface do_horizontal_diffusion

  • private function do_horizontal_diffusion_2d(field, fdt_in, dmp_in, dmp1_in) result(fdt_out)

    Adds horizontal diffusion tendency of field to spectral tendency fdt using damping coefficients dmp and dmp1.

    Arguments

    Type IntentOptional AttributesName
    complex(kind=p), intent(in) :: field(mx,nx)
    complex(kind=p), intent(in) :: fdt_in(mx,nx)
    real(kind=p), intent(in) :: dmp_in(mx,nx)
    real(kind=p), intent(in) :: dmp1_in(mx,nx)

    Return Value complex(kind=p) (mx,nx)

  • private function do_horizontal_diffusion_3d(field, fdt_in, dmp_in, dmp1_in) result(fdt_out)

    Adds horizontal diffusion tendency of field to spectral tendency fdt at all model levels using damping coefficients dmp and dmp1.

    Arguments

    Type IntentOptional AttributesName
    complex(kind=p), intent(in) :: field(mx,nx,kx)
    complex(kind=p), intent(in) :: fdt_in(mx,nx,kx)
    real(kind=p), intent(in) :: dmp_in(mx,nx)
    real(kind=p), intent(in) :: dmp1_in(mx,nx)

    Return Value complex(kind=p) (mx,nx,kx)


Derived Types

type, public :: ModHorizontalDiffusion_t

Components

TypeVisibility AttributesNameInitial
real(kind=p), private, allocatable:: dmp(:,:)

Damping coefficient for temperature and vorticity (explicit)

real(kind=p), private, allocatable:: dmpd(:,:)

Damping coefficient for divergence (explicit)

real(kind=p), private, allocatable:: dmps(:,:)

Damping coefficient for extra diffusion in the stratosphere (explicit)

real(kind=p), private, allocatable:: dmp1(:,:)

Damping coefficient for temperature and vorticity (implicit)

real(kind=p), private, allocatable:: dmp1d(:,:)

Damping coefficient for divergence (implicit)

real(kind=p), private, allocatable:: dmp1s(:,:)

Damping coefficient for extra diffusion in the stratosphere (implicit)

real(kind=p), private, allocatable:: tcorv(:)

Vertical component of orographic correction for temperature

real(kind=p), private, allocatable:: qcorv(:)

Vertical component of orographic correction for humidity

complex(kind=p), private, allocatable:: tcorh(:,:)

Horizontal component of orographic correction for temperature

complex(kind=p), private, allocatable:: qcorh(:,:)

Horizontal component of orographic correction for humidity

logical, private :: mod_diffusion_initialized =.false.
class(ModGeometry_t), private, pointer:: mod_geometry=> null()

Spectral module instance

logical, private :: mod_geometry_initialized =.false.

Type-Bound Procedures

procedure, public :: initialize => ModHorizontalDiffusion_initialize
procedure, public :: delete => ModHorizontalDiffusion_delete

Functions

private function do_horizontal_diffusion_2d(field, fdt_in, dmp_in, dmp1_in) result(fdt_out)

Adds horizontal diffusion tendency of field to spectral tendency fdt using damping coefficients dmp and dmp1.

Arguments

Type IntentOptional AttributesName
complex(kind=p), intent(in) :: field(mx,nx)
complex(kind=p), intent(in) :: fdt_in(mx,nx)
real(kind=p), intent(in) :: dmp_in(mx,nx)
real(kind=p), intent(in) :: dmp1_in(mx,nx)

Return Value complex(kind=p) (mx,nx)

private function do_horizontal_diffusion_3d(field, fdt_in, dmp_in, dmp1_in) result(fdt_out)

Adds horizontal diffusion tendency of field to spectral tendency fdt at all model levels using damping coefficients dmp and dmp1.

Arguments

Type IntentOptional AttributesName
complex(kind=p), intent(in) :: field(mx,nx,kx)
complex(kind=p), intent(in) :: fdt_in(mx,nx,kx)
real(kind=p), intent(in) :: dmp_in(mx,nx)
real(kind=p), intent(in) :: dmp1_in(mx,nx)

Return Value complex(kind=p) (mx,nx,kx)


Subroutines

public subroutine ModHorizontalDiffusion_initialize(this, mod_geometry)

Initializes the arrays used for horizontal diffusion.

Arguments

Type IntentOptional AttributesName
class(ModHorizontalDiffusion_t), intent(inout) :: this
class(ModGeometry_t), intent(in), target:: mod_geometry

public subroutine ModHorizontalDiffusion_delete(this)

Arguments

Type IntentOptional AttributesName
class(ModHorizontalDiffusion_t), intent(inout) :: this