mqc_config_t Derived Type

type, public :: mqc_config_t

Complete configuration from .mqc file


Inherits

type~~mqc_config_t~~InheritsGraph type~mqc_config_t mqc_config_t type~bond_t bond_t type~mqc_config_t->type~bond_t bonds type~geometry_type geometry_type type~mqc_config_t->type~geometry_type geometry type~input_fragment_t input_fragment_t type~mqc_config_t->type~input_fragment_t fragments type~molecule_t molecule_t type~mqc_config_t->type~molecule_t molecules type~molecule_t->type~bond_t bonds type~molecule_t->type~geometry_type geometry type~molecule_t->type~input_fragment_t fragments

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: aimd_dt = DEFAULT_AIMD_DT

Timestep (femtoseconds)

real(kind=dp), public :: aimd_initial_temperature = DEFAULT_AIMD_TEMPERATURE

Initial temperature for velocity init (K)

integer, public :: aimd_nsteps = DEFAULT_AIMD_NSTEPS

Number of MD steps (0 = no AIMD)

integer, public :: aimd_output_frequency = DEFAULT_AIMD_OUTPUT_FREQ

Write output every N steps

logical, public :: allow_overlapping_fragments = .false.
character(len=:), public, allocatable :: aux_basis
character(len=:), public, allocatable :: basis
type(bond_t), public, allocatable :: bonds(:)
integer(kind=int32), public :: calc_type = CALC_TYPE_ENERGY
integer, public :: charge = 0
integer, public :: cpcm_nang = DEFAULT_CPCM_NANG

Number of angular grid points for CPCM cavity

real(kind=dp), public :: cpcm_rscale = DEFAULT_CPCM_RSCALE

Radii scaling factor for CPCM cavity

character(len=:), public, allocatable :: cutoff_method
real(kind=dp), public :: dielectric = -1.0_dp

Direct dielectric constant (-1 = use solvent lookup)

character(len=:), public, allocatable :: distance_metric
character(len=:), public, allocatable :: embedding
integer, public :: frag_level = DEFAULT_FRAG_LEVEL
character(len=:), public, allocatable :: frag_method

MBE, etc.

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

Distance cutoffs indexed by n-mer level (2=dimer, 3=trimer, etc.)

type(input_fragment_t), public, allocatable :: fragments(:)
type(geometry_type), public :: geometry
real(kind=dp), public :: hessian_displacement = DEFAULT_DISPLACEMENT

Finite difference displacement (Bohr)

real(kind=dp), public :: hessian_pressure = DEFAULT_PRESSURE

Pressure for thermochemistry (atm)

real(kind=dp), public :: hessian_temperature = DEFAULT_TEMPERATURE

Temperature for thermochemistry (K)

integer, public :: index_base = 0

0-based or 1-based indexing

character(len=:), public, allocatable :: log_level
integer, public :: max_intersection_level = DEFAULT_MAX_INTERSECTION

Maximum k-way intersection depth for GMBE

integer(kind=int32), public :: method = METHOD_TYPE_GFN2
type(molecule_t), public, allocatable :: molecules(:)

Array of molecules (if nmol > 0)

integer, public :: multiplicity = 1
integer, public :: nbonds = 0
integer, public :: nbroken = 0
integer, public :: nfrag = 0
integer, public :: nmol = 0

Number of molecules (0 = single molecule mode for backward compatibility)

integer, public :: scf_maxiter = 300

Using 300 (parser-specific, different from DEFAULT_SCF_MAXITER)

real(kind=dp), public :: scf_tolerance = DEFAULT_SCF_CONV
character(len=:), public, allocatable :: schema_name
character(len=:), public, allocatable :: schema_version
logical, public :: skip_json_output = .false.

Skip JSON output for large calculations

character(len=:), public, allocatable :: solvation_model

Solvation model: “alpb” (default), “gbsa”, or “cpcm”

character(len=:), public, allocatable :: solvent

Solvent name (e.g., “water”, “ethanol”) or empty for gas phase

character(len=:), public, allocatable :: units

angstrom or bohr

logical, public :: use_cds = .true.

Include non-polar CDS terms in solvation (not for CPCM)

logical, public :: use_shift = .true.

Include solution state shift in solvation (not for CPCM)


Type-Bound Procedures

