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 |