basis Derived Type

type, public :: basis

basis information


Components

Type Visibility Attributes Name Initial
logical, public :: yes_initialized = .false.
integer, public :: n_basis

total # of basis functions

integer, public :: nr_basis

total # of basis functions projected out

real(kind=long), public, allocatable :: func(:,:)

(1:N_grid,1:N_basis)

real(kind=long), public, allocatable :: dfdr(:,:,:)

(1:N_grid,1:N_basis,3)

real(kind=long), public, allocatable :: d2f(:,:)

(1:N_grid,1:N_basis)

logical, public, allocatable :: yes_skip(:,:)

(1:N_nuc,1:N_basis) skip if all basis functions (and its deriv.) are zero for a given atom A it helps to speed up because we know that B%func are zero if r > A%rmax and we don't need to evaluate anything beyond A%rmax --> initialized in place_AO_on_Grid3D()

integer, public, allocatable :: info(:,:)

basis function info B%info(i,1) : atomic index for the i-th basis B%info(i,2) : nuclear charge for the i-th basis B%info(i,3) : n of AO for the i-th basis B%info(i,4) : l of AO for the i-th basis B%info(i,5) : m of AO for the i-th basis

character(len=10), public, allocatable :: label(:)
real(kind=long), public, allocatable :: s(:,:)

overlap matrix

real(kind=long), public, allocatable :: ssqrt(:,:)

sqrt overlap matrix

real(kind=long), public, allocatable :: sinvsqrt(:,:)

sqrt of inverse overlap matrix

real(kind=long), public, allocatable :: sinv(:,:)

inverse overlap matrix

real(kind=long), public, allocatable :: x(:,:)
real(kind=long), public, allocatable :: xxts(:,:)
real(kind=long), public, allocatable :: hkin(:,:)

Kinetic operator matrix, (1:N_basis,1:N_basis)

real(kind=long), public, allocatable :: vext(:,:)

Nuclear potential (1:N_basis,1:N_basis)

real(kind=long), public, allocatable :: h0(:,:)

Kinetic + nuclear potential

real(kind=long), public, allocatable :: teint(:)

Two-Electron integrals

logical, public, allocatable :: yes_overlap(:,:)

yes_overlap(k_nuc,ij): whether a multiplication of two basis functions (i and j) contributes to the k_nuc-th atomic sphere [k_nuc=1...N_nuc] If this variable is yes, then the k_nuc-th atom will be included in multicenter integration involving the i-th and j-th basis functions. If no, then it is not included, which means "save the CPU time!"

Here k_nuc=0 means consideration of all atomic spheres. It can be used for a simple and quick condition.

The index ij is defined by ij = i+j(j-1)/2 from a packed storage scheme for an upper trianglular matrix, [ij=1...N_basis(N_basis+1)/2]. SEE: http://www.netlib.org/lapack/lug/node123.html

When i == j, yes_overlap is determined by EPS_overlap_single. When i /= j, yes_overlap is determined by EPS_overlap. ! Most of cases, EPS_overlap_single should be smaller than EPS_overlap. Therefore, a small number (enough for EPS_overlap_single) is used for both EPS_overlap_single and EPS_overlap even though they can be chosen separately. - default in read_param.f90: EPS_overlap = EPS_overlap_single = 1e-6

real(kind=long), public, allocatable :: overlap(:,:)
real(kind=long), public :: eps_overlap
real(kind=long), public :: eps_overlap_single
real(kind=long), public :: r_max_overlap
real(kind=long), public :: error_single

numerical accuracy for single-center and multicenter integration and integration optimization by truncation

real(kind=long), public :: error_multi

numerical accuracy for single-center and multicenter integration and integration optimization by truncation

real(kind=long), public :: error_trunc

numerical accuracy for single-center and multicenter integration and integration optimization by truncation

integer, public, allocatable :: first_bf_on_atom(:)
integer, public, allocatable :: num_bf_on_atom(:)
logical, public :: yes_symmetry(n_symop)
integer, public, allocatable :: irrep_prod(:,:)
real(kind=long), public, allocatable :: sym_bf(:,:)

conversion matrix from symmetric bf to atomic orbitals

integer, public, allocatable :: irrep_sym_bf(:)

index of irreducible representation per sym bf

integer, public, allocatable :: irrep_sym_bfr(:)

index of irreducible representation per sym bf

character(len=5), public :: sym_label

Schoenflies symbol

integer, public :: nirrep

number of irrep

character(len=4), public, allocatable :: irrep_name(:)

name of irrep

real(kind=long), public :: minimal_s_eigenvalue

minimal overlap matrix eigenvalue

real(kind=long), public :: minimal_s_remaining_eigenvalue

minimal overlap matrix eigenval that is not projected out

real(kind=long), public, allocatable :: env(:)
integer, public, allocatable :: atm(:,:)
integer, public, allocatable :: bas(:,:)
integer, public, allocatable :: first_bf_of_shell(:)