Source code for fairyfly_therm.simulation.parameter

# coding=utf-8
"""Complete set of THERM Simulation Settings."""
from __future__ import division

from .mesh import MeshControl
from .exposure import ModelExposure


[docs] class SimulationParameter(object): """Complete set of Therm Simulation Settings. Args: mesh: A MeshControl that lists the desired meshing procedure. If None, default meshing control will be automatically generated. (Default: None). exposure: A ModelExposure that describes the model location in a building. If None, default exposure will be automatically generated. (Default: None). Properties: * mesh * exposure """ __slots__ = ('_mesh', '_exposure') def __init__(self, mesh=None, exposure=None): """Initialize SimulationParameter.""" self.mesh = mesh self.exposure = exposure @property def mesh(self): """Get or set a MeshControl object for the simulation meshing procedure.""" return self._mesh @mesh.setter def mesh(self, value): if value is not None: assert isinstance(value, MeshControl), 'Expected MeshControl ' \ 'for SimulationParameter output. Got {}.'.format(type(value)) self._mesh = value else: self._mesh = MeshControl() @property def exposure(self): """Get or set a ModelExposure object that describes the model location in a building. """ return self._exposure @exposure.setter def exposure(self, value): if value is not None: assert isinstance(value, ModelExposure), 'Expected ModelExposure ' \ 'for SimulationParameter output. Got {}.'.format(type(value)) self._exposure = value else: self._exposure = ModelExposure()
[docs] @classmethod def from_dict(cls, data): """Create a SimulationParameter object from a dictionary. Args: data: A SimulationParameter dictionary in following the format below. .. code-block:: python { "type": "SimulationParameter", "mesh": {} # Fairyfly MeshControl dictionary "exposure": {} # Fairyfly ModelExposure dictionary } """ assert data['type'] == 'SimulationParameter', \ 'Expected SimulationParameter dictionary. Got {}.'.format(data['type']) mesh = None if 'mesh' in data and data['mesh'] is not None: mesh = MeshControl.from_dict(data['mesh']) exposure = None if 'exposure' in data and data['exposure'] is not None: exposure = ModelExposure.from_dict(data['exposure']) return cls(mesh, exposure)
[docs] def to_dict(self): """SimulationParameter dictionary representation.""" return { 'type': 'SimulationParameter', 'mesh': self.mesh.to_dict(), 'exposure': self.exposure.to_dict() }
[docs] def duplicate(self): """Get a copy of this object.""" return self.__copy__()
[docs] def ToString(self): """Overwrite .NET ToString.""" return self.__repr__()
def __copy__(self): return SimulationParameter(self.mesh.duplicate(), self.exposure.duplicate()) def __key(self): """A tuple based on the object properties, useful for hashing.""" return (hash(self.mesh), hash(self.exposure)) def __hash__(self): return hash(self.__key()) def __eq__(self, other): return isinstance(other, SimulationParameter) and self.__key() == other.__key() def __ne__(self, other): return not self.__eq__(other) def __repr__(self): return 'Therm SimulationParameter:'