[ase-users] Constraints issue in vasp calculator
Eric Hermes
ehermes at chem.wisc.edu
Tue Mar 28 16:29:52 CEST 2017
On Mon, 2017-03-27 at 20:09 +0000, Protik Das wrote:
> The error I posted is indeed the full error message. Here is a script
> that reproduces the error:
>
> from ase.build import mx2
> from ase.constraints import FixedPlane
> import numpy as np
> from ase.calculators.vasp import Vasp
>
> calc = Vasp(prec = 'Accurate',
> pp = 'pbe',
> istart=0,
> ismear=1,
> sigma=0.01,
> lcharg=False,
> lwave=False,
> lreal = False,
> encut = 550,
> algo='Normal',
> ncore=10,
> ediff=1e-6,
> ibrion=1,
> nsw=150,
> isym=0,
> nelmin=4,
> nelm=200,
> ediffg=-0.01,
> ivdw=1,
> isif=2,
> kpts = [8, 8, 1],
> gamma=True)
>
> mx2 = mx2(formula='MoS2', kind='1T', a=3.179, thickness=3.86,
> size=(1,1,1),
> vacuum=1.5)
> mx2.center(vacuum=15, axis=2)
> plane = FixedPlane(range(len(mx2)), (0, 0, 1))
> mx2.set_constraint(plane)
> interface = mx2.copy()
> mx2.set_calculator(calc)
> energ1 = mx2.get_potential_energy()
>
> And the error:
>
> Traceback (most recent call last):
> File "isif.py", line 44, in <module>
> energ1 = mx2.get_potential_energy()
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/atoms.py", line 682, in get_potential_energy
> energy = self._calc.get_potential_energy(self)
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/calculators/vasp.py", line 835, in get_potential_energy
> self.update(atoms)
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/calculators/vasp.py", line 492, in update
> self.calculate(atoms)
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/calculators/vasp.py", line 684, in calculate
> self.initialize(atoms)
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/calculators/vasp.py", line 592, in initialize
> self.atoms_sorted = atoms[self.sort]
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/atoms.py", line 949, in __getitem__
> con.index_shuffle(self, i)
> File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> packages/ase/constraints.py", line 86, in index_shuffle
> if old == self.a:
> ValueError: The truth value of an array with more than one element is
> ambiguous. Use a.any() or a.all()
>
Not to belabor the point, but your initial email only had the traceback
and didn't contain the actual error message :)
FixedPlane is a FixConstraintSingle, and as such only takes a single
atom index as an argument. Try doing the following instead:
plane = [FixedPlane(atom.index, (0, 0, 1)) for atom in mx2]
mx2.set_constraint(plane)
>
>
> On Mon, Mar 27, 2017 at 7:07 AM Eric Hermes <ehermes at chem.wisc.edu>
> wrote:
> > On Mon, 2017-03-27 at 07:21 +0000, Protik Das via ase-users wrote:
> > > Hi,
> > >
> > > I am using ase in a python 3.6 environment to do some vasp
> > > calculations. I am using plane constraint to fix all the atoms in
> > z
> > > direction. I am getting the following error before the
> > calculation
> > > starts:
> > >
> > > Traceback (most recent call last):
> > > File "isif.py", line 109, in <module>
> > > energ1 = interface.get_potential_energy()
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/atoms.py", line 682, in get_potential_energy
> > > energy = self._calc.get_potential_energy(self)
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/calculators/vasp.py", line 835, in
> > get_potential_energy
> > > self.update(atoms)
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/calculators/vasp.py", line 492, in update
> > > self.calculate(atoms)
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/calculators/vasp.py", line 684, in calculate
> > > self.initialize(atoms)
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/calculators/vasp.py", line 592, in initialize
> > > self.atoms_sorted = atoms[self.sort]
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/atoms.py", line 949, in __getitem__
> > > con.index_shuffle(self, i)
> > > File "/home/protik/anaconda3/envs/ase/lib/python3.6/site-
> > > packages/ase/constraints.py", line 86, in index_shuffle
> > > if old == self.a:
> > >
> > > I tried using the equal function from ase.calculators.calculator,
> > but
> > > that did not work. Any help regarding this?
> > > --
> > > Protik Das,
> > > ECE Graduate Student,
> > > LATTE (http://latte.ece.ucr.edu),
> > > University of California, Riverside.
> > > _______________________________________________
> > > ase-users mailing list
> > > ase-users at listserv.fysik.dtu.dk
> > > https://listserv.fysik.dtu.dk/mailman/listinfo/ase-users
> >
> > Could you please post the *full* error message, as well as a short
> > script that exhibits the problem?
> >
> > Eric
> --
> Protik Das,
> ECE Graduate Student,
> LATTE (http://latte.ece.ucr.edu),
> University of California, Riverside.
More information about the ase-users
mailing list