davidkleiven / CEMC

DEPRECATED: Monte Carlo package targeted at systems studied with the Cluster Expansion.
MIT License
3 stars 2 forks source link

Restart+save funksjon i SGCFreeEnergyBarrier #11

Closed davidkleiven closed 6 years ago

davidkleiven commented 6 years ago

Siden FreeEnergyBarrier essensielt lagrer et histogram så kan man enkelt bare summere resultater fra flere runs. Derfor må en save funksjon lagre alle nødvendige data for å kunne "fortsette" på en simulering.

def save( self, fname ):
    params = self.kwargs
    params["temperature"] = self.T
    params["chemical_potential"] = self.chemical_potential
    params["atoms_file"] = self.atoms_file # Brukeren kan spesifisere dette filnavnet når objektet initialiseres

    obj_info = {}
    obj_info["params"] = params
    obj_info["histograms"] = ... # Array av alle histogrammene i viduene (rådata)
    obj_info["free_energy"] = ... # Den endelig fri energien
    with open( fname, 'w' ) as outfile:
        json.dump( data, outfile, indent=2, separators=(",",":") )

For å enkelt kunne kjøre flere steg, bør det være en restart funksjon

@staticmethod
def restart( fname ):
    with open(fname,'r') as infile:
         obj_info = json.load(infile)
    T = obj_info["params"].pop("temperature")
    atoms = ase.io.read( obj_info["params"].pop("atoms_file"))
    kwargs = obj_info["params"]
    obj = SGCFreeEnergyBarrier( atoms, T, **kwargs )

    # Initialiser alle histgrammene i alle vinduene til de verdiene som er 
    # lagret i obj_info["histograms"]
    return obj
davidkleiven commented 6 years ago

Siden brukeren må styre med CE kalkulatoren så er det kanskje best om man ikke lagrer atoms objektet, og at restart funksjonen ser slik ut

@staticmethod
def restart( atoms, fname ):
    # Gjør det samme bortsett fra at atoms objektet ikke leses
davidkleiven commented 6 years ago

Det er en save funksjon implementert. Det som gjenstår er å implementere en load funksjon som slik at man kan restarte en simulering.

davidkleiven commented 6 years ago

SGCNucleationBarrier inneholder nå save og load.