Seeking Assistance: Bending Simulation of Silicon Nanowires:

I am attempting to simulate the bending of a silicon nanowire using LAMMPS. However, I am struggling to find a sample script that demonstrates how to model this scenario. My specific goal is to model a nanowire with a load applied at its midpoint, and then plot the relationship between the applied load and the deflection of its center. Additionally, I need to determine the Young’s modulus. Could someone kindly assist me with this issue and provide detailed guidance on how to do it?

This is the code I wrote:

Nanoscale plastic deformation mechanisms of single crystalline silicon under compression, tension and indentation

							###INPUTS###

variable dt equal 0.001
timestep ${dt}

variable T equal 298

variable iterequi equal 00000
variable iterrun equal 700000

##################### Step 1: Initialization #####################

echo both
units metal
atom_style atomic
dimension 3
timestep ${dt}
boundary s s s # free boundary conditions

##################### Step 2: Atom and Lattice Definition #####################

Create a diamond lattice with <100> orientation

variable latconst equal 5.43
lattice diamond ${latconst} orient x 1 0 0 orient y 0 1 0 orient z 0 0 1

Define the dimensions of the nanowire

variable XEdge equal 217.2
variable YEdge equal 217.2
variable ZEdge equal 108.6

Create a simulation box

region Simbox block 0 {XEdge} 0 {YEdge} 0 ${ZEdge} units box
create_box 1 Simbox

mass * 28.0855

Create a Nanowire

region Nanowire block 0 {XEdge} 0 {YEdge} 0 {ZEdge} units box lattice diamond {latconst} orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
create_atoms 1 region Nanowire units box

##################### Step 3: Force Field #####################

pair_style tersoff
pair_coeff * * Si.tersoff Si # Tersoff potential for silicon

##################### Step 4: Minimization and RELAXATION #####################

min_style cg

minimize 0.0 1.0e-8 10000 10000

##################### Step 5: Equilibration #####################

velocity all create ${T} 48284121 mom yes rot yes

fix 1 all nvt temp {T} {T} $(100.0*dt)

dump 000 all custom 100 dumpequilibration.xyz id type x y z
thermo 1000
thermo_style custom step temp pe ke etotal

run ${iterequi}

unfix 1
undump 000

##################### SETTING #####################

reset_timestep 0

variable fixL equal 2*${latconst}

variable lim01 equal c_zmin
variable lim02 equal c_zmin+v_fixL

Create the lower part including two atomic layers

region lower block 0 {XEdge} 0 {YEdge} 0 ${fixL} units box

group lower region lower
group middle subtract all lower

set region lower type 1

######### Step 6: Movement of indenter in +z direction #########
reset_timestep 0

Run simulation

fix 1 lower setforce 0.0 0.0 0.0

compute mystress middle stress/atom NULL virial

#fix 2 middle indent 100 sphere 108.6 108.6 v_z 50 # Define indenter
fix 2 all indent 100 sphere 108.6 108.6 v_z 50 # Define indenter
variable z equal vdisplace(158.6,0.4)
#variable z equal vdisplace(108.6,-0.4)

fix 3 all nvt temp {T} {T} $(100.0*dt)

variable deflection equal abs(f_2[1])
variable Zforce equal abs(f_2[2])
variable totalforce equal abs(f_2[3])

fix result all ave/time 1 1000 1000 v_deflection v_Zforce v_totalforce

thermo 1000
thermo_style custom step f_result[1] f_result[2] f_result[3]

dump 1 all custom 1000 dumpFast.lammpstrj id type xs ys zs c_mystress[1] c_mystress[2] c_mystress[3]
dump 4 all custom 100 dumpSlow.lammpstrj id type xs ys zs c_mystress[1] c_mystress[2] c_mystress[3]
log logFigure.txt

run ${iterrun}

If you were gravely ill and required a complicate surgery, would you trust Dr. Riviera, who learn the tricks of the trade on a forum?

You will rarely find read-to-use example scripts that showcase how to do some specific simulation.

This is really not a topic for a forum like this, since this is not so much about how features in LAMMPS work, but rather about how to do your research. That is rather a topic for a discussion with your adviser or tutor or similar.

Why should somebody do your work and then teach you how to do it?
Or are you looking for a collaborator that you want to share the credit with?
But then again, where would be your contribution?
I think you have to re-think about what kind of assistance is reasonable to ask for in a public forum.

That said, the normal approach to learn something that you don’t yet know how to do, is to look for somebody that has already done the same thing or something very similar. In research you can find this in the published literature. In good publications you will find a detailed description of the individual steps and settings that were used to do the simulations. Now you just need to translate those descriptions into LAMMPS commands by searching the documentation for the necessary commands.
Since research projects these days are often rather complex, you should devise multiple small test inputs and simulations where you can learn each command that you not yet know well and practice how to use it and check whether it has the desired effect and how to visualize and analyze the results, if needed. Before you then put this all together, you should first try to reproduce some published results to make certain, you have mastered the new commands and use cases that you were not yet familiar with. Only if you have the confidence that your knowledge is sufficient, you should start your real project. Trying to short circuit this will lead to all kinds of problems down the line. For example, how will you explain your choices of commands and settings to somebody asking your for details?

TL;DR: there ain’t no escape from the blues.

Thanks for your post. However I just started to learn lammps, but I have simulated the tension of nanowires successfully for my problem. there is a sample script for tension which is really useful and helped me. I did not ask anybody to solve and model the problem. I just wondered if maybe there are some tutorials or specific information that can help. Specifically, I wanted to get some hints for the simulation of the bending of nanowires by using an indent.

Well you wrote:

That is a far stronger statement than asking for some hints. So if you are asking for some pointers, then you should say so. But even that also requires that you provide some explanation of what you have tried, how it failed and so on. This way you demonstrate that you have done some work and not post a statement asking for somebody providing you with “everything”.

Communication in online forums is a tricky thing. The people you are communicating with don’t know you, don’t know what your skill levels are, what your expectations are and how well you can solve problems. It doesn’t matter what your intentions are, people only have the information you provide. The less you provide the more people have to assume that there is nothing there.

At any rate, if you want to be successful in the research business, you will have to learn to teach yourself from limited data using the approach I described. The more specific, detailed, and unique your research gets, the slimmer the chance to find somebody that has the knowledge and is willing to share it in a public forum without getting any credit for it.

And as I already pointed out, what you are asking about is how to do the research and not specific to LAMMPS and thus it is off-topic for the LAMMPS category.

This may feel like a hard lesson right now, but I am certain that there are people here than can confirm that this lesson cannot be avoided and that it is less painful the sooner you get it over and done with.

1 Like