PySDM_examples.utils.basic_simulation

 1import numpy as np
 2
 3
 4class BasicSimulation:
 5    def __init__(self, particulator, output_attributes=None):
 6        for k in output_attributes or []:
 7            assert k in particulator.attributes
 8        self.particulator = particulator
 9        self.output_attributes = output_attributes
10
11    def _save(self, output):
12        for k, v in self.particulator.products.items():
13            value = v.get()
14            if isinstance(value, np.ndarray) and value.shape[0] == 1:
15                value = value[0]
16            output[k].append(value)
17        for k in self.output_attributes or []:
18            value = self.particulator.attributes[k].to_ndarray()
19            output[k].append(value)
20
21    def _run(self, nt, steps_per_output_interval):
22        output = {k: [] for k in self.particulator.products}
23        output |= {k: [] for k in self.output_attributes or []}
24        self._save(output)
25        for _ in range(0, nt + 1, steps_per_output_interval):
26            self.particulator.run(steps=steps_per_output_interval)
27            self._save(output)
28        return {k: np.asarray(v) for k, v in output.items()}
class BasicSimulation:
 5class BasicSimulation:
 6    def __init__(self, particulator, output_attributes=None):
 7        for k in output_attributes or []:
 8            assert k in particulator.attributes
 9        self.particulator = particulator
10        self.output_attributes = output_attributes
11
12    def _save(self, output):
13        for k, v in self.particulator.products.items():
14            value = v.get()
15            if isinstance(value, np.ndarray) and value.shape[0] == 1:
16                value = value[0]
17            output[k].append(value)
18        for k in self.output_attributes or []:
19            value = self.particulator.attributes[k].to_ndarray()
20            output[k].append(value)
21
22    def _run(self, nt, steps_per_output_interval):
23        output = {k: [] for k in self.particulator.products}
24        output |= {k: [] for k in self.output_attributes or []}
25        self._save(output)
26        for _ in range(0, nt + 1, steps_per_output_interval):
27            self.particulator.run(steps=steps_per_output_interval)
28            self._save(output)
29        return {k: np.asarray(v) for k, v in output.items()}
BasicSimulation(particulator, output_attributes=None)
 6    def __init__(self, particulator, output_attributes=None):
 7        for k in output_attributes or []:
 8            assert k in particulator.attributes
 9        self.particulator = particulator
10        self.output_attributes = output_attributes
particulator
output_attributes