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)
settings
def run(self):
43    def run(self):
44        return super()._run(self.settings.nt, self.settings.steps_per_output_interval)