[molpro-user] Transition dipole moment, phase convention

Kirk Peterson kipeters at wsu.edu
Sat Oct 29 01:20:54 BST 2005

```Michael,

As you've found out, this is a real pain and there is no way to get
around it
as far as I know (the overall phase is arbitrary).  What we've done
in the past is
to just keep track of the relative phases between the two electronic
wavefunctions.
This is done via:

ci;trans,4100.2,4200.2;
phase1 = trov(1)

and the look for sign changes.

trov(1) is the overlap(s) between the wavefunctions on 4100.2 and
those on 4200.2.  The
indexing depends on how many states are in each record.

Hope that helps,

-Kirk

On Oct 28, 2005, at 3:50 PM, Michael Hayes wrote:

> Dear Molpro users,
>
> I am trying to calculate a smooth transition dipole moment surface
> between the lowest two A' states of H3+. However, I believe that the
> output does not maintain a consistent phase convention for the two
> electronic wavefunctions, resulting in a transition dipole moment that
> sometimes switches sign abruptly between adjacent nuclear geometries.
>
> Does anyone know of a way to automatically ensure that the phases of
> the wavefunctions remain consistent between single point calculations?
>
> My input file is attached at the end. Any help would be greatly
> appreciated.
>
> Michael Hayes
>
> ! The bond coordinates x(i),y(i) and z(i) are specified in a separate
> ! input file
> thresh=0.00000001
> do i=1,npts
>   r1=x(i)
>   r2=y(i)
>   r3=z(i)
>   rrr=sqrt((r1**2+r2**2-0.5*r3**2)/2.0)
>   sss=r3
>   cost=(r1**2-rrr**2-0.25*r3**2)/(rrr*sss)
>   sint=sqrt(1.0-cost**2)
>   if(abs(cost-1.0).lt.thresh) sint=0.0
>   xx1=rrr+sss*cost/2
>   yy1=sss*sint/2
>   xx2=rrr-sss*cost/2
>   yy2=-sss*sint/2
>   geomtyp=zmat
>   geometry={
>     H,, 0.0, 0.0, 0.0
>     H,, xx1, yy1, 0.0
>     H,, xx2, yy2, 0.0
>   }
>   GEXPEC,DM;
>   TRAN,DM;
>   aoint,c_seward=0
>   multi;occ,3;wf,2,1,0;state,2;
>   CI;state,2;option,nstati=5;
>   e1(i)=energy(1)
>   e2(i)=energy(2)
>   dx1(i)=dmx(1)
>   dx2(i)=dmx(2)
>   dx12(i)=trdmx(1)
>   dy1(i)=dmy(1)
>   dy2(i)=dmy(2)
>   dy12(i)=trdmy(1)
> enddo
>
>

```