procedure, public :: destroy => config_destroy

  • private subroutine config_destroy(this)

    Clean up allocated memory in mqc_config_t

    Arguments

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

Source Code

   type :: mqc_config_t
      !! Complete configuration from .mqc file

      ! Schema information
      character(len=:), allocatable :: schema_name
      character(len=:), allocatable :: schema_version
      integer :: index_base = 0  !! 0-based or 1-based indexing
      character(len=:), allocatable :: units  !! angstrom or bohr

      ! Model information
      integer(int32) :: method = METHOD_TYPE_GFN2
      character(len=:), allocatable :: basis
      character(len=:), allocatable :: aux_basis

      ! XTB solvation settings
      character(len=:), allocatable :: solvent  !! Solvent name (e.g., "water", "ethanol") or empty for gas phase
      character(len=:), allocatable :: solvation_model  !! Solvation model: "alpb" (default), "gbsa", or "cpcm"
      logical :: use_cds = .true.               !! Include non-polar CDS terms in solvation (not for CPCM)
      logical :: use_shift = .true.             !! Include solution state shift in solvation (not for CPCM)
      ! CPCM-specific settings
      real(dp) :: dielectric = -1.0_dp              !! Direct dielectric constant (-1 = use solvent lookup)
      integer :: cpcm_nang = DEFAULT_CPCM_NANG      !! Number of angular grid points for CPCM cavity
      real(dp) :: cpcm_rscale = DEFAULT_CPCM_RSCALE  !! Radii scaling factor for CPCM cavity

      ! Driver information
      integer(int32) :: calc_type = CALC_TYPE_ENERGY

      ! Multiple molecules support
      integer :: nmol = 0  !! Number of molecules (0 = single molecule mode for backward compatibility)
      type(molecule_t), allocatable :: molecules(:)  !! Array of molecules (if nmol > 0)

      ! Single molecule fields (backward compatibility - used if nmol == 0)
      ! Structure information
      integer :: charge = 0
      integer :: multiplicity = 1

      ! Geometry
      type(geometry_type) :: geometry

      ! Fragments
      integer :: nfrag = 0
      type(input_fragment_t), allocatable :: fragments(:)

      ! Connectivity
      integer :: nbonds = 0
      integer :: nbroken = 0
      type(bond_t), allocatable :: bonds(:)

      ! SCF settings
      integer :: scf_maxiter = 300              !! Using 300 (parser-specific, different from DEFAULT_SCF_MAXITER)
      real(dp) :: scf_tolerance = DEFAULT_SCF_CONV

      ! Hessian settings
      real(dp) :: hessian_displacement = DEFAULT_DISPLACEMENT  !! Finite difference displacement (Bohr)
      real(dp) :: hessian_temperature = DEFAULT_TEMPERATURE    !! Temperature for thermochemistry (K)
      real(dp) :: hessian_pressure = DEFAULT_PRESSURE          !! Pressure for thermochemistry (atm)

      ! AIMD settings
      real(dp) :: aimd_dt = DEFAULT_AIMD_DT                          !! Timestep (femtoseconds)
      integer :: aimd_nsteps = DEFAULT_AIMD_NSTEPS                   !! Number of MD steps (0 = no AIMD)
      real(dp) :: aimd_initial_temperature = DEFAULT_AIMD_TEMPERATURE  !! Initial temperature for velocity init (K)
      integer :: aimd_output_frequency = DEFAULT_AIMD_OUTPUT_FREQ    !! Write output every N steps

      ! Fragmentation settings
      character(len=:), allocatable :: frag_method  !! MBE, etc.
      integer :: frag_level = DEFAULT_FRAG_LEVEL
      logical :: allow_overlapping_fragments = .false.
      integer :: max_intersection_level = DEFAULT_MAX_INTERSECTION  !! Maximum k-way intersection depth for GMBE
      character(len=:), allocatable :: embedding
      character(len=:), allocatable :: cutoff_method
      character(len=:), allocatable :: distance_metric
      real(dp), allocatable :: fragment_cutoffs(:)  !! Distance cutoffs indexed by n-mer level (2=dimer, 3=trimer, etc.)

      ! Logger settings (kept for compatibility)
      character(len=:), allocatable :: log_level

      ! Output control
      logical :: skip_json_output = .false.  !! Skip JSON output for large calculations

   contains
      procedure :: destroy => config_destroy
   end type mqc_config_t