PySDM_examples.Bieli_et_al_2022.simulation

 1import PySDM.products.size_spectral.arbitrary_moment as am
 2from PySDM.backends import CPU
 3from PySDM.particulator import Particulator
 4from PySDM.dynamics import Collision
 5from PySDM.environments import Box
 6from PySDM.initialisation.sampling.spectral_sampling import ConstantMultiplicity
 7
 8
 9def make_core(settings, coal_eff):
10    backend = CPU
11    collision = Collision(
12        collision_kernel=settings.kernel,
13        coalescence_efficiency=coal_eff,
14        breakup_efficiency=settings.break_eff,
15        fragmentation_function=settings.fragmentation,
16        adaptive=settings.adaptive,
17    )
18    environment = Box(
19        dv=settings.dv,
20        dt=settings.dt,
21        backend=backend(settings.formulae),
22    )
23
24    environment["rhod"] = 1.0
25    attributes = {}
26    attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
27        settings.spectrum
28    ).sample_deterministic(settings.n_sd)
29    common_args = {
30        "attr": "volume",
31        "attr_unit": "m^3",
32        "skip_division_by_m0": True,
33        "skip_division_by_dv": True,
34    }
35    products = tuple(
36        am.make_arbitrary_moment_product(rank=rank, **common_args)(name=f"M{rank}")
37        for rank in range(3)
38    )
39    return Particulator(
40        n_sd=settings.n_sd,
41        environment=environment,
42        dynamics=[collision],
43        attributes=attributes,
44        products=products,
45    )
def make_core(settings, coal_eff):
10def make_core(settings, coal_eff):
11    backend = CPU
12    collision = Collision(
13        collision_kernel=settings.kernel,
14        coalescence_efficiency=coal_eff,
15        breakup_efficiency=settings.break_eff,
16        fragmentation_function=settings.fragmentation,
17        adaptive=settings.adaptive,
18    )
19    environment = Box(
20        dv=settings.dv,
21        dt=settings.dt,
22        backend=backend(settings.formulae),
23    )
24
25    environment["rhod"] = 1.0
26    attributes = {}
27    attributes["volume"], attributes["multiplicity"] = ConstantMultiplicity(
28        settings.spectrum
29    ).sample_deterministic(settings.n_sd)
30    common_args = {
31        "attr": "volume",
32        "attr_unit": "m^3",
33        "skip_division_by_m0": True,
34        "skip_division_by_dv": True,
35    }
36    products = tuple(
37        am.make_arbitrary_moment_product(rank=rank, **common_args)(name=f"M{rank}")
38        for rank in range(3)
39    )
40    return Particulator(
41        n_sd=settings.n_sd,
42        environment=environment,
43        dynamics=[collision],
44        attributes=attributes,
45        products=products,
46    )