PySDM_examples.Abade_and_Albuquerque_2024.settings
1from pystrict import strict 2 3from PySDM import Formulae 4from PySDM.physics import si 5from PySDM.initialisation.spectra import Lognormal 6 7 8@strict 9class Settings: 10 def __init__( 11 self, 12 *, 13 n_sd: int, 14 timestep: float, 15 enable_immersion_freezing: bool = True, 16 enable_vapour_deposition_on_ice: bool = True, 17 inp_frac: float = 0.1, 18 ): 19 self.n_sd = n_sd 20 self.timestep = timestep 21 self.enable_immersion_freezing = enable_immersion_freezing 22 self.enable_vapour_deposition_on_ice = enable_vapour_deposition_on_ice 23 24 self.initial_total_pressure = 1000 * si.hPa # note: not given in the paper 25 26 # parameters from the paper 27 self.formulae = Formulae( 28 constants={ 29 "bulk_phase_partitioning_exponent": 0.1, 30 "NIEMAND_A": -0.517, 31 "NIEMAND_B": 8.934, 32 }, 33 bulk_phase_partitioning="KaulEtAl2015", 34 particle_shape_and_density="MixedPhaseSpheres", 35 diffusion_coordinate="WaterMassLogarithm", 36 freezing_temperature_spectrum="Niemand_et_al_2012", 37 ) 38 self.initial_water_vapour_mixing_ratio = 1.5 * si.g / si.kg 39 self.parcel_linear_extent = 100 * si.m 40 self.updraft = 0.5 * si.m / si.s 41 self.freezing_inp_frac = inp_frac 42 self.freezing_inp_dry_radius = 0.5 * si.um 43 44 thd_0 = self.formulae.state_variable_triplet.th_dry( 45 th_std=269 * si.K, 46 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 47 ) 48 rhod_0 = self.formulae.state_variable_triplet.rho_d( 49 p=self.initial_total_pressure, 50 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 51 theta_std=thd_0, 52 ) 53 54 self.mass_of_dry_air = rhod_0 * self.formulae.trivia.volume( 55 radius=self.parcel_linear_extent 56 ) 57 self.soluble_aerosol = Lognormal( 58 norm_factor=200 59 / si.mg 60 * self.mass_of_dry_air, # note: assuming per mg of dry air 61 m_mode=75 * si.nm, 62 s_geom=1.6, 63 ) 64 self.kappa = 0.6 65 self.initial_temperature = self.formulae.state_variable_triplet.T( 66 rhod=rhod_0, thd=thd_0 67 )
@strict
class
Settings:
9@strict 10class Settings: 11 def __init__( 12 self, 13 *, 14 n_sd: int, 15 timestep: float, 16 enable_immersion_freezing: bool = True, 17 enable_vapour_deposition_on_ice: bool = True, 18 inp_frac: float = 0.1, 19 ): 20 self.n_sd = n_sd 21 self.timestep = timestep 22 self.enable_immersion_freezing = enable_immersion_freezing 23 self.enable_vapour_deposition_on_ice = enable_vapour_deposition_on_ice 24 25 self.initial_total_pressure = 1000 * si.hPa # note: not given in the paper 26 27 # parameters from the paper 28 self.formulae = Formulae( 29 constants={ 30 "bulk_phase_partitioning_exponent": 0.1, 31 "NIEMAND_A": -0.517, 32 "NIEMAND_B": 8.934, 33 }, 34 bulk_phase_partitioning="KaulEtAl2015", 35 particle_shape_and_density="MixedPhaseSpheres", 36 diffusion_coordinate="WaterMassLogarithm", 37 freezing_temperature_spectrum="Niemand_et_al_2012", 38 ) 39 self.initial_water_vapour_mixing_ratio = 1.5 * si.g / si.kg 40 self.parcel_linear_extent = 100 * si.m 41 self.updraft = 0.5 * si.m / si.s 42 self.freezing_inp_frac = inp_frac 43 self.freezing_inp_dry_radius = 0.5 * si.um 44 45 thd_0 = self.formulae.state_variable_triplet.th_dry( 46 th_std=269 * si.K, 47 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 48 ) 49 rhod_0 = self.formulae.state_variable_triplet.rho_d( 50 p=self.initial_total_pressure, 51 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 52 theta_std=thd_0, 53 ) 54 55 self.mass_of_dry_air = rhod_0 * self.formulae.trivia.volume( 56 radius=self.parcel_linear_extent 57 ) 58 self.soluble_aerosol = Lognormal( 59 norm_factor=200 60 / si.mg 61 * self.mass_of_dry_air, # note: assuming per mg of dry air 62 m_mode=75 * si.nm, 63 s_geom=1.6, 64 ) 65 self.kappa = 0.6 66 self.initial_temperature = self.formulae.state_variable_triplet.T( 67 rhod=rhod_0, thd=thd_0 68 )
Settings( *, n_sd: int, timestep: float, enable_immersion_freezing: bool = True, enable_vapour_deposition_on_ice: bool = True, inp_frac: float = 0.1)
11 def __init__( 12 self, 13 *, 14 n_sd: int, 15 timestep: float, 16 enable_immersion_freezing: bool = True, 17 enable_vapour_deposition_on_ice: bool = True, 18 inp_frac: float = 0.1, 19 ): 20 self.n_sd = n_sd 21 self.timestep = timestep 22 self.enable_immersion_freezing = enable_immersion_freezing 23 self.enable_vapour_deposition_on_ice = enable_vapour_deposition_on_ice 24 25 self.initial_total_pressure = 1000 * si.hPa # note: not given in the paper 26 27 # parameters from the paper 28 self.formulae = Formulae( 29 constants={ 30 "bulk_phase_partitioning_exponent": 0.1, 31 "NIEMAND_A": -0.517, 32 "NIEMAND_B": 8.934, 33 }, 34 bulk_phase_partitioning="KaulEtAl2015", 35 particle_shape_and_density="MixedPhaseSpheres", 36 diffusion_coordinate="WaterMassLogarithm", 37 freezing_temperature_spectrum="Niemand_et_al_2012", 38 ) 39 self.initial_water_vapour_mixing_ratio = 1.5 * si.g / si.kg 40 self.parcel_linear_extent = 100 * si.m 41 self.updraft = 0.5 * si.m / si.s 42 self.freezing_inp_frac = inp_frac 43 self.freezing_inp_dry_radius = 0.5 * si.um 44 45 thd_0 = self.formulae.state_variable_triplet.th_dry( 46 th_std=269 * si.K, 47 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 48 ) 49 rhod_0 = self.formulae.state_variable_triplet.rho_d( 50 p=self.initial_total_pressure, 51 water_vapour_mixing_ratio=self.initial_water_vapour_mixing_ratio, 52 theta_std=thd_0, 53 ) 54 55 self.mass_of_dry_air = rhod_0 * self.formulae.trivia.volume( 56 radius=self.parcel_linear_extent 57 ) 58 self.soluble_aerosol = Lognormal( 59 norm_factor=200 60 / si.mg 61 * self.mass_of_dry_air, # note: assuming per mg of dry air 62 m_mode=75 * si.nm, 63 s_geom=1.6, 64 ) 65 self.kappa = 0.6 66 self.initial_temperature = self.formulae.state_variable_triplet.T( 67 rhod=rhod_0, thd=thd_0 68 )