read Gaussian Basis set and wavefunction interfaces to libcint to calculate integrals
prints info on Gaussian basis set
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | output |
constructs Gaussian basis set
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(atom_set), | intent(in) | :: | a(:) | |||
real(kind=long), | intent(inout), | allocatable | :: | env(:) | ||
integer, | intent(inout), | allocatable | :: | atm(:,:) | ||
integer, | intent(inout), | allocatable | :: | bas(:,:) | ||
character(len=*), | intent(in) | :: | filename | |||
character(len=*), | intent(in), | optional | :: | filename2 | ||
integer, | intent(out), | optional, | allocatable | :: | shellinset(:) |
calculates the kinetic energy matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | hkin(:,:) |
calculates the external potential energy matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | pos(3) | |||
real(kind=long), | intent(out) | :: | vcoul(:,:) |
make some simple tests for the library it checks that the correct order of p basis functions is used
computes the interaction matrix elements of the electrons with nuclei potential
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | vext(:,:) |
computes the overlap matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | s(:,:) |
computes all two-electron integrals
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
integer, | intent(in) | :: | n_basis | |||
real(kind=long), | intent(out), | allocatable | :: | teint(:) | ||
real(kind=long), | optional | :: | accuracy |
returns two-electron integrals, where the first index has been contracted with LCAO orbital coefficients LC
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
integer, | intent(in) | :: | n_basis | |||
real(kind=long), | intent(in) | :: | lc(:,:) | |||
real(kind=long), | intent(out) | :: | c_teint(size(lc,2),n_basis,n_basis*(n_basis+1)/2) | |||
real(kind=long), | optional | :: | accuracy |
calculates dipole matrix elements
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | dipole(:,:,:) |
This procedure constructs the RHF Fock Matrix assumes that density matrix is symmetric
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | dmat(:,:) | |||
real(kind=long), | intent(in) | :: | h0(:,:) | |||
real(kind=long), | intent(out) | :: | fout(:,:) | |||
real(kind=long), | optional | :: | accuracy |
construct the UHF Fock Matrix assumes that density matrix is symmetric
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | dmata(:,:) | |||
real(kind=long), | intent(in) | :: | dmatb(:,:) | |||
real(kind=long), | intent(in) | :: | h0(:,:) | |||
real(kind=long), | intent(out) | :: | fouta(:,:) | |||
real(kind=long), | intent(out) | :: | foutb(:,:) | |||
real(kind=long), | optional | :: | accuracy |
this is for the direct SCF GTO calculation adds all electrostatic interaction matrix elements to the one-electron Hamiltonian H
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | d(:,:) | |||
real(kind=long), | intent(inout) | :: | h(:,:) |
compute gradient of overlap matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | ograd(:,:,:) |
computes the gradient due to basis overlap
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | lc(:,:) | |||
real(kind=long), | intent(in) | :: | fa(:,:) | |||
real(kind=long), | intent(in) | :: | fb(:,:) | |||
integer, | intent(in) | :: | n_occ(:) | |||
real(kind=long), | intent(out) | :: | gradient(:) |
computes the gradient due to basis overlap
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | lca(:,:) | |||
real(kind=long), | intent(in) | :: | lcb(:,:) | |||
real(kind=long), | intent(in) | :: | fa(:,:) | |||
real(kind=long), | intent(in) | :: | fb(:,:) | |||
integer, | intent(in) | :: | n_occ(:) | |||
real(kind=long), | intent(out) | :: | gradient(:) |
computes derivative of overlap matrix with respect to geometry
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | lc(:,:) | |||
real(kind=long), | intent(in) | :: | ce(:) | |||
real(kind=long), | intent(in) | :: | f_occ(:) | |||
real(kind=long), | intent(out) | :: | gradient(:) |
returns the gradient resulting from one-electron contributions (h0)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | d(:,:) | |||
real(kind=long), | intent(out) | :: | gradient(:) |
calculates where R is given by pos(1:3) and has atom index 'at'
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | pos(:) | |||
integer, | intent(in) | :: | at | |||
real(kind=long), | intent(out) | :: | gradient(:,:,:) |
calculates where R_ is given by pos(1:3)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | pos(:) | |||
real(kind=long), | intent(out) | :: | gradient(:,:,:) |
returns the gradient resulting from two-electron contributions
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | d(:,:) | |||
real(kind=long), | intent(out) | :: | gradient(:) | |||
logical, | intent(in), | optional | :: | fock | ||
real(kind=long), | intent(in), | optional | :: | accuracy |
returns the gradient resulting from two-electron contributions for ROHF
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | da(:,:) | |||
real(kind=long), | intent(in) | :: | db(:,:) | |||
real(kind=long), | intent(out) | :: | gradient(:) |
computes derivatives of J and K
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(in) | :: | d(:,:) | |||
real(kind=long), | intent(out) | :: | jd(:,:,:) | |||
real(kind=long), | intent(out) | :: | kd(:,:,:) | |||
logical, | intent(in), | optional | :: | symmetricd | ||
real(kind=long), | intent(in), | optional | :: | accuracy |
computes gradient of h0 $omp parallel shared(atm, bas, env, first_bf_of_shell) private(sh1,sh2,atom,atom1,atom2,shls,ret1,n1,n2,data1,m1,m2,i,j,factor,my_env,mu) default(none) reduction(+:v,t) $omp do $omp end do $omp end parallel
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(in) | :: | env(:) | |||
integer, | intent(in) | :: | atm(:,:) | |||
integer, | intent(in) | :: | bas(:,:) | |||
integer, | intent(in) | :: | first_bf_of_shell(:) | |||
real(kind=long), | intent(out) | :: | h_grad(:,:,:) |