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()}