mqc_cgto Module

Defines data structures for cartesian contracted Gaussian type orbitals (CGTOs)


Uses

    • pic_types
  • module~~mqc_cgto~~UsesGraph module~mqc_cgto mqc_cgto pic_types pic_types module~mqc_cgto->pic_types

Used by

  • module~~mqc_cgto~~UsedByGraph module~mqc_cgto mqc_cgto module~mqc_basis_reader mqc_basis_reader module~mqc_basis_reader->module~mqc_cgto module~mqc_physical_fragment mqc_physical_fragment module~mqc_physical_fragment->module~mqc_cgto module~mqc_calculation_interface mqc_calculation_interface module~mqc_calculation_interface->module~mqc_physical_fragment module~mqc_config_parser mqc_config_parser module~mqc_calculation_interface->module~mqc_config_parser module~mqc_config_adapter mqc_config_adapter module~mqc_config_adapter->module~mqc_physical_fragment module~mqc_config_adapter->module~mqc_config_parser module~mqc_config_parser->module~mqc_physical_fragment module~mqc_driver mqc_driver module~mqc_driver->module~mqc_physical_fragment module~mqc_driver->module~mqc_config_adapter module~mqc_driver->module~mqc_config_parser module~mqc_frag_utils mqc_frag_utils module~mqc_driver->module~mqc_frag_utils 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_json_writer mqc_json_writer module~mqc_driver->module~mqc_json_writer module~mqc_finite_differences mqc_finite_differences module~mqc_finite_differences->module~mqc_physical_fragment module~mqc_frag_utils->module~mqc_physical_fragment module~mqc_gmbe_utils mqc_gmbe_utils module~mqc_frag_utils->module~mqc_gmbe_utils module~mqc_gmbe_fragment_distribution_scheme mqc_gmbe_fragment_distribution_scheme module~mqc_gmbe_fragment_distribution_scheme->module~mqc_physical_fragment module~mqc_gmbe_fragment_distribution_scheme->module~mqc_mbe_fragment_distribution_scheme module~mqc_gmbe_utils->module~mqc_physical_fragment module~mqc_many_body_expansion->module~mqc_physical_fragment module~mqc_many_body_expansion->module~mqc_config_adapter module~mqc_mbe->module~mqc_physical_fragment module~mqc_mbe->module~mqc_frag_utils module~mqc_mbe->module~mqc_gmbe_utils module~mqc_mbe_io mqc_mbe_io module~mqc_mbe->module~mqc_mbe_io module~mqc_mbe_fragment_distribution_scheme->module~mqc_physical_fragment module~mqc_mbe_fragment_distribution_scheme->module~mqc_config_adapter module~mqc_mbe_fragment_distribution_scheme->module~mqc_mbe 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_io->module~mqc_physical_fragment module~mqc_method_base->module~mqc_physical_fragment module~mqc_method_dft mqc_method_dft module~mqc_method_dft->module~mqc_physical_fragment module~mqc_method_dft->module~mqc_method_base module~mqc_method_hf mqc_method_hf module~mqc_method_hf->module~mqc_physical_fragment module~mqc_method_hf->module~mqc_method_base module~mqc_method_mcscf mqc_method_mcscf module~mqc_method_mcscf->module~mqc_physical_fragment module~mqc_method_mcscf->module~mqc_method_base module~mqc_method_xtb mqc_method_xtb module~mqc_method_xtb->module~mqc_physical_fragment module~mqc_method_xtb->module~mqc_method_base proc~apply_distance_screening apply_distance_screening proc~apply_distance_screening->module~mqc_physical_fragment proc~apply_distance_screening->module~mqc_config_adapter proc~calculate_fragment_distances calculate_fragment_distances proc~calculate_fragment_distances->module~mqc_physical_fragment proc~compute_gmbe compute_gmbe proc~compute_gmbe->module~mqc_physical_fragment proc~compute_gmbe->module~mqc_config_parser proc~compute_gmbe->module~mqc_gmbe_utils proc~compute_polymer_atoms compute_polymer_atoms proc~compute_polymer_atoms->module~mqc_physical_fragment proc~fragment_should_be_screened fragment_should_be_screened proc~fragment_should_be_screened->module~mqc_physical_fragment proc~fragment_should_be_screened->module~mqc_config_adapter proc~generate_intersections generate_intersections proc~generate_intersections->module~mqc_physical_fragment proc~generate_k_way_intersections_for_level generate_k_way_intersections_for_level proc~generate_k_way_intersections_for_level->module~mqc_physical_fragment proc~generate_polymer_intersections generate_polymer_intersections proc~generate_polymer_intersections->module~mqc_physical_fragment proc~gmbe_enumerate_pie_terms gmbe_enumerate_pie_terms proc~gmbe_enumerate_pie_terms->module~mqc_physical_fragment proc~gmbe_pie_coordinator gmbe_pie_coordinator proc~gmbe_pie_coordinator->module~mqc_physical_fragment proc~map_fragment_to_system_dipole_derivatives map_fragment_to_system_dipole_derivatives proc~map_fragment_to_system_dipole_derivatives->module~mqc_physical_fragment proc~map_fragment_to_system_gradient map_fragment_to_system_gradient proc~map_fragment_to_system_gradient->module~mqc_physical_fragment proc~map_fragment_to_system_hessian map_fragment_to_system_hessian proc~map_fragment_to_system_hessian->module~mqc_physical_fragment proc~parse_connectivity_generic parse_connectivity_generic proc~parse_connectivity_generic->module~mqc_physical_fragment proc~process_intersection_derivatives process_intersection_derivatives proc~process_intersection_derivatives->module~mqc_physical_fragment proc~process_intersection_derivatives->module~mqc_config_parser proc~process_intersection_derivatives->module~mqc_gmbe_utils proc~serial_gmbe_pie_processor serial_gmbe_pie_processor proc~serial_gmbe_pie_processor->module~mqc_physical_fragment program~main main program~main->module~mqc_physical_fragment program~main->module~mqc_config_adapter program~main->module~mqc_config_parser program~main->module~mqc_driver module~mpi_fragment_work_smod mpi_fragment_work_smod module~mpi_fragment_work_smod->module~mqc_mbe_fragment_distribution_scheme module~mqc_config_parser_basic_sections mqc_config_parser_basic_sections module~mqc_config_parser_basic_sections->module~mqc_config_parser module~mqc_config_parser_calc_settings mqc_config_parser_calc_settings module~mqc_config_parser_calc_settings->module~mqc_config_parser module~mqc_config_parser_fragments mqc_config_parser_fragments module~mqc_config_parser_fragments->module~mqc_config_parser module~mqc_config_parser_molecules mqc_config_parser_molecules module~mqc_config_parser_molecules->module~mqc_config_parser module~mqc_config_parser_structure mqc_config_parser_structure module~mqc_config_parser_structure->module~mqc_config_parser module~mqc_hessian_distribution_scheme mqc_hessian_distribution_scheme module~mqc_hessian_distribution_scheme->module~mqc_mbe_fragment_distribution_scheme module~mqc_json_writer->module~mqc_mbe_io module~mqc_method_factory->module~mqc_method_base module~mqc_method_factory->module~mqc_method_dft module~mqc_method_factory->module~mqc_method_hf module~mqc_method_factory->module~mqc_method_mcscf module~mqc_method_factory->module~mqc_method_xtb 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~check_fragment_overlap check_fragment_overlap proc~check_fragment_overlap->module~mqc_config_parser 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~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_finite_differences proc~hessian_coordinator->module~mqc_method_base proc~hessian_coordinator->module~mqc_method_factory proc~hessian_worker hessian_worker proc~hessian_worker->module~mqc_finite_differences proc~hessian_worker->module~mqc_method_base proc~hessian_worker->module~mqc_method_factory proc~initialize_fragmented_system initialize_fragmented_system proc~initialize_fragmented_system->module~mqc_config_parser 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~molecule_to_system_geometry molecule_to_system_geometry proc~molecule_to_system_geometry->module~mqc_config_parser proc~run_multi_molecule_calculations run_multi_molecule_calculations proc~run_multi_molecule_calculations->module~mqc_config_adapter proc~run_multi_molecule_calculations->module~mqc_config_parser proc~xtb_calc_hessian xtb_method_t%xtb_calc_hessian proc~xtb_calc_hessian->module~mqc_finite_differences

