PySDM_examples.Long_1974.simulation
1from PySDM_examples.utils import BasicSimulation 2 3from PySDM.backends import CPU 4from PySDM import Builder 5from PySDM.dynamics import Coalescence 6from PySDM.environments import Box 7from PySDM.initialisation.sampling.spectral_sampling import ConstantMultiplicity 8from PySDM.products.size_spectral import ParticleVolumeVersusRadiusLogarithmSpectrum 9from PySDM.products import Time 10 11 12class Simulation(BasicSimulation): 13 def __init__(self, settings, products=None): 14 builder = Builder( 15 n_sd=settings.n_sd, 16 backend=CPU(), 17 environment=Box(dv=settings.dv, dt=settings.dt), 18 dynamics=( 19 Coalescence( 20 collision_kernel=settings.kernel, 21 coalescence_efficiency=settings.coal_eff, 22 adaptive=settings.adaptive, 23 ), 24 ), 25 ) 26 builder.particulator.environment["rhod"] = settings.rhod 27 attributes = {} 28 attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity( 29 settings.spectrum 30 ).sample_deterministic(settings.n_sd) 31 32 products = ( 33 ParticleVolumeVersusRadiusLogarithmSpectrum( 34 radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr" 35 ), 36 Time(name="t"), 37 ) 38 particulator = builder.build(attributes, products) 39 self.settings = settings 40 super().__init__(particulator=particulator) 41 42 def run(self): 43 return super()._run(self.settings.nt, self.settings.steps_per_output_interval)
13class Simulation(BasicSimulation): 14 def __init__(self, settings, products=None): 15 builder = Builder( 16 n_sd=settings.n_sd, 17 backend=CPU(), 18 environment=Box(dv=settings.dv, dt=settings.dt), 19 dynamics=( 20 Coalescence( 21 collision_kernel=settings.kernel, 22 coalescence_efficiency=settings.coal_eff, 23 adaptive=settings.adaptive, 24 ), 25 ), 26 ) 27 builder.particulator.environment["rhod"] = settings.rhod 28 attributes = {} 29 attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity( 30 settings.spectrum 31 ).sample_deterministic(settings.n_sd) 32 33 products = ( 34 ParticleVolumeVersusRadiusLogarithmSpectrum( 35 radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr" 36 ), 37 Time(name="t"), 38 ) 39 particulator = builder.build(attributes, products) 40 self.settings = settings 41 super().__init__(particulator=particulator) 42 43 def run(self): 44 return super()._run(self.settings.nt, self.settings.steps_per_output_interval)
Simulation(settings, products=None)
14 def __init__(self, settings, products=None): 15 builder = Builder( 16 n_sd=settings.n_sd, 17 backend=CPU(), 18 environment=Box(dv=settings.dv, dt=settings.dt), 19 dynamics=( 20 Coalescence( 21 collision_kernel=settings.kernel, 22 coalescence_efficiency=settings.coal_eff, 23 adaptive=settings.adaptive, 24 ), 25 ), 26 ) 27 builder.particulator.environment["rhod"] = settings.rhod 28 attributes = {} 29 attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity( 30 settings.spectrum 31 ).sample_deterministic(settings.n_sd) 32 33 products = ( 34 ParticleVolumeVersusRadiusLogarithmSpectrum( 35 radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr" 36 ), 37 Time(name="t"), 38 ) 39 particulator = builder.build(attributes, products) 40 self.settings = settings 41 super().__init__(particulator=particulator)