fix indent plane-virtual flat indenter

I plan to use a virtual half-plane indenter to perform the nano-indentation operation as shown in the figure below. After reading the fix indent plane in the lammps manual, I found that the planar indenter is really an axis-aligned infinite-extent wall exerting the same force on atoms in the system ,The following is the command line I wrote. What I want to ask is how to modify it to achieve the effect of the intermediate half-plane indenter.

variable zzero equal 106
variable vel equal 0.1
variable name equal “v_zzero - v_velstepdt”
variable depth equal “v_velstepdt”

fix 4 all indent 10.0 plane z v_name hi units box

2021-11-16 14-26-25屏幕截图

Other users might have different suggestions – I would recommend building an actual physical indenter and pressing it into the structure. I would do the following:

  1. Build a block of atoms of the desired size and shape (reusing Ni in this case to save on force field definitions – I doubt the short-range details of the particles are important) and group it (under indenter let’s say). You might have success using region and create_atoms commands to do this, or you could build the indenter with some external software like Moltemplate
  2. (Advanced) Use neigh_modify exclude group indenter indenter to save lots of unnecessary force calculations inside the indenter – but if you don’t know why you are doing this then you’d better be very careful
  3. Use velocity or set indenter vel commands to give it the desired velocity
  4. Use fix 1 setforce indenter 0 0 0 to prevent the indenter’s shape and velocity from changing
  5. Use fix 2 nve indenter to make the indenter move
  6. Use fix 3 nvt everything_else etc. etc. to make the substrate react to the indenter’s action

Hopefully this will give you the results you want – as always, whether or not those results are scientifically correct is up to you to verify.

I second that suggestion. Not only does it not require any programming, it also gives you points for good style by using a more realistic model.

if you absolutely want a completely flat surface, you could use fix wall/region with a moving block region.

Small simplification suggestion: steps 3, 4, and 5 can be combined by using fix move.

atomsk interface.cfg -remove-property q lammps
Thank you very much for your reply. I will verify it next.
In addition, I want to ask whether you can control the semi-infinite plane of the initial indenter to a certain area by modifying the source code of fix_indent.cpp and fix_indent.h. If you can, please provide your valuable comments on how to modify the source code.
thank you very much again!

2021-11-21 23-03-49屏幕截图

I think modifying the fix indent source code is by far the worst possible option. It is not as trivial as you might think, since if you restrict the area that is pushing atoms, how are you going to stop atoms from “wrapping around”? And not preventing that would result in a very unphysical model not to mention that you would have problems to determine forces for those atoms.