Source code for mchammer.observers.constituent_strain_observer

from mchammer.observers.base_observer import BaseObserver
from icet.tools import ConstituentStrain
from ase import Atoms


[docs]class ConstituentStrainObserver(BaseObserver): """ This class represents a constituent strain observer. It allows observation of constituent strain energy separate from the energy calculated by the cluster expansion. Parameters ---------- constituent_strain ConstituentStrain object interval observation interval during the Monte Carlo simulation Attributes ---------- tag : str human readable observer name interval : int the observation interval. If None the ensemble object will set the interval (if the observer is used in a Monte Carlo simulation) """ def __init__(self, constituent_strain: ConstituentStrain, interval: int = None) -> None: super().__init__(interval=interval, return_type=dict, tag='ConstituentStrainObserver') self.constituent_strain = constituent_strain
[docs] def get_observable(self, structure: Atoms) -> dict: """ Returns the constituent strain energy for a given atomic configuration. Parameters ---------- structure input atomic structure """ cs = self.constituent_strain.get_constituent_strain(structure.get_atomic_numbers()) cs = {'constituent_strain_energy': cs * len(structure)} return cs