12 views

Skip to first unread message

Jan 9, 2022, 9:33:47 AMJan 9

to molpro-user

Dear molpro users and devs

I have a rather silly question, how does one use the gexpec directive to calculate Lz and Lz^2 properties? I tired following the example in the molpro manual (shown here https://www.molpro.net/manual/doku.php?id=program_control#one-electron_operators_and_expectation_values_gexpec) but when adding lop/lop2 it does not compute anything. As a matter of fact lop2 is said to be invalid ("Invalid operator on EXPEC directive: LOP2 (2-electron operator)" ).

***,h2o properties

geometry={o;h1,o,r;h2,o,r,h1,theta} !Z-matrix geometry input

r=1 ang !bond length

theta=104 !bond angle

gexpec,dm,sm,qm,lop,lop2 !compute dipole and quarupole moments

$methods=[hf,multi,ci] !do hf, casscf, mrci

do i=1,#methods !loop over methods

$methods(i) !run energy calculation

e(i)=energy

dip(i)=dmz !save dipole moment in variable dip

quadxx(i)=qmxx !save quadrupole momemts

quadyy(i)=qmyy

quadzz(i)=qmzz

smxx(i)=xx !save second momemts

smyy(i)=yy

smzz(i)=zz

angmomz(i)=lz

angmomz2(i)=lzlz

enddo

table,methods,dip,smxx,smyy,smzz !print table of first and second moments

table,methods,e,quadxx,quadyy,quadzz !print table of quadrupole moments

geometry={o;h1,o,r;h2,o,r,h1,theta} !Z-matrix geometry input

r=1 ang !bond length

theta=104 !bond angle

gexpec,dm,sm,qm,lop,lop2 !compute dipole and quarupole moments

$methods=[hf,multi,ci] !do hf, casscf, mrci

do i=1,#methods !loop over methods

$methods(i) !run energy calculation

e(i)=energy

dip(i)=dmz !save dipole moment in variable dip

quadxx(i)=qmxx !save quadrupole momemts

quadyy(i)=qmyy

quadzz(i)=qmzz

smxx(i)=xx !save second momemts

smyy(i)=yy

smzz(i)=zz

angmomz(i)=lz

angmomz2(i)=lzlz

enddo

table,methods,dip,smxx,smyy,smzz !print table of first and second moments

table,methods,e,quadxx,quadyy,quadzz !print table of quadrupole moments

what am I doing wrong here?

Thanks in advance

Gilead

Apr 26, 2022, 12:26:07 PMApr 26

to molpro-user

Dear Gilead,

you can calculate
< L_x^2 >,
< L_y^2 >, and
< L_z^2 > using 'expec2,lxx,lyy,lzz' in MULTI. For Molpro this is a "two electron operator" and cannot be calculated with "expec," you need "expec2".

I usually use this code template:

{MULTI;

....

natorb,ci,print; !Print natural orbitals and associated ci-coefficients

tran,lz !Compute transition matrix elements over LZ

expec2,lxx,lyy,lzz} !compute expectation values for LXLX, LYLY, LZLZ, and L^2

tran,lz !Compute transition matrix elements over LZ

expec2,lxx,lyy,lzz} !compute expectation values for LXLX, LYLY, LZLZ, and L^2

This is most useful for atomic systems (single atom or atomic ion in empty space) or linear molecules. For linear molecules you can make sure you have a desired state: Sigma, Pi, Delta, ... by checking < L_z^2 > (assuming the atoms are placed on the z axis, as is the default). For instance you will have
< L_z^2 > = 0 for a Sigma state, and
< L_z^2 >= 4 for a Delta state.

Best Regards,

Piotr Gniewek

Reply all

Reply to author

Forward

0 new messages

Search

Clear search

Close search

Google apps

Main menu