compression- system with two layers

Dear Lammps users,

I want to perform the compression test on a system which is consist of two layers are on top of each other but I want the layers to still be treated as two separate layers, without interaction between the. I mean, consider having two sheets of paper on top of each other. For this case, generating the simulation system is not as easy as just making two layers on top of each other.

We can not just replicate the first layer to generate the the second one. Because by replication bonds and other topology interactions are created between pairs of new atoms as well as between old and new atoms. Lammps will not distinguish between the first and second layer.

Using “lattice” and “create atom” command for each layer, will generate the system such that the two layers are bonded (glued) to each other, while we want each layer to move freely.

I selected the atoms close to top boundary of the layer on the bottom , atoms close to the bottom of the top layer on the top, and turned off the pairwise interaction between those groups. But this time when I apply compression, the selected atoms do not interact with each other and atoms in those groups enter each other, because they do not repeal each other any more.

I was wondering does any one have any idea how to solve it?

Dear Lammps users,

I want to perform the compression test on a system which is consist of two layers are on top of each other but I want the layers to still be treated as two separate layers, without interaction between the. I mean, consider having two sheets of paper on top of each other. For this case, generating the simulation system is not as easy as just making two layers on top of each other.

i disagree. it is. this is how you would model graphite, for example. and there have been plenty of studies of multiple graphene layers on top of each other. there are even examples for that bundled with LAMMPS which have some specific inter-layer potential overlays to correct the otherwise not perfectly accurate inter-layer interactions of commonly used potentials. but the simplest model is bonded interactions (bonds, angles and dihedrals) within the layer and for interactions between pairs farther than 4 atoms apart and between layers regular lj/cut interactions.

We can not just replicate the first layer to generate the the second one. Because by replication bonds and other topology interactions are created between pairs of new atoms as well as between old and new atoms.

that is not correct. the replicated system will be a replica of the original system and nothing more. the interactions between the layers are purely non-bonded interactions, and those would be physical.

Lammps will not distinguish between the first and second layer.

LAMMPS will compute the forces as described in the model you define.

Using “lattice” and “create atom” command for each layer, will generate the system such that the two layers are bonded (glued) to each other, while we want each layer to move freely.

well, if you have the same interaction between the atoms everywhere, how should the physics distinguish them? it will just compute forces between them.

I selected the atoms close to top boundary of the layer on the bottom , atoms close to the bottom of the top layer on the top, and turned off the pairwise interaction between those groups. But this time when I apply compression, the selected atoms do not interact with each other and atoms in those groups enter each other, because they do not repeal each other any more.

of course. if you have no interactions, there cannot be any repulsion. if you want to layers to “see” each other, they need some potential between them.

the simplest approach is to have different interactions between the layers than within the layer. see my comment from above.

axel.

Axel,
Thanks for your response. I followed your suggestion. I used pair_style hybrid and considered lj interactions for atoms close to surface and bonded interactions for the rest, and the problem is solved. There are just few things

Dear Lammps users,

I want to perform the compression test on a system which is consist of two layers are on top of each other but I want the layers to still be treated as two separate layers, without interaction between the. I mean, consider having two sheets of paper on top of each other. For this case, generating the simulation system is not as easy as just making two layers on top of each other.

i disagree. it is. this is how you would model graphite, for example. and there have been plenty of studies of multiple graphene layers on top of each other. there are even examples for that bundled with LAMMPS which have some specific inter-layer potential overlays to correct the otherwise not perfectly accurate inter-layer interactions of commonly used potentials. but the simplest model is bonded interactions (bonds, angles and dihedrals) within the layer and for interactions between pairs farther than 4 atoms apart and between layers regular lj/cut interactions.

By this paragraph I did not mean it is not possible, I said it is not as easy as duplicating system. This is something that might be clear for some people, but not for me, and I was happy realizing it :slight_smile: .

