PySDM_examples.Spichtinger_et_al_2023.settings

 1from pystrict import strict
 2
 3from PySDM import Formulae
 4from PySDM.physics.constants import si
 5from PySDM.initialisation.spectra import Lognormal
 6from PySDM.initialisation.sampling import spectral_sampling
 7
 8
 9@strict
10class Settings:
11    def __init__(
12        self,
13        *,
14        n_sd: int,
15        w_updraft: float,
16        T0: float,
17        seed: int,
18        dt: float,
19    ):
20
21        self.n_sd = n_sd
22        self.w_updraft = w_updraft
23
24        self.N_dv_solution_droplet = 2500 / si.centimetre**3
25        self.r_mean_solution_droplet = 0.055 * si.micrometre
26        self.sigma_solution_droplet = 1.6
27
28        self.mass_of_dry_air = 1000 * si.kilogram
29        self.initial_pressure = 200 * si.hectopascals
30        self.initial_ice_supersaturation = 1.0
31        self.kappa = 0.64
32        self.initial_temperature = T0
33
34        self.formulae = Formulae(
35            particle_shape_and_density="MixedPhaseSpheres",
36            homogeneous_ice_nucleation_rate="Koop_Correction",
37            seed=seed,
38        )
39        const = self.formulae.constants
40        pvs_i = self.formulae.saturation_vapour_pressure.pvs_ice(
41            self.initial_temperature
42        )
43        self.initial_water_vapour_mixing_ratio = const.eps / (
44            self.initial_pressure / self.initial_ice_supersaturation / pvs_i - 1
45        )
46        dry_air_density = (
47            self.formulae.trivia.p_d(
48                self.initial_pressure, self.initial_water_vapour_mixing_ratio
49            )
50            / self.initial_temperature
51            / const.Rd
52        )
53
54        spectrum = Lognormal(
55            norm_factor=self.N_dv_solution_droplet / dry_air_density,
56            m_mode=self.r_mean_solution_droplet,
57            s_geom=self.sigma_solution_droplet,
58        )
59
60        self.r_dry, self.specific_concentration = spectral_sampling.Linear(
61            spectrum
62        ).sample(n_sd)
63
64        self.t_duration = 7200
65        self.dt = dt
66        self.n_output = int(self.t_duration / 100)
@strict
class Settings:
10@strict
11class Settings:
12    def __init__(
13        self,
14        *,
15        n_sd: int,
16        w_updraft: float,
17        T0: float,
18        seed: int,
19        dt: float,
20    ):
21
22        self.n_sd = n_sd
23        self.w_updraft = w_updraft
24
25        self.N_dv_solution_droplet = 2500 / si.centimetre**3
26        self.r_mean_solution_droplet = 0.055 * si.micrometre
27        self.sigma_solution_droplet = 1.6
28
29        self.mass_of_dry_air = 1000 * si.kilogram
30        self.initial_pressure = 200 * si.hectopascals
31        self.initial_ice_supersaturation = 1.0
32        self.kappa = 0.64
33        self.initial_temperature = T0
34
35        self.formulae = Formulae(
36            particle_shape_and_density="MixedPhaseSpheres",
37            homogeneous_ice_nucleation_rate="Koop_Correction",
38            seed=seed,
39        )
40        const = self.formulae.constants
41        pvs_i = self.formulae.saturation_vapour_pressure.pvs_ice(
42            self.initial_temperature
43        )
44        self.initial_water_vapour_mixing_ratio = const.eps / (
45            self.initial_pressure / self.initial_ice_supersaturation / pvs_i - 1
46        )
47        dry_air_density = (
48            self.formulae.trivia.p_d(
49                self.initial_pressure, self.initial_water_vapour_mixing_ratio
50            )
51            / self.initial_temperature
52            / const.Rd
53        )
54
55        spectrum = Lognormal(
56            norm_factor=self.N_dv_solution_droplet / dry_air_density,
57            m_mode=self.r_mean_solution_droplet,
58            s_geom=self.sigma_solution_droplet,
59        )
60
61        self.r_dry, self.specific_concentration = spectral_sampling.Linear(
62            spectrum
63        ).sample(n_sd)
64
65        self.t_duration = 7200
66        self.dt = dt
67        self.n_output = int(self.t_duration / 100)
Settings(*, n_sd: int, w_updraft: float, T0: float, seed: int, dt: float)
12    def __init__(
13        self,
14        *,
15        n_sd: int,
16        w_updraft: float,
17        T0: float,
18        seed: int,
19        dt: float,
20    ):
21
22        self.n_sd = n_sd
23        self.w_updraft = w_updraft
24
25        self.N_dv_solution_droplet = 2500 / si.centimetre**3
26        self.r_mean_solution_droplet = 0.055 * si.micrometre
27        self.sigma_solution_droplet = 1.6
28
29        self.mass_of_dry_air = 1000 * si.kilogram
30        self.initial_pressure = 200 * si.hectopascals
31        self.initial_ice_supersaturation = 1.0
32        self.kappa = 0.64
33        self.initial_temperature = T0
34
35        self.formulae = Formulae(
36            particle_shape_and_density="MixedPhaseSpheres",
37            homogeneous_ice_nucleation_rate="Koop_Correction",
38            seed=seed,
39        )
40        const = self.formulae.constants
41        pvs_i = self.formulae.saturation_vapour_pressure.pvs_ice(
42            self.initial_temperature
43        )
44        self.initial_water_vapour_mixing_ratio = const.eps / (
45            self.initial_pressure / self.initial_ice_supersaturation / pvs_i - 1
46        )
47        dry_air_density = (
48            self.formulae.trivia.p_d(
49                self.initial_pressure, self.initial_water_vapour_mixing_ratio
50            )
51            / self.initial_temperature
52            / const.Rd
53        )
54
55        spectrum = Lognormal(
56            norm_factor=self.N_dv_solution_droplet / dry_air_density,
57            m_mode=self.r_mean_solution_droplet,
58            s_geom=self.sigma_solution_droplet,
59        )
60
61        self.r_dry, self.specific_concentration = spectral_sampling.Linear(
62            spectrum
63        ).sample(n_sd)
64
65        self.t_duration = 7200
66        self.dt = dt
67        self.n_output = int(self.t_duration / 100)
n_sd
w_updraft
N_dv_solution_droplet
r_mean_solution_droplet
sigma_solution_droplet
mass_of_dry_air
initial_pressure
initial_ice_supersaturation
kappa
initial_temperature
formulae
initial_water_vapour_mixing_ratio
t_duration
dt
n_output