mqc_method_config Module

Provides configuration types for all quantum chemistry methods. Uses composition pattern: method_config_t contains nested config types for each method family. The factory reads from the appropriate nested type.


Uses

  • module~~mqc_method_config~~UsesGraph module~mqc_method_config mqc_method_config module~mqc_method_types mqc_method_types module~mqc_method_config->module~mqc_method_types pic_types pic_types module~mqc_method_config->pic_types module~mqc_method_types->pic_types

Used by

  • module~~mqc_method_config~~UsedByGraph module~mqc_method_config mqc_method_config module~mqc_config_adapter mqc_config_adapter module~mqc_config_adapter->module~mqc_method_config module~mqc_driver mqc_driver module~mqc_driver->module~mqc_method_config module~mqc_driver->module~mqc_config_adapter module~mqc_many_body_expansion mqc_many_body_expansion module~mqc_driver->module~mqc_many_body_expansion module~mqc_mbe_fragment_distribution_scheme mqc_mbe_fragment_distribution_scheme 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_method_config module~mqc_gmbe_fragment_distribution_scheme->module~mqc_mbe_fragment_distribution_scheme module~mqc_many_body_expansion->module~mqc_method_config module~mqc_many_body_expansion->module~mqc_config_adapter module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_config module~mqc_mbe_fragment_distribution_scheme->module~mqc_config_adapter module~mqc_method_factory mqc_method_factory module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_factory module~mqc_method_factory->module~mqc_method_config module~mpi_fragment_work_smod mpi_fragment_work_smod module~mpi_fragment_work_smod->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~apply_distance_screening apply_distance_screening proc~apply_distance_screening->module~mqc_config_adapter proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->module~mqc_config_adapter proc~compute_energy_and_forces->module~mqc_driver proc~fragment_should_be_screened fragment_should_be_screened proc~fragment_should_be_screened->module~mqc_config_adapter proc~gmbe_run_distributed gmbe_context_t%gmbe_run_distributed proc~gmbe_run_distributed->module~mqc_gmbe_fragment_distribution_scheme proc~gmbe_run_distributed->module~mqc_mbe_fragment_distribution_scheme proc~gmbe_run_serial gmbe_context_t%gmbe_run_serial proc~gmbe_run_serial->module~mqc_gmbe_fragment_distribution_scheme proc~hessian_coordinator hessian_coordinator proc~hessian_coordinator->module~mqc_method_factory proc~hessian_worker hessian_worker proc~hessian_worker->module~mqc_method_factory 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~run_multi_molecule_calculations run_multi_molecule_calculations proc~run_multi_molecule_calculations->module~mqc_config_adapter program~main main program~main->module~mqc_config_adapter program~main->module~mqc_driver

Derived Types

type, public ::  cc_config_t

Coupled-cluster specific settings (CCSD, CCSD(T), CC2, CC3, etc.)

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: amplitude_convergence = 1.0e-7_dp

T-amplitude convergence threshold

integer, public :: diis_size = 8

DIIS subspace size

character(len=8), public :: eom_type = 'ee'

EOM type: “ee” (excitation), “ip” (ionization), “ea” (attachment)

logical, public :: include_triples = .false.

Include (T) triples correction

integer, public :: max_iter = 100

Maximum CC iterations

integer, public :: n_roots = 0

Number of EOM-CC roots (0 = ground state only)

logical, public :: perturbative_triples = .true.

Use perturbative (T) vs full CCSDT

logical, public :: use_diis = .true.

Use DIIS for amplitude equations

type, public ::  correlation_config_t

Shared settings for all post-HF correlation methods

Components

Type Visibility Attributes Name Initial
character(len=32), public :: aux_basis = ''

Auxiliary basis for RI (e.g., “cc-pvdz-ri”, “cc-pvtz-ri”)

real(kind=dp), public :: energy_convergence = 1.0e-8_dp

Correlation energy convergence threshold

logical, public :: freeze_core = .true.

Whether to freeze core orbitals

character(len=16), public :: local_type = 'dlpno'

