for i in range(nreplicas): configs.append(copy.deepcopy(YSZ_config)) ################################################################ # print(HAp_config.structure) # 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,
def main(): tomlfile = sys.argv[1] if len(sys.argv) > 1 else "input.toml" rxparams = RXParams.from_toml(tomlfile) nreplicas = rxparams.nreplicas nprocs_per_replica = rxparams.nprocs_per_replica kB = 8.6173e-5 comm = RX_MPI_init(rxparams) # RXMC parameters # specify temperatures for each replica, number of steps, etc. kTstart = rxparams.kTstart kTend = rxparams.kTend kTs = kB * np.linspace(kTstart, kTend, nreplicas) # Set Lreload to True when restarting Lreload = rxparams.reload nsteps = rxparams.nsteps RXtrial_frequency = rxparams.RXtrial_frequency sample_frequency = rxparams.sample_frequency print_frequency = rxparams.print_frequency dftparams = DFTParams.from_toml(tomlfile) if dftparams.solver == 'vasp': solver = VASPSolver(dftparams.path) elif dftparams.solver == 'qe': solver = QESolver(dftparams.path) else: print('unknown solver: {}'.format(dftparams.solver)) sys.exit(1) # model setup # we first choose a "model" defining how to perform energy calculations and trial steps # on the "configuration" defined below energy_calculator = runner(base_input_dir=dftparams.base_input_dir, Solver=solver, nprocs_per_solver=nprocs_per_replica, comm=MPI.COMM_SELF, perturb=dftparams.perturb, solver_run_scheme=dftparams.solver_run_scheme) model = dft_latgas(energy_calculator, save_history=False) # defect sublattice setup configparams = DFTConfigParams.from_toml(tomlfile) spinel_config = defect_config(configparams) configs = [] for i in range(nreplicas): configs.append(copy.deepcopy(spinel_config)) obsparams = ObserverParams.from_toml(tomlfile) # RXMC calculation RXcalc = TemperatureRX_MPI(comm, CanonicalMonteCarlo, model, configs, kTs) if Lreload: RXcalc.reload() obs = RXcalc.run( nsteps, RXtrial_frequency, sample_frequency, print_frequency, observer=default_observer(comm, Lreload), subdirs=True, ) if comm.Get_rank() == 0: print(obs)