Source code for atsim.potentials.config._configuration
from ._config_parser import ConfigParser
from ._common import ConfigurationException
from ._tabulation_factories import TABULATION_FACTORIES
import logging
[docs]class Configuration(object):
"""Factory class that allows Tabulation objects to be built from .ini files"""
def __init__(self):
self._tabulation_factories = dict(TABULATION_FACTORIES)
[docs] def read(self, fp):
"""Read potential data from the file object `fp` and return a `PairTabulation` or `EAMTabulation` object.
:params fp: File like object containing potential information.
:returns: Tabulation object"""
cp = ConfigParser(fp)
return self.read_from_parser(cp)
[docs] def read_from_parser(self, cp):
"""Read potential data from the `ConfigParser` object `cp` and return a `PairTabulation` or `EAMTabulation` instance.
:param cp: atsim.potentials.config.ConfigParser instance.
:returns: Tabulation object"""
logger = logging.getLogger(__name__).getChild("Configuration.read_from_parser")
tabulation_target = cp.tabulation.target
if tabulation_target is None:
logger.warning("No tabulation target specified - defaulting to 'LAMMPS'")
tabulation_target = "LAMMPS"
if not tabulation_target in self._tabulation_factories:
errormsg = "[Tabulation].tabulation-target - unknown tabulation target specified : '{}'".format(tabulation_target)
logger.error(errormsg)
raise ConfigurationException(errormsg)
else:
logger.info("Tabulation target specified as '{}'".format(tabulation_target))
factory = self._tabulation_factories[tabulation_target]
tabulation = factory.create_tabulation(cp)
return tabulation