fix_msst

hello,
lammps-users

I want to study the micro-mechanical behavior of metallic foam i.e some porous material by using molecular dynamics if I allow some shock wave with huge velocity to pass through this material,I have come to know from lammps documentation that this type of research can be done by Lammps,am I correct ?

Assuming that I am using proper code(Lammps),primarily I have prepare some input structure just as msst example with some modifications in the .in file,I have introduce a pour in the simulation box which is full of Al fcc structure.Here i have confusion I am introducing pour by using delete_atom command,is it proper ? if not, is there another way to invoke pour in a structure without deleting any atom ?
My input script is here …

Energy in eV, time in ps, distance in angstroms.

units metal
boundary p p p

atom_style atomic
variable latparam equal 4.050
reset_timestep 0
timestep 1e-4

lattice fcc {latparam} region box block -20 20 -20 20 -20 20 region void sphere 0 0 0 20 units box create_box 1 box create_atoms 1 box group bulk region box group void region void lattice fcc {latparam} orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
delete_atoms group void
mass 1 26.981539

Initial velocities correspond to around 300.0K.

velocity all create 600 12345 mom yes rot no

pair_style lj/cut 10
pair_coeff 1 1 0.01032 3.405
reset_timestep 0
timestep 2e-4
compute csym all centro/atom fcc
compute peratom all pe/atom

Equilibrate the system

fix 2 all nve
thermo 20

Store final cell length for strain calculations

variable tmp equal “lx”
variable L0 equal {tmp} print "Initial Length, L0: {L0}"

run 200
unfix 2

MSST fix

fix msst all msst z 120.0 q 200 mu 3e2 tscale 0.00001
fix_modify msst energy yes
thermo 10000
variable srate equal 1.0e10
variable srate1 equal “v_srate / 1.0e12”
fix 2 all deform 1 x erate ${srate1} units box remap x

p2, p3, p4 are in GPa

variable strain equal “(lx - v_L0)/v_L0”
variable p1 equal “v_strain”
variable p2 equal “-pxx/10000”
variable p3 equal “-pyy/10000”
variable p4 equal “-pzz/10000”
fix def1 all print 10 “{p1} {p2} {p3} {p4}” file Al_SC_100.def1.txt screen no
variable dhug equal f_msst[1]
variable dray equal f_msst[2]
variable lgr_vel equal f_msst[3]
variable lgr_pos equal f_msst[4]

thermo_style custom step v_strain temp v_p2 v_p3 v_p4 ke pe lx ly lz pxx pyy pzz etotal &
v_dhug v_dray v_lgr_vel v_lgr_pos f_msst vol enthalpy dt

dump 1 all custom 100 dump.msst_*.xyz type x y z
dump_modify 1 element Al

run 10000

*as this for just trial so the parameters is not actual

It’s run fine but when i visualize the dump file and make animation the I am seeing that the pour is breaking,it’s fine but I expect that the pour should break from one side i.e Z direction,as well as it should not be symmetric when it breaks but from video it is showing that the pour breaks symmetrically i.e it starts breaking from all direction simultaneously, where the fallacy is?

As the shock velocity is quit high I expect Z direction should be compressed and at the same time X& Y should expand but log file shows that Z compressed and X expand but Y remain same,why this is happening ?

My last question with such porous structure when I equilibrate it the pour would be collapsed, isn’t it? so what should I do ?

As I am in primary level in this research so it may be very basic problems.

Thanks in advance.

Best

Comments below.

Steve

hello,
lammps-users

I want to study the micro-mechanical behavior of metallic foam i.e some porous material by using molecular dynamics if I allow some shock wave with huge velocity to pass through this material,I have come to know from lammps documentation that this type of research can be done by Lammps,am I correct ?

yes

Assuming that I am using proper code(Lammps),primarily I have prepare some input structure just as msst example with some modifications in the .in file,I have introduce a pour in the simulation box which is full of Al fcc structure.Here i have confusion I am introducing pour by using delete_atom command,is it proper ? if not, is there another way to invoke pour in a structure without deleting any atom ?
My input script is here …

Energy in eV, time in ps, distance in angstroms.

units metal
boundary p p p

atom_style atomic
variable latparam equal 4.050
reset_timestep 0
timestep 1e-4

lattice fcc {latparam} region box block -20 20 -20 20 -20 20 region void sphere 0 0 0 20 units box create_box 1 box create_atoms 1 box group bulk region box group void region void lattice fcc {latparam} orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
delete_atoms group void
mass 1 26.981539

Initial velocities correspond to around 300.0K.

velocity all create 600 12345 mom yes rot no

pair_style lj/cut 10
pair_coeff 1 1 0.01032 3.405
reset_timestep 0
timestep 2e-4
compute csym all centro/atom fcc
compute peratom all pe/atom

Equilibrate the system

fix 2 all nve
thermo 20

Store final cell length for strain calculations

variable tmp equal “lx”
variable L0 equal {tmp} print "Initial Length, L0: {L0}"

