Cartesius Library
operators_base Module Reference

Data Types

type  oneelectronicelement
 
type  oneelectronicelement_so
 
type  oneelectronicelement_w_ptr
 
interface  oneElectronicOperator
 
interface  oneElectronicOperator_so
 
interface  oneElectronicOperatorWithArg
 
type  twoelectronicelement
 
type  twoelectronicelement_so
 
interface  twoElectronicOperator
 
interface  twoElectronicOperator_so
 
interface  twoElectronicOperatorWithArg
 

Functions/Subroutines

logical function, private operators_should_expand (orb)
 Returns true if the orbital should be expanded further, ans false if it's ready for evaluation. More...
 
recursive real function oneelectronicmatrixelement (orbital1, orbital2, one)
 Evaluates the one-electronic matrix element given by the provided operator. More...
 
recursive real function oneelectronicmatrixelement_so (orbital1, orbital2, one)
 Evaluates the one-electronic spin-orbital matrix element given by the provided operator. More...
 
recursive real function oneelectronicmatrixelementwitharg (arg, orbital1, orbital2, one)
 Evaluates the one-electronic matrix element given by the provided operator with some parameter. More...
 
real function oneelectronicmatrixelement_hybrid (hybrid1, hybrid2, one)
 Calculates the element in a more efficient way. Must be called only when the orbitals are known to be hybrids. More...
 
real function oneelectronicmatrixelement_hyb_or_generic (orbital1, orbital2, one, should_reduceAOs)
 Generic function to call different one-electronic element routines for hybrids and generic orbitals. More...
 
real function generalize_local_2c1e_real (orbital1, orbital2, one_local)
 Generalizes all local two-center one-electronic matrix elements with real harmonics. More...
 
recursive real function twoelectronicmatrixelement (orbital1, orbital2, orbital3, orbital4, two)
 Evaluates the two-electronic matrix element given by the provided operator. More...
 
recursive real function twoelectronicmatrixelement_so (orbital1, orbital2, orbital3, orbital4, two)
 Evaluates the two-electronic spin-orbital matrix element given by the provided operator. More...
 
recursive real function twoelectronicmatrixelementwitharg (arg, orbital1, orbital2, orbital3, orbital4, two)
 Evaluates the two-electronic spin-orbital matrix element given by the provided operator given some integer parameter. More...
 
real function generalize_local_2c2e_real (orbital1, orbital2, orbital3, orbital4, two_local)
 
subroutine calculateoneelectronictable (basis, isRecursive)
 
real function oneelectronicintegralfromtable (orbital1, orbital2)
 
subroutine calculateoneelectronictable_so (basis, isRecursive)
 
real function oneelectronicintegralfromtable_so (orbital1, orbital2)
 
subroutine calculatetwoelectronictable (basis, isRecursive)
 
real function twoelectronicintegralfromtable (orbital1, orbital2, orbital3, orbital4)
 
subroutine calculatetwoelectronictable_so (basis, isRecursive)
 
real function twoelectronicintegralfromtable_so (orbital1, orbital2, orbital3, orbital4)
 

Variables

type(oneelectronicelement), dimension(:,:), allocatable, public oneelectronictable
 
type(twoelectronicelement), dimension(:,:,:,:), allocatable, public twoelectronictable
 
type(oneelectronicelement_so), dimension(:,:), allocatable, public oneelectronictable_so
 
type(twoelectronicelement_so), dimension(:,:,:,:), allocatable, public twoelectronictable_so
 
procedure(oneelectronicoperator), pointer, public currentoneelectronicoperator => NULL()
 
procedure(twoelectronicoperator), pointer, public currenttwoelectronicoperator => NULL()
 
procedure(oneelectronicoperator_so), pointer, public currentoneelectronicoperator_so => NULL()
 
procedure(twoelectronicoperator_so), pointer, public currenttwoelectronicoperator_so => NULL()
 
logical, public reduceaostoprimitives = .TRUE.
 
logical, public operator_local = .true.
 Specifies whether the current calculation should be done in local or laboratory frame. Exists to prevent code duplication. Should be changed only when directly calling locality-dependent function or a generic recursive subroutine. More...
 

Function/Subroutine Documentation

◆ calculateoneelectronictable()

subroutine operators_base::calculateoneelectronictable ( type(orbitalbasis), intent(in)  basis,
logical, intent(in)  isRecursive 
)
Here is the call graph for this function:

