mqc_method_mcscf Module

Implements CASSCF/CASCI quantum chemistry methods Provides energy and gradient calculations using complete active space with optional perturbative corrections (CASPT2/NEVPT2).


Uses

  • module~~mqc_method_mcscf~~UsesGraph module~mqc_method_mcscf mqc_method_mcscf module~mqc_method_base mqc_method_base module~mqc_method_mcscf->module~mqc_method_base module~mqc_physical_fragment mqc_physical_fragment module~mqc_method_mcscf->module~mqc_physical_fragment module~mqc_result_types mqc_result_types module~mqc_method_mcscf->module~mqc_result_types pic_types pic_types module~mqc_method_mcscf->pic_types module~mqc_method_base->module~mqc_physical_fragment module~mqc_method_base->module~mqc_result_types module~mqc_method_base->pic_types module~mqc_physical_fragment->pic_types module~mqc_cgto mqc_cgto module~mqc_physical_fragment->module~mqc_cgto module~mqc_elements mqc_elements module~mqc_physical_fragment->module~mqc_elements module~mqc_error mqc_error module~mqc_physical_fragment->module~mqc_error module~mqc_geometry mqc_geometry module~mqc_physical_fragment->module~mqc_geometry module~mqc_physical_constants mqc_physical_constants module~mqc_physical_fragment->module~mqc_physical_constants module~mqc_xyz_reader mqc_xyz_reader module~mqc_physical_fragment->module~mqc_xyz_reader module~mqc_result_types->pic_types module~mqc_result_types->module~mqc_error pic_mpi_lib pic_mpi_lib module~mqc_result_types->pic_mpi_lib module~mqc_cgto->pic_types module~mqc_elements->pic_types pic_ascii pic_ascii module~mqc_elements->pic_ascii module~mqc_geometry->pic_types module~mqc_physical_constants->pic_types module~mqc_xyz_reader->pic_types module~mqc_xyz_reader->module~mqc_error module~mqc_xyz_reader->module~mqc_geometry

Used by

  • module~~mqc_method_mcscf~~UsedByGraph module~mqc_method_mcscf mqc_method_mcscf module~mqc_method_factory mqc_method_factory module~mqc_method_factory->module~mqc_method_mcscf module~mqc_mbe_fragment_distribution_scheme mqc_mbe_fragment_distribution_scheme module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_factory proc~hessian_coordinator hessian_coordinator proc~hessian_coordinator->module~mqc_method_factory proc~hessian_worker hessian_worker proc~hessian_worker->module~mqc_method_factory module~mpi_fragment_work_smod mpi_fragment_work_smod module~mpi_fragment_work_smod->module~mqc_mbe_fragment_distribution_scheme module~mqc_driver mqc_driver module~mqc_driver->module~mqc_mbe_fragment_distribution_scheme module~mqc_gmbe_fragment_distribution_scheme mqc_gmbe_fragment_distribution_scheme module~mqc_gmbe_fragment_distribution_scheme->module~mqc_mbe_fragment_distribution_scheme module~mqc_hessian_distribution_scheme mqc_hessian_distribution_scheme module~mqc_hessian_distribution_scheme->module~mqc_mbe_fragment_distribution_scheme module~mqc_serial_fragment_processor mqc_serial_fragment_processor module~mqc_serial_fragment_processor->module~mqc_mbe_fragment_distribution_scheme module~mqc_unfragmented_workflow mqc_unfragmented_workflow module~mqc_unfragmented_workflow->module~mqc_mbe_fragment_distribution_scheme proc~gmbe_run_distributed gmbe_context_t%gmbe_run_distributed proc~gmbe_run_distributed->module~mqc_mbe_fragment_distribution_scheme proc~gmbe_run_distributed->module~mqc_gmbe_fragment_distribution_scheme proc~mbe_run_distributed mbe_context_t%mbe_run_distributed proc~mbe_run_distributed->module~mqc_mbe_fragment_distribution_scheme proc~mbe_run_serial mbe_context_t%mbe_run_serial proc~mbe_run_serial->module~mqc_mbe_fragment_distribution_scheme proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->module~mqc_driver proc~gmbe_run_serial gmbe_context_t%gmbe_run_serial proc~gmbe_run_serial->module~mqc_gmbe_fragment_distribution_scheme program~main main program~main->module~mqc_driver

Derived Types

type, public, extends(qc_method_t) ::  mcscf_method_t

MCSCF/CASSCF method implementation

Read more…

Components

Type Visibility Attributes Name Initial
type(mcscf_options_t), public :: options

Type-Bound Procedures

procedure, public :: calc_energy => mcscf_calc_energy
procedure, public :: calc_gradient => mcscf_calc_gradient
procedure, public :: calc_hessian => mcscf_calc_hessian

type, public ::  mcscf_options_t

MCSCF/CASSCF calculation options

Components

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


Subroutines

private subroutine mcscf_calc_energy(this, fragment, result)

Calculate electronic energy using CASSCF

Read more…

Arguments

Type IntentOptional Attributes Name
class(mcscf_method_t), intent(in) :: this
type(physical_fragment_t), intent(in) :: fragment
type(calculation_result_t), intent(out) :: result

private subroutine mcscf_calc_gradient(this, fragment, result)

Calculate energy gradient using CASSCF

Read more…

Arguments

Type IntentOptional Attributes Name
class(mcscf_method_t), intent(in) :: this
type(physical_fragment_t), intent(in) :: fragment
type(calculation_result_t), intent(out) :: result

private subroutine mcscf_calc_hessian(this, fragment, result)

Calculate energy Hessian using CASSCF

Read more…

Arguments

Type IntentOptional Attributes Name
class(mcscf_method_t), intent(in) :: this
type(physical_fragment_t), intent(in) :: fragment
type(calculation_result_t), intent(out) :: result