Hello,
I’m stretching a sheet of 2d silica until breaking, and I’m counting the broken bonds during stretching through the coord/atom compute.
However, when I write the dump and check the coordination number, sometimes I found that it’s wrongly computed.
In brief, type=1 for Si, type=2 for O, and c_uncoord is a scalar defined by:
compute coord all coord/atom cutoff 2.016
variable uncoordination atom abs(c_coord-4)*(type==1)+abs(c_coord-2)*(type==2)
compute uncoord all reduce sum v_uncoordination
variable uncoord equal c_uncoord
The attached script+input produces a file sio2_3_bondbreak_10.dump, with the following “uncoordinated” atoms:
#id type c_coord
226 1 3
256 1 3
932 2 0
1241 2 4
1666 1 3
1696 1 3
2372 2 0
But looking with ovito at oxygen atom 1241, it shows that it has only two Si neighbors (not 4) at a distance smaller than the cutoff above.
So, the c_coord is somehow miscalculated. I have encountered this problem using many different initial samples.
Also, from the log it appears that c_uncoord, along with fmax and other thermo quantities, change suddenly after a write_dump:
Step Temp PotEng v_pe Fmax Press Lx v_strain c_stressx v_pressx v_uncoord
478000 0.0054869426 -22512.627 -22512.627 0.060812995 -3556.1136 97.878575 0.1255 1.2360716e+10 7093.2647 10
479000 0.0039295438 -22512.631 -22512.631 0.0098276162 -3556.4664 97.878575 0.1255 1.2361198e+10 7093.5409 10
Loop time of 0.625285 on 16 procs for 1000 steps with 3456 atoms
...
write_dump all custom sio2_3_bondbreak_10.dump id type xu yu zu c_coord c_peratom c_stratom[1] q
run 0
...
Step Temp PotEng v_pe Fmax Press Lx v_strain c_stressx v_pressx v_uncoord
479000 0.0039295438 -22512.631 -22512.631 0.0098227024 -3556.4664 97.878575 0.1255 1.2361198e+10 7093.5409 8
Loop time of 2.85619e-06 on 16 procs for 0 steps with 3456 atoms
Timestep is the same, 479000, but values differ.
Is there something that I’m missing?
Thanks for any reply,
Roberto
config.data (176 KB)
silica_2D_stretch.lmp (7.27 KB)