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.
Coupled-cluster specific settings (CCSD, CCSD(T), CC2, CC3, etc.)
| 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 |
Shared settings for all post-HF correlation methods
| 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 |
Configuration for Kohn-Sham DFT method Note: SCF settings (convergence, DIIS) come from scf_config_t
| 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 |
Settings for explicitly correlated F12 methods (MP2-F12, CCSD-F12, etc.)
| 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 |
Configuration for MCSCF/CASSCF method
| 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 |
Master configuration containing all method-specific configs
| 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) |
| procedure, public :: log_settings => config_log_settings | |
| procedure, public :: reset => config_reset |
Shared SCF settings for HF and DFT methods
| 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 |
Configuration for semi-empirical xTB methods
| 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 |
| procedure, public :: configure => xtb_configure | |
| procedure, public :: get_solvation_info => xtb_get_solvation_info | |
| procedure, public :: has_solvation => xtb_has_solvation |
Check if solvation is configured for XTB
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(xtb_config_t), | intent(in) | :: | this |
Log method-specific settings based on method type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(method_config_t), | intent(in) | :: | this |
Reset all configuration values to defaults
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(method_config_t), | intent(inout) | :: | this |
Configure XTB solvation settings from driver configuration
| Type | Intent | Optional | 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 |
Get solvation configuration info for logging
| Type | Intent | Optional | 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 |