run 200
unfix 2

MSST fix

fix msst all msst z 120.0 q 200 mu 3e2 tscale 0.00001
fix_modify msst energy yes
thermo 10000
variable srate equal 1.0e10
variable srate1 equal “v_srate / 1.0e12”
fix 2 all deform 1 x erate ${srate1} units box remap x

p2, p3, p4 are in GPa

variable strain equal “(lx - v_L0)/v_L0”
variable p1 equal “v_strain”
variable p2 equal “-pxx/10000”
variable p3 equal “-pyy/10000”
variable p4 equal “-pzz/10000”
fix def1 all print 10 “{p1} {p2} {p3} {p4}” file Al_SC_100.def1.txt screen no
variable dhug equal f_msst[1]
variable dray equal f_msst[2]
variable lgr_vel equal f_msst[3]
variable lgr_pos equal f_msst[4]

thermo_style custom step v_strain temp v_p2 v_p3 v_p4 ke pe lx ly lz pxx pyy pzz etotal &
v_dhug v_dray v_lgr_vel v_lgr_pos f_msst vol enthalpy dt

dump 1 all custom 100 dump.msst_*.xyz type x y z
dump_modify 1 element Al

run 10000

*as this for just trial so the parameters is not actual

It’s run fine but when i visualize the dump file and make animation the I am seeing that the pour is breaking,it’s fine but I expect that the pour should break from one side i.e Z direction,as well as it should not be symmetric when it breaks but from video it is showing that the pour breaks symmetrically i.e it starts breaking from all direction simultaneously, where the fallacy is?

As the shock velocity is quit high I expect Z direction should be compressed and at the same time X& Y should expand but log file shows that Z compressed and X expand but Y remain same,why this is happening ?

My last question with such porous structure when I equilibrate it the pour would be collapsed, isn’t it? so what should I do ?

As I am in primary level in this research so it may be very basic problems.

rather than try to invent the methods yourself, I suggest you find papers
where MD has been used for these kinds of models, and replicate
their results in LAMMPS. This mail list is not going to be able to
teach you how to do shock simulations.

Hi Paul,

Please note with metal units, velocity is in angstroms/picosecond. With a shock velocity of 120 A/ps, it is not surprising to see supersonic shocks. How would you expect something physical with a non-physical, trial only parameters?

hi
according to steve suggestion I have gone through some lit regarding this issue and as well as the discussion about shock simulation in this group by steve,Ray and oscar G.
now i follow the process,after defining a slice of my geometry as a group,making it fixed by velocity and force command.And setting some velocity -Up to the rest of my system i.e another group.
NOw I have some bulk crystalline system of geometry 1206040 after equilibration with NVT and temp 300K,I want to copy some fraction of my geometry i.e e.g 106040 and want to replicate this thermalized super-cell in some distance between this virtual piston(this copying slice) and the substance.I have seen the “replicate” command but in my circumstance its invalid,can you suggest me some way out?
This type of virtual piston making with my atom are suitable for shock generation? Where as" wall/piston " have infinite mass.

Beside this from the paper Reed et al(2003) i have came to know that MSST command is more suitable for me,but when I use this my system deformed as if i am applying some compression from opposite direction even with* small* shock velocity it happened in same manner.I have tried with different mass like parameter q from very small to large value.

Maybe Aidan can give you some advice regarding the use
of fix wall/piston for shocks.

Steve

Hi Paul,

NOw I have some bulk crystalline system of geometry 120*60*40 after
equilibration with NVT and temp 300K,I want to copy some fraction of my
geometry i.e e.g 10*60*40 and want to replicate this thermalized super-cell
in some distance between this virtual piston(this copying slice) and the
substance.I have seen the "replicate" command but in my circumstance its
invalid,can you suggest me some way out?

I am just wondering If you replicate the virtual piston where would
you place it? If the whole 120*60*40 supercell is thermalized, would
it make a difference if you just fix some slices into virtual pistons?
You can fix the, say, 10*60*40 and 90*60*40 slices into pistons, in
that way you would not have to use replicate.

This type of virtual piston making with my atom are suitable for shock
generation? Where as" wall/piston " have infinite mass.

To my knowledge, I do not know any direct shock simulations using real
fixed atoms instead of stationary walls/pistons. You might want to
check the literature.

Beside this from the paper Reed et al(2003) i have came to know that MSST
command is more suitable for me,but when I use this my system deformed as if
i am applying some compression from opposite direction even with* small*
shock velocity it happened in same manner.I have tried with different mass
like parameter q from very small to large value.

Assumption of MSST is that the shock wave is homogeneous when arriving
at the small representative sample. Therefore the sample is
compressed uni-axially from both ends. You always get gradient of
some sort with direct NEMD simulations, but MSST assume no such
gradient.

There are many ways to do MD simulations of high strain-rate compression.
My advice is read the literature, choose your method, reproduce results
from the literature, learn from your failures, transfer your method to the
system of interest, and check your results carefully. Apart from that,
it's pretty straightforward.

