radiation_cloud Module


Uses

  • module~~radiation_cloud~2~~UsesGraph module~radiation_cloud~2 radiation_cloud module~parkind1~2 PARKIND1 module~radiation_cloud~2->module~parkind1~2

Used by

  • module~~radiation_cloud~2~~UsedByGraph module~radiation_cloud~2 radiation_cloud proc~cloud_optics cloud_optics proc~cloud_optics->module~radiation_cloud~2 proc~solver_spartacus_sw solver_spartacus_sw proc~solver_spartacus_sw->module~radiation_cloud~2 proc~general_cloud_optics general_cloud_optics proc~general_cloud_optics->module~radiation_cloud~2 proc~solver_homogeneous_sw solver_homogeneous_sw proc~solver_homogeneous_sw->module~radiation_cloud~2 proc~solver_mcica_sw solver_mcica_sw proc~solver_mcica_sw->module~radiation_cloud~2 proc~solver_tripleclouds_sw~2 solver_tripleclouds_sw proc~solver_tripleclouds_sw~2->module~radiation_cloud~2 proc~solver_homogeneous_lw~2 solver_homogeneous_lw proc~solver_homogeneous_lw~2->module~radiation_cloud~2 proc~solver_spartacus_lw solver_spartacus_lw proc~solver_spartacus_lw->module~radiation_cloud~2 proc~solver_spartacus_lw~2 solver_spartacus_lw proc~solver_spartacus_lw~2->module~radiation_cloud~2 program~ecrad_ifs_driver~2 ecrad_ifs_driver program~ecrad_ifs_driver~2->module~radiation_cloud~2 proc~save_radiative_properties~2 save_radiative_properties proc~save_radiative_properties~2->module~radiation_cloud~2 proc~radiation_scheme~3 RADIATION_SCHEME proc~radiation_scheme~3->module~radiation_cloud~2 proc~save_inputs save_inputs proc~save_inputs->module~radiation_cloud~2 proc~solver_mcica_lw solver_mcica_lw proc~solver_mcica_lw->module~radiation_cloud~2 program~ecrad_ifs_driver ecrad_ifs_driver program~ecrad_ifs_driver->module~radiation_cloud~2 proc~cloud_optics~2 cloud_optics proc~cloud_optics~2->module~radiation_cloud~2 proc~radiation~2 radiation proc~radiation~2->module~radiation_cloud~2 proc~save_inputs~2 save_inputs proc~save_inputs~2->module~radiation_cloud~2 proc~solver_tripleclouds_lw solver_tripleclouds_lw proc~solver_tripleclouds_lw->module~radiation_cloud~2 proc~radiation_scheme RADIATION_SCHEME proc~radiation_scheme->module~radiation_cloud~2 proc~solver_tripleclouds_lw~2 solver_tripleclouds_lw proc~solver_tripleclouds_lw~2->module~radiation_cloud~2 proc~radiation radiation proc~radiation->module~radiation_cloud~2 proc~read_input read_input proc~read_input->module~radiation_cloud~2 proc~ifs_copy_inputs_to_blocked ifs_copy_inputs_to_blocked proc~ifs_copy_inputs_to_blocked->module~radiation_cloud~2 proc~general_cloud_optics~2 general_cloud_optics proc~general_cloud_optics~2->module~radiation_cloud~2 proc~solver_mcica_sw~2 solver_mcica_sw proc~solver_mcica_sw~2->module~radiation_cloud~2 program~ecrad_driver ecrad_driver program~ecrad_driver->module~radiation_cloud~2 proc~radiation_scheme~2 RADIATION_SCHEME proc~radiation_scheme~2->module~radiation_cloud~2 proc~solver_homogeneous_lw solver_homogeneous_lw proc~solver_homogeneous_lw->module~radiation_cloud~2 proc~solver_tripleclouds_sw solver_tripleclouds_sw proc~solver_tripleclouds_sw->module~radiation_cloud~2 proc~cloud_optics~4 cloud_optics proc~cloud_optics~4->module~radiation_cloud~2 proc~solver_homogeneous_sw~2 solver_homogeneous_sw proc~solver_homogeneous_sw~2->module~radiation_cloud~2 proc~save_radiative_properties save_radiative_properties proc~save_radiative_properties->module~radiation_cloud~2 proc~cloud_optics~3 cloud_optics proc~cloud_optics~3->module~radiation_cloud~2 proc~solver_mcica_lw~2 solver_mcica_lw proc~solver_mcica_lw~2->module~radiation_cloud~2 proc~solver_spartacus_sw~2 solver_spartacus_sw proc~solver_spartacus_sw~2->module~radiation_cloud~2 proc~radiation_scheme_s2 RADIATION_SCHEME_S2 proc~radiation_scheme_s2->module~radiation_cloud~2

Contents


Derived Types

type, public ::  cloud_type

Components

Type Visibility Attributes Name Initial
integer, public :: ntype = 0
real(kind=jprb), public, allocatable, dimension(:,:,:) :: mixing_ratio
real(kind=jprb), public, allocatable, dimension(:,:,:) :: effective_radius
real(kind=jprb), public, pointer, dimension(:,:) :: q_liq
real(kind=jprb), public, pointer, dimension(:,:) :: q_ice
real(kind=jprb), public, pointer, dimension(:,:) :: re_liq
real(kind=jprb), public, pointer, dimension(:,:) :: re_ice
real(kind=jprb), public, allocatable, dimension(:,:) :: fraction
real(kind=jprb), public, allocatable, dimension(:,:) :: fractional_std
real(kind=jprb), public, allocatable, dimension(:,:) :: inv_cloud_effective_size
real(kind=jprb), public, allocatable, dimension(:,:) :: inv_inhom_effective_size
real(kind=jprb), public, allocatable, dimension(:,:) :: overlap_param

