""" Material module SPDX - License - Identifier: LGPL - 3.0 - or -later Copyright © 2020 Project Author Guille Gutierrez guillermo.gutierrezmorote@concordia.ca Contributor Atiya atiya.atiya@mail.concordia.ca Contributor Mohammad Reza mohammad.seyedabadi@mail.concordia.ca """ import ast from typing import Union class Material: """ Material class """ def __init__(self): self._type = type self._id = None self._name = None self._conductivity = None self._specific_heat = None self._density = None self._density_unit = None self._solar_absorptance = None self._thermal_absorptance = None self._visible_absorptance = None self._no_mass = False self._thermal_resistance = None self._embodied_carbon = None self._embodied_carbon_unit = None self._recycling_ratio = None self._onsite_recycling_ratio = None self._company_recycling_ratio = None self._landfilling_ratio = None self._cost = None self._cost_unit = None @property def type(self): """ Get material type :return: str """ return self._type @type.setter def type(self, value): """ Set material type :param value: string """ self._type = str(value) @property def id(self): """ Get material id :return: int """ return self._id @id.setter def id(self, value): """ Set material id :param value: int """ self._id = int(value) @property def name(self): """ Get material name :return: str """ return self._name @name.setter def name(self, value): """ Set material name :param value: string """ self._name = str(value) @property def conductivity(self) -> Union[None, float]: """ Get material conductivity in W/mK :return: None or float """ return self._conductivity @conductivity.setter def conductivity(self, value): """ Set material conductivity in W/mK :param value: float """ if value is not None: self._conductivity = float(value) @property def specific_heat(self) -> Union[None, float]: """ Get material conductivity in J/kgK :return: None or float """ return self._specific_heat @specific_heat.setter def specific_heat(self, value): """ Get material conductivity in J/kgK :param value: float """ if value is not None: self._specific_heat = float(value) @property def density(self) -> Union[None, float]: """ Get material density in kg/m3 :return: None or float """ return self._density @density.setter def density(self, value): """ Set material density :param value: float """ if value is not None: self._density = float(value) @property def density_unit(self) -> Union[None, str]: """ Get material density unit :return: None or string """ return self._density_unit @density_unit.setter def density_unit(self, value): """ Set material density unit :param value: string """ if value is not None: self._density_unit = str(value) @property def solar_absorptance(self) -> Union[None, float]: """ Get material solar absorptance :return: None or float """ return self._solar_absorptance @solar_absorptance.setter def solar_absorptance(self, value): """ Set material solar absorptance :param value: float """ if value is not None: self._solar_absorptance = float(value) @property def thermal_absorptance(self) -> Union[None, float]: """ Get material thermal absorptance :return: None or float """ return self._thermal_absorptance @thermal_absorptance.setter def thermal_absorptance(self, value): """ Set material thermal absorptance :param value: float """ if value is not None: self._thermal_absorptance = float(value) @property def visible_absorptance(self) -> Union[None, float]: """ Get material visible absorptance :return: None or float """ return self._visible_absorptance @visible_absorptance.setter def visible_absorptance(self, value): """ Set material visible absorptance :param value: float """ if value is not None: self._visible_absorptance = float(value) @property def no_mass(self) -> Union[None, bool]: """ Get material no mass flag :return: None or Boolean """ return self._no_mass @no_mass.setter def no_mass(self, value): """ Set material no mass flag :param value: Boolean """ if value is not None: self._no_mass = value @property def thermal_resistance(self) -> Union[None, float]: """ Get material thermal resistance in m2K/W :return: None or float """ return self._thermal_resistance @thermal_resistance.setter def thermal_resistance(self, value): """ Set material thermal resistance in m2K/W :param value: float """ if value is not None: self._thermal_resistance = float(value) @property def embodied_carbon(self) -> Union[None, float]: """ Get material embodied carbon :return: None or float """ return self._embodied_carbon @embodied_carbon.setter def embodied_carbon(self, value): """ Set material embodied carbon :param value: float """ if value is not None: self._embodied_carbon = float(value) @property def embodied_carbon_unit(self) -> Union[None, str]: """ Get material embodied carbon unit :return: None or string """ return self._embodied_carbon @embodied_carbon_unit.setter def embodied_carbon_unit(self, value): """ Set material embodied carbon unit :param value: string """ if value is not None: self._embodied_carbon_unit = str(value) @property def recycling_ratio(self) -> Union[None, float]: """ Get material recycling ratio :return: None or float """ return self._recycling_ratio @recycling_ratio.setter def recycling_ratio(self, value): """ Set material recycling ratio :param value: float """ if value is not None: self._recycling_ratio = float(value) @property def onsite_recycling_ratio(self) -> Union[None, float]: """ Get material onsite recycling ratio :return: None or float """ return self._onsite_recycling_ratio @onsite_recycling_ratio.setter def onsite_recycling_ratio(self, value): """ Set material onsite recycling ratio :param value: float """ if value is not None: self._onsite_recycling_ratio = float(value) @property def company_recycling_ratio(self) -> Union[None, float]: """ Get material company recycling ratio :return: None or float """ return self._company_recycling_ratio @company_recycling_ratio.setter def company_recycling_ratio(self, value): """ Set material company recycling ratio :param value: float """ if value is not None: self._company_recycling_ratio = float(value) @property def landfilling_ratio(self) -> Union[None, float]: """ Get material landfilling ratio :return: None or float """ return self._landfilling_ratio @landfilling_ratio.setter def landfilling_ratio(self, value): """ Set material landfilling ratio :param value: float """ if value is not None: self._landfilling_ratio = float(value) @property def cost(self) -> Union[None, float]: """ Get material cost :return: None or float """ return self._cost @cost.setter def cost(self, value): """ Set material cost :param value: float """ if value is not None: self._cost = float(value) @property def cost_unit(self) -> Union[None, str]: """ Get material cost unit :return: None or string """ return self._cost_unit @cost_unit.setter def cost_unit(self, value): """ Set material cost unit :param value: string """ if value is not None: self._cost_unit = float(value)