示例#1
0
def add(monte_carlo, steps_per, proc="", log="log.txt", tolerance=1e-8):
    """Add Log, Movie, CheckEnergy and Tuner to monte_carlo

    steps_per -- perform analysis every this many steps
    proc -- append movie file name with proc
    log -- set the log file (default empty: standard output)
    """
    monte_carlo.add(
        feasst.MakeLog(
            feasst.args({
                "steps_per": str(steps_per),
                "file_name": str(log),
                "clear_file": "true"
            })))
    monte_carlo.add(
        feasst.MakeMovie(
            feasst.args({
                "steps_per": str(steps_per),
                "file_name": "movie" + str(proc) + ".xyz"
            })))
    monte_carlo.add(
        feasst.MakeCheckEnergy(
            feasst.args({
                "steps_per": str(steps_per),
                "tolerance": str(tolerance)
            })))
    monte_carlo.add(
        feasst.MakeTuner(feasst.args({"steps_per": str(steps_per)})))
示例#2
0
def mc(
        target_acceptance=0.25,
        tunable_param=0.1,
        density=0.85,
        cutoff=4,
        temperature=0.88,
        steps_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 = feasst.Prefetch(feasst.args({"steps_per_check": "10000000"}))
    monte_carlo.activate_prefetch(False)
    monte_carlo.set(lj_system(box_length=box_length, cutoff=cutoff))
    monte_carlo.set(
        feasst.MakeMetropolis(
            feasst.args({
                "beta": str(1. / temperature),
                "chemical_potential": "1.",
            })))
    monte_carlo.add(
        feasst.MakeTrialTranslate(
            feasst.args({
                "weight": "1.",
                "tunable_param": str(tunable_param),
                "tunable_target_acceptance": str(target_acceptance),
                "tunable_percent_change": "0.01",
                # "num_steps": "4",
                # "reference_index": "0",
            })))
    feasst.SeekNumParticles(num_particles).with_trial_add().run(monte_carlo)
    monte_carlo.add(
        feasst.MakeLog(
            feasst.args({
                "steps_per": str(steps_per),
                "file_name": "log" + file_app + ".txt",
                "clear_file": "true"
            })))
    monte_carlo.add(
        feasst.MakeCheckEnergy(
            feasst.args({
                "steps_per": str(steps_per),
                "tolerance": str(1e-8)
            })))
    monte_carlo.add(feasst.MakeTune(feasst.args({"steps_per":
                                                 str(steps_per)})))

    #equilibrate
    monte_carlo.attempt(int(1e7))

    if not args.nopipe:
        monte_carlo.activate_prefetch(True)
    monte_carlo.add(
        feasst.MakeMeanSquaredDisplacement(
            feasst.args({
                "steps_per_update": "10000",
                "updates_per_origin": "1000",
                "file_name": "msd" + file_app + ".txt",
                "steps_per_write": str(int(1e5))
            })))

    monte_carlo.add(
        feasst.MakeCPUTime(
            feasst.args({
                "steps_per_update": str(steps_per),
                "steps_per_write": str(steps_per),
                "file_name": "cpu" + file_app + ".txt",
            })))

    #h0 = feasst.cpu_hours()
    monte_carlo.attempt(int(1e8))
示例#3
0
        feasst.args(
            {"particle_type": feasst.install_dir() + "/forcefield/data.lj"})))
monte_carlo.add(feasst.Potential(feasst.MakeLennardJones()))
monte_carlo.add(feasst.Potential(feasst.MakeLongRangeCorrections()))
monte_carlo.add(feasst.MakeMetropolis(feasst.args({"beta": "1.5"})))
monte_carlo.add(
    feasst.MakeTrialTranslate(
        feasst.args({
            "tunable_param": "2.",
            "tunable_target_acceptance": "0.2"
        })))
steps_per = int(1e3)
monte_carlo.add(feasst.MakeTuner(feasst.args({"steps_per": str(steps_per)})))
feasst.SeekNumParticles(50)\
    .with_metropolis(feasst.args({"beta": "0.1", "chemical_potential": "10"}))\
    .with_trial_add().run(monte_carlo)
monte_carlo.add(feasst.MakeLog(feasst.args({"steps_per": str(steps_per)})))
monte_carlo.add(
    feasst.MakeMovie(
        feasst.args({
            "steps_per": str(steps_per),
            "file_name": "movie.xyz"
        })))
monte_carlo.add(
    feasst.MakeCheckEnergy(
        feasst.args({
            "steps_per": str(steps_per),
            "tolerance": "1e-8"
        })))