Type-Bound Procedures

procedure , public :: allocate => allocate_cloud_arrays Subroutine
procedure , public :: deallocate => deallocate_cloud_arrays Subroutine
procedure , public :: set_overlap_param_fix Subroutine
procedure , public :: set_overlap_param_var Subroutine
generic, public :: set_overlap_param => set_overlap_param_fix, set_overlap_param_var
procedure , public :: set_overlap_param_var2D Subroutine
procedure , public :: set_overlap_param_approx Subroutine
procedure , public :: create_fractional_std Subroutine
procedure , public :: create_inv_cloud_effective_size Subroutine
procedure , public :: create_inv_cloud_effective_size_eta Subroutine
procedure , public :: param_cloud_effective_separation_eta Subroutine
procedure , public :: param_cloud_effective_separation_tanh Subroutine
procedure , public :: crop_cloud_fraction Subroutine
procedure , public :: out_of_physical_bounds Function

Functions

public function out_of_physical_bounds(this, istartcol, iendcol, do_fix) result(is_bad)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol
logical, intent(in), optional :: do_fix

Return Value logical


Subroutines

public subroutine allocate_cloud_arrays(this, ncol, nlev, ntype, use_inhom_effective_size)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout), target :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
integer, intent(in), optional :: ntype
logical, intent(in), optional :: use_inhom_effective_size

public subroutine deallocate_cloud_arrays(this)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this

public subroutine set_overlap_param_fix(this, thermodynamics, decorrelation_length, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
type(thermodynamics_type), intent(in) :: thermodynamics
real(kind=jprb), intent(in) :: decorrelation_length
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol

public subroutine set_overlap_param_var(this, thermodynamics, decorrelation_length, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
type(thermodynamics_type), intent(in) :: thermodynamics
real(kind=jprb), intent(in) :: decorrelation_length(istartcol:iendcol)
integer, intent(in) :: istartcol
integer, intent(in) :: iendcol

public subroutine set_overlap_param_var2D(this, thermodynamics, decorrelation_length, klev, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
type(thermodynamics_type), intent(in) :: thermodynamics
real(kind=jprb), intent(in) :: decorrelation_length(istartcol:iendcol,klev)
integer, intent(in) :: klev
integer, intent(in) :: istartcol
integer, intent(in) :: iendcol

public subroutine set_overlap_param_approx(this, thermodynamics, decorrelation_length, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
type(thermodynamics_type), intent(in) :: thermodynamics
real(kind=jprb), intent(in) :: decorrelation_length
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol

public subroutine create_fractional_std(this, ncol, nlev, frac_std)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
real(kind=jprb), intent(in) :: frac_std

public subroutine create_inv_cloud_effective_size(this, ncol, nlev, inv_eff_size)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
real(kind=jprb), intent(in) :: inv_eff_size

public subroutine create_inv_cloud_effective_size_eta(this, ncol, nlev, pressure_hl, inv_eff_size_low, inv_eff_size_mid, inv_eff_size_high, eta_low_mid, eta_mid_high, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
real(kind=jprb), intent(in) :: pressure_hl(:,:)
real(kind=jprb), intent(in) :: inv_eff_size_low
real(kind=jprb), intent(in) :: inv_eff_size_mid
real(kind=jprb), intent(in) :: inv_eff_size_high
real(kind=jprb), intent(in) :: eta_low_mid
real(kind=jprb), intent(in) :: eta_mid_high
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol

public subroutine param_cloud_effective_separation_eta(this, ncol, nlev, pressure_hl, separation_surf, separation_toa, power, inhom_separation_factor, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
real(kind=jprb), intent(in) :: pressure_hl(:,:)
real(kind=jprb), intent(in) :: separation_surf
real(kind=jprb), intent(in) :: separation_toa
real(kind=jprb), intent(in) :: power
real(kind=jprb), intent(in), optional :: inhom_separation_factor
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol

public subroutine param_cloud_effective_separation_tanh(this, ncol, nlev, pressure_hl, lx_surf, lx_toa, gama, inhom_separation_factor, istartcol, iendcol)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: ncol
integer, intent(in) :: nlev
real(kind=jprb), intent(in) :: pressure_hl(:,:)
real(kind=jprb), intent(in) :: lx_surf
real(kind=jprb), intent(in) :: lx_toa
real(kind=jprb), intent(in) :: gama
real(kind=jprb), intent(in), optional :: inhom_separation_factor
integer, intent(in), optional :: istartcol
integer, intent(in), optional :: iendcol

public subroutine crop_cloud_fraction(this, istartcol, iendcol, cloud_fraction_threshold, cloud_mixing_ratio_threshold)

Arguments

Type IntentOptional Attributes Name
class(cloud_type), intent(inout) :: this
integer, intent(in) :: istartcol
integer, intent(in) :: iendcol
real(kind=jprb) :: cloud_fraction_threshold
real(kind=jprb) :: cloud_mixing_ratio_threshold