Documentation for module construct_shg

Calculation of the integrals over solid harmonic Gaussian(SHG) functions. Routines for (a|O(r12)|b) and overlap integrals (ab), (aba) and (abb).

source: construct_shg.F
Loading...

public Subroutines/Functions:

calculates derivatives of [ab] SHG overlap integrals using precomputed angular-dependent part
calculates [ab] SHG overlap integrals using precomputed angular- dependent part
calculates [aba] SHG overlap integrals using precomputed angular- dependent part
calculates [abb] SHG overlap integrals using precomputed angular- dependent part
calculates derivatives of [aba] SHG overlap integrals using precomputed angular-dependent part
calculates derivatives of [abb] SHG overlap integrals using precomputed angular-dependent part
calculates derivatives of transformation matrix W,
computes the real scaled solid harmonics Rlm up to a given l
calculates the angular dependent-part of the SHG integrals, transformation matrix W, see literature above

SUBROUTINEconstruct_dev_shg_ab(la, first_sgfa, nshella, lb, first_sgfb, nshellb, rab, swork_cont, waux_mat, dwaux_mat, dsab)

calculates derivatives of [ab] SHG overlap integrals using precomputed angular-dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b
REAL(dp),
INTENT(in)
:: rab(3) distance vector Ra-Rb
REAL(dp),
INTENT(in)
:: swork_cont(:,:,:) contracted and normalized [s|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(in)
:: dwaux_mat(:,:,:,:) ...
REAL(dp),
INTENT(inout)
:: dsab(:,:,:) derivative of contracted integral of spherical harmonic Gaussians

SUBROUTINEconstruct_int_shg_ab(la, first_sgfa, nshella, lb, first_sgfb, nshellb, swork_cont, waux_mat, sab)

calculates [ab] SHG overlap integrals using precomputed angular- dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b
REAL(dp),
INTENT(in)
:: swork_cont(:,:,:) contracted and normalized [s|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(inout)
:: sab(:,:) contracted integral of spherical harmonic Gaussianslm

SUBROUTINEconstruct_overlap_shg_aba(la, first_sgfa, nshella, lb, first_sgfb, nshellb, lca, first_sgfca, nshellca, cg_coeff, cg_none0_list, ncg_none0, swork_cont, waux_mat, saba)

calculates [aba] SHG overlap integrals using precomputed angular- dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a, orbital basis
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a, orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b. orbital basis
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b, orbital basis
INTEGER,
INTENT(in)
:: lca(:) of l quantum number on a, aux basis
INTEGER,
INTENT(in)
:: first_sgfca(:) indexing
INTEGER,
INTENT(in)
:: nshellca number of shells for a, aux basis
REAL(dp),
INTENT(in)
:: cg_coeff(:,:,:) Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: cg_none0_list(:,:,:) list of none-zero Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: ncg_none0(:,:) number of non-zero Clebsch-Gordon coefficients
REAL(dp),
INTENT(in)
:: swork_cont(:,0:,:,:,:) contracted and normalized [s|ra^n|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(inout)
:: saba(:,:,:) contracted overlap [aba] of spherical harmonic Gaussians

SUBROUTINEconstruct_overlap_shg_abb(la, first_sgfa, nshella, lb, first_sgfb, nshellb, lcb, first_sgfcb, nshellcb, cg_coeff, cg_none0_list, ncg_none0, swork_cont, waux_mat, sabb)

calculates [abb] SHG overlap integrals using precomputed angular- dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a, orbital basis
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a, orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b. orbital basis
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b, orbital basis
INTEGER,
INTENT(in)
:: lcb(:) l quantum number on b, aux basis
INTEGER,
INTENT(in)
:: first_sgfcb(:) indexing
INTEGER,
INTENT(in)
:: nshellcb number of shells for b, aux basis
REAL(dp),
INTENT(in)
:: cg_coeff(:,:,:) Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: cg_none0_list(:,:,:) list of none-zero Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: ncg_none0(:,:) number of non-zero Clebsch-Gordon coefficients
REAL(dp),
INTENT(in)
:: swork_cont(:,0:,:,:,:) contracted and normalized [s|rb^n|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(inout)
:: sabb(:,:,:) contracted overlap [abb] of spherical harmonic Gaussians

SUBROUTINEdev_overlap_shg_aba(la, first_sgfa, nshella, lb, first_sgfb, nshellb, lca, first_sgfca, nshellca, cg_coeff, cg_none0_list, ncg_none0, rab, swork_cont, waux_mat, dwaux_mat, dsaba)

calculates derivatives of [aba] SHG overlap integrals using precomputed angular-dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a, orbital basis
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a, orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b. orbital basis
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b, orbital basis
INTEGER,
INTENT(in)
:: lca(:) of l quantum number on a, aux basis
INTEGER,
INTENT(in)
:: first_sgfca(:) indexing
INTEGER,
INTENT(in)
:: nshellca number of shells for a, aux basis
REAL(dp),
INTENT(in)
:: cg_coeff(:,:,:) Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: cg_none0_list(:,:,:) list of none-zero Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: ncg_none0(:,:) number of non-zero Clebsch-Gordon coefficients
REAL(dp),
INTENT(in)
:: rab(3) distance vector Ra-Rb
REAL(dp),
INTENT(in)
:: swork_cont(:,0:,:,:,:) contracted and normalized [s|ra^n|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(in)
:: dwaux_mat(:,:,:,:) derivatives of precomputed angular-dependent part
REAL(dp),
INTENT(inout)
:: dsaba(:,:,:,:) derivative of contracted overlap [aba] of spherical harmonic Gaussians

SUBROUTINEdev_overlap_shg_abb(la, first_sgfa, nshella, lb, first_sgfb, nshellb, lcb, first_sgfcb, nshellcb, cg_coeff, cg_none0_list, ncg_none0, rab, swork_cont, waux_mat, dwaux_mat, dsabb)

calculates derivatives of [abb] SHG overlap integrals using precomputed angular-dependent part

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum number on a, orbital basis
INTEGER,
INTENT(in)
:: first_sgfa(:) indexing
INTEGER,
INTENT(in)
:: nshella number of shells for a, orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum number on b. orbital basis
INTEGER,
INTENT(in)
:: first_sgfb(:) indexing
INTEGER,
INTENT(in)
:: nshellb number of shells for b, orbital basis
INTEGER,
INTENT(in)
:: lcb(:) l quantum number on b, aux basis
INTEGER,
INTENT(in)
:: first_sgfcb(:) indexing
INTEGER,
INTENT(in)
:: nshellcb number of shells for b, aux basis
REAL(dp),
INTENT(in)
:: cg_coeff(:,:,:) Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: cg_none0_list(:,:,:) list of none-zero Clebsch-Gordon coefficients
INTEGER,
INTENT(in)
:: ncg_none0(:,:) number of non-zero Clebsch-Gordon coefficients
REAL(dp),
INTENT(in)
:: rab(3) distance vector Ra-Rb
REAL(dp),
INTENT(in)
:: swork_cont(:,0:,:,:,:) contracted and normalized [s|rb^n|s] integrals
REAL(dp),
INTENT(in)
:: waux_mat(:,:,:) precomputed angular-dependent part
REAL(dp),
INTENT(in)
:: dwaux_mat(:,:,:,:) derivatives of precomputed angular-dependent part
REAL(dp),
INTENT(inout)
:: dsabb(:,:,:,:) derivative of contracted overlap [abb] of spherical harmonic Gaussians

SUBROUTINEget_dw_matrix(lamax, lbmax, waux_mat, dwaux_mat)

calculates derivatives of transformation matrix W,

Arguments:
INTEGER,
POINTER
:: lamax(:) array of maximal l quantum number on a; lamax(lb) with lb= 0..lbmax
INTEGER,
INTENT(in)
:: lbmax maximal l quantum number on b
REAL(dp),
INTENT(inout)
:: waux_mat(:,:,:) stores the angular-dependent part of the SHG integrals
REAL(dp),
INTENT(inout)
:: dwaux_mat(:,:,:,:) stores the derivatives of the angular-dependent part of the SHG integrals

SUBROUTINEget_real_scaled_solid_harmonic(rlm_c, rlm_s, l, r, r2)

computes the real scaled solid harmonics Rlm up to a given l

Arguments:
REAL(dp),
INTENT(out)
:: rlm_c(0:l,-2*l:2*l) cosine part of real scaled soldi harmonics
REAL(dp),
INTENT(out)
:: rlm_s(0:l,-2*l:2*l) sine part of real scaled soldi harmonics
INTEGER,
INTENT(in)
:: l maximal l quantum up to where Rlm is calculated
REAL(dp)
:: r(3) distance vector between a and b
REAL(dp)
:: r2 square of distance vector

SUBROUTINEget_w_matrix(lamax, lbmax, lmax, rc, rs, waux_mat)

calculates the angular dependent-part of the SHG integrals, transformation matrix W, see literature above

Arguments:
INTEGER,
POINTER
:: lamax(:) array of maximal l quantum number on a; lamax(lb) with lb= 0..lbmax
INTEGER,
INTENT(in)
:: lbmax maximal l quantum number on b
INTEGER,
INTENT(in)
:: lmax maximal l quantum number
REAL(dp),
INTENT(in)
:: rc(0:lmax,-2*lmax:2*lmax) cosine part of real scaled solid harmonics
REAL(dp),
INTENT(in)
:: rs(0:lmax,-2*lmax:2*lmax) sine part of real scaled solid harmonics
REAL(dp),
INTENT(inout)
:: waux_mat(:,:,:) stores the angular-dependent part of the SHG integrals