We can not just replicate the first layer to generate the the second one. Because by replication bonds and other topology interactions are created between pairs of new atoms as well as between old and new atoms.

that is not correct. the replicated system will be a replica of the original system and nothing more. the interactions between the layers are purely non-bonded interactions, and those would be physical.

This statement is exactly from the manual, I am not sure why you say it is not correct. I mean if I do not change the interactions between atoms, which I was not aware of, and I just create a system and duplicate it, there will be bonds between the new and old atoms. And you were right, by using different interaction for bulk and surface atoms, the problem is solved.

Thanks again for your time and help.
Best,
Sepideh

Lammps will not distinguish between the first and second layer.

LAMMPS will compute the forces as described in the model you define.

Using “lattice” and “create atom” command for each layer, will generate the system such that the two layers are bonded (glued) to each other, while we want each layer to move freely.

well, if you have the same interaction between the atoms everywhere, how should the physics distinguish them? it will just compute forces between them.

I selected the atoms close to top boundary of the layer on the bottom , atoms close to the bottom of the top layer on the top, and turned off the pairwise interaction between those groups. But this time when I apply compression, the selected atoms do not interact with each other and atoms in those groups enter each other, because they do not repeal each other any more.

of course. if you have no interactions, there cannot be any repulsion. if you want to layers to “see” each other, they need some potential between them.

the simplest approach is to have different interactions between the layers than within the layer. see my comment from above.

axel.

Axel,
Thanks for your response. I followed your suggestion. I used pair_style hybrid and considered lj interactions for atoms close to surface and bonded interactions for the rest, and

this makes no sense. you don’t need pair style hybrid to have bonds in addition to LJ.

the problem is solved. There are just few things

[…]

i disagree. it is. this is how you would model graphite, for example. and there have been plenty of studies of multiple graphene layers on top of each other. there are even examples for that bundled with LAMMPS which have some specific inter-layer potential overlays to correct the otherwise not perfectly accurate inter-layer interactions of commonly used potentials. but the simplest model is bonded interactions (bonds, angles and dihedrals) within the layer and for interactions between pairs farther than 4 atoms apart and between layers regular lj/cut interactions.

By this paragraph I did not mean it is not possible, I said it is not as easy as duplicating system. This is something that might be clear for some people, but not for me, and I was happy realizing it :slight_smile: .

i am saying that it is as easy as duplicating the system with the replicate command or through other means.

We can not just replicate the first layer to generate the the second one. Because by replication bonds and other topology interactions are created between pairs of new atoms as well as between old and new atoms.

that is not correct. the replicated system will be a replica of the original system and nothing more. the interactions between the layers are purely non-bonded interactions, and those would be physical.

This statement is exactly from the manual, I am not sure why you say it is not correct. I mean if I do not change the interactions between atoms, which I was not aware of, and I just create a system and duplicate it, there will be bonds between the new and old atoms. And you were right, by using different interaction for bulk and surface atoms, the problem is solved.

please point me to the exact text in the manual. I have been using the replicate command regularly and it never did create bonds between the old coordinates and the new and it should not. i am attaching an example input deck demonstrating my case. this is using a graphene sheet created by VMD, then assigns force field parameters (taken from the CHARMM force field for a Phenyl ring carbon) and then creates a second sheet on top of it using replicate. I am also attaching images created with the write_dump image command.

you can see from the log file that after reading the data file, the system has:

180 atoms
251 bonds
466 angles
871 dihedrals

and when writing out after replication it has:

360 atoms
502 bonds
932 angles
1742 dihedrals

so exactly double and nothing more. the images confirm this.

please keep in mind, that these images show the “real” bonds as defined by the force field and in the topology.
if you read coordinates into a visualization program, it may try to guess bonds from distances and then show you bogus bonds that do not exist.

Axel.

in.sheet.txt (646 Bytes)

sheet.data.txt (35.5 KB)

one-sheet.jpg

two-sheets.jpg