Prefetch example
[1]:
import sys
import feasst as fst
def mc(target_acceptance=0.2,
tunable_param=0.185,
density=0.85,
cutoff=3,
temperature=0.88,
trials_per=int(1e6),
):
box_length = 2*cutoff
file_app = "_a" + str(target_acceptance) + "_r" + str(cutoff)
num_particles=int(density*box_length**3)
print('num_particles', num_particles)
print('target_acceptance', target_acceptance)
print('tunable_param', tunable_param)
monte_carlo = fst.Prefetch(fst.args({"trials_per_check": "10000000"}))
monte_carlo.activate_prefetch(False)
monte_carlo.add(fst.MakeConfiguration(fst.args({"cubic_side_length": str(box_length),
"particle_type0": fst.install_dir() + "/particle/lj.fstprt"})))
monte_carlo.add(fst.MakePotential(fst.MakeLennardJones()))
monte_carlo.add(fst.MakePotential(fst.MakeLongRangeCorrections()))
monte_carlo.set(fst.MakeThermoParams(fst.args({
"beta": str(1./temperature),
"chemical_potential": "1."})))
monte_carlo.set(fst.MakeMetropolis())
monte_carlo.add(fst.MakeTrialTranslate(fst.args({
"weight": "1.",
"tunable_param": str(tunable_param),
"tunable_target_acceptance": str(target_acceptance),
"tunable_percent_change": "0.01"})))
monte_carlo.add(fst.MakeTrialAdd(fst.args({"particle_type": "0"})))
monte_carlo.run(fst.MakeRun(fst.args({"until_num_particles": str(num_particles)})))
monte_carlo.run(fst.MakeRemoveTrial(fst.args({"name": "TrialAdd"})))
monte_carlo.add(fst.MakeLogAndMovie(fst.args({
"trials_per" : str(trials_per),
"file_name": "movie"+file_app,
"clear_file": "true"})))
monte_carlo.add(fst.MakeCheckEnergy(fst.args({"trials_per" : str(trials_per)})))
monte_carlo.add(fst.MakeTune())
monte_carlo.attempt(int(1e6)) #equilibrate
monte_carlo.activate_prefetch(True)
monte_carlo.add(fst.MakeMeanSquaredDisplacement(fst.args({
"trials_per_update": "10000",
"updates_per_origin": "1000",
"file_name": "msd" + file_app + ".txt",
"trials_per_write": str(int(1e5))})))
monte_carlo.add(fst.MakeCPUTime(fst.args({
"trials_per_update": str(trials_per),
"trials_per_write": str(trials_per),
"file_name": "cpu" + file_app + ".txt"})))
monte_carlo.attempt(int(1e6))
mc()
num_particles 183
target_acceptance 0.2
tunable_param 0.185
Did this tutorial work as expected? Did you find any inconsistencies or have any comments? Please contact us. Any feedback is appreciated!