ulissigroup / GASpy

GNU Lesser General Public License v3.0
64 stars 33 forks source link

Checks for adsorbate integrity, implement adsorbate constraints #13

Open zulissi opened 7 years ago

zulissi commented 7 years ago

In some of the simulations, CO is dissociating, especially when a carbide or oxide is favorable. For example: http://gilgamesh.cheme.cmu.edu:5000/id/4059

We need to implement checks for each adsorbate type to ensure that it is still what we think it is. Possibilities include: 1) Throw out simulations where the slab atoms moves more than 1 angstrom (i.e. reconstruction is going on) 2) Make an adsorbate specific check to verify the final image. In the case of CO, probably check the C-O bond distance.

ktran9891 commented 7 years ago

Zach started some work here: https://github.com/ktran9891/GASpy/commit/17b53d7d2a4699fc09aa30b7ca51386e6316dc6a

ktran9891 commented 7 years ago

I added a movement checker for adsorbate: https://github.com/ktran9891/GASpy/commit/bdcdfe4644ed08841077021e32d01db78396e639

ktran9891 commented 7 years ago

What if we end up using adsorbates that rotate? Our adsorbate checker would probably get some false positives.

If we can address this, then this issue should be closable.

zulissi commented 7 years ago

Things that are needed to implement complex adsorbates: 1) adsorbate-specific code to check integrity (in adsorbateStructures in defaults.adsorptionParameters) 2) adsorbate-specific code to add constraints (in adsorbateStructures in defaults.adsorptionParameters) 3) test the ASE-based optimization code, implement a check to switch this somewhere in gaspy (where the firework is made? make a new function that gets called that checks for types of constraints and switches if something interesting is present?)

if 'constraint' in adsorbateStructures[adsorbate]:
    calcsettings['nsw']=0
    calcsettings['optmethod']='ase'
ktran9891 commented 7 years ago
  1. Not yet addressed. I'm still not sure how to do this robustly. Specifically: I think we can avoid dissociation by adding adsorbate hookeans, but I am unsure how to check for desorption. We can see how far adsorbates move, but rotations would be flagged incorrectly as desorptions.
  2. This commit adds OOH constraints and these commits allow us to keep the adsorbate constraints when creating adslabs.
  3. This commit laid down the framework to accomplish this. We are now passing vasp-calling scripts through the Firework, and these vasp-calling scripts check for constraints. If there are constraints (besides FixAtoms), then it switches to an ase optimization in lieu of a vasp optimization.
ktran9891 commented 4 years ago

I know @apalizha has done a lot of this over the years, and that you've written checks like this. Is something like that implemented in GASpy? I couldn't find it easily. But I remember you saying we do have it.