# Uniform stretching the system at high strain rate

Dear all
I need to simulate the tension test of a crystal to study the crack.
The boundary in Y and Z direction are periodic and in X direction is not periodic.

because of the nonperiodic condition in loading direction, I cant use deform command.

I want to simulate loading at high strain rate (10^10 1/s) to save the simulation time.
I need a uniform stretching of the system to avoid the creation of shock wave during simulation and
I can’t do this by moving the boundary (it will create shock)

Thanks

Dear all
I need to simulate the tension test of a crystal to study the crack.
The boundary in Y and Z direction are periodic and in X direction is not
periodic.
because of the nonperiodic condition in loading direction, I cant use deform
command.
I want to simulate loading at high strain rate (10^10 1/s) to save the
simulation time.
I need a uniform stretching of the system to avoid the creation of shock
wave during simulation and
I can't do this by moving the boundary (it will create shock)

use fix move with an atom style variable for the displacement.

axel.

Or just give atoms on the free boundaries an initial
velocity and set the force on them to 0.0 via fix setforce.
They will then move at constant velocity.

Steve

Hi
I use the fix move to move the position of each atom 0.1 of their initial
position in Y direction in each time step.

Y[i](t) = Y[i](0) + 0.1 * Y[i](0)

for this, I use the following command.

timestep 0.001
variable yy atom y*0.1
fix 2 all move variable NULL v_yy NULL NULL NULL NULL

after simulation, the result of positions of one atom in Y direction are:
step 0: 2.025
step 1 2.2275 (2.025+(0.1*2.025))
step 2 2.24775 (2.025+(0.01*2.025))
step 3: 2.24978 (2.025+(0.001*2.025))
.
.
.
the result show that the displacement in first step is ok, but in later
steps the positions are multiplied by 0.01 & 0.001 &. . .
I cant understand this?
please let me know why my command is wrong for my goal?

The variable is supposed to return the displacement of
the atom from its original (time 0) position, at every timestep.
The fix adds that value to the original position to get the current
position. It does not add that value to the current position,
so as to avoid round-off issues over millions of steps.

If the atom starts at 2, then the variable you defined will return 0.2.
So the atom is placed at 2.2 after the 1st step. Your variable
then returns 0.22, so the atom is placed at 2.22 = 2 + 0.22 at the next step.
Then at 2.222 at the 3rd step, etc.

If you want something different, then define the variable differently.

Steve

now, i need to save the initial coordinate of atoms, because I need to move
the atoms 0.1* y(0) in each step.
I try to save the initial Y coordinate vector in a variable bye atom style.
but I cant’t do it.
I use the fix store/state, but I don’t know how I can use it by reading the manual.
I have problem to use vector that saved by fix store/state.
please, let me how I can save the initial coordinate and use in variable and fix move.
thanks

Fix store/state will save the coords, and you can
access the per-atom array of coords inside fix store/state
via a per-atom variable. I suggest you read Section 6.15
of the manual and start experiementing and debugging