Local correlation type: “pno”, “dlpno”, “lmp2”, “lno”

integer, public :: n_frozen_core = -1

Number of frozen core orbitals (-1 = auto from elements)

real(kind=dp), public :: pno_threshold = 1.0e-7_dp

PNO occupation threshold for truncation

real(kind=dp), public :: scs_os = 1.2_dp

Opposite-spin scaling factor (default: 6/5 for SCS-MP2)

real(kind=dp), public :: scs_ss = 1.0_dp/3.0_dp

Same-spin scaling factor (default: 1/3 for SCS-MP2)

logical, public :: use_df = .true.

Use density fitting (RI) for correlation integrals

logical, public :: use_local = .false.

Use local correlation approximation

logical, public :: use_scs = .false.

Use spin-component scaled MP2

type, public ::  dft_config_t

Configuration for Kohn-Sham DFT method Note: SCF settings (convergence, DIIS) come from scf_config_t

Components

Type Visibility Attributes Name Initial
integer, public :: angular_points = 302

Angular grid points (Lebedev)

character(len=32), public :: aux_basis_set = ''

Auxiliary basis for density fitting

character(len=8), public :: dispersion_type = 'd3bj'

Dispersion type: “d3”, “d3bj”, “d4”

character(len=32), public :: functional = 'b3lyp'

XC functional: “lda”, “pbe”, “b3lyp”, “m06-2x”, etc.

character(len=16), public :: grid_type = 'medium'

Grid quality: “coarse”, “medium”, “fine”, “ultrafine”

integer, public :: radial_points = 75

Radial grid points per atom

logical, public :: use_density_fitting = .false.

Use RI-J approximation

logical, public :: use_dispersion = .false.

Add empirical dispersion

type, public ::  f12_config_t

Settings for explicitly correlated F12 methods (MP2-F12, CCSD-F12, etc.)

Components

Type Visibility Attributes Name Initial
character(len=8), public :: ansatz = '3c'

F12 ansatz: “3c”, “3c(fix)”, “2b”, “2a”

character(len=32), public :: cabs_basis = ''

Complementary auxiliary basis (CABS) for RI

real(kind=dp), public :: geminal_exponent = 1.0_dp

Slater-type geminal exponent (beta)

character(len=32), public :: optri_basis = ''

Optional RI basis for F12 intermediates

logical, public :: scale_triples = .true.

Apply F12 scaling to (T) correction

logical, public :: use_exponent_fit = .false.

Fit geminal exponent to basis set

type, public ::  mcscf_config_t

Configuration for MCSCF/CASSCF method

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: ci_convergence = 1.0e-8_dp

CI energy 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

integer, public :: max_macro_iter = 100

Maximum orbital optimization iterations

integer, public :: max_micro_iter = 50

Maximum CI iterations per macro

integer, public :: n_active_electrons = 0

Number of active electrons

integer, public :: n_active_orbitals = 0

Number of active orbitals

integer, public :: n_inactive_orbitals = -1

Inactive orbitals (-1 = auto from nelec)

integer, public :: n_states = 1

Number of states for SA-CASSCF

real(kind=dp), public :: orbital_convergence = 1.0e-6_dp

Orbital gradient threshold

character(len=16), public :: pt2_type = 'nevpt2'

PT2 flavor: “caspt2”, “nevpt2”

real(kind=dp), public, allocatable :: state_weights(:)

State weights (must sum to 1)

logical, public :: use_pt2 = .false.

Apply CASPT2/NEVPT2 after CASSCF

type, public ::  method_config_t

Master configuration containing all method-specific configs

Read more…

Components

Type Visibility Attributes Name Initial
character(len=32), public :: basis_set = 'sto-3g'

Basis set name (HF, DFT, MCSCF)

type(cc_config_t), public :: cc

Coupled-cluster specific settings (CCSD, CCSD(T), etc.)

type(correlation_config_t), public :: corr

Shared correlation settings (used by MP2, CC, etc.)

type(dft_config_t), public :: dft

DFT-specific settings (functional, grid, dispersion)

