Data file for initial BCP chain (4 layers) and substrate data.BCP_mass
Corresponding input file for replicating and generating initial "spincast" state:in.BCP_initialconditions
This should produce a data file for initial spin-cast structure: data.spincast_BCP
Input for taking spincast data file and running subsequent runs changing parameters: in.BCP_run
Test case: Gamma=0.2,
### ericnhahn@gmail.com ###
### BCP intial conditions ###
### Version 0.1 - 03/09/2022###
### in.BCP_initialconditions ###
variable name string BCP_mass_prod_040319_T300K
# Initialization
units metal
boundary p p f #load with fixed z boundary and then it is switched to shrink wrap later
atom_style molecular #allows for bonds and angles in data file
log log.${name}.txt
read_data data.BCP_mass
change_box all x scale 0.8 y scale 0.8 remap #use this to change the initial packing density of the system
#write_data data.BCP_example can use this to rewrite out a data file
replicate 28 56 1 #1:2 scale for x:y to make it ~ a cube
neigh_modify every 1 delay 1
# details from the paper for reference
# 52800 polymer beads and 3960 substrate
# 45.7 nm 36 nm 51 nm ----- dimensions
# bond distance 1 nm ----> 10 A
# σsubstrate (nm) = 0.11 ---> 1.1 A
# potential information
bond_style harmonic
bond_coeff 1 0.128 10
bond_coeff 2 .06 10 #this number was made up to hold together chains as per supplementary materials
angle_style harmonic
angle_coeff 1 0 180 #0 for blockCP should be zero energy, but angles will still be tracked by the system
variable epsiliona equal 1/1000
variable sigmaa equal 8.4
variable epsilionb equal 1/1000
variable sigmab equal 8.4
variable epsilionsub equal 1/1000
variable sigmasub equal 8.4
variable epsilionsa equal 32/1000
variable sigmasa equal ${sigmasub}
variable epsilionsb equal 32/1000
variable sigmasb equal ${sigmasub}
variable epsilionmixed equal ${epsiliona}*0.9
variable sigmamixed equal ${sigmaa}
variable cutoff equal 3*${sigmaa}
variable cutoffsub equal 3*${sigmasub}
# cutoff = 3σ
special_bonds lj 0.0 1 1 #this makes it such that atoms not directly bonded will be controlled by the lj/cut potential.
pair_style lj/cut ${cutoff}
pair_coeff 1 1 ${epsiliona} ${sigmaa} ${cutoff}
pair_coeff 2 2 ${epsilionb} ${sigmab} ${cutoff}
pair_coeff 3 3 ${epsilionsub} ${sigmasub} ${cutoffsub}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed} ${cutoff}
pair_coeff 1 3 ${epsilionsa} 5.5 16.5 #these numbers were changed to increase initial substrate adhesion
pair_coeff 2 3 ${epsilionsb} 5.5 16.5 #these numbers were changed to increase initial substrate adhesion
compute pe all pe/atom
compute s1 all stress/atom NULL pair
compute s2 all stress/atom NULL bond
compute s3 all stress/atom NULL ke
#####################################################
# Equilibration (Langevin dynamics at ? K)
group fixed type 3 #this selects all the atoms in the substrate,
group free type 1 2 #groups all the polymer "atoms"
fix freeze fixed setforce 0.0 0.0 0.0
fix freeze fixed setforce 0.0 0.0 0.0 #makes substrate immovile
fix zwall all wall/reflect zlo EDGE
fix grav free addforce 0 0 -5.0E-15 #added very very small gravity force to help the system towards adhering to substrate rather than floating away.
change_box all boundary p p s #make it such that the film can grow and shrink as dictated by the bond strength (stronger = smaller film), and temperature (higher = larger film).
minimize 1e-6 1e-6 1000 1000 #check to make sure there are no overlapping atoms
reset_timestep 0
velocity free create 5 123
fix nve free nve
fix 2 free langevin 5 25 10 12345
thermo_style custom step pe temp lx ly lz press vol v_epsiliona v_epsilionmixed
thermo 1000
timestep 0.174 #0.1 doesnt crash #1.74 ps used in paper
#dump 1 all custom 5000 dump.${name}.* id mol type x y z c_pe c_s1[1] c_s1[2] c_s1[3] c_s2[1] c_s2[2] c_s2[3] c_s3[1] c_s3[2] c_s3[3] #this should be commented out for production runs, useful for measuring the contributions to the stress by different potential components
dump simple all custom 5000 dump.s_${name}.* id mol type x y z vx vy vz c_pe
#fix bal all balance 1000 1.05 shift z 10 1.05 # needed if there is free volume on top to speed up simulation
run 5000
unfix 2
fix 2 free langevin 25 50 100 12345
run 15000
unfix 2
variable epsiliona equal 5.3/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
fix 2 free langevin 50 166 1000 12345
run 50000
unfix 2
#unfix initfreeze
fix 2 free langevin 166 166 100 12345
run 20000
variable epsiliona equal 7.2/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 5000
variable epsiliona equal 9.0/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 5000 #step 100k
variable epsiliona equal 10.7/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
unfix 2
fix 2 free langevin 166 250 1000 12345
run 50000
variable epsiliona equal 12.5/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
unfix 2
fix 2 free langevin 250 250 100 12345
run 10000
variable epsiliona equal 14.3/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000
variable epsiliona equal 16.1/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000
variable epsiliona equal 17.9/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 20000 #200k steps
write_data data.${name}_wbonds
bond_coeff 2 0 10
delete_bonds all bond 2 remove
special_bonds lj 0.0 1 1
print "==============BONDS BROKEN==================="
variable epsiliona equal 19.7/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 20000
write_data data.${name}_wobonds.*
variable epsiliona equal 21.5/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 20000
variable epsiliona equal 23.9/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 #250k steps
variable epsiliona equal 25.1/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
unfix 2
fix 2 free langevin 250 300 1000 12345
run 50000 start 250000 stop 400000
write_data data.${name}_wobonds.*
variable epsiliona equal 26.9/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 28.7/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 30.5/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 32.3/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 34/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 35.8/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 37.6/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 39.4/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 41.2/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 43.0/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal ${epsiliona}*0.9
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
run 10000 start 250000 stop 400000
variable epsiliona equal 44.8/1000
variable epsilionb equal ${epsiliona}
variable epsilionmixed equal 40.3/1000
#variable epsilionmixed equal 40.3
pair_coeff 1 1 ${epsiliona} ${sigmaa}
pair_coeff 2 2 ${epsilionb} ${sigmab}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed}
unfix 2
fix 2 free langevin 300 300 1000 12345
run 50000
write_data data.final_${name}
write_data data.spincast_BCP
write_restart restart.final_${name}
#run 500000
#write_data data.final_BCP_longequil.*
### ericnhahn@gmail.com ###
### BCP intial conditions ###
### Version 0.1 - 03/09/2022###
### in.BCP_run ###
# VARIABLES
variable name string BCP_spin_run0p2
# Initialization
units metal
boundary p p s #used to be ppf with free volume
atom_style molecular
log log.${name}.txt
bond_style harmonic #these need to be defined before data is read
angle_style harmonic
pair_style lj/cut 25 #this needs to be defined before data is read to set neighbor distance calculations
read_data data.spincast_BCP
delete_bonds all bond 2 remove #double check to make sure there are no bonds between chains
# potential information
#bond_style harmonic
bond_coeff 1 0.128 10
bond_coeff 2 0 10
#angle_style harmonic
angle_coeff 1 0 180
variable epsiliona equal 49/1000
variable sigmaa equal 8.4
variable epsilionb equal 41.3/1000
variable sigmab equal 8.4
variable epsilionsub equal 1/1000
variable sigmasub equal 8.4
variable epsilionsa equal 32/1000 #Capital Gamma, Bfavored=0.2 12.8 Nuetral=0.5 32 Afavored=0.8 51.2
variable sigmasa equal ${sigmasub}
variable epsilionsb equal 32/1000 #Capital Gamma, Bfavored=0.2 51.2 Nuetral=0.5 32 Afavored=0.8 12.8
variable sigmasb equal ${sigmasub}
variable epsilionmixed equal 25.8/1000
variable sigmamixed equal ${sigmaa}
variable cutoff equal 3*${sigmaa}
variable cutoffsub equal 3*${sigmasub}
# cutoff = 3σ
special_bonds lj 0.0 1 1
pair_style lj/cut ${cutoff}
pair_coeff 1 1 ${epsiliona} ${sigmaa} ${cutoff}
pair_coeff 2 2 ${epsilionb} ${sigmab} ${cutoff}
pair_coeff 3 3 ${epsilionsub} ${sigmasub} ${cutoffsub}
pair_coeff 1 2 ${epsilionmixed} ${sigmamixed} ${cutoff}
pair_coeff 1 3 ${epsilionsa} 5.5 16.5 #these numbers were changed to increase initial substrate adhesion
pair_coeff 2 3 ${epsilionsb} 5.5 16.5
compute pe all pe/atom
group fixed type 3
group free type 1 2
fix freeze fixed setforce 0.0 0.0 0.0
fix zwall all wall/reflect zlo EDGE
fix grav free addforce 0 0 -5.0E-15
thermo_style custom step temp lx ly lz press vol
thermo 1000
timestep 0.174 #0.1 doesnt crash #1.74 ps used in paper
dump 1 all custom 200 dump.${name}.* id mol type x y z c_pe
#needed to reinitialize bonds without blowing the system size out due to new potential parameters
fix nve free nve/limit 0.1
fix 2 free langevin 300 300 250 12345
run 1000
unfix nve
fix nve free nve
run 19000
write_data data.${name}_preT514
unfix 2
#now we are ready to start a long run at elevated temperature to evaluate BCP layer evolution
fix 2 free langevin 300 514 250 12345
run 1000000
write_data data.${name}_T514
unfix 2
fix 2 free langevin 514 514 100 12345
run 1000000
write_data data.${name}_T514time_evol