[molpro-user] Optimizing the squared energy difference of distinct states with molpro

Dr Seth Olsen s.olsen1 at uq.edu.au
Thu Nov 17 06:51:46 GMT 2005


Hi Molpro-Users,

I found an example after reading the manual more, the correct syntax is
to add the 'ADD' or 'SCALE' cards immedieately after each 'force' card,
and not after the 'cpmcscf' card.  It does not seem to matter too much,
though, for this test. I could not get it to converge satisfactorily,
even after much testing with scale factors, etc.  The final output deck
(which didn't seem to do the trick) looked like this:

***
memory,30,m
gprint,orbitals,civector
file,1,ethylenediffsqopt.int
file,2,ethylenediffsqopt.wfn
geomtyp=xyz
basis=6-31G*
geometry,{nosymm,noorient
    6
ethylene 
 C     0.000000     0.000000     0.000000
 C     0.000000     0.000000     1.400000
 H     0.943102     0.000100    -0.544500
 H    -0.943102     0.000100    -0.544500
 H     0.000000    -0.943102     1.879500
 H     0.000000     0.943102     1.879500
}

rhf
wf,16,1,0

show,cpustep
show,wallstep

maxstep=100

do i=1,maxstep
mcscf
occ,9
closed,7
state,2
weight,1,1
show,energy(1)
show,energy(2)
ediff=energy(2)-energy(1)
scfac=10*$ediff
fac1=$scfac*energy(1)
fac2=$scfac*energy(2)

mcscf
occ,9
closed,7
state,2
weight,1,1
cpmcscf,grad,1.1,save=5101.2
cpmcscf,grad,2.1,save=5102.2

force;samc,5101.2;varsave
scale,-1.0*$ediff
force;samc,5102.2;varsave
add,$ediff

table,gradx,grady,gradz

opt
step,$ediff,$ediff,10*$ediff,$ediff,10*$ediff
show,optconv

if (optconv.lt.0.003) then
matrop
load,orbitals,orb,2140.2
write,orbitals,'ethylenediffsqopt.orb',new
put,molden,ethylenediffsqopt.molden,new
put,xyz,ethylenediffsqopt.xyz,new
exit
end if

show,cpustep
show,wallstep

end do






<br>
Dr Seth Olsen wrote:
<blockquote cite="mid529af3528f78.528f78529af3 at uq.edu.au" type="cite">
  <pre wrap="">Hi Molpro-users,

 I would like to perform an optimization on a surface given by the
squared energy difference of two electronic states.&nbsp; It seems
MolPro
should have the capacity to do this using the ADD and SCALE commands on
the gradients for the different states.&nbsp; However, I cannot seem to
master the syntax.&nbsp; Below is an example input using ethylene,
which is
known to have a low-lying s0/s1 CI seam.&nbsp;&nbsp; With simple
calculus, I
reason the gradient of
E'=grad(E_s1-E_s0)**2=2((E_s1*gradE_s1)-(E_s1*gradE_s0)-(E_s0*gradE_s1)+(E_s0*gradE_s0))
and implementing this in a molpro non-automatic optimization loop (as
below) I get errors starting with 'Illegal command scale' and proceeding
through the rest of the cpmcscf cards.  I cannot find an example in the
manual that makes clear the syntax for doing what I want to do.  Does
anyone know the correct syntax?

Cheers,

Seth


***
memory,30,m
gprint,orbitals,civector
file,1,ethylenediffsqopt.int
file,2,ethylenediffsqopt.wfn
geomtyp=xyz
basis=6-31G*
geometry,{nosymm,noorient
    6
ethylene 
 C     0.000000     0.000000     0.000000
 C     0.000000     0.000000     1.400000
 H     0.943102     0.000100    -0.544500
 H    -0.943102     0.000100    -0.544500
 H     0.000000    -0.943102     1.879500
 H     0.000000     0.943102     1.879500
}

rhf
wf,16,1,0

show,cpustep
show,wallstep

maxstep=40

do i=1,maxstep
mcscf
occ,9
closed,7
state,2
weight,1,1
fac1=energy(1)
fac2=energy(2)
fac3=-1.0*$fac1
fac4=-1.0*$fac2

mcscf
occ,9
closed,7
state,2
weight,1,1
cpmcscf,grad,1.1;scale,$fac1
cpmcscf,grad,2.1;add,$fac2
cpmcscf,grad,2,1;add,$fac3
cpmcscf,grad,1.1;add,$fac4

force
opt

show,cpustep
show,wallstep

end do


matrop
load,orbitals,orb,2140.2
write,orbitals,'ethylenediffsqopt.orb',new

put,molden,ethylenediffsqopt.molden
---





  </pre>
</blockquote>
<br>
</body>
</html>





More information about the Molpro-user mailing list