Hi,

Paul Wrote: “This type of virtual piston making with my atom are suitable for shock generation? Where as” wall/piston " have infinite mass.?"

I didnt understand quite understoo what you wrote. and honestly i’m way to lazy to read it fully The idea of using the “Fix/wall” feature is to generate a “momentum mirror”. You could either give an initial velocity to the piston , or equivalent fix the piston (static) , and give an particle velocity “-up” to the system, (both reference frames works). The shock wave propagate out of piston at a velocity “us” …

Oscar G…

hello Ray

thanks for your earlier feedback,i have go through several literature regarding shock simulation. I saw many of them used fixed atom wall just as virtual piston.In this regard if you kindly see the paper "Atomic-level view of inelastic deformation in a shock loaded molecular crystal " Eugenio Jaramillo et al,PHYSICAL REVIEW B 76, 064112 ͑(2007͒) , then you can see that they have used a slice of their thermalized system and used that as fixed piston for shock generation.

Here my difficulty was how can i copy such parts of a system and how can i put it with some gap betwn the system and the virtual piston.how can i introduce this gap ? i have to use" region "and "group "command? If there is any wrong in my understanding of the shock simulation procedure then please correct me with your precious suggestion.

thanks advance

best
Swain

"

Hi Paul,

Thanks for the info. To create a gap between then two, you can use
displace_atoms command.

Ray

hello Ray
How can i copy such a slice(a part) from a total geometry of my simulation box ? could you make some comment in this context.

best
Swain

I don't really understand what you are trying to do by copying, or
replicating, your virtual pistions. Do you mean copy the slice to be
used in the same script same run? Or to be used in other subsequent
runs by reading the pistion(s) in with read_data?
Replicate command replicates the whole box, so you can delete all
others but the slice you wish to copy then use the replicate command.
Combine them afterwards.

Ray

Paul Wrote:
Here my difficulty was how can i copy such parts of a system and how can i
put it with some gap betwn the system and the virtual piston.how can i
introduce this gap ?

I guess you need “gap” , because you want “hurl” a flyer plate toward a stationary target ?. i’m right

Oscar Guerrero

Ok the main Question here is : WHY YOU need to add the gap ?
Oscar G. .

hello Oscar
really thanks to you for such valuable post earlier regarding the shock simulation.Now i am explaning what i am doing,
firstly as per your previous feedback i trying to use "momentum mirror " i.e “wall/piston” , after constructing a bulk crystal and equilibrated in NPT(300k) i’m setting particle velocity -2angstrome/ps with NVE but naturally temperature is increased so drastically that one or more atoms from my box flew away although i am trying to contrl by langevin thermostat.And the geometry as if shrink along -Z axis and after some steps the reflected momentum becoming so huge that my simulation cell in z dirn expanding with one or two punctured atom.

I saw your simulation video where we can visualize the shock front and if i am not wrong there was crystallographic reorientation in your system but here system shrinked in such a fashion that as if the atoms have only translatory motion. I think there is some mistake in my procedure,can you way me out?

secondly I am trying to hurl a flyer plate to the stationary target,if you make some comment in this regard will be helpful for us.

thanks in advance

best
Swain

Hi,

You must use units “metal” in your simulation . Am …all the other information seem
right, and -3 A/ps is really low . Usually you want to be in the “km/s” range.
(remember that 1 km/s = 10 A/ps). Also please Remember that a shockwave happens when the speed of the wave is greater than the speed of sound in the medium

Paul wrote: but naturally temperature is increased so drastically that one or more atoms from my box flew away?
;
ANSWER: that should not happen, unless there is bad dynamics in your system. You could add a Vacuum region at the other end to eliminate repulsive force from periodic images. Also remember that The region directly next to the mirror will have atoms that are trapped; Atoms want to escape, but the mirror keeps them in
place. Region near mirror should be disregarded when computing averages of system properties (since they heat up unrealistic). That’s why the “Fix/piston” offer the “temp” feature: The temp keyword will cause the region immediately in front of the wall/piston to be thermostated with a Langevin thermostat.

Paul wrote : contrl by langevin thermostat ?
ANSWER: Remember this is (NEMD) soo No thermostat or barostat in this simulations…

Paul wrote: if i am not wrong there was crystallographic reorientation in your system
ANSWER: that’s totally false… what you see are “stacking faults” .i.e shock-induced dislocation nucleation. You must use a centrosymmetry , CNA analysysto visualise the defects structure that is created after the passing of the shock … etc.

Paul wrote : but here system shrinked in such a fashion that as if the atoms have only translatory motion. I think there is some mistake in my procedure,can you way me out?

ANSWER: No idea…

Paul wrote : secondly I am trying to hurl a flyer plate to the stationary target,if you make some comment in this regard will be helpful for us.

ANSWER: you must use the fixforce in a few atomic layer to make a piston, then use the “ramp” option (give it momentum) , … the next steps are obvious…

Hope this helps
Oscar Guerrero.