monte_carlo.attempt(int(1e5))
示例#4
0
def mc(thread, mn, mx):
    steps_per = str(int(1e5))
    mc = fst.MakeMonteCarlo()
    #mc.set(fst.MakeRandomMT19937(fst.args({"seed": "12345"})))
    #mc.set(fst.MakeRandomMT19937(fst.args({"seed": "1634926410"})))
    chi = 0.7  # patch coverage
    patch_angle = 2 * math.asin(math.sqrt(chi / 2)) * 180 / math.pi
    print('patch_angle', patch_angle)
    mc = fst.MonteCarlo()
    config = fst.MakeConfiguration(
        fst.args({
            "cubic_box_length":
            "8",
            "particle_type0":
            fst.install_dir() +
            "/plugin/patch/forcefield/two_patch_linear.fstprt"
        }))
    config.add(fst.MakeGroup(fst.args({"site_type0": "0"})))
    mc.add(config)
    mc.add(
        fst.MakePotential(
            fst.MakeHardSphere(),
            fst.MakeVisitModelCell(
                fst.args({
                    "min_length": "1",
                    "cell_group": "1"
                })), fst.args({"group_index": "1"})))
    patch = fst.MakeVisitModelInnerPatch(
        fst.args({"patch_degrees_of_type1": str(patch_angle)}))
    mc.add(
        fst.MakePotential(
            fst.MakeSquareWell(),
            fst.MakeVisitModel(patch),
            #fst.MakeVisitModelCell(patch, fst.args({"min_length": "1.5", "cell_group": "1"})),
            fst.args({"group_index": "1"})))
    mc.set(
        fst.MakeThermoParams(
            fst.args({
                "beta": str(1. / args.temperature),
                "chemical_potential": str(args.mu)
            })))
    mc.set(
        fst.MakeFlatHistogram(
            fst.MakeMacrostateNumParticles(
                fst.Histogram(
                    fst.args({
                        "width": "1",
                        "max": str(mx),
                        "min": str(mn)
                    }))),
            # fst.MakeTransitionMatrix(fst.args({"min_sweeps": str(args.min_sweeps)})),
            fst.MakeWLTM(
                fst.args({
                    "collect_flatness": "18",
                    "min_flatness": "22",
                    "min_sweeps": str(args.min_sweeps)
                }))))
    mc.add(
        fst.MakeTrialTranslate(
            fst.args({
                "weight": "0.5",
                "tunable_param": "0.1"
            })))
    mc.add(
        fst.MakeTrialRotate(fst.args({
            "weight": "0.5",
            "tunable_param": "20."
        })))
    mc.add(
        fst.MakeTrialTransfer(fst.args({
            "weight": "4",
            "particle_type": "0"
        })))
    #    mc.add(fst.MakeTrialGrow(fst.ArgsVector([{"translate": "true", "site": "0", "tunable_param": "1"}]),
    #        {"reference_index": ref, "num_steps": num_steps}))
    #    mc.add(fst.MakeTrialGrow(fst.ArgsVector([{"transfer": "true", "site": "0", "weight": "4"}]),
    #        {"reference_index": ref, "num_steps": num_steps}))
    mc.add(
        fst.MakeCheckEnergy(
            fst.args({
                "steps_per": steps_per,
                "tolerance": "0.0001"
            })))
    mc.add(
        fst.MakeTune(
            fst.args({
                "steps_per": steps_per,
                "stop_after_phase": "0"
            })))
    mc.add(
        fst.MakeLog(
            fst.args({
                "steps_per": steps_per,
                "file_name": "clones" + str(thread) + ".txt",
                "file_name_append_phase": "True"
            })))
    mc.add(
        fst.MakeMoviePatch(
            fst.args({
                "steps_per": steps_per,
                "file_name": "clones" + str(thread) + ".xyz",
                "file_name_append_phase": "True"
            })))
    mc.add(
        fst.MakeEnergy(
            fst.args({
                "steps_per_write": steps_per,
                "file_name": "en" + str(thread) + ".txt",
                "file_name_append_phase": "True",
                "start_after_phase": "0",
                "multistate": "True"
            })))
    mc.add(fst.MakeCriteriaUpdater(fst.args({"steps_per": steps_per})))
    mc.add(
        fst.MakeCriteriaWriter(
            fst.args({
                "steps_per": steps_per,
                "file_name": "clones" + str(thread) + "_crit.txt",
                "file_name_append_phase": "True"
            })))
    mc.set(
        fst.MakeCheckpoint(
            fst.args({
                "file_name":
                "checkpoint" + str(thread) + ".fst",
                "num_hours":
                str(0.1 * args.num_procs * args.num_hours),
                "num_hours_terminate":
                str(0.9 * args.num_procs * args.num_hours)
            })))
    return mc