mqc_driver Module

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


Uses

  • module~~mqc_driver~~UsesGraph module~mqc_driver mqc_driver module~mqc_calc_types mqc_calc_types module~mqc_driver->module~mqc_calc_types module~mqc_config_adapter mqc_config_adapter module~mqc_driver->module~mqc_config_adapter module~mqc_config_parser mqc_config_parser module~mqc_driver->module~mqc_config_parser module~mqc_error mqc_error module~mqc_driver->module~mqc_error module~mqc_frag_utils mqc_frag_utils module~mqc_driver->module~mqc_frag_utils module~mqc_io_helpers mqc_io_helpers module~mqc_driver->module~mqc_io_helpers module~mqc_json mqc_json module~mqc_driver->module~mqc_json module~mqc_json_output_types mqc_json_output_types module~mqc_driver->module~mqc_json_output_types module~mqc_json_writer mqc_json_writer module~mqc_driver->module~mqc_json_writer module~mqc_many_body_expansion mqc_many_body_expansion module~mqc_driver->module~mqc_many_body_expansion module~mqc_mbe mqc_mbe module~mqc_driver->module~mqc_mbe module~mqc_mbe_fragment_distribution_scheme mqc_mbe_fragment_distribution_scheme module~mqc_driver->module~mqc_mbe_fragment_distribution_scheme module~mqc_method_config mqc_method_config module~mqc_driver->module~mqc_method_config module~mqc_method_types mqc_method_types module~mqc_driver->module~mqc_method_types module~mqc_physical_fragment mqc_physical_fragment module~mqc_driver->module~mqc_physical_fragment module~mqc_resources mqc_resources module~mqc_driver->module~mqc_resources module~mqc_result_types mqc_result_types module~mqc_driver->module~mqc_result_types omp_lib omp_lib module~mqc_driver->omp_lib pic_io pic_io module~mqc_driver->pic_io pic_logger pic_logger module~mqc_driver->pic_logger pic_mpi_lib pic_mpi_lib module~mqc_driver->pic_mpi_lib pic_types pic_types module~mqc_driver->pic_types module~mqc_calc_types->pic_types module~mqc_config_adapter->module~mqc_config_parser module~mqc_config_adapter->module~mqc_error module~mqc_config_adapter->module~mqc_method_config module~mqc_config_adapter->module~mqc_physical_fragment module~mqc_config_adapter->pic_logger module~mqc_config_adapter->pic_types module~mqc_calculation_keywords mqc_calculation_keywords module~mqc_config_adapter->module~mqc_calculation_keywords module~mqc_elements mqc_elements module~mqc_config_adapter->module~mqc_elements module~mqc_config_parser->module~mqc_calc_types module~mqc_config_parser->module~mqc_error module~mqc_config_parser->module~mqc_method_types module~mqc_config_parser->module~mqc_physical_fragment module~mqc_config_parser->pic_types module~mqc_calculation_defaults mqc_calculation_defaults module~mqc_config_parser->module~mqc_calculation_defaults module~mqc_geometry mqc_geometry module~mqc_config_parser->module~mqc_geometry module~mqc_frag_utils->module~mqc_physical_fragment module~mqc_frag_utils->pic_io module~mqc_frag_utils->pic_logger module~mqc_frag_utils->pic_types module~mqc_combinatorics mqc_combinatorics module~mqc_frag_utils->module~mqc_combinatorics module~mqc_fragment_lookup mqc_fragment_lookup module~mqc_frag_utils->module~mqc_fragment_lookup module~mqc_gmbe_utils mqc_gmbe_utils module~mqc_frag_utils->module~mqc_gmbe_utils module~mqc_json->pic_io module~mqc_json->pic_logger module~mqc_json_output_types->pic_types module~mqc_thermochemistry mqc_thermochemistry module~mqc_json_output_types->module~mqc_thermochemistry module~mqc_json_writer->module~mqc_io_helpers module~mqc_json_writer->module~mqc_json_output_types module~mqc_json_writer->pic_logger module~mqc_json_writer->pic_types json_module json_module module~mqc_json_writer->json_module module~mqc_mbe_io mqc_mbe_io module~mqc_json_writer->module~mqc_mbe_io module~mqc_physical_constants mqc_physical_constants module~mqc_json_writer->module~mqc_physical_constants module~mqc_program_limits mqc_program_limits module~mqc_json_writer->module~mqc_program_limits module~mqc_many_body_expansion->module~mqc_config_adapter module~mqc_many_body_expansion->module~mqc_json_output_types module~mqc_many_body_expansion->module~mqc_method_config module~mqc_many_body_expansion->module~mqc_physical_fragment module~mqc_many_body_expansion->module~mqc_resources module~mqc_many_body_expansion->pic_types module~mqc_mbe->module~mqc_frag_utils module~mqc_mbe->module~mqc_json_output_types module~mqc_mbe->module~mqc_physical_fragment module~mqc_mbe->pic_io module~mqc_mbe->pic_logger module~mqc_mbe->pic_mpi_lib module~mqc_mbe->pic_types module~mqc_mbe->module~mqc_gmbe_utils module~mqc_mbe->module~mqc_mbe_io module~mqc_mpi_tags mqc_mpi_tags module~mqc_mbe->module~mqc_mpi_tags module~mqc_mbe->module~mqc_program_limits module~mqc_mbe->module~mqc_thermochemistry module~mqc_vibrational_analysis mqc_vibrational_analysis module~mqc_mbe->module~mqc_vibrational_analysis pic_timer pic_timer module~mqc_mbe->pic_timer module~mqc_mbe_fragment_distribution_scheme->module~mqc_calc_types module~mqc_mbe_fragment_distribution_scheme->module~mqc_config_adapter module~mqc_mbe_fragment_distribution_scheme->module~mqc_json_output_types module~mqc_mbe_fragment_distribution_scheme->module~mqc_mbe module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_config module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_types module~mqc_mbe_fragment_distribution_scheme->module~mqc_physical_fragment module~mqc_mbe_fragment_distribution_scheme->module~mqc_resources module~mqc_mbe_fragment_distribution_scheme->module~mqc_result_types module~mqc_mbe_fragment_distribution_scheme->omp_lib module~mqc_mbe_fragment_distribution_scheme->pic_io module~mqc_mbe_fragment_distribution_scheme->pic_logger module~mqc_mbe_fragment_distribution_scheme->pic_mpi_lib module~mqc_mbe_fragment_distribution_scheme->pic_types module~mqc_mbe_fragment_distribution_scheme->module~mqc_calculation_defaults module~mqc_mbe_fragment_distribution_scheme->module~mqc_mbe_io module~mqc_method_base mqc_method_base module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_base module~mqc_method_factory mqc_method_factory module~mqc_mbe_fragment_distribution_scheme->module~mqc_method_factory module~mqc_mbe_fragment_distribution_scheme->module~mqc_mpi_tags pic_blas_interfaces pic_blas_interfaces module~mqc_mbe_fragment_distribution_scheme->pic_blas_interfaces module~mqc_mbe_fragment_distribution_scheme->pic_timer module~mqc_method_config->module~mqc_method_types module~mqc_method_config->pic_types module~mqc_method_types->pic_types module~mqc_physical_fragment->module~mqc_error module~mqc_physical_fragment->pic_types module~mqc_cgto mqc_cgto module~mqc_physical_fragment->module~mqc_cgto module~mqc_physical_fragment->module~mqc_elements module~mqc_physical_fragment->module~mqc_geometry 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_mpi_comms mqc_mpi_comms module~mqc_resources->module~mqc_mpi_comms module~mqc_result_types->module~mqc_error module~mqc_result_types->pic_mpi_lib module~mqc_result_types->pic_types module~mqc_calculation_defaults->pic_types module~mqc_calculation_keywords->pic_types module~mqc_calculation_keywords->module~mqc_calculation_defaults module~mqc_cgto->pic_types module~mqc_combinatorics->pic_types module~mqc_elements->pic_types pic_ascii pic_ascii module~mqc_elements->pic_ascii module~mqc_fragment_lookup->module~mqc_error module~mqc_fragment_lookup->pic_types pic_hash_32bit pic_hash_32bit module~mqc_fragment_lookup->pic_hash_32bit pic_sorting pic_sorting module~mqc_fragment_lookup->pic_sorting module~mqc_geometry->pic_types module~mqc_gmbe_utils->module~mqc_error module~mqc_gmbe_utils->module~mqc_physical_fragment module~mqc_gmbe_utils->module~mqc_result_types module~mqc_gmbe_utils->pic_io module~mqc_gmbe_utils->pic_logger module~mqc_gmbe_utils->pic_types module~mqc_gmbe_utils->module~mqc_combinatorics module~mqc_mbe_io->module~mqc_physical_fragment module~mqc_mbe_io->pic_io module~mqc_mbe_io->pic_logger module~mqc_mbe_io->pic_types module~mqc_mbe_io->module~mqc_elements module~mqc_method_base->module~mqc_physical_fragment module~mqc_method_base->module~mqc_result_types module~mqc_method_base->pic_types module~mqc_method_factory->module~mqc_method_config module~mqc_method_factory->module~mqc_method_types module~mqc_method_factory->pic_types module~mqc_method_factory->module~mqc_method_base mctc_env mctc_env module~mqc_method_factory->mctc_env module~mqc_method_dft mqc_method_dft module~mqc_method_factory->module~mqc_method_dft module~mqc_method_hf mqc_method_hf module~mqc_method_factory->module~mqc_method_hf module~mqc_method_mcscf mqc_method_mcscf module~mqc_method_factory->module~mqc_method_mcscf module~mqc_method_xtb mqc_method_xtb module~mqc_method_factory->module~mqc_method_xtb module~mqc_mpi_comms->pic_mpi_lib module~mqc_mpi_tags->pic_types module~mqc_physical_constants->pic_types module~mqc_program_limits->pic_types module~mqc_thermochemistry->pic_io module~mqc_thermochemistry->pic_logger module~mqc_thermochemistry->pic_types module~mqc_thermochemistry->module~mqc_elements module~mqc_thermochemistry->module~mqc_physical_constants pic_lapack_interfaces pic_lapack_interfaces module~mqc_thermochemistry->pic_lapack_interfaces module~mqc_vibrational_analysis->pic_logger module~mqc_vibrational_analysis->pic_types module~mqc_vibrational_analysis->module~mqc_elements module~mqc_vibrational_analysis->module~mqc_physical_constants module~mqc_vibrational_analysis->module~mqc_thermochemistry module~mqc_vibrational_analysis->pic_lapack_interfaces module~mqc_xyz_reader->module~mqc_error module~mqc_xyz_reader->pic_types module~mqc_xyz_reader->module~mqc_geometry module~mqc_method_dft->module~mqc_physical_fragment module~mqc_method_dft->module~mqc_result_types module~mqc_method_dft->pic_types module~mqc_method_dft->module~mqc_method_base module~mqc_method_hf->module~mqc_physical_fragment module~mqc_method_hf->module~mqc_result_types module~mqc_method_hf->pic_types module~mqc_method_hf->module~mqc_method_base module~mqc_method_mcscf->module~mqc_physical_fragment module~mqc_method_mcscf->module~mqc_result_types module~mqc_method_mcscf->pic_types module~mqc_method_mcscf->module~mqc_method_base module~mqc_method_xtb->module~mqc_error module~mqc_method_xtb->module~mqc_physical_fragment module~mqc_method_xtb->module~mqc_result_types module~mqc_method_xtb->pic_logger module~mqc_method_xtb->pic_types module~mqc_method_xtb->module~mqc_method_base module~mqc_method_xtb->pic_timer module~mqc_method_xtb->mctc_env mctc_io mctc_io module~mqc_method_xtb->mctc_io tblite_container tblite_container module~mqc_method_xtb->tblite_container tblite_context_type tblite_context_type module~mqc_method_xtb->tblite_context_type tblite_solvation tblite_solvation module~mqc_method_xtb->tblite_solvation tblite_wavefunction tblite_wavefunction module~mqc_method_xtb->tblite_wavefunction tblite_xtb_calculator tblite_xtb_calculator module~mqc_method_xtb->tblite_xtb_calculator tblite_xtb_gfn1 tblite_xtb_gfn1 module~mqc_method_xtb->tblite_xtb_gfn1 tblite_xtb_gfn2 tblite_xtb_gfn2 module~mqc_method_xtb->tblite_xtb_gfn2 tblite_xtb_singlepoint tblite_xtb_singlepoint module~mqc_method_xtb->tblite_xtb_singlepoint

