Source code for fairyfly_therm.material.dictutil
# coding=utf-8
"""Utilities to convert material dictionaries to Python objects."""
from fairyfly_therm.material.solid import SolidMaterial
from fairyfly_therm.material.cavity import CavityMaterial
MATERIAL_TYPES = ('SolidMaterial', 'CavityMaterial')
[docs]
def dict_to_material(material_dict, raise_exception=True):
"""Get a Python object of any Material from a dictionary.
Args:
material_dict: A dictionary of any Fairyfly material. Note
that this should be a non-abridged dictionary to be valid.
raise_exception: Boolean to note whether an exception should be raised
if the object is not identified as a material. (Default: True).
Returns:
A Python object derived from the input constr_dict.
"""
try: # get the type key from the dictionary
mat_type = material_dict['type']
except KeyError:
raise ValueError('Material dictionary lacks required "type" key.')
if mat_type == 'SolidMaterial':
return SolidMaterial.from_dict(material_dict)
elif mat_type == 'CavityMaterial':
return CavityMaterial.from_dict(material_dict)
elif raise_exception:
raise ValueError(
'{} is not a recognized energy Material type'.format(material_dict))
[docs]
def dict_abridged_to_material(material_dict, gases, raise_exception=True):
"""Get a Python object of any Material from an abridged dictionary.
Args:
constr_dict: An abridged dictionary of any Fairyfly energy material.
gases: A dictionary with Gas identifiers as keys and Gas object instances
as values. These will be used to reassign the gas that fills
this cavity.
raise_exception: Boolean to note whether an exception should be raised
if the object is not identified as a material. Default: True.
Returns:
A Python object derived from the input constr_dict.
"""
try: # get the type key from the dictionary
mat_type = material_dict['type']
except KeyError:
raise ValueError('Material dictionary lacks required "type" key.')
if mat_type == 'SolidMaterial':
return SolidMaterial.from_dict(material_dict)
elif mat_type == 'CavityMaterialAbridged':
return CavityMaterial.from_dict_abridged(material_dict, gases)
elif raise_exception:
raise ValueError(
'{} is not a recognized energy Material type'.format(mat_type))