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)