PySDM_examples.Long_1974.simulation

 1from PySDM_examples.utils import BasicSimulation
 2
 3from PySDM.backends import CPU
 4from PySDM import Particulator
 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        environment = Box(dv=settings.dv, dt=settings.dt, backend=CPU())
15        environment["rhod"] = settings.rhod
16        attributes = {}
17        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
18            settings.spectrum
19        ).sample_deterministic(settings.n_sd)
20
21        products = (
22            ParticleVolumeVersusRadiusLogarithmSpectrum(
23                radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr"
24            ),
25            Time(name="t"),
26        )
27        particulator = Particulator(
28            n_sd=settings.n_sd,
29            environment=environment,
30            dynamics=(
31                Coalescence(
32                    collision_kernel=settings.kernel,
33                    coalescence_efficiency=settings.coal_eff,
34                    adaptive=settings.adaptive,
35                ),
36            ),
37            attributes=attributes,
38            products=products,
39        )
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)
13class Simulation(BasicSimulation):
14    def __init__(self, settings, products=None):
15        environment = Box(dv=settings.dv, dt=settings.dt, backend=CPU())
16        environment["rhod"] = settings.rhod
17        attributes = {}
18        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
19            settings.spectrum
20        ).sample_deterministic(settings.n_sd)
21
22        products = (
23            ParticleVolumeVersusRadiusLogarithmSpectrum(
24                radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr"
25            ),
26            Time(name="t"),
27        )
28        particulator = Particulator(
29            n_sd=settings.n_sd,
30            environment=environment,
31            dynamics=(
32                Coalescence(
33                    collision_kernel=settings.kernel,
34                    coalescence_efficiency=settings.coal_eff,
35                    adaptive=settings.adaptive,
36                ),
37            ),
38            attributes=attributes,
39            products=products,
40        )
41        self.settings = settings
42        super().__init__(particulator=particulator)
43
44    def run(self):
45        return super()._run(self.settings.nt, self.settings.steps_per_output_interval)
Simulation(settings, products=None)
14    def __init__(self, settings, products=None):
15        environment = Box(dv=settings.dv, dt=settings.dt, backend=CPU())
16        environment["rhod"] = settings.rhod
17        attributes = {}
18        attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
19            settings.spectrum
20        ).sample_deterministic(settings.n_sd)
21
22        products = (
23            ParticleVolumeVersusRadiusLogarithmSpectrum(
24                radius_bins_edges=settings.radius_bins_edges, name="dv/dlnr"
25            ),
26            Time(name="t"),
27        )
28        particulator = Particulator(
29            n_sd=settings.n_sd,
30            environment=environment,
31            dynamics=(
32                Coalescence(
33                    collision_kernel=settings.kernel,
34                    coalescence_efficiency=settings.coal_eff,
35                    adaptive=settings.adaptive,
36                ),
37            ),
38            attributes=attributes,
39            products=products,
40        )
41        self.settings = settings
42        super().__init__(particulator=particulator)
settings
def run(self):
44    def run(self):
45        return super()._run(self.settings.nt, self.settings.steps_per_output_interval)