| Module | Source File | Description |
|---|---|---|
| mqc_basis_file_reader | mqc_basis_file_reader.f90 | Module for reading and parsing GAMESS formatted basis set files |
| mqc_basis_reader | mqc_basis_reader.f90 | Gaussian basis set parser and molecular basis construction |
| mqc_basis_utils | mqc_basis_utils.f90 | Provides utilities for normalizing basis set names and locating basis set files |
| mqc_calc_types | mqc_calc_types.f90 | Defines integer constants for calculation types to avoid string comparisons throughout the codebase. Provides conversion utilities between string representations and integer constants. |
| mqc_calculation_defaults | mqc_calculation_defaults.f90 | Provides compile-time constants for default calculation parameters. These defaults are used throughout the codebase when users don’t specify values. This single source of truth prevents divergence between serial and parallel paths. |
| mqc_calculation_interface | mqc_calculation_interface.f90 | Provides a clean interface for computing energies and forces that can be used by optimization algorithms, MD integrators, and MC samplers |
| mqc_calculation_keywords | mqc_calculation_keywords.f90 | Provides structured keyword types for calculation-specific settings These types are embedded in driver_config_t to organize keywords by category |
| mqc_cgto | mqc_cgto.f90 | Defines data structures for cartesian contracted Gaussian type orbitals (CGTOs) |
| mqc_cli_parser | mqc_cli_parser.f90 | Handles parsing of command line options including geometry files, basis set specifications, and help/usage display. Parsed command line arguments container Main argument parsing routine Display program usage information Standardize basis set names Locate basis set files |
| mqc_combinatorics | mqc_combinatorics.f90 | Provides pure combinatorial functions for generating molecular fragments including binomial coefficients, combinations, and fragment counting Binomial coefficient calculation Calculate total number of fragments Generate sequential monomer indices Generate all fragments up to max level Generate all combinations of size r Generate next combination in sequence Initialize combination to [1,2,…,k] Generate next combination (alternate interface) Debug utility to print combinations Calculate minimal distances for all fragments |
| mqc_config_adapter | mqc_config_adapter.f90 | Provides conversion utilities from mqc_config_t to driver-compatible structures Minimal config for driver Convert log level string to integer Check for overlapping fragments (for testing) |
| mqc_config_parser | mqc_config_parser.F90 | Parses section-based input files with %section…end blocks This is the new format generated by mqc_prep.py |
| mqc_config_parser_basic_sections | mqc_config_parser_basic_sections.f90 | |
| mqc_config_parser_calc_settings | mqc_config_parser_calc_settings.f90 | |
| mqc_config_parser_fragments | mqc_config_parser_fragments.f90 | |
| mqc_config_parser_molecules | mqc_config_parser_molecules.f90 | |
| mqc_config_parser_structure | mqc_config_parser_structure.f90 | |
| mqc_driver | mqc_driver.f90 | Handles both fragmented (many-body expansion) and unfragmented calculations with MPI parallelization and node-based work distribution. Main entry point for all calculations Multi-molecule calculation dispatcher |
| mqc_elements | mqc_elements.f90 | Provides atomic numbers, element symbols, and atomic masses for the complete periodic table (elements 1-118) with conversion functions between representations. Convert element symbol to atomic number Convert atomic number to element symbol Get atomic mass by atomic number |
| mqc_error | mqc_error.f90 | Error codes |
| mqc_finite_differences | mqc_finite_differences.f90 | Provides utilities for generating perturbed geometries and computing numerical derivatives via finite differences (gradients, Hessians, etc.) Generate forward/backward displacements Container for displaced geometry Compute Hessian from gradient differences Compute dipole derivatives from dipole differences Copy and displace geometry Re-export for backward compatibility |
| mqc_frag_utils | mqc_frag_utils.f90 | Provides combinatorial functions and algorithms for generating molecular fragments, managing fragment lists, and performing many-body expansion calculations. |
| mqc_fragment_lookup | mqc_fragment_lookup.f90 | Provides O(1) hash table for mapping monomer combinations to fragment indices Hash-based lookup table type |
| mqc_geometry | mqc_geometry.f90 | Defines the geometry data structure for molecular systems |
| mqc_gmbe_fragment_distribution_scheme | mqc_gmbe_fragment_distribution_scheme.f90 | Implements fragment distribution schemes for GMBE calculations with overlapping fragments Handles both serial and MPI-parallelized distribution of monomers and intersection fragments PIE-based serial processor PIE-based MPI coordinator |
| mqc_gmbe_utils | mqc_gmbe_utils.f90 | Provides functions for computing fragment intersections, generating k-way intersections, and enumerating PIE (Principle of Inclusion-Exclusion) terms for GMBE calculations with overlapping molecular fragments. Find shared atoms between two fragments Generate all k-way intersections for GMBE Compute atom list for polymer (union of fragments) Generate intersections for polymers DFS-based PIE coefficient enumeration Print GMBE energy breakdown Print GMBE gradient information Print debug information about GMBE intersections |
| mqc_io_helpers | mqc_io_helpers.f90 | |
| mqc_json | mqc_json.f90 | |
| mqc_json_output_types | mqc_json_output_types.f90 | |
| mqc_json_writer | mqc_json_writer.f90 | Single entry point for all JSON output |
| mqc_libcint_interface | mqc_libcint_interface.f90 | Provides Fortran interface to the Libcint library for integral calculations |
| mqc_logo | mqc_logo.f90 | Provides the project branding sunflower logo and version information displayed at program startup. Display ASCII sunflower logo and project info |
| mqc_many_body_expansion | mqc_many_body_expansion.f90 | Provides an abstract base class for all many-body expansion methods with concrete implementations for standard MBE and generalized MBE (GMBE). |
| mqc_mbe | mqc_mbe.f90 | Implements hierarchical many-body expansion for fragment-based quantum chemistry calculations with MPI parallelization and energy/gradient computation. MBE energy with optional gradient and hessian GMBE energy with optional gradient and hessian |
| mqc_mbe_fragment_distribution_scheme | mqc_mbe_fragment_distribution_scheme.F90 | Implements hierarchical many-body expansion for fragment-based quantum chemistry calculations with MPI parallelization and energy/gradient computation. |
| mpi_fragment_work_smod | mqc_mbe_mpi_fragment_distribution_scheme.F90 | |
| mqc_hessian_distribution_scheme | mqc_mbe_fragment_distribution_scheme_hessian.F90 | |
| mqc_serial_fragment_processor | mqc_serial_fragment_processor.f90 | |
| mqc_unfragmented_workflow | mqc_unfragmented_workflow.f90 | |
| mqc_mbe_io | mqc_mbe_io.f90 | Non-JSON I/O utilities for MBE calculations JSON output has been centralized in mqc_json_writer module |
| mqc_method_base | mqc_method_base.f90 | Defines the common interface that all quantum chemistry methods must implement, providing a unified API for energy and gradient calculations. Abstract base type for all QC methods |
| mqc_method_config | mqc_method_config.f90 | 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. |
| mqc_method_dft | mqc_method_dft.f90 | Implements Kohn-Sham DFT quantum chemistry method Provides energy and gradient calculations using self-consistent field with exchange-correlation functionals. |
| mqc_method_factory | mqc_method_factory.F90 | Provides centralized creation of quantum chemistry method instances. The factory pattern encapsulates method instantiation and configuration, making it easy to add new methods without modifying calling code. Convenience function |
| mqc_method_hf | mqc_method_hf.f90 | Implements the Hartree-Fock quantum chemistry method Provides energy and gradient calculations using a basic SCF procedure. |
| mqc_method_mcscf | mqc_method_mcscf.f90 | Implements CASSCF/CASCI quantum chemistry methods Provides energy and gradient calculations using complete active space with optional perturbative corrections (CASPT2/NEVPT2). |
| mqc_method_types | mqc_method_types.f90 | Defines integer constants for quantum chemistry methods to avoid string comparisons throughout the codebase. Provides conversion utilities between string representations and integer constants. |
| mqc_method_xtb | mqc_method_xtb.f90 | Provides GFN1-xTB and GFN2-xTB methods via the tblite library, implementing the abstract method interface for energy and gradient calculations. XTB method implementation type |
| mqc_mpi_comms | mqc_mpi_comms.f90 | Container type for MPI communicators - extensible for future parallelism patterns |
| mqc_mpi_tags | mqc_mpi_tags.f90 | Module defining MPI communication tags for clarity and maintainability |
| mqc_physical_constants | mqc_physical_constants.f90 | Contains fundamental physical constants and unit conversion factors used throughout the metalquicha codebase. |
| mqc_physical_fragment | mqc_physical_fragment.f90 | Physical molecular fragment representation and geometry handling |
| mqc_program_limits | mqc_program_limits.f90 | Contains compile-time limits and default values for the metalquicha program. These are tunable parameter that control memory allocation and algorithm behavior. |
| mqc_resources | mqc_resources.f90 | Container type for calculation resources - extensible for future needs |
| mqc_result_types | mqc_result_types.f90 | Defines data structures for storing and managing results from quantum chemistry calculations including energies, gradients, and properties. MP2 energy components type Coupled cluster energy components type Energy components type Main result container type MBE aggregated result container type Send result over MPI Receive result over MPI |
| mqc_thermochemistry | mqc_thermochemistry.f90 | Computes thermodynamic properties from vibrational frequencies and molecular geometry. |
| mqc_vibrational_analysis | mqc_vibrational_analysis.f90 | Computes vibrational frequencies from the mass-weighted Hessian matrix. Uses LAPACK eigenvalue decomposition via pic-blas interfaces. |
| mqc_xyz_reader | mqc_xyz_reader.f90 | Provides functions to parse standard XYZ format files containing atomic coordinates and element symbols for molecular structures. Read XYZ file from disk Parse XYZ data from string Split text into lines (for testing) |