Module PySDM.environments.box

Bare zero-dimensional framework

Expand source code
"""
Bare zero-dimensional framework
"""

import numpy as np

from PySDM.impl.mesh import Mesh


class Box:
    def __init__(self, dt, dv):
        self.dt = dt
        self.mesh = Mesh.mesh_0d(dv)
        self.particulator = None
        self._ambient_air = {}

    def __getitem__(self, item):
        return self._ambient_air[item]

    def __setitem__(self, key, value):
        if key not in self._ambient_air:
            self._ambient_air[key] = self.particulator.backend.Storage.from_ndarray(
                np.array([value])
            )
        else:
            self._ambient_air[key][:] = value

    def register(self, builder):
        self.particulator = builder.particulator

    def init_attributes(self, *, spectral_discretisation):
        attributes = {}
        (
            attributes["volume"],
            attributes["multiplicity"],
        ) = spectral_discretisation.sample(
            backend=self.particulator.backend, n_sd=self.particulator.n_sd
        )
        return attributes

Classes

class Box (dt, dv)
Expand source code
class Box:
    def __init__(self, dt, dv):
        self.dt = dt
        self.mesh = Mesh.mesh_0d(dv)
        self.particulator = None
        self._ambient_air = {}

    def __getitem__(self, item):
        return self._ambient_air[item]

    def __setitem__(self, key, value):
        if key not in self._ambient_air:
            self._ambient_air[key] = self.particulator.backend.Storage.from_ndarray(
                np.array([value])
            )
        else:
            self._ambient_air[key][:] = value

    def register(self, builder):
        self.particulator = builder.particulator

    def init_attributes(self, *, spectral_discretisation):
        attributes = {}
        (
            attributes["volume"],
            attributes["multiplicity"],
        ) = spectral_discretisation.sample(
            backend=self.particulator.backend, n_sd=self.particulator.n_sd
        )
        return attributes

Methods

def init_attributes(self, *, spectral_discretisation)
Expand source code
def init_attributes(self, *, spectral_discretisation):
    attributes = {}
    (
        attributes["volume"],
        attributes["multiplicity"],
    ) = spectral_discretisation.sample(
        backend=self.particulator.backend, n_sd=self.particulator.n_sd
    )
    return attributes
def register(self, builder)
Expand source code
def register(self, builder):
    self.particulator = builder.particulator