module to construct Fock matrix for RHF and ROHF calculations and various orbital transformation routines
constructs UHF Fock Matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| real(kind=long), | intent(in), | dimension(b%n_basis, b%n_basis) | :: | dmata | ||
| real(kind=long), | intent(in), | dimension(b%n_basis, b%n_basis) | :: | dmatb | ||
| real(kind=long), | intent(inout), | dimension(b%n_basis, b%n_basis) | :: | focka | ||
| real(kind=long), | intent(inout), | dimension(b%n_basis, b%n_basis) | :: | fockb |
returns RHF Fock matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=long), | intent(in) | :: | h0(:,:) | |||
| real(kind=long), | intent(in) | :: | teints(:) | |||
| real(kind=long), | intent(in), | dimension(size(h0, 1), size(h0, 1)) | :: | d | ||
| real(kind=long), | intent(out) | :: | fock(size(h0,1),size(h0,1)) |
returns ROHF Fock matrix for high spin half filled open shell variant=1 (default) Roothan variant=2 Davidson variant=3 Guest & Saunders
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| integer, | intent(in), | optional | :: | variant |
This function constructs the RHF Fock Matrix assumes that density matrix is symmetric
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| logical, | intent(in), | optional | :: | use_d_diff | ||
| real(kind=long), | intent(in), | optional, | dimension(p%n_basis, p%n_basis) | :: | dmat_given |
this subroutine returns the matrix it expects to find the MO-space twoelectron integrals in F%teint
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(wf_data), | intent(in) | :: | f | |||
| real(kind=long), | intent(in), | dimension(:, :, :) | :: | du | ||
| real(kind=long), | intent(out), | dimension(:, :, :) | :: | m |
this subroutine returns the matrix it expects to find the MO-space twoelectron integrals in F%teint
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(wf_data), | intent(in) | :: | f | |||
| real(kind=long), | intent(in), | dimension(:, :, :) | :: | du | ||
| real(kind=long), | intent(out), | dimension(:, :, :) | :: | m |
this subroutine returns the matrix idea: employ a density difference and screen low contributions
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(atom_set), | intent(in) | :: | a(:) | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(in) | :: | f | |||
| real(kind=long), | intent(in), | dimension(:, :, :) | :: | du | ||
| real(kind=long), | intent(out), | dimension(:, :, :) | :: | m |
this subroutine returns the matrix it expects to find the MO-space twoelectron integrals in F%teint
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(wf_data), | intent(in) | :: | f | |||
| real(kind=long), | intent(in), | dimension(:, :, :) | :: | do | ||
| real(kind=long), | intent(out), | dimension(:, :, :) | :: | m |
this subroutine returns the matrix it doesn't need transformed integrals
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(atom_set), | intent(in) | :: | a(:) | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(in) | :: | f | |||
| real(kind=long), | intent(in), | dimension(:, :, :) | :: | do | ||
| real(kind=long), | intent(out), | dimension(:, :, :) | :: | m |
This function constructs the J Matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=long), | intent(in) | :: | teints(:) | |||
| real(kind=long), | intent(in), | dimension(:, :) | :: | dmat | ||
| real(kind=long), | intent(out), | dimension(size(dmat, 1), size(dmat, 2)) | :: | j_matrix |
construct the K matrix
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=long), | intent(in) | :: | teints(:) | |||
| real(kind=long), | intent(in), | dimension(:, :) | :: | dmat | ||
| real(kind=long), | intent(out), | dimension(size(dmat, 1), size(dmat, 2)) | :: | k_matrix |
transform 2el matrix elements into MO space only those of type (cc|ij) and (ci|cj) where two electrons are member of the array core
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | core(:) | |||
| integer, | intent(in) | :: | output |
transform 2el matrix elements into MO space only those where two electrons are member of the array active
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(inout) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | active(:) | |||
| integer, | intent(in) | :: | output |
transform all 2el matrix elements into MO space only those where two electrons are member of the array core and two electrons are in the array virtual (as required for CIS)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | core(:) | |||
| integer, | intent(in) | :: | virtual(:) | |||
| integer, | intent(in) | :: | output |
contracts a packed storage teints set with dimension n along the first coordinate with coefficients LC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| real(kind=long), | intent(in) | :: | teint(:) | |||
| real(kind=long), | intent(in) | :: | lc(:,:) | |||
| integer, | intent(in) | :: | n | |||
| real(kind=long), | intent(out) | :: | teint_ijka(size(lc,2),n,n*(n+1)/2) |
contracts a packed storage teints set with dimension n along the first coordinate with coefficients LC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| real(kind=long), | intent(in) | :: | teint_ijka(:,:,:) | |||
| real(kind=long), | intent(in) | :: | lc(:,:) | |||
| real(kind=long), | intent(out) | :: | teint_ijba(size(teint_ijka,1)*size(lc,2),size(teint_ijka,3)) |
contracts a packed storage teints set with dimension n along the first coordinate with coefficients LC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| real(kind=long), | intent(in) | :: | teint_ijab(:,:) | |||
| real(kind=long), | intent(in) | :: | lc(:,:) | |||
| integer, | intent(in) | :: | n | |||
| real(kind=long), | intent(out) | :: | teint_icab(size(lc,2),n,size(teint_ijab,2)) |
contracts a packed storage teints set with dimension n along the first coordinate with coefficients LC
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| real(kind=long), | intent(in) | :: | teint_icab(:,:,:) | |||
| real(kind=long), | intent(in) | :: | lc(:,:) | |||
| real(kind=long), | intent(out) | :: | teint_cdab(size(teint_icab,1)*size(lc,2),size(teint_icab,3)) |
subroutine to transform all 2el matrix elements into MO space where two electrons are member of the array core and two electrons are in the array virtual (as required for CIS)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(param), | intent(in) | :: | p | |||
| type(basis), | intent(in) | :: | b | |||
| type(wf_data), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | core(:) | |||
| integer, | intent(in) | :: | virtual(:) | |||
| integer, | intent(in) | :: | output |