[ase-users] [gpaw-users] (no subject)

Peterson, Andrew andrew_peterson at brown.edu
Mon Apr 30 19:52:42 CEST 2012


Rizwan,

That's not the application I had in mind when I created the BondSpring
constraint class, and thus I am not sure it will do what you are looking
for. My purpose for the BondSpring constraint is generally within molecular
dynamics "randomizations" that proceed optimizations. For a simple example,
if you wanted to look for the lowest energy site where CO binds on a
surface, you might use some sort of MD technique (such as simulated
annealing or minima hopping) to find binding sites. However, in these
simulations you want the CO to move around but you don't want the CO to
dissociate into C and O, so the BondSpring constraint activates when the
C-O bond becomes too long in order to apply a restorative force. But the
idea is that the constraint is *off* when the optimization completes
(because the C and O are within the threshhold distance of eachother); so
the energy that results from the minimization is unaffected by the presence
of the constraint. In this way a constraint is present during the MD parts
of the simulation that does not violate the conservation of energy (by
employing a physically consistent Hookean force) nor remove any degrees of
freedom, but that totally disappears during the optimization part of the
global minimum search.

For your application, it seems that you are trying to prevent a proton from
transferring from a water layer to a surface during an optimization. If
such a transfer occurs without a barrier, then the BondSpring won't be able
to prevent it without introducing an artificial force to the problem.

My approach to solving that problem would probably be to run a series of
calculations with the bondlength between the water and the extra proton
fixed at different values, to see if a small barrier is even present. If
there is a small barrier then I would start an optimization near the
pre-barrier minimum energy point and see if I could find the minimum with
QuasiNewton. Note that sometimes BFGS / BFGSLineSearch seem to climb over
very small barriers; it might be necessary to switch to something like
MDMin.

And if there is no barrier when you run the series of fixed bondlengths,
then you've got your answer and there is no need to run a NEB.

Andy

On Mon, Apr 30, 2012 at 10:39 AM, Rizwan Ahmed <riah at fysik.dtu.dk> wrote:

> Dear Andy,
>
> Thanks you very much for your detailed answer. I want to calculate the
> Barrier for proton transfer to Pt slab (which also have half-dissociation
> water layer on it) from the single bi-layer water. Dissociation layers has
> missing hydrogen bond which can by compensated by extra hydrogen atom in
> water bi layer. So, for calculating the barrier, I need initial and final
> state. So, in the initial relaxed state, I want to have H3O in water-bi
> layer. But when I relax this structure proton is immediately transferred to
> half-dissociation layer which off course I do not want while relaxing
> initial state.
>
> I think Fixing the bond length of H3O will not work here, because it will
> not give minimum energy barrier. So, I want to relax H3O as well while
> applying threshold length so that it give minimum energy for initial
> relaxed structure. So, I am not getting any error message, but i am not
> getting H3O in my initial relaxed structure as well even though I set
> constraints so that threshold length between O and H does not exceed 1.2. I
> hope it is understandable.
>
> Thanks for giving so much precious time of yours.
>
> Rizwan
> ________________________________________
> From: Peterson, Andrew [andrew_peterson at brown.edu]
> Sent: Monday, April 30, 2012 3:59 PM
> To: Rizwan Ahmed; ase-users at listserv.fysik.dtu.dk
> Cc: gpaw-users at listserv.fysik.dtu.dk
> Subject: Re: [gpaw-users] (no subject)
>
> Rizwan,
>
> (This is more of an ASE issue than a GPAW issue, so I'm switching to that
> list.)
>
> We'll need more information on your problem in order to help you
> troubleshoot it. What is the atomic system you are looking at? (Consider
> including your start.traj file in your email.) What is the error message
> you are getting or what other issue is it that makes you think the
> constraint is not working?
>
> If the optimization gets "stuck" (forces no longer decreasing), you may
> try switching to BFGS instead of BFGSLineSearch. Note that in the current
> version of ASE, QuasiNewton and BFGSLineSearch are equivalent. I believe
> there is a potential issue with BFGSLineSearch and any constraint that
> modifies forces without a corresponding modification to the potential
> energy. Since there is no mechanism for a constraint to modify the
> potential energy, this could happen to any constraint that modifies forces.
> The inconsistency between the forces and potential energy surface will give
> confusing information to BFGSLineSearch's estimation of the Hessian, which
> could result in the algorithm getting stuck. In my understanding, BFGS only
> uses information from the forces, while BFGSLineSearch uses both force and
> energy information, so switching to BFGS should take care of that issue.
> This is something we should probably try to fix in how we handle
> constraints (at least if I am understanding the problem correctly).
>
> Andy
>
> On Mon, Apr 30, 2012 at 7:17 AM, Rizwan Ahmed <riah at fysik.dtu.dk<mailto:
> riah at fysik.dtu.dk>> wrote:
> Dear GPAW-users,
>
> Have any one used BondSpring (..........). It forces bond-lengths between
> atoms under the maximum bond-length (threshold length) by applying force.
> But it does not seem to work in my case. Do any one know what could be the
> possible problem?
>
> slab = io.read('start.traj')
>
> newoutfile = 'Pt111_323_2OH_2H2O_1H3O'
>
> calc = GPAW(nbands=-40,
>                   h=0.19,
>                   kpts = (4,6,1),
>                   xc='RPBE',
>                   poissonsolver=PoissonSolver(),
>                   txt= newoutfile+'.txt',
>                   maxiter = 300,
>                   width = 0.1)
>
> slab.set_calculator(calc)
>
> cons = FixAtoms(mask=[atom.tag > 2 for atom in slab])
> c = BondSpring(a1=31, a2=32, threshhold_length=1.20, springconstant=5.)
> d = BondSpring(a1=31, a2=33, threshhold_length=1.20, springconstant=5.)
> e = BondSpring(a1=31, a2=24, threshhold_length=1.20, springconstant=5.)
>
> slab.set_constraint([cons, d, e, c])
>
> io.write('slab.traj', slab)
>
> qn = QuasiNewton(slab, trajectory='initial.traj')
> qn.run(fmax=0.05)
>
> energy = slab.get_potential_energy()
>
>
> Thanks and best wishes,
> Rizwan
> _______________________________________________
> gpaw-users mailing list
> gpaw-users at listserv.fysik.dtu.dk<mailto:gpaw-users at listserv.fysik.dtu.dk>
> https://listserv.fysik.dtu.dk/mailman/listinfo/gpaw-users
>
>
>
> --
> Andrew Peterson
> Assistant Professor
> Brown University School of Engineering
>
>


-- 
Andrew Peterson
Assistant Professor
Brown University School of Engineering
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.fysik.dtu.dk/pipermail/ase-users/attachments/20120430/266a4bac/attachment.html>


More information about the ase-users mailing list