◆ calculateoneelectronictable_so()

subroutine operators_base::calculateoneelectronictable_so ( type(spinorbitalbasis), intent(in)  basis,
logical, intent(in)  isRecursive 
)
Here is the call graph for this function:

◆ calculatetwoelectronictable()

subroutine operators_base::calculatetwoelectronictable ( type(orbitalbasis), intent(in)  basis,
logical, intent(in)  isRecursive 
)
Here is the call graph for this function:

◆ calculatetwoelectronictable_so()

subroutine operators_base::calculatetwoelectronictable_so ( type(spinorbitalbasis), intent(in)  basis,
logical, intent(in)  isRecursive 
)
Here is the call graph for this function:

◆ generalize_local_2c1e_real()

real function operators_base::generalize_local_2c1e_real ( type(orbital), intent(inout)  orbital1,
type(orbital), intent(inout)  orbital2,
procedure(oneelectronicoperator), pointer  one_local 
)

Generalizes all local two-center one-electronic matrix elements with real harmonics.

Warning
Local overlap function atomicSlaterOverlap (in slater_overlap.f90) calculates the overlap assuming orbital2 is reflected through the xy-plane. This is the standard assumption in many derivations of this integral in prolate spheroidial coordinates. Unfortunately, this means that the reflection needs to be undone via multiplication by the correct phase factor: (-1)**(l2-m2) (see resonanceIntegral_STO in valence_approximation.f90). We cannot include this specific factor here, in this general routine. Thus, for now, this function is unused. In the future, it makes sense to either a) rewrite atomicSlaterOverlap to include this phase factor by default; or b) add a new Slater overlap function which includes this factor.
Here is the call graph for this function:

◆ generalize_local_2c2e_real()

real function operators_base::generalize_local_2c2e_real ( type(orbital), intent(inout)  orbital1,
type(orbital), intent(inout)  orbital2,
type(orbital), intent(inout)  orbital3,
type(orbital), intent(inout)  orbital4,
procedure(twoelectronicoperator), pointer  two_local 
)
Here is the call graph for this function:

◆ oneelectronicintegralfromtable()

real function operators_base::oneelectronicintegralfromtable ( type(orbital), intent(inout)  orbital1,
type(orbital), intent(inout)  orbital2 
)
Here is the call graph for this function:

◆ oneelectronicintegralfromtable_so()

real function operators_base::oneelectronicintegralfromtable_so ( type(spinorbital), intent(inout)  orbital1,
type(spinorbital), intent(inout)  orbital2 
)
Here is the call graph for this function:

◆ oneelectronicmatrixelement()

recursive real function operators_base::oneelectronicmatrixelement ( type(orbital), intent(in), target  orbital1,
type(orbital), intent(in), target  orbital2,
procedure(oneelectronicoperator), intent(inout), pointer  one 
)

Evaluates the one-electronic matrix element given by the provided operator.

Here is the call graph for this function:

◆ oneelectronicmatrixelement_hyb_or_generic()

real function operators_base::oneelectronicmatrixelement_hyb_or_generic ( type(orbital), intent(in)  orbital1,
type(orbital), intent(in)  orbital2,
procedure(oneelectronicoperator), intent(inout), pointer  one,
logical, intent(in), optional  should_reduceAOs 
)

Generic function to call different one-electronic element routines for hybrids and generic orbitals.

Here is the call graph for this function:

◆ oneelectronicmatrixelement_hybrid()

real function operators_base::oneelectronicmatrixelement_hybrid ( type(orbital), intent(in), target  hybrid1,
type(orbital), intent(in), target  hybrid2,
procedure(oneelectronicoperator), intent(inout), pointer  one 
)

Calculates the element in a more efficient way. Must be called only when the orbitals are known to be hybrids.

Here is the call graph for this function:

◆ oneelectronicmatrixelement_so()

recursive real function operators_base::oneelectronicmatrixelement_so ( type(spinorbital), intent(in), target  orbital1,
type(spinorbital), intent(in), target  orbital2,
procedure(oneelectronicoperator_so), intent(inout), pointer  one 
)

Evaluates the one-electronic spin-orbital matrix element given by the provided operator.

Here is the call graph for this function:

◆ oneelectronicmatrixelementwitharg()

recursive real function operators_base::oneelectronicmatrixelementwitharg ( class(*), intent(inout), pointer  arg,
type(orbital), intent(in), target  orbital1,
type(orbital), intent(in), target  orbital2,
procedure(oneelectronicoperatorwitharg), intent(inout), pointer  one 
)

Evaluates the one-electronic matrix element given by the provided operator with some parameter.

Here is the call graph for this function:

◆ operators_should_expand()

logical function, private operators_base::operators_should_expand ( type(orbital), intent(in)  orb)
private

Returns true if the orbital should be expanded further, ans false if it's ready for evaluation.

Here is the call graph for this function:

◆ twoelectronicintegralfromtable()

real function operators_base::twoelectronicintegralfromtable ( type(orbital), intent(inout)  orbital1,
type(orbital), intent(inout)  orbital2,
type(orbital), intent(inout)  orbital3,
type(orbital), intent(inout)  orbital4 
)
Here is the call graph for this function:

◆ twoelectronicintegralfromtable_so()

real function operators_base::twoelectronicintegralfromtable_so ( type(spinorbital), intent(inout)  orbital1,
type(spinorbital), intent(inout)  orbital2,
type(spinorbital), intent(inout)  orbital3,
type(spinorbital), intent(inout)  orbital4 
)
Here is the call graph for this function:

◆ twoelectronicmatrixelement()

recursive real function operators_base::twoelectronicmatrixelement ( type(orbital), intent(in), target  orbital1,
type(orbital), intent(in), target  orbital2,
type(orbital), intent(in), target  orbital3,
type(orbital), intent(in), target  orbital4,
procedure(twoelectronicoperator), intent(inout), pointer  two 
)

Evaluates the two-electronic matrix element given by the provided operator.

Here is the call graph for this function:

◆ twoelectronicmatrixelement_so()

recursive real function operators_base::twoelectronicmatrixelement_so ( type(spinorbital), intent(in), target  orbital1,
type(spinorbital), intent(in), target  orbital2,
type(spinorbital), intent(in), target  orbital3,
type(spinorbital), intent(in), target  orbital4,
procedure(twoelectronicoperator_so), intent(inout), pointer  two 
)

Evaluates the two-electronic spin-orbital matrix element given by the provided operator.

Here is the call graph for this function:

◆ twoelectronicmatrixelementwitharg()

recursive real function operators_base::twoelectronicmatrixelementwitharg ( class(*), intent(inout), pointer  arg,
type(orbital), intent(in), target  orbital1,
type(orbital), intent(in), target  orbital2,
type(orbital), intent(in), target  orbital3,
type(orbital), intent(in), target  orbital4,
procedure(twoelectronicoperatorwitharg), intent(inout), pointer  two 
)

Evaluates the two-electronic spin-orbital matrix element given by the provided operator given some integer parameter.

Here is the call graph for this function:

Variable Documentation

◆ currentoneelectronicoperator

procedure(oneelectronicoperator), pointer, public operators_base::currentoneelectronicoperator => NULL()

◆ currentoneelectronicoperator_so

procedure(oneelectronicoperator_so), pointer, public operators_base::currentoneelectronicoperator_so => NULL()

◆ currenttwoelectronicoperator

procedure(twoelectronicoperator), pointer, public operators_base::currenttwoelectronicoperator => NULL()

◆ currenttwoelectronicoperator_so

procedure(twoelectronicoperator_so), pointer, public operators_base::currenttwoelectronicoperator_so => NULL()

◆ oneelectronictable

type(oneelectronicelement), dimension(:,:), allocatable, public operators_base::oneelectronictable

◆ oneelectronictable_so

type(oneelectronicelement_so), dimension(:,:), allocatable, public operators_base::oneelectronictable_so

◆ operator_local

logical operators_base::operator_local = .true.

Specifies whether the current calculation should be done in local or laboratory frame. Exists to prevent code duplication. Should be changed only when directly calling locality-dependent function or a generic recursive subroutine.

◆ reduceaostoprimitives

logical, public operators_base::reduceaostoprimitives = .TRUE.

◆ twoelectronictable

type(twoelectronicelement), dimension(:,:,:,:), allocatable, public operators_base::twoelectronictable

◆ twoelectronictable_so

type(twoelectronicelement_so), dimension(:,:,:,:), allocatable, public operators_base::twoelectronictable_so