Implements CASSCF/CASCI quantum chemistry methods Provides energy and gradient calculations using complete active space with optional perturbative corrections (CASPT2/NEVPT2).
MCSCF/CASSCF method implementation
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(mcscf_options_t), | public | :: | options |
| procedure, public :: calc_energy => mcscf_calc_energy | |
| procedure, public :: calc_gradient => mcscf_calc_gradient | |
| procedure, public :: calc_hessian => mcscf_calc_hessian |
MCSCF/CASSCF calculation options
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=32), | public | :: | basis_set | = | 'sto-3g' |
Basis set name |
|
| real(kind=dp), | public | :: | ci_tol | = | 1.0e-8_dp |
CI energy convergence threshold |
|
| real(kind=dp), | public | :: | energy_tol | = | 1.0e-8_dp |
Energy convergence threshold |
|
| real(kind=dp), | public | :: | imaginary_shift | = | 0.0_dp |
Imaginary shift for intruder states |
|
| real(kind=dp), | public | :: | ipea_shift | = | 0.25_dp |
IPEA shift for CASPT2 (Hartree) |
|
| integer, | public | :: | max_macro_iter | = | 100 |
Maximum macro (orbital optimization) iterations |
|
| integer, | public | :: | max_micro_iter | = | 50 |
Maximum CI iterations per macro step |
|
| integer, | public | :: | n_active_electrons | = | 0 |
Number of active electrons (CAS) |
|
| integer, | public | :: | n_active_orbitals | = | 0 |
Number of active orbitals (CAS) |
|
| integer, | public | :: | n_inactive_orbitals | = | -1 |
Number of inactive (doubly occupied) orbitals -1 means auto-determine from nelec and active electrons |
|
| integer, | public | :: | n_states | = | 1 |
Number of states for state-averaged CASSCF |
|
| character(len=16), | public | :: | orbital_optimizer | = | 'super-ci' |
Orbital optimizer: “super-ci”, “newton-raphson”, “ah” (augmented Hessian) |
|
| real(kind=dp), | public | :: | orbital_tol | = | 1.0e-6_dp |
Orbital gradient convergence threshold |
|
| character(len=16), | public | :: | pt2_type | = | 'nevpt2' |
PT2 type: “caspt2”, “nevpt2” |
|
| logical, | public | :: | spherical | = | .true. |
Use spherical (true) or Cartesian (false) basis |
|
| real(kind=dp), | public, | allocatable | :: | state_weights(:) |
Weights for state averaging (must sum to 1) |
||
| logical, | public | :: | use_pt2 | = | .false. |
Apply perturbative correction after CASSCF |
|
| logical, | public | :: | verbose | = | .false. |
Print iteration details |
Calculate electronic energy using CASSCF
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mcscf_method_t), | intent(in) | :: | this | |||
| type(physical_fragment_t), | intent(in) | :: | fragment | |||
| type(calculation_result_t), | intent(out) | :: | result |
Calculate energy gradient using CASSCF
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mcscf_method_t), | intent(in) | :: | this | |||
| type(physical_fragment_t), | intent(in) | :: | fragment | |||
| type(calculation_result_t), | intent(out) | :: | result |
Calculate energy Hessian using CASSCF
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mcscf_method_t), | intent(in) | :: | this | |||
| type(physical_fragment_t), | intent(in) | :: | fragment | |||
| type(calculation_result_t), | intent(out) | :: | result |