Skip to content

Simulation

Simulation

A wrapper class for binding a SimulationState to the structure with which it belongs. Simplifies actions like retrieving simulation state based on site location.

Source code in pylattica/core/simulation.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class Simulation:
    """A wrapper class for binding a SimulationState to the structure
    with which it belongs. Simplifies actions like retrieving simulation
    state based on site location.
    """

    def __init__(self, state: SimulationState, structure: PeriodicStructure):
        """Instantiates a Simulation with the provided state and structure.

        Parameters
        ----------
        state : SimulationState
            The SimulationState
        structure : PeriodicStructure
            The structure to which the SimulationState site IDs refer.
        """
        self.state = state
        self.structure = structure

    def as_dict(self):
        res = {"state": self.state.as_dict(), "structure": self.structure.as_dict()}
        return res

    def to_file(self, fname):
        with open(fname, "w+", encoding="utf-8") as f:
            json.dump(self.as_dict(), f)

    @classmethod
    def from_dict(cls, d):
        state = SimulationState.from_dict(d["state"])
        structure = PeriodicStructure.from_dict(d["structure"])
        return cls(state, structure)

    @classmethod
    def from_file(cls, fname):
        with open(fname, "r+", encoding="utf-8") as f:
            d = json.load(f)
            return cls.from_dict(d)

    def state_at(self, location: Tuple[float]) -> Dict:
        """Retrieves the state of the site at the requested location.

        Parameters
        ----------
        location : Tuple[float]
            The location of the desired site

        Returns
        -------
        Dict
            The state of the found site.
        """
        site = self.structure.site_at(location)

        if site is None:
            return None

        site_state = self.state.get_site_state(site[SITE_ID])
        return site_state

__init__(state, structure)

Instantiates a Simulation with the provided state and structure.

Parameters
SimulationState

The SimulationState

PeriodicStructure

The structure to which the SimulationState site IDs refer.

Source code in pylattica/core/simulation.py
16
17
18
19
20
21
22
23
24
25
26
27
def __init__(self, state: SimulationState, structure: PeriodicStructure):
    """Instantiates a Simulation with the provided state and structure.

    Parameters
    ----------
    state : SimulationState
        The SimulationState
    structure : PeriodicStructure
        The structure to which the SimulationState site IDs refer.
    """
    self.state = state
    self.structure = structure

state_at(location)

Retrieves the state of the site at the requested location.

Parameters
Tuple[float]

The location of the desired site

Returns

Dict The state of the found site.

Source code in pylattica/core/simulation.py
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def state_at(self, location: Tuple[float]) -> Dict:
    """Retrieves the state of the site at the requested location.

    Parameters
    ----------
    location : Tuple[float]
        The location of the desired site

    Returns
    -------
    Dict
        The state of the found site.
    """
    site = self.structure.site_at(location)

    if site is None:
        return None

    site_state = self.state.get_site_state(site[SITE_ID])
    return site_state