type(f12_config_t), public :: f12

F12 explicitly correlated settings

type(mcscf_config_t), public :: mcscf

MCSCF/CASSCF settings

integer(kind=int32), public :: method_type = METHOD_TYPE_UNKNOWN

Method type constant

type(scf_config_t), public :: scf

Shared SCF settings (used by HF and DFT)

logical, public :: use_spherical = .true.

Spherical vs Cartesian basis functions

logical, public :: verbose = .false.

Enable verbose output

type(xtb_config_t), public :: xtb

XTB settings (GFN1, GFN2)

Type-Bound Procedures

procedure, public :: log_settings => config_log_settings
procedure, public :: reset => config_reset

type, public ::  scf_config_t

Shared SCF settings for HF and DFT methods

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: density_convergence = 1.0e-6_dp

Density matrix convergence threshold

integer, public :: diis_size = 8

Number of Fock matrices for DIIS

real(kind=dp), public :: energy_convergence = 1.0e-8_dp

Energy convergence threshold (Hartree)

integer, public :: max_iter = 100

Maximum SCF iterations

logical, public :: use_diis = .true.

Use DIIS acceleration

type, public ::  xtb_config_t

Configuration for semi-empirical xTB methods

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: accuracy = 0.01_dp

Numerical accuracy parameter

integer, public :: cpcm_nang = 110

Angular grid points for CPCM

real(kind=dp), public :: cpcm_rscale = 1.0_dp

Radii scaling for CPCM

real(kind=dp), public :: dielectric = -1.0_dp

Dielectric constant (-1 = use solvent table)

real(kind=dp), public :: electronic_temp = 300.0_dp

Electronic temperature in Kelvin (Fermi smearing)

character(len=16), public :: solvation_model = ''

Solvation model: “alpb”, “gbsa”, “cpcm”

character(len=32), public :: solvent = ''

Solvent name: “water”, “ethanol”, etc. Empty for gas phase

logical, public :: use_cds = .true.

Include non-polar CDS terms

logical, public :: use_shift = .true.

Include solution state shift

Type-Bound Procedures

procedure, public :: configure => xtb_configure
procedure, public :: get_solvation_info => xtb_get_solvation_info
procedure, public :: has_solvation => xtb_has_solvation

Functions

private pure function xtb_has_solvation(this)

Check if solvation is configured for XTB

Arguments

Type IntentOptional Attributes Name
class(xtb_config_t), intent(in) :: this

Return Value logical


Subroutines

private subroutine config_log_settings(this)

Log method-specific settings based on method type

Read more…

Arguments

Type IntentOptional Attributes Name
class(method_config_t), intent(in) :: this

private subroutine config_reset(this)

Reset all configuration values to defaults

Arguments

Type IntentOptional Attributes Name
class(method_config_t), intent(inout) :: this

private subroutine xtb_configure(this, use_cds, use_shift, dielectric, cpcm_nang, cpcm_rscale, solvent, solvation_model)

Configure XTB solvation settings from driver configuration

Read more…

Arguments

Type IntentOptional Attributes Name
class(xtb_config_t), intent(inout) :: this
logical, intent(in) :: use_cds

Include CDS non-polar terms

logical, intent(in) :: use_shift

Include solution state shift

real(kind=dp), intent(in) :: dielectric

Direct dielectric constant (-1 = use solvent lookup)

integer, intent(in) :: cpcm_nang

Angular grid points for CPCM

real(kind=dp), intent(in) :: cpcm_rscale

Radii scaling for CPCM

character(len=*), intent(in), optional :: solvent

Solvent name

character(len=*), intent(in), optional :: solvation_model

Solvation model name

private subroutine xtb_get_solvation_info(this, info_lines, n_lines)

Get solvation configuration info for logging

Read more…

Arguments

Type IntentOptional Attributes Name
class(xtb_config_t), intent(in) :: this
character(len=128), intent(out) :: info_lines(4)

Up to 4 lines of info

integer, intent(out) :: n_lines

Number of lines populated