Adsorption GCMC Insertion Problem

Hi LAMMPS-users,
I am trying to run some Adsorption/Desorption Simulations using a GCMC code. I am using a Zeolite built in Material Studio, and CO2 gas. I cannot get the GCMC insertions to work very consistently and I’m not sure what causes the problem. When I run the simulation reading the zeolite datafile first in the system definition, I cannot get any successful insertions. However, the deletions work very well, relatively consistent with some data in literature. Now, when I swap how LAMMPS reads the datafile, by manually creating a simulation box with a specific amount of atom types, bond types etc. (still the same amount as the previous method, just manually inputted) and then appending the zeolite datafile instead, I get completely different results. All the pair coefficients are the same (just in a different order) and the NVT ensemble is too, but I manage to get successful insertions. The only problem is the number of CO2 molecules is completely different in this method implying it is changing how LAMMPS is calculating its adsorption physics?

When altering the pressure to exaggerated increased values, I cannot get the CO2 numbers anywhere close to the values I want. They should increase to a local maximum and then stabilise as it fills the zeolite. In the first method, the scaling seems to work well with pressure, but I have no working insertions? And in the second method I get insertions, but the CO2 numbers are completely different?

I will upload all the files used, and any help to understand why something like this would change my results so drastically would be very appreciated.
I am using LAMMPS (2 Aug 2023 - Update 2) on Linux I believe.

All the files with “Insert” in the name are used with GCMC insertions (manually creating simulation box), and the ones without are the other method of reading the datafile first.

CO2.mol (348 Bytes)
input.lammps (7.0 KB)
system.data (71.9 KB)

CO2_Insert.mol (403 Bytes)
input_Insert.lammps (7.5 KB)
system_Insert.data (71.9 KB)

Many Thanks!

Harry

In my group, we have spent a lot of time benchmarking LAMMPS for adsorption of CO2 in nanoporous materials by comparing it with some Monte Carlo codes like RASPA and GOMC. Our conclusion is that LAMMPS is generally slower but gives the same results are these MC codes, as long as you pay a close attention to the long range electrostatic interactions. So I am relatively confident that this is not a LAMMPS issue.

Two remarks:

  • you should definitely update to the last version of LAMMPS
  • you should perform some isotherm of CO2 in absence of porous material: it’s an excellent sanity check as you can predict analytically the relation between density and pressure/chemical potential

Simon

Thank you for your advice! I will definitely run that sanity check. And I’m glad to hear LAMMPS is accurate with the adsorption values too.

I agree this probably isn’t a “LAMMPS” issue as such, I think its the communication between my datafile from Materials Studio and LAMMPS, I just didn’t know if anyone knew why this might happen, its quite a drastic change in results for a seemingly trivial change in set up? Because I swapped the order of the inputs I either get GCMC insertions or none at all, and also it changes the number of CO2 molecules adsorbed by a significant amount.

Thanks again,
Harry

Hi again Simon,

I’ve tried to run the sanity check you suggested and I’m still getting errors! I’m only using the molecule file for CO2, and running a simple NVT with a GCMC simulation. However, my Carbon Dioxide numbers instantly drop to 1 in the GCMC part of the simulation. I realise that you are the author of the tutorials I have followed on the GitHub with silica adsorption, I feel I am doing the same steps that you are, but I must be missing something. Any help would be greatly appreciated.

My input files are as follows and I’m using the same version of LAMMPS as mentioned above.

CO2.mol (345 Bytes)
input.lammps (3.4 KB)

Many thanks,
Harry