MCSCF module This is a first attempt to incorporate MCSCF into xmolecule
defines a configuration state function
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public, | pointer | :: | dets(:,:) | |||
integer, | public, | pointer | :: | csf(:) | |||
integer, | public, | pointer | :: | occ(:) | |||
integer, | public | :: | irrep |
calculates squared overlaps of a configuration occ with orbital coefficients LC1 (averaged over spin) to a set of configurations occs with orbital coefficients LC2
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | occ(:) |
occupation numbers (1) |
||
integer, | intent(in) | :: | occs(:,:) |
target occupation numbers (2) |
||
real(kind=long), | intent(in) | :: | lc1(:,:) |
orbital coefficients (1) |
||
real(kind=long), | intent(in) | :: | lc2(:,:) |
orbital coefficients (2) |
||
real(kind=long), | intent(in) | :: | s12(:,:) |
overlap between basis functions (1)->(2) |
||
real(kind=long), | intent(out) | :: | overlap2(size(occs,2)) |
result overlap squared |
construcst an array of CSF types for a given set of occupation configurations, spin multiplicity, and irreducible represention
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(basis), | intent(in) | :: | b | |||
type(wf_data), | intent(in) | :: | f | |||
integer, | intent(in) | :: | multp | |||
integer, | intent(in) | :: | state_irrep | |||
integer, | intent(in), | target | :: | occs(:,:) | ||
type(csf), | intent(out), | allocatable | :: | csf_array(:) |
deallocates and purges array of csf structures
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(csf), | intent(inout), | allocatable | :: | csf_array(:) |
calculates the configuration interaction matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(umatrixtable), | intent(in) | :: | ut | |||
real(kind=long), | intent(in) | :: | e_core | |||
real(kind=long), | intent(in) | :: | f_core(:,:) | |||
real(kind=long), | intent(in) | :: | teint_abcd(:) | |||
integer, | intent(in) | :: | occs(:,:) | |||
real(kind=long), | intent(out) | :: | ci_matrix(:,:) | |||
integer, | intent(in), | optional | :: | nintern | ||
real(kind=long), | intent(in), | optional | :: | teint_iiee(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_ieie(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_iiie(:) |
calculates the configuration interaction matrix (only diagonal elements)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(umatrixtable), | intent(in) | :: | ut | |||
real(kind=long), | intent(in) | :: | e_core | |||
real(kind=long), | intent(in) | :: | f_core(:,:) | |||
real(kind=long), | intent(in) | :: | teint_abcd(:) | |||
integer, | intent(in) | :: | occs(:,:) | |||
real(kind=long), | intent(out) | :: | ci_matrix_diagonal(:) | |||
integer, | intent(in), | optional | :: | nintern | ||
real(kind=long), | intent(in), | optional | :: | teint_iiee(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_ieie(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_iiie(:) |
calculates the product of the CI matrix with a coefficient vector
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(umatrixtable), | intent(in) | :: | ut | |||
real(kind=long), | intent(in) | :: | e_core | |||
real(kind=long), | intent(in) | :: | f_core(:,:) | |||
real(kind=long), | intent(in) | :: | teint_abcd(:) | |||
integer, | intent(in) | :: | occs(:,:) | |||
real(kind=long), | intent(in) | :: | c(:) |
CI expansion coefficients |
||
real(kind=long), | intent(out) | :: | c_out(size(c,1)) |
result: CI Matrix x C |
||
integer, | intent(in), | optional | :: | nintern | ||
real(kind=long), | intent(in), | optional | :: | teint_iiee(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_ieie(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_iiie(:) | ||
real(kind=long), | intent(in), | optional | :: | accuracy |
calculates the matrix-matrix product of the CI matrix with coefficients
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(umatrixtable), | intent(in) | :: | ut | |||
real(kind=long), | intent(in) | :: | e_core | |||
real(kind=long), | intent(in) | :: | f_core(:,:) | |||
real(kind=long), | intent(in) | :: | teint_abcd(:) | |||
integer, | intent(in) | :: | occs(:,:) | |||
real(kind=long), | intent(in) | :: | c(:,:) |
CI expansion coefficient matrix |
||
real(kind=long), | intent(out) | :: | c_out(size(c,1),size(c,2)) |
result CI Matrix x C |
||
integer, | intent(in), | optional | :: | nintern | ||
real(kind=long), | intent(in), | optional | :: | teint_iiee(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_ieie(:) | ||
real(kind=long), | intent(in), | optional | :: | teint_iiie(:) | ||
real(kind=long), | intent(in), | optional | :: | accuracy |
calculated overlaps of configuration state functions for different orbital sets
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(csf), | intent(in) | :: | csf_array(:) | |||
real(kind=long), | intent(in) | :: | lc1(:,:) | |||
real(kind=long), | intent(in) | :: | lc2(:,:) | |||
real(kind=long), | intent(in) | :: | s12(:,:) | |||
real(kind=long), | intent(out) | :: | csf_o(:,:) |
calculated overlaps of configuration state functions for different orbital sets
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(csf), | intent(in) | :: | csf_array1(:) |
array for csfs 1 |
||
type(csf), | intent(in) | :: | csf_array2(:) |
array for csfs 2 |
||
real(kind=long), | intent(in) | :: | lc1(:,:) |
orbitals 1 |
||
real(kind=long), | intent(in) | :: | lc2(:,:) |
orbitals 2 |
||
real(kind=long), | intent(in) | :: | s12(:,:) |
overlap (basis set) |
||
real(kind=long), | intent(in) | :: | op1(:,:,:) |
operator (basis set) |
||
real(kind=long), | intent(out) | :: | csf_o(size(csf_array1,1),size(csf_array2,1),size(op1,3)) |
array for final csfs operator |
return the inactive Fock matrix i.e. from the inactive orbital's density matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(basis), | intent(in) | :: | b | |||
integer, | intent(in) | :: | core(:) | |||
real(kind=long), | intent(in) | :: | lc(:,:) | |||
real(kind=long), | intent(out) | :: | f_inactive(size(lc,2),size(lc,2)) |
return the inactive Fock matrix i.e. from the inactive orbital's density matrix in a direct-SCF context (without pre-calculated teints)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(basis), | intent(in) | :: | b | |||
integer, | intent(in) | :: | core(:) | |||
real(kind=long), | intent(in) | :: | lc(:,:) | |||
real(kind=long), | intent(out) | :: | f_inactive(size(lc,2),size(lc,2)) | |||
real(kind=long), | optional | :: | accuracy |
computes the one-particle density matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(umatrixtable), | intent(in) | :: | ut | |||
integer, | intent(in) | :: | occs(:,:) | |||
real(kind=long), | intent(in) | :: | csf_c(:) | |||
real(kind=long), | intent(out) | :: | dm(size(occs,1),size(occs,1)) |
it just reorders the eigenvectors such that C is most similar to a diagonal matrix
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=long), | intent(inout), | dimension(:, :) | :: | c |
eigenvectors |
|
real(kind=long), | intent(inout), | dimension(:) | :: | ce |
eigenvalues |