Used by

  • module~~mqc_driver~~UsedByGraph module~mqc_driver mqc_driver proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->module~mqc_driver program~main main program~main->module~mqc_driver

Subroutines

public subroutine run_calculation(resources, config, sys_geom, bonds, result_out, all_ranks_write_json)

Main calculation dispatcher - routes to fragmented or unfragmented calculation

Read more…

Arguments

Type IntentOptional Attributes Name
type(resources_t), intent(in) :: resources

Resources container (MPI comms, etc.)

type(driver_config_t), intent(in) :: config

Driver configuration

type(system_geometry_t), intent(in) :: sys_geom

System geometry and fragment info

type(bond_t), intent(in), optional :: bonds(:)

Bond connectivity information

type(calculation_result_t), intent(out), optional :: result_out

Optional result output

logical, intent(in), optional :: all_ranks_write_json

If true, all ranks write JSON (for multi-molecule)

public subroutine run_multi_molecule_calculations(resources, mqc_config)

Run calculations for multiple molecules with MPI parallelization Each molecule is independent, so assign one molecule per rank

Arguments

Type IntentOptional Attributes Name
type(resources_t), intent(in) :: resources
type(mqc_config_t), intent(in) :: mqc_config

private subroutine run_fragmented_calculation(resources, config, sys_geom, bonds, json_data)

Handle fragmented calculation (nlevel > 0)

Read more…

Arguments

Type IntentOptional Attributes Name
type(resources_t), intent(in), target :: resources

Resources container (MPI comms, etc.)

type(driver_config_t), intent(in) :: config

Driver configuration (includes method_config, calc_type, etc.)

type(system_geometry_t), intent(in) :: sys_geom

System geometry and fragment info

type(bond_t), intent(in), optional :: bonds(:)

Bond connectivity information

type(json_output_data_t), intent(out), optional :: json_data

JSON output data

private subroutine run_unfragmented_calculation(world_comm, sys_geom, config, result_out, json_data)

Handle unfragmented calculation (nlevel=0)

Read more…

Arguments

Type IntentOptional Attributes Name
type(comm_t), intent(in) :: world_comm

Global MPI communicator

type(system_geometry_t), intent(in) :: sys_geom

Complete system geometry

type(driver_config_t), intent(in) :: config

Driver configuration (includes method_config, calc_type, etc.)

type(calculation_result_t), intent(out), optional :: result_out

Optional result output

type(json_output_data_t), intent(out), optional :: json_data

JSON output data