Defines data structures for storing and managing results from quantum chemistry calculations including energies, gradients, and properties. MP2 energy components type Coupled cluster energy components type Energy components type Main result container type MBE aggregated result container type Send result over MPI Receive result over MPI
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | private, | parameter | :: | SCS_OS_SCALE | = | 1.2_dp |
SCS opposite-spin scaling factor |
| real(kind=dp), | private, | parameter | :: | SCS_SS_SCALE | = | 1.0_dp/3.0_dp |
SCS same-spin scaling factor |
Container for quantum chemistry calculation results
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | allocatable | :: | dipole(:) |
Dipole moment vector (3) (Debye) |
||
| real(kind=dp), | public, | allocatable | :: | dipole_derivatives(:,:) |
Dipole derivatives (3, 3N) in a.u. for IR intensities |
||
| real(kind=dp), | public | :: | distance | = | 0.0_dp |
Minimal atomic distance between monomers (Angstrom, 0 for monomers) |
|
| type(energy_t), | public | :: | energy |
Energy components (Hartree) |
|||
| type(error_t), | public | :: | error |
Calculation error (if any) |
|||
| real(kind=dp), | public, | allocatable | :: | gradient(:,:) |
Energy gradient (3, natoms) (Hartree/Bohr) |
||
| logical, | public | :: | has_dipole | = | .false. |
Dipole moment has been computed |
|
| logical, | public | :: | has_dipole_derivatives | = | .false. |
Dipole derivatives have been computed |
|
| logical, | public | :: | has_energy | = | .false. |
Energy has been computed |
|
| logical, | public | :: | has_error | = | .false. |
True if calculation failed |
|
| logical, | public | :: | has_gradient | = | .false. |
Gradient has been computed |
|
| logical, | public | :: | has_hessian | = | .false. |
Hessian has been computed |
|
| logical, | public | :: | has_sigma | = | .false. |
Stress tensor has been computed |
|
| real(kind=dp), | public, | allocatable | :: | hessian(:,:) |
Energy hessian (future implementation) |
||
| real(kind=dp), | public, | allocatable | :: | sigma(:,:) |
Stress tensor (3,3) (Hartree/Bohr^3) |
| procedure, public :: destroy => result_destroy | Clean up allocated memory |
| procedure, public :: reset => result_reset | Reset all values and flags |
Container for coupled cluster energy components
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public | :: | doubles | = | 0.0_dp |
Doubles contribution (Hartree) |
|
| real(kind=dp), | public | :: | singles | = | 0.0_dp |
Singles contribution (Hartree) |
|
| real(kind=dp), | public | :: | triples | = | 0.0_dp |
Triples contribution (Hartree) |
| procedure, public :: check_stability => cc_check_stability | Check for positive energies (instability) |
| procedure, public :: reset => cc_reset | Reset all components to zero |
| procedure, public :: total => cc_total | Compute total CC correlation |
Container for quantum chemistry energy components
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(cc_energy_t), | public | :: | cc |
Coupled cluster correlation components |
|||
| type(mp2_energy_t), | public | :: | mp2 |
MP2 correlation components |
|||
| real(kind=dp), | public | :: | scf | = | 0.0_dp |
SCF/HF reference energy (Hartree) |
| procedure, public :: reset => energy_reset | Reset all components to zero |
| procedure, public :: total => energy_total | Compute total energy from components |
Container for Many-Body Expansion aggregated results
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public, | allocatable | :: | dipole(:) |
Total dipole moment (3) (e*Bohr) |
||
| real(kind=dp), | public, | allocatable | :: | dipole_derivatives(:,:) |
Dipole derivatives (3, 3*natoms) for IR intensities |
||
| real(kind=dp), | public, | allocatable | :: | gradient(:,:) |
Total gradient (3, total_atoms) (Hartree/Bohr) |
||
| logical, | public | :: | has_dipole | = | .false. |
Dipole has been computed |
|
| logical, | public | :: | has_dipole_derivatives | = | .false. |
Dipole derivatives have been computed |
|
| logical, | public | :: | has_energy | = | .false. |
Energy has been computed |
|
| logical, | public | :: | has_gradient | = | .false. |
Gradient has been computed |
|
| logical, | public | :: | has_hessian | = | .false. |
Hessian has been computed |
|
| real(kind=dp), | public, | allocatable | :: | hessian(:,:) |
Total Hessian (3natoms, 3natoms) |
||
| real(kind=dp), | public | :: | total_energy | = | 0.0_dp |
Total MBE energy (Hartree) |
| procedure, public :: allocate_dipole => mbe_result_allocate_dipole | |
| procedure, public :: allocate_gradient => mbe_result_allocate_gradient | |
| procedure, public :: allocate_hessian => mbe_result_allocate_hessian | |
| procedure, public :: destroy => mbe_result_destroy | Clean up allocated memory |
| procedure, public :: reset => mbe_result_reset | Reset all values and flags |
Container for MP2 energy components (SS/OS)
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=dp), | public | :: | os | = | 0.0_dp |
Opposite-spin correlation energy (Hartree) |
|
| real(kind=dp), | public | :: | ss | = | 0.0_dp |
Same-spin correlation energy (Hartree) |
| procedure, public :: check_stability => mp2_check_stability | Check for positive energies (instability) |
| procedure, public :: reset => mp2_reset | Reset both components to zero |
| procedure, public :: scs => mp2_scs | Compute SCS-MP2 correlation |
| procedure, public :: total => mp2_total | Compute total MP2 correlation |
Compute total CC correlation energy
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cc_energy_t), | intent(in) | :: | this |
Compute total energy from all components
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(energy_t), | intent(in) | :: | this |
Compute SCS-MP2 (Spin-Component Scaled MP2) correlation energy SCS-MP2 uses: E_SCS = (1/3)E_SS + 1.2E_OS
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mp2_energy_t), | intent(in) | :: | this |
Compute total MP2 correlation energy
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mp2_energy_t), | intent(in) | :: | this |
Receive calculation result over MPI (non-blocking) Receives SCF energy (non-blocking) and other components (blocking)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(calculation_result_t), | intent(inout) | :: | result | |||
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | source | |||
| integer, | intent(in) | :: | tag | |||
| type(request_t), | intent(out) | :: | req |
Send calculation result over MPI (non-blocking) Sends SCF energy (non-blocking) and other components (blocking)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(calculation_result_t), | intent(in) | :: | result | |||
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | dest | |||
| integer, | intent(in) | :: | tag | |||
| type(request_t), | intent(out) | :: | req |
Receive calculation result over MPI (blocking) Receives energy components and conditionally receives gradient based on flag
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(calculation_result_t), | intent(inout) | :: | result | |||
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | source | |||
| integer, | intent(in) | :: | tag | |||
| type(MPI_Status), | intent(out) | :: | status |
Send calculation result over MPI (blocking) Sends energy components and conditionally sends gradient based on has_gradient flag
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(calculation_result_t), | intent(in) | :: | result | |||
| type(comm_t), | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | dest | |||
| integer, | intent(in) | :: | tag |
Check for positive CC correlation energies (instability warning) Correlation energies should be negative; positive values indicate instability
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cc_energy_t), | intent(in) | :: | this |
Reset all CC components to zero
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cc_energy_t), | intent(inout) | :: | this |
Reset all energy components to zero
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(energy_t), | intent(inout) | :: | this |
Allocate dipole array (always 3 components)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_result_t), | intent(inout) | :: | this |
Allocate gradient array for total_atoms
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_result_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | total_atoms |
Allocate hessian array for total_atoms
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_result_t), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | total_atoms |
Clean up allocated memory in mbe_result_t
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_result_t), | intent(inout) | :: | this |
Reset all values and flags in mbe_result_t
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mbe_result_t), | intent(inout) | :: | this |
Check for positive MP2 correlation energies (instability warning) Correlation energies should be negative; positive values indicate instability
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mp2_energy_t), | intent(in) | :: | this |
Reset both MP2 components to zero
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mp2_energy_t), | intent(inout) | :: | this |
Clean up allocated memory in calculation_result_t
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(calculation_result_t), | intent(inout) | :: | this |
Reset all values and flags in calculation_result_t
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(calculation_result_t), | intent(inout) | :: | this |