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        )
19        builder.particulator.environment["rhod"] = settings.rhod
20        attributes = {}
21        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
22            settings.spectrum
23        ).sample_deterministic(settings.n_sd)
24        builder.add_dynamic(
25            Coalescence(
26                collision_kernel=settings.kernel,
27                coalescence_efficiency=settings.coal_eff,
28                adaptive=settings.adaptive,
29            )
30        )
31        products = (
32            ParticleVolumeVersusRadiusLogarithmSpectrum(
33                radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr"
34            ),
35            Time(name="t"),
36        )
37        particulator = builder.build(attributes, products)
38        self.settings = settings
39        super().__init__(particulator=particulator)
40
41    def run(self):
42        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        )
20        builder.particulator.environment["rhod"] = settings.rhod
21        attributes = {}
22        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
23            settings.spectrum
24        ).sample_deterministic(settings.n_sd)
25        builder.add_dynamic(
26            Coalescence(
27                collision_kernel=settings.kernel,
28                coalescence_efficiency=settings.coal_eff,
29                adaptive=settings.adaptive,
30            )
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)
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        )
20        builder.particulator.environment["rhod"] = settings.rhod
21        attributes = {}
22        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
23            settings.spectrum
24        ).sample_deterministic(settings.n_sd)
25        builder.add_dynamic(
26            Coalescence(
27                collision_kernel=settings.kernel,
28                coalescence_efficiency=settings.coal_eff,
29                adaptive=settings.adaptive,
30            )
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)
settings
def run(self):
42    def run(self):
43        return super()._run(self.settings.nt, self.settings.steps_per_output_interval)