Simulation of a single chain
[1]:
import math
import numpy as np
import pandas as pd
script="""
MonteCarlo
Configuration cubic_side_length=40 periodic=false,false,false \
cutoff=20 particle_type=chain:/feasst/plugin/chain/particle/chain5.txt
Potential Model=LennardJones VisitModel=VisitModelIntra intra_cut=1
ThermoParams beta=1 chemical_potential=1
Metropolis
TrialAdd particle_type=chain
Run until_num_particles=1
Remove name=TrialAdd
#TrialPivot weight=1 tunable_param=20
#TrialCrankshaft weight=1 tunable_param=20
TrialGrowFile grow_file=grow_chain5.txt
Let [write]=trials_per_write=1e4 output_file=chain
Log [write].txt
Movie [write].xyz
CheckEnergy trials_per_update=1e4 decimal_places=8
Tune
Run num_trials=1e3
Energy [write]_en.csv
RadiusOfGyration output_file=rg1.csv
Run num_trials=1e5
"""
with open('grow_chain5.txt', 'w') as file: file.write(
'TrialGrowFile\n\n\
particle_type chain site 0 regrow true\n\
bond true mobile_site 1 anchor_site 0\n\
bond true mobile_site 2 anchor_site 1\n\
bond true mobile_site 3 anchor_site 2\n\
bond true mobile_site 4 anchor_site 3\n')
with open('script1.txt', 'w') as file: file.write(script)
import subprocess
syscode = subprocess.call("../../../build/bin/fst < script1.txt > script1.log", shell=True, executable='/bin/bash')
with open('script1.log', 'r') as file: print(file.read(), '\n', 'exit:', syscode)
# Usage: /home/user/feasst/build/bin/fst < file.txt
FEASST version 0.25.13
MonteCarlo
Configuration cubic_side_length=40 cutoff=20 particle_type=chain:/feasst/plugin/chain/particle/chain5.txt periodic=false,false,false
Potential Model=LennardJones VisitModel=VisitModelIntra intra_cut=1
ThermoParams beta=1 chemical_potential=1
Metropolis
TrialAdd particle_type=chain
Run until_num_particles=1
# Initializing random number generator with seed: 1748976241
Remove name=TrialAdd
TrialGrowFile grow_file=grow_chain5.txt
Log output_file=chain.txt trials_per_write=1e4
Movie output_file=chain.xyz trials_per_write=1e4
CheckEnergy decimal_places=8 trials_per_update=1e4
Tune
Run num_trials=1e3
Energy output_file=chain_en.csv trials_per_write=1e4
RadiusOfGyration output_file=rg1.csv
Run num_trials=1e5
exit: 0
[2]:
rg=pd.read_csv('rg1.csv')
assert np.abs(0.9335 - rg['average'][0]) < 3*(rg['block_stdev'][0]+0.)
en=pd.read_csv('chain_en.csv')
assert np.abs(-2.050 - en['average'][0]) < 3*(en['block_stdev'][0]+0.)
Did this tutorial work as expected? Did you find any inconsistencies or have any comments? Please contact us. Any feedback is appreciated!