5
$\begingroup$

How can I modify the procedure described in this answer to achieve adsorption of two or more types of atoms on a surface, each with distinct coverages?

Is there an extension to the described method for generating random positions to accommodate the adsorption of multiple atom types with varying coverages?

$\endgroup$
4
  • $\begingroup$ please refer to this answer: mattermodeling.stackexchange.com/a/10875/1554 $\endgroup$ Mar 5 at 11:48
  • $\begingroup$ Thank you so much @Jaafar Mehrez i have very small query, if I wish to adsorb two types of atoms, like CO and O with different coverage. can you suggest that tag for modify this code? $\endgroup$ Mar 5 at 15:06
  • $\begingroup$ Agrawi, I suggest you to ask new questions seperately or modify your question to incldue the the details you are asking for. I am not the author of the tool and I didn't use it. Hopefully Shaun Han (the author) will see the question and answer you. $\endgroup$ Mar 6 at 1:18
  • $\begingroup$ Okey !! @Jaafar Mehrez $\endgroup$ Mar 6 at 8:50

1 Answer 1

4
$\begingroup$

ACAT dev here. Yes you can add different adsorbates, each with distinct coverage. However, you will need to use a more general acat.build.adlayer.RandomPatternGenerator class. Below is an example which you generate 10 random adlayer patterns on a Ni(211) surface with 2/18 ML C*, 3/18 ML N* and 4/18 ML O*:

from acat.build.adlayer import RandomPatternGenerator as RPG
from acat.adsorption_sites import SlabAdsorptionSites
from ase.io import read, write
from ase.visualize import view
from ase.build import fcc211

slab_211 = fcc211('Ni', (6,3,4), vacuum=5.)
sas_211 = SlabAdsorptionSites(slab_211, surface='fcc211')

rpg = RPG(slab_211, adsorbate_species='C', # add 2/18 ML C*
          min_adsorbate_distance=1.5,
          adsorption_sites=sas_211,
          trajectory='test1.traj')
rpg.run(num_gen=10, action='add', num_act=2)
images = read('test1.traj', index=':')
rpg = RPG(images, adsorbate_species='N', # add 3/18 ML N*
          min_adsorbate_distance=1.5,
          adsorption_sites=sas_211,
          trajectory='test1.traj',
          )
rpg.run(num_gen=10, action='add', num_act=3)
images = read('test1.traj', index=':')
rpg = RPG(images, adsorbate_species='O', # add 4/18 ML O*
          min_adsorbate_distance=1.5,
          adsorption_sites=sas_211,
          trajectory='test1.traj',
          )
rpg.run(num_gen=10, action='add', num_act=4)
images = read('test1.traj', index=':')
view(images[0])

enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .