Beispiel #1
0
def observables(MCcalc, outputfi):
    energy = MCcalc.energy
    # nup = MCcalc.config.count("OH",0)[0]
    # ndown = MCcalc.config.count("OH",1)[0]
    # tot_pol = np.abs(nup - ndown)/6
    grid = grid_1D(0.02, 0.02, 5.0)
    g_r_OY = g_r(MCcalc.config.structure, "O", "Y", grid)
    g_r_OZr = g_r(MCcalc.config.structure, "O", "Zr", grid)
    g_r_YY = g_r(MCcalc.config.structure, "Y", "Y", grid)
    # energy2 = energy**2.0
    # xparam = MCcalc.model.xparam(MCcalc.config)
    outputfi.write(
        "\t".join([str(observable)
                   for observable in [MCcalc.kT, energy]]) + "\n")
    outputfi.flush()
    scalar_obs = [MCcalc.kT, energy]
    return obs_encode(scalar_obs, g_r_OY, g_r_OZr, g_r_YY)
Beispiel #2
0
import random as rand
import sys

from abics.mc import CanonicalMonteCarlo, grid_1D
from model_setup import *


if __name__ == "__main__":
    L = 1.0
    rdisc = 1.0 / 14.0
    Ndisc = 20
    dr = 0.01
    maxstep = rdisc / 2
    kT = 1

    grid = grid_1D(dr, dr, L / 2.0)
    config = HC_2D_config(L, Ndisc, rdisc)
    model = HC_2D(maxstep)
    config.prepare_ordered()
    print(config.coors)
    print(g_r(config, grid))
    calc = CanonicalMonteCarlo(model, kT, config, grid=grid)
    plot_fig(calc, 10000)
    # calc.run(10000, observefunc=observables)
    # print(config.coors)

    """calc = Canonical
    
    J = -1.0
    kT = abs(J) * 1.0
    size = 10
Beispiel #3
0
# poscar = Poscar(HAp_config.structure)
# poscar.write_file("POSCAR.vasp")

################### model setup ###############################
# baseinput = VaspInput.from_directory("baseinput")
# energy_calculator = vasp_runner(base_input_dir="./baseinput",
#                                path_to_vasp="/home/i0009/i000900/src/vasp.5.3/vasp.spawnready.gamma",
#                                nprocs_per_vasp=nprocs_per_replica,
#                                comm=MPI.COMM_SELF, perturb=0.1)
energy_calculator = SolverBase()
model = dft_latgas(energy_calculator, save_history=True)
##############################################################

################### RXMC calculation #########################
kTs = kB * np.array([kTstart * kTstep**i for i in range(nreplicas)])
grid = grid_1D(dr, dr, maxr)
RXcalc = TemperatureRX_MPI(comm, CanonicalMonteCarlo, model, configs, kTs)

obs = RXcalc.run(eqsteps,
                 RXtrial_frequency,
                 sample_frequency,
                 observfunc=observables,
                 subdirs=True)
# RXcalc.reload()
obs = RXcalc.run(nsteps,
                 RXtrial_frequency,
                 sample_frequency,
                 observfunc=observables,
                 subdirs=True)

if comm.Get_rank() == 0: