## Documentation for module ai_moments

Calculation of the moment integrals over Cartesian Gaussian-type functions.

source: ai_moments.F

#### public Subroutines/Functions:

...
...
This returns the derivative of the overlap integrals [a|b], with respect to the position of the primitive on the left, i.e. [da/dR_ai|b] = 2*zeta*[a+1i|b] - Ni(a)[a-1i|b]
This returns the derivative of the moment integrals [a|\mu|b], with respect to the position of the primitive on the left, i.e.
This returns the derivative of the dipole integrals [a|x|b], with respect to the position of the primitive on the left and right, i.e.
...

#### SUBROUTINEcontract_cossin(cos_block, sin_block, iatom, ncoa, nsgfa, sgfa, sphi_a, ldsa, jatom, ncob, nsgfb, sgfb, sphi_b, ldsb, cosab, sinab, ldab, work, ldwork)^

...

##### Arguments:
 REAL(dp), POINTER :: cos_block(:,:) ... REAL(dp), POINTER :: sin_block(:,:) ... INTEGER, INTENT(in) :: iatom ... INTEGER, INTENT(in) :: ncoa ... INTEGER, INTENT(in) :: nsgfa ... INTEGER, INTENT(in) :: sgfa ... REAL(dp), INTENT(in) :: sphi_a(:,:) ... INTEGER, INTENT(in) :: ldsa ... INTEGER, INTENT(in) :: jatom ... INTEGER, INTENT(in) :: ncob ... INTEGER, INTENT(in) :: nsgfb ... INTEGER, INTENT(in) :: sgfb ... REAL(dp), INTENT(in) :: sphi_b(:,:) ... INTEGER, INTENT(in) :: ldsb ... REAL(dp), INTENT(in) :: cosab(:,:) ... REAL(dp), INTENT(in) :: sinab(:,:) ... INTEGER, INTENT(in) :: ldab ... REAL(dp) :: work(:,:) ... INTEGER, INTENT(in) :: ldwork ...

#### SUBROUTINEcossin(la_max_set, npgfa, zeta, rpgfa, la_min_set, lb_max, npgfb, zetb, rpgfb, lb_min, rac, rbc, kvec, cosab, sinab, dcosab, dsinab)^

...

##### Arguments:
 INTEGER, INTENT(in) :: la_max_set ... INTEGER, INTENT(in) :: npgfa ... REAL(dp), INTENT(in) :: zeta(:) ... REAL(dp), INTENT(in) :: rpgfa(:) ... INTEGER, INTENT(in) :: la_min_set ... INTEGER, INTENT(in) :: lb_max ... INTEGER, INTENT(in) :: npgfb ... REAL(dp), INTENT(in) :: zetb(:) ... REAL(dp), INTENT(in) :: rpgfb(:) ... INTEGER, INTENT(in) :: lb_min ... REAL(dp), INTENT(in) :: rac(3) ... REAL(dp), INTENT(in) :: rbc(3) ... REAL(dp), INTENT(in) :: kvec(3) ... REAL(dp), INTENT(inout) :: cosab(:,:) ... REAL(dp), INTENT(inout) :: sinab(:,:) ... REAL(dp), INTENT(inout), OPTIONAL :: dcosab(:,:,:) ... REAL(dp), INTENT(inout), OPTIONAL :: dsinab(:,:,:) ...

#### SUBROUTINEdiffop(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, rab, difab)^

This returns the derivative of the overlap integrals [a|b], with respect to the position of the primitive on the left, i.e. [da/dR_ai|b] = 2*zeta*[a+1i|b] - Ni(a)[a-1i|b]

##### Arguments:
 INTEGER, INTENT(in) :: la_max ... INTEGER, INTENT(in) :: npgfa ... REAL(dp), INTENT(in) :: zeta(:) ... REAL(dp), INTENT(in) :: rpgfa(:) ... INTEGER, INTENT(in) :: la_min ... INTEGER, INTENT(in) :: lb_max ... INTEGER, INTENT(in) :: npgfb ... REAL(dp), INTENT(in) :: zetb(:) ... REAL(dp), INTENT(in) :: rpgfb(:) ... INTEGER, INTENT(in) :: lb_min ... REAL(dp), INTENT(in) :: rab(3) ... REAL(dp), INTENT(out) :: difab(:,:,:) ...

#### SUBROUTINEdiff_momop(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, order, rac, rbc, difmab, mab_ext)^

This returns the derivative of the moment integrals [a|\mu|b], with respect to the position of the primitive on the left, i.e.

##### Arguments:
 INTEGER, INTENT(in) :: la_max ... INTEGER, INTENT(in) :: npgfa ... REAL(dp), INTENT(in) :: zeta(:) ... REAL(dp), INTENT(in) :: rpgfa(:) ... INTEGER, INTENT(in) :: la_min ... INTEGER, INTENT(in) :: lb_max ... INTEGER, INTENT(in) :: npgfb ... REAL(dp), INTENT(in) :: zetb(:) ... REAL(dp), INTENT(in) :: rpgfb(:) ... INTEGER, INTENT(in) :: lb_min ... INTEGER, INTENT(in) :: order ... REAL(dp), INTENT(in) :: rac(3) ... REAL(dp), INTENT(in) :: rbc(3) ... REAL(dp), INTENT(out) :: difmab(:,:,:,:) ... REAL(dp), OPTIONAL, POINTER :: mab_ext(:,:,:) ...

#### SUBROUTINEdipole_force(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, order, rac, rbc, pab, forcea, forceb)^

This returns the derivative of the dipole integrals [a|x|b], with respect to the position of the primitive on the left and right, i.e.

##### Arguments:
 INTEGER, INTENT(in) :: la_max ... INTEGER, INTENT(in) :: npgfa ... REAL(dp), INTENT(in) :: zeta(:) ... REAL(dp), INTENT(in) :: rpgfa(:) ... INTEGER, INTENT(in) :: la_min ... INTEGER, INTENT(in) :: lb_max ... INTEGER, INTENT(in) :: npgfb ... REAL(dp), INTENT(in) :: zetb(:) ... REAL(dp), INTENT(in) :: rpgfb(:) ... INTEGER, INTENT(in) :: lb_min ... INTEGER, INTENT(in) :: order ... REAL(dp), INTENT(in) :: rac(3) ... REAL(dp), INTENT(in) :: rbc(3) ... REAL(dp), INTENT(in) :: pab(:,:) ... REAL(dp), INTENT(inout) :: forcea(:,:) ... REAL(dp), INTENT(inout) :: forceb(:,:) ...

#### SUBROUTINEmoment(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lc_max, rac, rbc, mab)^

...

##### Arguments:
 INTEGER, INTENT(in) :: la_max ... INTEGER, INTENT(in) :: npgfa ... REAL(dp), INTENT(in) :: zeta(:) ... REAL(dp), INTENT(in) :: rpgfa(:) ... INTEGER, INTENT(in) :: la_min ... INTEGER, INTENT(in) :: lb_max ... INTEGER, INTENT(in) :: npgfb ... REAL(dp), INTENT(in) :: zetb(:) ... REAL(dp), INTENT(in) :: rpgfb(:) ... INTEGER, INTENT(in) :: lc_max ... REAL(dp), INTENT(in) :: rac(3) ... REAL(dp), INTENT(in) :: rbc(3) ... REAL(dp), INTENT(inout) :: mab(:,:,:) ...