PartMC  2.8.0
Functions/Subroutines | Variables
pmc_ice_nucleation Module Reference

Functions/Subroutines

subroutine ice_nucleation_immersion_freezing (aero_state, aero_data, env_state, del_t, immersion_freezing_scheme_type, freezing_rate, do_freezing_naive, INAS_a, INAS_b)
 Main subroutine for immersion freezing simulation. More...
 
subroutine ice_nucleation_singular_initialize (aero_state, aero_data, INAS_a, INAS_b)
 Initialization for the singular scheme, sampling the freezing temperature for each particle. More...
 
subroutine ice_nucleation_immersion_freezing_singular (aero_state, aero_data, env_state)
 Simulation for singular scheme, deciding whether to freeze for each particle. Run in each time step. More...
 
subroutine ice_nucleation_immersion_freezing_time_dependent (aero_state, aero_data, env_state, del_t, immersion_freezing_scheme_type, freezing_rate)
 Simulation for time-dependent scheme (e.g., ABIFM, constant rate), deciding whether to freeze for each particle. Run in each time step. This subroutine applies the binned-tau leaping algorithm for speeding up. More...
 
subroutine ice_nucleation_immersion_freezing_time_dependent_naive (aero_state, aero_data, env_state, del_t, immersion_freezing_scheme_type, freezing_rate)
 Simulation for time-dependent scheme (e.g., ABIFM, constant rate), deciding whether to freeze for each particle. Run in each time step. This subroutine applies the naive algorithm that checks each particle. More...
 
subroutine ice_nucleation_melting (aero_state, aero_data, env_state)
 Simulates melting: if the environmental temperature is above the freezing temperature of water, all particles are set to be unfrozen. More...
 
real(kind=dp) function abifm_pfrz_particle (aero_particle, aero_data, a_w_ice, del_t)
 Calculating the freezing probability for the particle (i_part) using ABIFM method (Knopf et al.,2013) More...
 
subroutine abifm_max_spec (aero_data, a_w_ice, i_spec_max, j_het_max)
 Finding the maximum heterogeneous ice nucleation rate coefficient. More...
 
real(kind=dp) function abifm_pfrz_max (diameter_max, aero_data, j_het_max, del_t)
 Calculating the maximum freezing probability for particles in one bin using ABIFM method (Knopf et al.,2013). Only used by the binned-tau leaping algorithm. More...
 

Variables

integer, parameter immersion_freezing_scheme_invalid = 0
 Type code for an undefined or invalid immersion freezing scheme. More...
 
integer, parameter immersion_freezing_scheme_const = 1
 Type code for constant ice nucleation rate (J_het) immersion freezing scheme. More...
 
integer, parameter immersion_freezing_scheme_singular = 2
 Type code for the singular (INAS) immersion freezing scheme. More...
 
integer, parameter immersion_freezing_scheme_abifm = 3
 Type code for the ABIFM immersion freezing scheme. More...
 

Function/Subroutine Documentation

◆ abifm_max_spec()

subroutine pmc_ice_nucleation::abifm_max_spec ( type(aero_data_t), intent(in)  aero_data,
real(kind=dp), intent(in)  a_w_ice,
integer, intent(out)  i_spec_max,
real(kind=dp), intent(out)  j_het_max 
)

Finding the maximum heterogeneous ice nucleation rate coefficient.

Parameters
[in]aero_dataAerosol data.
[in]a_w_iceThe water activity w.r.t. ice.
[out]i_spec_maxThe index of the maximum J_het species.
[out]j_het_maxThe maximum value of J_het among all species.

Definition at line 426 of file ice_nucleation.F90.

◆ abifm_pfrz_max()

real(kind=dp) function pmc_ice_nucleation::abifm_pfrz_max ( real(kind=dp), intent(in)  diameter_max,
type(aero_data_t), intent(in)  aero_data,
real(kind=dp), intent(in)  j_het_max,
real(kind=dp), intent(in)  del_t 
)

Calculating the maximum freezing probability for particles in one bin using ABIFM method (Knopf et al.,2013). Only used by the binned-tau leaping algorithm.

Parameters
[in]aero_dataAerosol data.
[in]diameter_maxMaximum diameter.
[in]del_tTime interval.
[in]j_het_maxMaximum J_het among all species.

Definition at line 460 of file ice_nucleation.F90.

◆ abifm_pfrz_particle()

real(kind=dp) function pmc_ice_nucleation::abifm_pfrz_particle ( type(aero_particle_t), intent(in)  aero_particle,
type(aero_data_t), intent(in)  aero_data,
real(kind=dp), intent(in)  a_w_ice,
real(kind=dp), intent(in)  del_t 
)

Calculating the freezing probability for the particle (i_part) using ABIFM method (Knopf et al.,2013)

Parameters
[in]aero_particleAerosol particle.
[in]aero_dataAerosol data.
[in]a_w_iceThe water activity w.r.t. ice.
[in]del_tTime interval.

Definition at line 383 of file ice_nucleation.F90.

◆ ice_nucleation_immersion_freezing()

