mod_overlap_matrix
Lines: 279 |
Visibility: private
The overlap matrix descriptor/feature map, also knwon as Overlap
Matrix Fingerprint (OMFP)
This file contains the type definitions of the AbstactOverlapMatrix
OverlapMatrix and SmoothOverlaMatrix derived types. Since OverlapMatrix and
SmoothOverlapMatrix use private procedures of AbstractOverlapMatrix, they
need to be defined in the same module. Since this module would be very large,
we make extensive use of submodules. Hence, this module only holds the
interfaces of the type bound procedures and their documentation. See the
mentioned submodules for their implementation.
author: Moritz R. Schaefer
Dependencies
Uses
module~~mod_overlap_matrix~~UsesGraph
module~mod_overlap_matrix
mod_overlap_matrix
module~mod_cutoff_function
mod_cutoff_function
module~mod_overlap_matrix->module~mod_cutoff_function
module~mod_feature_map
mod_feature_map
module~mod_overlap_matrix->module~mod_feature_map
module~mod_feature_map_neighborlist
mod_feature_map_neighborlist
module~mod_overlap_matrix->module~mod_feature_map_neighborlist
module~mod_precision
mod_precision
module~mod_overlap_matrix->module~mod_precision
module~mod_structures
mod_structures
module~mod_overlap_matrix->module~mod_structures
module~mod_cutoff_function->module~mod_precision
module~mod_abstract_cutoff_function
mod_abstract_cutoff_function
module~mod_cutoff_function->module~mod_abstract_cutoff_function
module~mod_cutoff_function_cosine
mod_cutoff_function_cosine
module~mod_cutoff_function->module~mod_cutoff_function_cosine
module~mod_cutoff_function_hard
mod_cutoff_function_hard
module~mod_cutoff_function->module~mod_cutoff_function_hard
module~mod_cutoff_function_hypertangent
mod_cutoff_function_hypertangent
module~mod_cutoff_function->module~mod_cutoff_function_hypertangent
module~mod_cutoff_function_hypertangent_approx
mod_cutoff_function_hypertangent_approx
module~mod_cutoff_function->module~mod_cutoff_function_hypertangent_approx
module~mod_cutoff_function_null
mod_cutoff_function_null
module~mod_cutoff_function->module~mod_cutoff_function_null
module~mod_cutoff_function_polynomial
mod_cutoff_function_polynomial
module~mod_cutoff_function->module~mod_cutoff_function_polynomial
module~mod_cutoff_function_vdw
mod_cutoff_function_vdw
module~mod_cutoff_function->module~mod_cutoff_function_vdw
module~mod_io
mod_io
module~mod_cutoff_function->module~mod_io
module~mod_throw
mod_throw
module~mod_cutoff_function->module~mod_throw
module~mod_feature_map->module~mod_cutoff_function
module~mod_feature_map->module~mod_feature_map_neighborlist
module~mod_feature_map->module~mod_precision
module~mod_feature_map->module~mod_structures
module~mod_hash
mod_hash
module~mod_feature_map->module~mod_hash
module~mod_feature_map->module~mod_io
module~mod_sanitize
mod_sanitize
module~mod_feature_map->module~mod_sanitize
module~mod_feature_map->module~mod_throw
module~mod_feature_map_neighborlist->module~mod_precision
module~mod_feature_map_neighborlist->module~mod_structures
module~mod_feature_map_neighborlist->module~mod_abstract_cutoff_function
module~mod_constants
mod_constants
module~mod_feature_map_neighborlist->module~mod_constants
module~mod_feature_map_neighborlist->module~mod_io
module~mod_mpi
mod_mpi
module~mod_feature_map_neighborlist->module~mod_mpi
module~mod_neighborlist
mod_neighborlist
module~mod_feature_map_neighborlist->module~mod_neighborlist
module~mod_feature_map_neighborlist->module~mod_throw
module~mod_timer
mod_timer
module~mod_feature_map_neighborlist->module~mod_timer
iso_c_binding
iso_c_binding
module~mod_precision->iso_c_binding
iso_fortran_env
iso_fortran_env
module~mod_precision->iso_fortran_env
module~mod_structures->module~mod_precision
module~mod_array_helpers
mod_array_helpers
module~mod_structures->module~mod_array_helpers
module~mod_structures->module~mod_constants
module~mod_linalg
mod_linalg
module~mod_structures->module~mod_linalg
module~mod_structures->module~mod_mpi
module~mod_periodic_table
mod_periodic_table
module~mod_structures->module~mod_periodic_table
module~mod_structures_helper
mod_structures_helper
module~mod_structures->module~mod_structures_helper
module~mod_structures->module~mod_throw
module~mod_abstract_cutoff_function->module~mod_precision
module~mod_array_helpers->module~mod_precision
module~mod_array_helpers->module~mod_throw
module~mod_constants->module~mod_precision
module~mod_constants->iso_c_binding
module~mod_cutoff_function_cosine->module~mod_precision
module~mod_cutoff_function_cosine->module~mod_abstract_cutoff_function
module~mod_cutoff_function_cosine->module~mod_constants
module~mod_cutoff_function_hard->module~mod_precision
module~mod_cutoff_function_hard->module~mod_abstract_cutoff_function
module~mod_cutoff_function_hypertangent->module~mod_precision
module~mod_cutoff_function_hypertangent->module~mod_abstract_cutoff_function
module~mod_cutoff_function_hypertangent_approx->module~mod_precision
module~mod_cutoff_function_hypertangent_approx->module~mod_abstract_cutoff_function
module~mod_cutoff_function_null->module~mod_precision
module~mod_cutoff_function_null->module~mod_abstract_cutoff_function
module~mod_cutoff_function_null->module~mod_throw
module~mod_cutoff_function_polynomial->module~mod_precision
module~mod_cutoff_function_polynomial->module~mod_abstract_cutoff_function
module~mod_fastmath
mod_fastmath
module~mod_cutoff_function_polynomial->module~mod_fastmath
module~mod_cutoff_function_vdw->module~mod_precision
module~mod_cutoff_function_vdw->module~mod_abstract_cutoff_function
module~mod_hash->module~mod_precision
module~mod_hash->module~mod_io
module~mod_hash->module~mod_periodic_table
module~mod_io->module~mod_precision
module~mod_io->iso_fortran_env
module~mod_optional_args
mod_optional_args
module~mod_io->module~mod_optional_args
module~mod_linalg->module~mod_precision
module~mod_linalg->module~mod_throw
module~cublas_wrapper
cublas_wrapper
module~mod_linalg->module~cublas_wrapper
module~mod_settings
mod_settings
module~mod_linalg->module~mod_settings
module~mod_mpi->module~mod_precision
mpi_f08
mpi_f08
module~mod_mpi->mpi_f08
module~mod_neighborlist->module~mod_precision
module~mod_neighborlist->module~mod_structures
module~mod_neighborlist->module~mod_io
module~mod_neighborlist->module~mod_mpi
module~mod_neighborlist->module~mod_throw
module~mod_dynamic_double_array
mod_dynamic_double_array
module~mod_neighborlist->module~mod_dynamic_double_array
module~mod_dynamic_int_array
mod_dynamic_int_array
module~mod_neighborlist->module~mod_dynamic_int_array
module~mod_neighbor_grid
mod_neighbor_grid
module~mod_neighborlist->module~mod_neighbor_grid
module~mod_neighborlist_helper
mod_neighborlist_helper
module~mod_neighborlist->module~mod_neighborlist_helper
module~mod_neighborlist->module~mod_settings
module~mod_periodic_table->module~mod_precision
module~mod_periodic_table->module~mod_array_helpers
module~mod_periodic_table->module~mod_constants
module~mod_periodic_table->module~mod_io
module~mod_periodic_table->module~mod_throw
module~mod_sanitize->module~mod_throw
module~mod_structures_helper->module~mod_precision
module~mod_structures_helper->module~mod_linalg
module~mod_throw->module~mod_precision
module~mod_throw->iso_c_binding
module~mod_throw->iso_fortran_env
module~mod_throw->module~mod_io
module~mod_throw->module~mod_mpi
module~mod_sort
mod_sort
module~mod_throw->module~mod_sort
module~mod_timer->module~mod_precision
module~mod_timer->module~mod_io
module~mod_timer->module~mod_throw
ieee_arithmetic
ieee_arithmetic
module~mod_timer->ieee_arithmetic
module~mod_timer->module~mod_optional_args
module~cublas_wrapper->iso_c_binding
module~cublas_wrapper->module~mod_settings
module~mod_dynamic_double_array->module~mod_precision
module~mod_dynamic_double_array->module~mod_throw
module~mod_fastmath->module~mod_precision
module~mod_neighbor_grid->module~mod_precision
module~mod_neighbor_grid->module~mod_mpi
module~mod_neighbor_grid->module~mod_structures_helper
module~mod_neighbor_grid->module~mod_dynamic_int_array
module~mod_neighbor_grid->module~mod_neighborlist_helper
module~mod_neighborlist_helper->module~mod_precision
module~mod_neighborlist_helper->module~mod_linalg
module~mod_neighborlist_helper->module~mod_mpi
module~mod_settings->module~mod_precision
module~mod_settings->module~mod_constants
module~mod_settings->module~mod_io
module~mod_settings->module~mod_periodic_table
module~mod_settings->module~mod_throw
module~mod_cpu_vendor
mod_cpu_vendor
module~mod_settings->module~mod_cpu_vendor
module~mod_sort->module~mod_precision
module~mod_cpu_vendor->iso_c_binding
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Used By
module~~mod_overlap_matrix~~UsedByGraph
module~mod_overlap_matrix
mod_overlap_matrix
module~mod_feature_calculator
mod_feature_calculator
module~mod_feature_calculator->module~mod_overlap_matrix
module~smod_atom_overlap
smod_atom_overlap
module~smod_atom_overlap->module~mod_overlap_matrix
module~smod_cache
smod_cache
module~smod_cache->module~mod_overlap_matrix
module~smod_constructor
smod_constructor
module~smod_constructor->module~mod_overlap_matrix
module~smod_eigenval_and_vectors
smod_eigenval_and_vectors
module~smod_eigenval_and_vectors->module~mod_overlap_matrix
module~smod_first_derivative
smod_first_derivative
module~smod_first_derivative->module~mod_overlap_matrix
module~smod_original
smod_original
module~smod_original->module~mod_overlap_matrix
module~smod_smooth
smod_smooth
module~smod_smooth->module~mod_overlap_matrix
module~mod_calc_atomic_properties
mod_calc_atomic_properties
module~mod_calc_atomic_properties->module~mod_feature_calculator
module~mod_chain_features
mod_chain_features
module~mod_chain_features->module~mod_feature_calculator
module~mod_dataloader_file
mod_dataloader_file
module~mod_dataloader_file->module~mod_feature_calculator
module~mod_memory_estimation
mod_memory_estimation
module~mod_dataloader_file->module~mod_memory_estimation
module~mod_dataset_statistics
mod_dataset_statistics
module~mod_dataset_statistics->module~mod_feature_calculator
module~mod_dataset_statistics->module~mod_dataloader_file
module~mod_dataset_statistics_chi_all_chunks
mod_dataset_statistics_chi_all_chunks
module~mod_dataset_statistics_chi_all_chunks->module~mod_feature_calculator
module~mod_dataset_statistics_chi_all_chunks->module~mod_dataloader_file
module~mod_dataset_statistics_chi_all_chunks->module~mod_dataset_statistics
module~mod_enforce_reading
mod_enforce_reading
module~mod_enforce_reading->module~mod_feature_calculator
module~mod_evaluate_4g_single_structure
mod_evaluate_4g_single_structure
module~mod_evaluate_4g_single_structure->module~mod_feature_calculator
module~mod_evaluate_4g_single_structure->module~mod_chain_features
module~mod_evaluate_electrostatics_3g_single_structure
mod_evaluate_electrostatics_3g_single_structure
module~mod_evaluate_electrostatics_3g_single_structure->module~mod_feature_calculator
module~mod_evaluate_electrostatics_3g_single_structure->module~mod_chain_features
module~mod_feature_calculator_statistics
mod_feature_calculator_statistics
module~mod_feature_calculator_statistics->module~mod_feature_calculator
module~mod_scalingdata
mod_scalingdata
module~mod_feature_calculator_statistics->module~mod_scalingdata
module~mod_feature_map_scaling_all_chunks
mod_feature_map_scaling_all_chunks
module~mod_feature_map_scaling_all_chunks->module~mod_feature_calculator
module~mod_feature_map_scaling_all_chunks->module~mod_dataloader_file
module~mod_feature_map_scaling_all_chunks->module~mod_feature_calculator_statistics
module~mod_precalc_nl_deriv_features_single_chunk
mod_precalc_nl_deriv_features_single_chunk
module~mod_feature_map_scaling_all_chunks->module~mod_precalc_nl_deriv_features_single_chunk
module~mod_prediction_statistics
mod_prediction_statistics
module~mod_feature_map_scaling_all_chunks->module~mod_prediction_statistics
module~mod_structure_batch_iterator
mod_structure_batch_iterator
module~mod_feature_map_scaling_all_chunks->module~mod_structure_batch_iterator
module~mod_featuredata
mod_featuredata
module~mod_featuredata->module~mod_feature_calculator
module~mod_global_features_helper
mod_global_features_helper
module~mod_global_features_helper->module~mod_feature_calculator
module~mod_initialize
mod_initialize
module~mod_initialize->module~mod_feature_calculator
module~mod_two_body
mod_two_body
module~mod_initialize->module~mod_two_body
module~mod_memory_estimation->module~mod_feature_calculator
module~mod_output_files_and_cost
mod_output_files_and_cost
module~mod_output_files_and_cost->module~mod_feature_calculator
module~mod_output_files_and_cost->module~mod_dataloader_file
module~mod_predict_multiple_structures
mod_predict_multiple_structures
module~mod_output_files_and_cost->module~mod_predict_multiple_structures
module~mod_cost_calculator
mod_cost_calculator
module~mod_output_files_and_cost->module~mod_cost_calculator
module~mod_output_files_and_cost_4g_charges
mod_output_files_and_cost_4g_charges
module~mod_output_files_and_cost_4g_charges->module~mod_feature_calculator
module~mod_output_files_and_cost_4g_charges->module~mod_dataloader_file
module~mod_predict_4g_charges_training_qeq_multiple_structures
mod_predict_4g_charges_training_qeq_multiple_structures
module~mod_output_files_and_cost_4g_charges->module~mod_predict_4g_charges_training_qeq_multiple_structures
module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator
module~mod_output_files_and_cost_4g_short_range
mod_output_files_and_cost_4g_short_range
module~mod_output_files_and_cost_4g_short_range->module~mod_feature_calculator
module~mod_output_files_and_cost_4g_short_range->module~mod_dataloader_file
module~mod_predict_4g_short_range_training_qeq_multiple_structures
mod_predict_4g_short_range_training_qeq_multiple_structures
module~mod_output_files_and_cost_4g_short_range->module~mod_predict_4g_short_range_training_qeq_multiple_structures
module~mod_predict_qeq_feature_calculator_multiple_structures
mod_predict_qeq_feature_calculator_multiple_structures
module~mod_output_files_and_cost_4g_short_range->module~mod_predict_qeq_feature_calculator_multiple_structures
module~mod_output_files_and_cost_4g_short_range->module~mod_cost_calculator
module~mod_post_processing_2g_single_structure
mod_post_processing_2g_single_structure
module~mod_post_processing_2g_single_structure->module~mod_feature_calculator
module~mod_post_processing_2g_single_structure->module~mod_chain_features
module~mod_post_processing_3g_single_structure
mod_post_processing_3g_single_structure
module~mod_post_processing_3g_single_structure->module~mod_feature_calculator
module~mod_post_processing_3g_single_structure->module~mod_evaluate_electrostatics_3g_single_structure
module~mod_post_processing_4g_single_structure
mod_post_processing_4g_single_structure
module~mod_post_processing_4g_single_structure->module~mod_feature_calculator
module~mod_post_processing_4g_single_structure->module~mod_evaluate_4g_single_structure
module~mod_post_processing_vdw_hirshfeld_single_structure
mod_post_processing_vdw_hirshfeld_single_structure
module~mod_post_processing_vdw_hirshfeld_single_structure->module~mod_feature_calculator
module~mod_post_processing_vdw_hirshfeld_single_structure->module~mod_chain_features
module~mod_post_processing_wrapper_single_structure
mod_post_processing_wrapper_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_feature_calculator
module~mod_post_processing_wrapper_single_structure->module~mod_calc_atomic_properties
module~mod_post_processing_wrapper_single_structure->module~mod_evaluate_4g_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_global_features_helper
module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_2g_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_3g_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_4g_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_vdw_hirshfeld_single_structure
module~mod_post_processing_wrapper_single_structure->module~mod_two_body
module~mod_precalc_coulomb_matrix_all_chunks
mod_precalc_coulomb_matrix_all_chunks
module~mod_precalc_coulomb_matrix_all_chunks->module~mod_feature_calculator
module~mod_precalc_coulomb_matrix_all_chunks->module~mod_dataloader_file
module~mod_precalc_coulomb_matrix_all_chunks->module~mod_predict_4g_charges_training_qeq_multiple_structures
module~mod_precalc_nl_deriv_features_single_chunk->module~mod_feature_calculator
module~mod_precalc_nl_deriv_features_single_chunk->module~mod_dataloader_file
module~mod_precalc_nl_deriv_features_single_chunk->module~mod_memory_estimation
module~mod_precompute_features_all_chunks
mod_precompute_features_all_chunks
module~mod_precompute_features_all_chunks->module~mod_feature_calculator
module~mod_precompute_features_all_chunks->module~mod_dataloader_file
module~mod_precompute_features_all_chunks->module~mod_feature_calculator_statistics
module~mod_precompute_features_all_chunks->module~mod_featuredata
module~mod_precompute_global_features_all_chunks
mod_precompute_global_features_all_chunks
module~mod_precompute_global_features_all_chunks->module~mod_feature_calculator
module~mod_precompute_global_features_all_chunks->module~mod_dataloader_file
module~mod_precompute_global_features_all_chunks->module~mod_feature_calculator_statistics
module~mod_predict_ee4g_feature_calculator_multiple_structures
mod_predict_ee4g_feature_calculator_multiple_structures
module~mod_precompute_global_features_all_chunks->module~mod_predict_ee4g_feature_calculator_multiple_structures
module~mod_precompute_global_features_all_chunks->module~mod_predict_qeq_feature_calculator_multiple_structures
module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_feature_calculator
module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_structure_batch_iterator
module~mod_predict_4g_no_force_trick_single_structure
mod_predict_4g_no_force_trick_single_structure
module~mod_predict_4g_no_force_trick_single_structure->module~mod_feature_calculator
module~mod_predict_4g_no_force_trick_single_structure->module~mod_calc_atomic_properties
module~mod_predict_4g_no_force_trick_single_structure->module~mod_global_features_helper
module~mod_predict_4g_short_range_training_qeq_single_structure
mod_predict_4g_short_range_training_qeq_single_structure
module~mod_predict_4g_no_force_trick_single_structure->module~mod_predict_4g_short_range_training_qeq_single_structure
module~mod_predict_qeq_feature_calculator_single_structure
mod_predict_qeq_feature_calculator_single_structure
module~mod_predict_4g_no_force_trick_single_structure->module~mod_predict_qeq_feature_calculator_single_structure
module~mod_predict_4g_short_range_training_qeq_multiple_structures->module~mod_feature_calculator
module~mod_predict_4g_short_range_training_qeq_multiple_structures->module~mod_global_features_helper
module~mod_predict_4g_short_range_training_qeq_multiple_structures->module~mod_predict_4g_short_range_training_qeq_single_structure
module~mod_predict_4g_short_range_training_qeq_multiple_structures->module~mod_structure_batch_iterator
module~mod_predict_4g_short_range_training_qeq_single_structure->module~mod_feature_calculator
module~mod_predict_4g_short_range_training_qeq_single_structure->module~mod_post_processing_2g_single_structure
module~mod_predict_all_chunks
mod_predict_all_chunks
module~mod_predict_all_chunks->module~mod_feature_calculator
module~mod_predict_all_chunks->module~mod_dataloader_file
module~mod_predict_all_chunks->module~mod_predict_multiple_structures
module~mod_predict_all_chunks->module~mod_two_body
module~mod_predict_ee4g_feature_calculator_multiple_structures->module~mod_feature_calculator
module~mod_predict_ee4g_feature_calculator_multiple_structures->module~mod_dataloader_file
module~mod_predict_mode
mod_predict_mode
module~mod_predict_mode->module~mod_feature_calculator
module~mod_predict_mode->module~mod_dataloader_file
module~mod_predict_mode->module~mod_enforce_reading
module~mod_predict_mode->module~mod_feature_calculator_statistics
module~mod_predict_mode->module~mod_initialize
module~mod_predict_mode->module~mod_predict_multiple_structures
module~mod_predict_mode->module~mod_two_body
module~mod_write_outfiles
mod_write_outfiles
module~mod_predict_mode->module~mod_write_outfiles
module~mod_predict_multiple_structures->module~mod_feature_calculator
module~mod_predict_multiple_structures->module~mod_post_processing_wrapper_single_structure
module~mod_predict_multiple_structures->module~mod_structure_batch_iterator
module~mod_predict_multiple_structures->module~mod_two_body
module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_feature_calculator
module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_dataloader_file
module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_predict_qeq_feature_calculator_single_structure
module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_structure_batch_iterator
module~mod_predict_qeq_feature_calculator_single_structure->module~mod_feature_calculator
module~mod_predict_qeq_feature_calculator_single_structure->module~mod_chain_features
module~mod_predict_single_structure
mod_predict_single_structure
module~mod_predict_single_structure->module~mod_feature_calculator
module~mod_predict_single_structure->module~mod_calc_atomic_properties
module~mod_predict_single_structure->module~mod_post_processing_wrapper_single_structure
module~mod_predict_single_structure->module~mod_two_body
module~mod_prediction_statistics->module~mod_feature_calculator
module~mod_prediction_statistics->module~mod_calc_atomic_properties
module~mod_runner_interface
mod_runner_interface
module~mod_runner_interface->module~mod_feature_calculator
module~mod_runner_interface->module~mod_two_body
module~mod_runner_interface_bindings
mod_runner_interface_bindings
module~mod_runner_interface_bindings->module~mod_feature_calculator
module~mod_runner_interface_bindings->module~mod_calc_atomic_properties
module~mod_runner_interface_bindings->module~mod_enforce_reading
module~mod_runner_interface_bindings->module~mod_evaluate_4g_single_structure
module~mod_runner_interface_bindings->module~mod_evaluate_electrostatics_3g_single_structure
module~mod_runner_interface_bindings->module~mod_feature_calculator_statistics
module~mod_runner_interface_bindings->module~mod_global_features_helper
module~mod_runner_interface_bindings->module~mod_initialize
module~mod_runner_interface_bindings->module~mod_post_processing_2g_single_structure
module~mod_runner_interface_bindings->module~mod_post_processing_vdw_hirshfeld_single_structure
module~mod_runner_interface_bindings->module~mod_runner_interface
module~mod_runner_interface_bindings->module~mod_two_body
module~mod_scalingdata->module~mod_feature_calculator
module~mod_structure_batch_iterator->module~mod_feature_calculator
module~mod_structure_batch_iterator->module~mod_calc_atomic_properties
module~mod_structure_batch_iterator->module~mod_global_features_helper
module~mod_train_4g_atomic_charges_structure_batch
mod_train_4g_atomic_charges_structure_batch
module~mod_train_4g_atomic_charges_structure_batch->module~mod_feature_calculator
module~mod_train_4g_atomic_charges_structure_batch->module~mod_dataloader_file
module~mod_train_atomic_property_multiple_atoms
mod_train_atomic_property_multiple_atoms
module~mod_train_atomic_property_multiple_atoms->module~mod_feature_calculator
module~mod_train_loop_4g_charges
mod_train_loop_4g_charges
module~mod_train_loop_4g_charges->module~mod_feature_calculator
module~mod_train_loop_4g_charges->module~mod_dataloader_file
module~mod_train_loop_4g_charges->module~mod_initialize
module~mod_train_loop_4g_charges->module~mod_output_files_and_cost_4g_charges
module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch
module~mod_train_loop_4g_charges->module~mod_cost_calculator
module~mod_train_loop_atomic_property
mod_train_loop_atomic_property
module~mod_train_loop_atomic_property->module~mod_feature_calculator
module~mod_train_loop_atomic_property->module~mod_dataloader_file
module~mod_train_loop_atomic_property->module~mod_initialize
module~mod_train_loop_atomic_property->module~mod_output_files_and_cost
module~mod_train_loop_atomic_property->module~mod_train_atomic_property_multiple_atoms
module~mod_train_loop_atomic_property->module~mod_cost_calculator
module~mod_train_loop_short_range
mod_train_loop_short_range
module~mod_train_loop_short_range->module~mod_feature_calculator
module~mod_train_loop_short_range->module~mod_dataloader_file
module~mod_train_loop_short_range->module~mod_global_features_helper
module~mod_train_loop_short_range->module~mod_initialize
module~mod_train_loop_short_range->module~mod_output_files_and_cost
module~mod_train_loop_short_range->module~mod_output_files_and_cost_4g_short_range
module~mod_train_loop_short_range->module~mod_predict_ee4g_feature_calculator_multiple_structures
module~mod_train_loop_short_range->module~mod_predict_qeq_feature_calculator_multiple_structures
module~mod_train_loop_short_range->module~mod_cost_calculator
module~mod_train_energy_multiple_structures
mod_train_energy_multiple_structures
module~mod_train_loop_short_range->module~mod_train_energy_multiple_structures
module~mod_train_forces_multiple_structures
mod_train_forces_multiple_structures
module~mod_train_loop_short_range->module~mod_train_forces_multiple_structures
module~mod_train_mode
mod_train_mode
module~mod_train_mode->module~mod_feature_calculator
module~mod_train_mode->module~mod_dataloader_file
module~mod_train_mode->module~mod_dataset_statistics
module~mod_train_mode->module~mod_dataset_statistics_chi_all_chunks
module~mod_train_mode->module~mod_feature_calculator_statistics
module~mod_train_mode->module~mod_feature_map_scaling_all_chunks
module~mod_train_mode->module~mod_initialize
module~mod_train_mode->module~mod_precalc_coulomb_matrix_all_chunks
module~mod_train_mode->module~mod_precalc_nl_deriv_features_single_chunk
module~mod_train_mode->module~mod_predict_4g_charges_training_qeq_multiple_structures
module~mod_train_mode->module~mod_predict_all_chunks
module~mod_train_mode->module~mod_predict_ee4g_feature_calculator_multiple_structures
module~mod_train_mode->module~mod_predict_qeq_feature_calculator_multiple_structures
module~mod_train_mode->module~mod_train_loop_4g_charges
module~mod_train_mode->module~mod_train_loop_atomic_property
module~mod_train_mode->module~mod_train_loop_short_range
module~mod_train_mode->module~mod_two_body
module~mod_write_outfiles_training
mod_write_outfiles_training
module~mod_train_mode->module~mod_write_outfiles_training
program~runner
RuNNer
program~runner->module~mod_feature_calculator
program~runner->module~mod_dataloader_file
program~runner->module~mod_initialize
program~runner->module~mod_precompute_features_all_chunks
program~runner->module~mod_precompute_global_features_all_chunks
program~runner->module~mod_predict_mode
program~runner->module~mod_train_mode
module~mod_calculate_coulomb_matrix
mod_calculate_coulomb_matrix
program~runner->module~mod_calculate_coulomb_matrix
program~runner->module~mod_two_body
module~mod_calculate_coulomb_matrix->module~mod_dataloader_file
module~mod_cost_calculator->module~mod_dataloader_file
module~mod_cost_calculator->module~mod_write_outfiles_training
module~mod_feature_calc_interface
mod_feature_calc_interface
module~mod_feature_calc_interface->module~mod_runner_interface
module~mod_generic_interface
mod_generic_interface
module~mod_feature_calc_interface->module~mod_generic_interface
module~mod_generic_interface->module~mod_predict_single_structure
module~mod_generic_interface->module~mod_runner_interface
module~mod_lammps_interface
mod_lammps_interface
module~mod_lammps_interface->module~mod_runner_interface
module~mod_lammps_interface->module~mod_runner_interface_bindings
module~mod_train_energy_multiple_structures->module~mod_initialize
module~mod_train_forces_multiple_structures->module~mod_initialize
module~mod_train_forces_multiple_structures->module~mod_train_energy_multiple_structures
module~mod_two_body->module~mod_dataloader_file
module~mod_write_outfiles->module~mod_initialize
module~mod_write_outfiles_training->module~mod_write_outfiles
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Derived Types Summary
Name
Description
AtomicOM
Holds the actual overlap matrix S for each atom as well associated values. During training it...
AbstractOverlapMatrix
The definition of the AbstractOverlapMatrix derived type. This type defines all main rountines...
OverlapMatrix
The original "Overlap Matrix Fingerprint" as proposed by Goedecker and coworkers. This type...
SmoothOverlapMatrix
A "smooth" version of the "Overlap Matrix Fingerprint" This type implements the original idea...
Procedures Summary
Derived Types Details
type AtomicOM
Holds the actual overlap matrix S for each atom as well associated values.
During training it is possible, that we need to call
first_derivative_wrt_one_neighbor for multiple neighbors of the same atom.
In this case, we want to avoid that S and it's eigenvalues and eigenvectors
need to be recomputed. This can be used to cache those intermediate values.
Components
overlap :
real (DP) (dim: (:,:))– The overlap matrix S_ij
om_eigenvec :
real (DP) (dim: (:,:))– The eigenvectors of the overlap matrix S_ij
eigenvalues :
real (DP) (dim: (:))– The eigenvalues of the overlap matrix S_ij
norb :
integer – Number of orbitals for the overlap matrix.
num_relevant_eigenvec :
integer – The number of eigenvectors that are needed to compute the derivatives
of the eigenvalues for this atom. Corresponds to min(num_eval, norb).
lb_evec :
integer – The index of the eigenvector which corresponds to
the smallest relevant eigenvalue
Inherited By
type~~atomicom~~InheritedByGraph
type~atomicom
AtomicOM
type~abstractoverlapmatrix
AbstractOverlapMatrix
type~abstractoverlapmatrix->type~atomicom
atomic_oms
type~overlapmatrix
OverlapMatrix
type~overlapmatrix->type~abstractoverlapmatrix
type~smoothoverlapmatrix
SmoothOverlapMatrix
type~smoothoverlapmatrix->type~abstractoverlapmatrix
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
type AbstractOverlapMatrix
The definition of the AbstractOverlapMatrix derived type.
This type defines all main rountines related to the overlap
matrix itself. Hence it defines routines to compute a matrix containing all
overlaps between all atomic orbitals inside a given cutoff sphere. To keep
them differentiable each overlap is multiplied with the values of a given cutoff
function, centered on a central atom, at the position of the atoms to which
the two atomic orbitials, defining the overlap, belong. It was shown that the
eigenvalues of this matrix, after some postprocessing, can be used as a
descriptor of the local enviornment of the central atom. This type also
defines the necessary routines to compute those eigenvalues and their
derivatives. It also provides the necessary routines to compute the mentioned
derivatives of It also provides an abstract interface for the postprocessing
routine eigenvalues2features, and the two wrapper routines
actual_first_derivative_wrt_one_neighbor and actual_first_derivative_wrt_self,
which do the necessary pre- and postprocessing for the features' derivatives.
Those routines may differ between different flavours of the descriptor and
hence are to be overriden.
Components
name :
character – The name of this feature map type.
– Inherited from AbstractFeatureMap
hash_str :
character – Hash string for sorting feature maps.
– Inherited from AbstractFeatureMap
num_features :
integer – The number of features provided by this feature map.
– Inherited from AbstractFeatureMap
max_num_features :
integer – The number of features provided by all feature maps that contribute
to the same descriptor as this feature map.
– Inherited from AbstractFeatureMap
neighbor_list_idx :
integer – index of the neighbor_list in the neighbor_lists array which is the
correct one for this feature map
– Inherited from AbstractFeatureMap
feat_idx_lowest :
integer – Inherited from AbstractFeatureMap
feat_idx_highest :
integer – Inherited from AbstractFeatureMap
idx_sorted_features :
integer (dim: (:))– Inherited from AbstractFeatureMap
lscale_wrt_tot_min_max_of_all_features :
logical – If true, all features of this feature map will be scaled by the
same factor. Min and max values are the total min and max
values of all features of this feature map.
– Inherited from AbstractFeatureMap
num_s_orb :
integer – number of s-orbitals on each atom
num_p_orb :
integer – number of sets (px, py, pz) of p-orbitals on each atom
num_at_orb :
integer – number of s-orbitals + number of p-orbital (3 * num_p_orb)
num_eval :
integer – The number of eigenvalues/eigenvectors (later called
relevant eigenvalues/vectors) which should be used to compute the features
a_s_orb :
real (DP) (dim: (:,:))– s-orbital coefficients
a_p_orb :
real (DP) (dim: (:,:))– p-orbital coefficients
atomic_oms :
type (AtomicOM ) (dim: (:,:))– Atom specific intermediary results
Type-Bound Procedures
Name
Attributes
Binding
read_from_string
public
⇒ read_from_string
first_derivative_wrt_self
public
⇒ first_derivative_wrt_self
generate_hash
public
⇒ generate_hash
d_value_d_strain
public
⇒ d_value_d_strain
set_idx_sorted_features
public
⇒ set_idx_sorted_features
get_idx_sorted_features
public
⇒ get_idx_sorted_features
set_string
public
⇒ set_string
get_string
public
⇒ get_string
get_string_without_modifier
public
⇒ get_string_without_modifier
get_modifiers_string_and_lhas_modifiers
public
⇒ get_modifiers_string_and_lhas_modifiers
value
public
⇒ value
first_derivative_wrt_self_and_neighbors
public
⇒ first_derivative_wrt_self_and_neighbors
first_derivative_wrt_one_neighbor
public
⇒ first_derivative_wrt_one_neighbor_wrapper
print
public
⇒ print
allocate_cache
public
⇒ allocate_cache
clean_cache
public
⇒ clean_cache
om_and_eigenvectors
private
⇒ om_and_eigenvectors
full_overlap
private
⇒ full_overlap
calc_overlap
private
⇒ calc_overlap
calc_der_overlap_wrt_one_neighbor
private
⇒ calc_der_overlap_wrt_one_neighbor
calc_deriv_overlap
private
⇒ calc_deriv_overlap
derivative_eval_one_neighbor
private
⇒ derivative_eval_one_neighbor
derivative_eval_self
private
⇒ derivative_eval_self
set_up_abstract_om
private
⇒ set_up_abstract_om
eigenvalues2features
private
⇒ eigenvalues2features
actual_first_derivative_wrt_one_neighbor
private
⇒ actual_first_derivative_wrt_one_neighbor
Inherits
type~~abstractoverlapmatrix~~InheritsGraph
type~abstractoverlapmatrix
AbstractOverlapMatrix
type~abstractfeaturemap
AbstractFeatureMap
type~abstractoverlapmatrix->type~abstractfeaturemap
type~atomicom
AtomicOM
type~abstractoverlapmatrix->type~atomicom
atomic_oms
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Inherited By
type~~abstractoverlapmatrix~~InheritedByGraph
type~abstractoverlapmatrix
AbstractOverlapMatrix
type~overlapmatrix
OverlapMatrix
type~overlapmatrix->type~abstractoverlapmatrix
type~smoothoverlapmatrix
SmoothOverlapMatrix
type~smoothoverlapmatrix->type~abstractoverlapmatrix
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
type OverlapMatrix
The original "Overlap Matrix Fingerprint" as proposed by Goedecker
and coworkers.
This type implements the original idea to transform the overlap
matrix' eigenvalues and their derivatives into a usable feature vector.
The main problem is that the number of eigenvalues depend on the number of
orbitals in the cutoff sphere while a feature vector must have a consistent
size. The very original idea was to sort the eigenvalues in decreasing order,
truncate them after a given length if there are to many of fill them up with
zeros until the given length is reached. The sorting leads to kinks in the
function describing the eigenvalues if they are degenerated. This makes it
impossible to compute derivatives at those points.
In this implementation we do sort the eigenvalues increasing order and
potentially fill the head of this list with zeros. This makes it easier to
have a unified interface with other flavours of the omfp and is computationally
less demanding. This obviously does not solve the problem regarding the
indifferentiablity.
Components
name :
character – The name of this feature map type.
– Inherited from AbstractFeatureMap
hash_str :
character – Hash string for sorting feature maps.
– Inherited from AbstractFeatureMap
num_features :
integer – The number of features provided by this feature map.
– Inherited from AbstractFeatureMap
max_num_features :
integer – The number of features provided by all feature maps that contribute
to the same descriptor as this feature map.
– Inherited from AbstractFeatureMap
neighbor_list_idx :
integer – index of the neighbor_list in the neighbor_lists array which is the
correct one for this feature map
– Inherited from AbstractFeatureMap
feat_idx_lowest :
integer – Inherited from AbstractFeatureMap
feat_idx_highest :
integer – Inherited from AbstractFeatureMap
idx_sorted_features :
integer (dim: (:))– Inherited from AbstractFeatureMap
lscale_wrt_tot_min_max_of_all_features :
logical – If true, all features of this feature map will be scaled by the
same factor. Min and max values are the total min and max
values of all features of this feature map.
– Inherited from AbstractFeatureMap
Type-Bound Procedures
Name
Attributes
Binding
generate_hash
public
⇒ generate_hash
d_value_d_strain
public
⇒ d_value_d_strain
set_idx_sorted_features
public
⇒ set_idx_sorted_features
get_idx_sorted_features
public
⇒ get_idx_sorted_features
set_string
public
⇒ set_string
get_string
public
⇒ get_string
get_string_without_modifier
public
⇒ get_string_without_modifier
get_modifiers_string_and_lhas_modifiers
public
⇒ get_modifiers_string_and_lhas_modifiers
value
public
⇒ value
first_derivative_wrt_self_and_neighbors
public
⇒ first_derivative_wrt_self_and_neighbors
first_derivative_wrt_one_neighbor
public
⇒ first_derivative_wrt_one_neighbor_wrapper
print
public
⇒ print
allocate_cache
public
⇒ allocate_cache
clean_cache
public
⇒ clean_cache
eigenvalues2features
private
⇒ eigenvalues2features_om
actual_first_derivative_wrt_one_neighbor
private
⇒ actual_first_derivative_wrt_one_neighbor
read_from_string
public
⇒ read_from_string_overlap_matrix
first_derivative_wrt_self
public
⇒ first_derivative_wrt_self_om
Inherits
type~~overlapmatrix~~InheritsGraph
type~overlapmatrix
OverlapMatrix
type~abstractoverlapmatrix
AbstractOverlapMatrix
type~overlapmatrix->type~abstractoverlapmatrix
type~abstractfeaturemap
AbstractFeatureMap
type~abstractoverlapmatrix->type~abstractfeaturemap
type~atomicom
AtomicOM
type~abstractoverlapmatrix->type~atomicom
atomic_oms
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
type SmoothOverlapMatrix
A "smooth" version of the "Overlap Matrix Fingerprint"
This type implements the original idea to transform the overlap
matrix' eigenvalues and their derivatives into a usable feature vector.
It does not just ensure that the feature vector always has the same length
but also that the features have well defined derivatives.
This is done by defining the jth feature as G_j = sum(sin(F_i * x_j)), where
F_i are the num_eval (choosen by user) largest eigenvalues und x_j is a
unified grid with length grid_length and num_features grid points (both
choosen by user). Around 20 to 100 grid points should be used.
Components
name :
character – The name of this feature map type.
– Inherited from AbstractFeatureMap
hash_str :
character – Hash string for sorting feature maps.
– Inherited from AbstractFeatureMap
num_features :
integer – The number of features provided by this feature map.
– Inherited from AbstractFeatureMap
max_num_features :
integer – The number of features provided by all feature maps that contribute
to the same descriptor as this feature map.
– Inherited from AbstractFeatureMap
neighbor_list_idx :
integer – index of the neighbor_list in the neighbor_lists array which is the
correct one for this feature map
– Inherited from AbstractFeatureMap
feat_idx_lowest :
integer – Inherited from AbstractFeatureMap
feat_idx_highest :
integer – Inherited from AbstractFeatureMap
idx_sorted_features :
integer (dim: (:))– Inherited from AbstractFeatureMap
lscale_wrt_tot_min_max_of_all_features :
logical – If true, all features of this feature map will be scaled by the
same factor. Min and max values are the total min and max
values of all features of this feature map.
– Inherited from AbstractFeatureMap
grid_length :
real (DP)– length of the grid, 15._DP is good choice
grid_spacing :
real (DP)– grid_length / num_features
Type-Bound Procedures
Name
Attributes
Binding
generate_hash
public
⇒ generate_hash
d_value_d_strain
public
⇒ d_value_d_strain
set_idx_sorted_features
public
⇒ set_idx_sorted_features
get_idx_sorted_features
public
⇒ get_idx_sorted_features
set_string
public
⇒ set_string
get_string
public
⇒ get_string
get_string_without_modifier
public
⇒ get_string_without_modifier
get_modifiers_string_and_lhas_modifiers
public
⇒ get_modifiers_string_and_lhas_modifiers
value
public
⇒ value
first_derivative_wrt_self_and_neighbors
public
⇒ first_derivative_wrt_self_and_neighbors
first_derivative_wrt_one_neighbor
public
⇒ first_derivative_wrt_one_neighbor_wrapper
print
public
⇒ print
allocate_cache
public
⇒ allocate_cache
clean_cache
public
⇒ clean_cache
first_derivative_wrt_self
public
⇒ smooth_first_derivative_wrt_self
read_from_string
public
⇒ read_from_string_smooth_overlap_matrix
actual_first_derivative_wrt_one_neighbor
private
⇒ smooth_actual_first_derivative_wrt_one_neighbor
eigenvalues2features
private
⇒ eigenvalues2features_som
calc_smooth_derivatives
private
⇒ calc_smooth_derivatives
Inherits
type~~smoothoverlapmatrix~~InheritsGraph
type~smoothoverlapmatrix
SmoothOverlapMatrix
type~abstractoverlapmatrix
AbstractOverlapMatrix
type~smoothoverlapmatrix->type~abstractoverlapmatrix
type~abstractfeaturemap
AbstractFeatureMap
type~abstractoverlapmatrix->type~abstractfeaturemap
type~atomicom
AtomicOM
type~abstractoverlapmatrix->type~atomicom
atomic_oms
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Interface Details
interface print
interface calc_deriv_overlap
interface calc_overlap
interface set_up_abstract_om
interface value
interface om_and_eigenvectors
interface full_overlap
interface first_derivative_wrt_self_and_neighbors
interface first_derivative_wrt_one_neighbor_wrapper
interface derivative_eval_one_neighbor
interface derivative_eval_self
interface calc_der_overlap_wrt_one_neighbor
interface allocate_cache
interface clean_cache
interface OverlapMatrix
interface constructor_overlap_matrix
interface eigenvalues2features_om
interface actual_first_derivative_wrt_one_neighbor
interface read_from_string_overlap_matrix
interface first_derivative_wrt_self_om
interface SmoothOverlapMatrix
interface constructor_smooth_overlap_matrix
interface eigenvalues2features_som
interface smooth_actual_first_derivative_wrt_one_neighbor
interface calc_smooth_derivatives
interface read_from_string_smooth_overlap_matrix
interface smooth_first_derivative_wrt_self
Procedure Details
function constructor_wrapper_overlap_matrix
function constructor_wrapper_overlap_matrix ( & line, & cutoff_functions &)
Construct a FeatureMapPtr object containing a reference to a
OverlapMatrix object.
Note: This can not be put in a submodule due to a compiler bug in
gfortran 9.x
Arguments
line :
character [in]– line defining the om, read from input.nn
cutoff_functions :
type (CutoffFunctionPtr ) (dim: (:)) [in]
Called By
proc~~constructor_wrapper_overlap_matrix~~CalledByGraph
proc~constructor_wrapper_overlap_matrix
mod_overlap_matrix::constructor_wrapper_overlap_matrix
interface~overlapmatrix
mod_overlap_matrix::OverlapMatrix
interface~overlapmatrix->proc~constructor_wrapper_overlap_matrix
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
function constructor_wrapper_smooth_overlap_matrix
function constructor_wrapper_smooth_overlap_matrix ( & line, & cutoff_functions &)
Construct a FeatureMapPtr object containing a reference to a
SmoothOverlapMatrix object.
Note: This can not be put in a submodule due to a compiler bug in
gfortran 9.x
Arguments
line :
character [in]– line defining the om, read from input.nn
cutoff_functions :
type (CutoffFunctionPtr ) (dim: (:)) [in]
Called By
proc~~constructor_wrapper_smooth_overlap_matrix~~CalledByGraph
proc~constructor_wrapper_smooth_overlap_matrix
mod_overlap_matrix::constructor_wrapper_smooth_overlap_matrix
interface~smoothoverlapmatrix
mod_overlap_matrix::SmoothOverlapMatrix
interface~smoothoverlapmatrix->proc~constructor_wrapper_smooth_overlap_matrix
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.