Derived Types

type, public ::  atomic_basis_type

Atomic basis set data structure

Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: element

element symbol

integer, public :: nshells

number of shells in type

type(cgto_type), public, allocatable :: shells(:)

array of contracted shells

Type-Bound Procedures

procedure, public :: allocate_shells => allocate_basis_shells
procedure, public :: destroy => atomic_basis_destroy
procedure, public :: num_basis_functions => atomic_basis_num_basis_functions

type, public ::  cgto_type

Contracted Gaussian type orbital (CGTO) data structure

Components

Type Visibility Attributes Name Initial
integer, public :: ang_mom

Angular momentum quantum number (0=s, 1=p, 2=d, etc.)

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

Contraction coefficients

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

Exponents (alpha values)

integer, public :: nfunc

Number of primitive Gaussians in the contraction

Type-Bound Procedures

procedure, public :: allocate_arrays => cgto_allocate_arrays
procedure, public :: destroy => cgto_destroy
procedure, public :: num_basis_functions => cgto_num_basis_functions

type, public ::  molecular_basis_type

Molecular basis set data structure (assembled basis)

Components

Type Visibility Attributes Name Initial
type(atomic_basis_type), public, allocatable :: elements(:)

array of atomic basis types

integer, public :: nelements

total number of atoms/elements in a molecule