subroutine pmc_ice_nucleation::ice_nucleation_immersion_freezing ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
type(env_state_t), intent(inout)  env_state,
real(kind=dp), intent(in)  del_t,
integer, intent(in)  immersion_freezing_scheme_type,
real(kind=dp), intent(in)  freezing_rate,
logical, intent(in)  do_freezing_naive,
real(kind=dp), intent(in)  INAS_a,
real(kind=dp), intent(in)  INAS_b 
)

Main subroutine for immersion freezing simulation.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in,out]env_stateEnvironment state.
[in]del_tTotal time to integrate.
[in]immersion_freezing_scheme_typeImmersion freezing scheme type.
[in]freezing_rateFreezing rate (only used for the constant rate scheme).
[in]do_freezing_naiveWhether to use the naive algorithm for time-dependent scheme. (If false, use the binned tau-leaping algorithm.)
[in]inas_aSlope parameter for the INAS parameterization (singular scheme only).
[in]inas_bIntercept parameter for the INAS parameterization (singular scheme only).

Definition at line 34 of file ice_nucleation.F90.

◆ ice_nucleation_immersion_freezing_singular()

subroutine pmc_ice_nucleation::ice_nucleation_immersion_freezing_singular ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
type(env_state_t), intent(inout)  env_state 
)

Simulation for singular scheme, deciding whether to freeze for each particle. Run in each time step.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in,out]env_stateEnvironment state.

Definition at line 126 of file ice_nucleation.F90.

◆ ice_nucleation_immersion_freezing_time_dependent()

subroutine pmc_ice_nucleation::ice_nucleation_immersion_freezing_time_dependent ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
type(env_state_t), intent(inout)  env_state,
real(kind=dp), intent(in)  del_t,
integer, intent(in)  immersion_freezing_scheme_type,
real(kind=dp), intent(in)  freezing_rate 
)

Simulation for time-dependent scheme (e.g., ABIFM, constant rate), deciding whether to freeze for each particle. Run in each time step. This subroutine applies the binned-tau leaping algorithm for speeding up.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in,out]env_stateEnvironment state.
[in]del_tTotal time to integrate.
[in]freezing_rateFreezing rate (only used for the constant rate scheme).
[in]immersion_freezing_scheme_typeImmersion freezing scheme type.

Definition at line 172 of file ice_nucleation.F90.

◆ ice_nucleation_immersion_freezing_time_dependent_naive()

subroutine pmc_ice_nucleation::ice_nucleation_immersion_freezing_time_dependent_naive ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
type(env_state_t), intent(inout)  env_state,
real(kind=dp), intent(in)  del_t,
integer, intent(in)  immersion_freezing_scheme_type,
real(kind=dp), intent(in)  freezing_rate 
)

Simulation for time-dependent scheme (e.g., ABIFM, constant rate), deciding whether to freeze for each particle. Run in each time step. This subroutine applies the naive algorithm that checks each particle.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in,out]env_stateEnvironment state.
[in]del_tTotal time to integrate.
[in]immersion_freezing_scheme_typeType of the immersion freezing scheme
[in]freezing_rateFreezing rate (only used for the constant rate scheme).

Definition at line 289 of file ice_nucleation.F90.

◆ ice_nucleation_melting()

subroutine pmc_ice_nucleation::ice_nucleation_melting ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
type(env_state_t), intent(inout)  env_state 
)

Simulates melting: if the environmental temperature is above the freezing temperature of water, all particles are set to be unfrozen.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in,out]env_stateEnvironment state.

Definition at line 358 of file ice_nucleation.F90.

◆ ice_nucleation_singular_initialize()

subroutine pmc_ice_nucleation::ice_nucleation_singular_initialize ( type(aero_state_t), intent(inout)  aero_state,
type(aero_data_t), intent(in)  aero_data,
real(kind=dp), intent(in)  INAS_a,
real(kind=dp), intent(in)  INAS_b 
)

Initialization for the singular scheme, sampling the freezing temperature for each particle.

Parameters
[in,out]aero_stateAerosol state.
[in]aero_dataAerosol data.
[in]inas_aSlope parameter for the INAS parameterization.
[in]inas_bIntercept parameter for the INAS parameterization.

Definition at line 91 of file ice_nucleation.F90.

Variable Documentation

◆ immersion_freezing_scheme_abifm

integer, parameter pmc_ice_nucleation::immersion_freezing_scheme_abifm = 3

Type code for the ABIFM immersion freezing scheme.

Definition at line 27 of file ice_nucleation.F90.

◆ immersion_freezing_scheme_const

integer, parameter pmc_ice_nucleation::immersion_freezing_scheme_const = 1

Type code for constant ice nucleation rate (J_het) immersion freezing scheme.

Definition at line 23 of file ice_nucleation.F90.

◆ immersion_freezing_scheme_invalid

integer, parameter pmc_ice_nucleation::immersion_freezing_scheme_invalid = 0

Type code for an undefined or invalid immersion freezing scheme.

Definition at line 20 of file ice_nucleation.F90.

◆ immersion_freezing_scheme_singular

integer, parameter pmc_ice_nucleation::immersion_freezing_scheme_singular = 2

Type code for the singular (INAS) immersion freezing scheme.

Definition at line 25 of file ice_nucleation.F90.