Type-Bound Procedures

procedure, public :: allocate_elements => basis_set_allocate_elements
procedure, public :: destroy => basis_set_destroy
procedure, public :: num_basis_functions => molecular_basis_num_basis_functions

Functions

private pure function atomic_basis_num_basis_functions(self) result(nbf)

Get total number of basis functions for an atom

Arguments

Type IntentOptional Attributes Name
class(atomic_basis_type), intent(in) :: self

Return Value integer

private pure function cgto_num_basis_functions(self) result(nbf)

Get number of basis functions in a shell (Cartesian)

Arguments

Type IntentOptional Attributes Name
class(cgto_type), intent(in) :: self

Return Value integer

private pure function molecular_basis_num_basis_functions(self) result(nbf)

Get total number of basis functions for the molecule

Arguments

Type IntentOptional Attributes Name
class(molecular_basis_type), intent(in) :: self

Return Value integer


Subroutines

private pure subroutine allocate_basis_shells(self, nshells)

Allocate array of shells in an atomic basis

Arguments

Type IntentOptional Attributes Name
class(atomic_basis_type), intent(inout) :: self
integer, intent(in) :: nshells

private pure subroutine atomic_basis_destroy(self)

Clean up allocated memory in an atomic basis

Arguments

Type IntentOptional Attributes Name
class(atomic_basis_type), intent(inout) :: self

private pure subroutine basis_set_allocate_elements(self, nelements)

Allocate array of atomic basis elements in a molecular basis set

Arguments

Type IntentOptional Attributes Name
class(molecular_basis_type), intent(inout) :: self
integer, intent(in) :: nelements

private pure subroutine basis_set_destroy(self)

Clean up allocated memory in a molecular basis set

Arguments

Type IntentOptional Attributes Name
class(molecular_basis_type), intent(inout) :: self

private pure subroutine cgto_allocate_arrays(self, nfunc)

Allocate arrays for exponents and coefficients in a CGTO

Arguments

Type IntentOptional Attributes Name
class(cgto_type), intent(inout) :: self
integer, intent(in) :: nfunc

private pure subroutine cgto_destroy(self)

Clean up allocated memory in a CGTO

Arguments

Type IntentOptional Attributes Name
class(cgto_type), intent(inout) :: self