Skip to content

mod_train_loop_4g_charges

Lines: 191 | Visibility: private

Provides routines for training atomic charges using a 4th-generation High-Dimensional Neural Network Potential (4G-HDNNP) framework.

This module contains the main driver routine for the charge training process (train_loop_atomic_charges_4g), which orchestrates the training over multiple epochs. It employs a charge equilibration (QEq) method where atomic electronegativities and optional chemical hardnesses are predicted by neural network models.

Dependencies

Uses

module~~mod_train_loop_4g_charges~~UsesGraph module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_abstract_property_model mod_abstract_property_model module~mod_train_loop_4g_charges->module~mod_abstract_property_model module~mod_abstractoptimizer mod_abstractoptimizer module~mod_train_loop_4g_charges->module~mod_abstractoptimizer module~mod_cost_calculator mod_cost_calculator module~mod_train_loop_4g_charges->module~mod_cost_calculator module~mod_cost_epoch mod_cost_epoch module~mod_train_loop_4g_charges->module~mod_cost_epoch module~mod_cutoff_function mod_cutoff_function module~mod_train_loop_4g_charges->module~mod_cutoff_function module~mod_data_container mod_data_container module~mod_train_loop_4g_charges->module~mod_data_container module~mod_dataloader_file mod_dataloader_file module~mod_train_loop_4g_charges->module~mod_dataloader_file module~mod_dataset_storage mod_dataset_storage module~mod_train_loop_4g_charges->module~mod_dataset_storage module~mod_decorations mod_decorations module~mod_train_loop_4g_charges->module~mod_decorations module~mod_feature_calculator mod_feature_calculator module~mod_train_loop_4g_charges->module~mod_feature_calculator module~mod_initialize mod_initialize module~mod_train_loop_4g_charges->module~mod_initialize module~mod_io mod_io module~mod_train_loop_4g_charges->module~mod_io module~mod_loss_abstract mod_loss_abstract module~mod_train_loop_4g_charges->module~mod_loss_abstract module~mod_mpi mod_mpi module~mod_train_loop_4g_charges->module~mod_mpi module~mod_output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges module~mod_train_loop_4g_charges->module~mod_output_files_and_cost_4g_charges module~mod_precision mod_precision module~mod_train_loop_4g_charges->module~mod_precision module~mod_settings mod_settings module~mod_train_loop_4g_charges->module~mod_settings module~mod_signal_handler mod_signal_handler module~mod_train_loop_4g_charges->module~mod_signal_handler module~mod_structures mod_structures module~mod_train_loop_4g_charges->module~mod_structures module~mod_throw mod_throw module~mod_train_loop_4g_charges->module~mod_throw module~mod_timer mod_timer module~mod_train_loop_4g_charges->module~mod_timer module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch module~mod_train_helpers mod_train_helpers module~mod_train_loop_4g_charges->module~mod_train_helpers module~mod_training_charge_equilibration mod_training_charge_equilibration module~mod_train_loop_4g_charges->module~mod_training_charge_equilibration module~mod_abstract_property_model->module~mod_io module~mod_abstract_property_model->module~mod_precision module~mod_abstract_property_model->module~mod_settings module~mod_abstract_property_model->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_abstract_property_model->module~mod_array_helpers module~mod_initialize_array mod_initialize_array module~mod_abstract_property_model->module~mod_initialize_array module~mod_random mod_random module~mod_abstract_property_model->module~mod_random module~mod_abstractoptimizer->module~mod_io module~mod_abstractoptimizer->module~mod_loss_abstract module~mod_abstractoptimizer->module~mod_mpi module~mod_abstractoptimizer->module~mod_precision module~mod_abstractoptimizer->module~mod_settings module~mod_abstractoptimizer->module~mod_throw module~mod_global_warning mod_global_warning module~mod_abstractoptimizer->module~mod_global_warning module~mod_gradient_clipping mod_gradient_clipping module~mod_abstractoptimizer->module~mod_gradient_clipping module~mod_nan_check mod_nan_check module~mod_abstractoptimizer->module~mod_nan_check module~mod_cost_calculator->module~mod_abstract_property_model module~mod_cost_calculator->module~mod_cost_epoch module~mod_cost_calculator->module~mod_dataloader_file module~mod_cost_calculator->module~mod_dataset_storage module~mod_cost_calculator->module~mod_decorations module~mod_cost_calculator->module~mod_io module~mod_cost_calculator->module~mod_loss_abstract module~mod_cost_calculator->module~mod_mpi module~mod_cost_calculator->module~mod_precision module~mod_cost_calculator->module~mod_throw module~mod_cost_calculator->module~mod_timer module~mod_constants mod_constants module~mod_cost_calculator->module~mod_constants module~mod_dynamic_int_array mod_dynamic_int_array module~mod_cost_calculator->module~mod_dynamic_int_array module~mod_optional_args mod_optional_args module~mod_cost_calculator->module~mod_optional_args module~mod_path mod_path module~mod_cost_calculator->module~mod_path module~mod_periodic_table mod_periodic_table module~mod_cost_calculator->module~mod_periodic_table module~mod_write_outfiles_training mod_write_outfiles_training module~mod_cost_calculator->module~mod_write_outfiles_training module~mod_cost_epoch->module~mod_dataset_storage module~mod_cost_epoch->module~mod_decorations module~mod_cost_epoch->module~mod_io module~mod_cost_epoch->module~mod_loss_abstract module~mod_cost_epoch->module~mod_mpi module~mod_cost_epoch->module~mod_precision module~mod_cost_epoch->module~mod_throw module~mod_cost_epoch->module~mod_timer ieee_arithmetic ieee_arithmetic module~mod_cost_epoch->ieee_arithmetic mod_property_list mod_property_list module~mod_cost_epoch->mod_property_list module~mod_committee_helper mod_committee_helper module~mod_cost_epoch->module~mod_committee_helper module~mod_cost_epoch->module~mod_periodic_table module~mod_set_integer mod_set_integer module~mod_cost_epoch->module~mod_set_integer module~mod_cutoff_function->module~mod_io module~mod_cutoff_function->module~mod_precision module~mod_cutoff_function->module~mod_throw 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_data_container->module~mod_io module~mod_data_container->module~mod_precision module~mod_data_container->module~mod_throw module~mod_dataloader_file->module~mod_cutoff_function module~mod_dataloader_file->module~mod_feature_calculator module~mod_dataloader_file->module~mod_io module~mod_dataloader_file->module~mod_mpi module~mod_dataloader_file->module~mod_precision module~mod_dataloader_file->module~mod_structures module~mod_dataloader_file->module~mod_throw module~mod_abstract_structure_data_file mod_abstract_structure_data_file module~mod_dataloader_file->module~mod_abstract_structure_data_file module~mod_databatcher mod_databatcher module~mod_dataloader_file->module~mod_databatcher module~mod_feature_map_neighborlist mod_feature_map_neighborlist module~mod_dataloader_file->module~mod_feature_map_neighborlist module~mod_memory_estimation mod_memory_estimation module~mod_dataloader_file->module~mod_memory_estimation module~mod_dataloader_file->module~mod_optional_args module~mod_dataloader_file->module~mod_periodic_table module~mod_split_and_assign mod_split_and_assign module~mod_dataloader_file->module~mod_split_and_assign module~mod_dataset_storage->module~mod_mpi module~mod_dataset_storage->mod_property_list module~mod_sort mod_sort module~mod_dataset_storage->module~mod_sort module~mod_storage_container mod_storage_container module~mod_dataset_storage->module~mod_storage_container module~mod_decorations->module~mod_io module~mod_decorations->module~mod_precision module~mod_decorations->module~mod_throw module~mod_feature_calculator->module~mod_cutoff_function module~mod_feature_calculator->module~mod_data_container module~mod_feature_calculator->module~mod_io module~mod_feature_calculator->module~mod_mpi module~mod_feature_calculator->module~mod_precision module~mod_feature_calculator->module~mod_settings module~mod_feature_calculator->module~mod_structures module~mod_feature_calculator->module~mod_throw module~mod_feature_calculator->module~mod_timer module~mod_angular_symmetry_function_3 mod_angular_symmetry_function_3 module~mod_feature_calculator->module~mod_angular_symmetry_function_3 module~mod_angular_symmetry_function_8 mod_angular_symmetry_function_8 module~mod_feature_calculator->module~mod_angular_symmetry_function_8 module~mod_angular_symmetry_function_9 mod_angular_symmetry_function_9 module~mod_feature_calculator->module~mod_angular_symmetry_function_9 module~mod_feature_calculator->module~mod_array_helpers module~mod_atomic_descriptor mod_atomic_descriptor module~mod_feature_calculator->module~mod_atomic_descriptor module~mod_element mod_element module~mod_feature_calculator->module~mod_element module~mod_extrapolation_warning mod_extrapolation_warning module~mod_feature_calculator->module~mod_extrapolation_warning module~mod_feature_map mod_feature_map module~mod_feature_calculator->module~mod_feature_map module~mod_feature_calculator->module~mod_feature_map_neighborlist module~mod_feature_calculator->module~mod_optional_args module~mod_overlap_matrix mod_overlap_matrix module~mod_feature_calculator->module~mod_overlap_matrix module~mod_feature_calculator->module~mod_path module~mod_feature_calculator->module~mod_periodic_table module~mod_radial_symmetry_function_1 mod_radial_symmetry_function_1 module~mod_feature_calculator->module~mod_radial_symmetry_function_1 module~mod_radial_symmetry_function_2 mod_radial_symmetry_function_2 module~mod_feature_calculator->module~mod_radial_symmetry_function_2 module~mod_feature_calculator->module~mod_set_integer module~mod_initialize->module~mod_abstract_property_model module~mod_initialize->module~mod_abstractoptimizer module~mod_initialize->module~mod_cutoff_function module~mod_initialize->module~mod_dataset_storage module~mod_initialize->module~mod_feature_calculator module~mod_initialize->module~mod_io module~mod_initialize->module~mod_mpi module~mod_initialize->module~mod_settings module~mod_initialize->module~mod_throw module~mod_abstract_charge_equilibration mod_abstract_charge_equilibration module~mod_initialize->module~mod_abstract_charge_equilibration module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_initialize->module~mod_abstract_electrostatics module~mod_abstract_property_list mod_abstract_property_list module~mod_initialize->module~mod_abstract_property_list module~mod_initialize->module~mod_committee_helper module~mod_direct_charge_equilibration mod_direct_charge_equilibration module~mod_initialize->module~mod_direct_charge_equilibration module~mod_initialize->module~mod_dynamic_int_array module~mod_ee4g_feature_calculator mod_ee4g_feature_calculator module~mod_initialize->module~mod_ee4g_feature_calculator module~mod_initialize->module~mod_element module~mod_elemental_property_model mod_elemental_property_model module~mod_initialize->module~mod_elemental_property_model module~mod_ewald_summation mod_ewald_summation module~mod_initialize->module~mod_ewald_summation module~mod_hdnn mod_hdnn module~mod_initialize->module~mod_hdnn module~mod_hirshfeld_vdw mod_hirshfeld_vdw module~mod_initialize->module~mod_hirshfeld_vdw module~mod_inputnn mod_inputnn module~mod_initialize->module~mod_inputnn module~mod_iterative_charge_equilibration_cg mod_iterative_charge_equilibration_cg module~mod_initialize->module~mod_iterative_charge_equilibration_cg module~mod_iterative_charge_equilibration_sqnm mod_iterative_charge_equilibration_sqnm module~mod_initialize->module~mod_iterative_charge_equilibration_sqnm module~mod_lossfunctions mod_lossfunctions module~mod_initialize->module~mod_lossfunctions module~mod_optimizers mod_optimizers module~mod_initialize->module~mod_optimizers module~mod_pair_electrostatics mod_pair_electrostatics module~mod_initialize->module~mod_pair_electrostatics module~mod_initialize->module~mod_path module~mod_initialize->module~mod_periodic_table module~mod_pppm mod_pppm module~mod_initialize->module~mod_pppm module~mod_pw mod_pw module~mod_initialize->module~mod_pw module~mod_qeq_feature_calculator mod_qeq_feature_calculator module~mod_initialize->module~mod_qeq_feature_calculator module~mod_initialize->module~mod_set_integer module~mod_string mod_string module~mod_initialize->module~mod_string module~mod_two_body mod_two_body module~mod_initialize->module~mod_two_body module~mod_write_headers mod_write_headers module~mod_initialize->module~mod_write_headers module~mod_io->module~mod_precision iso_fortran_env iso_fortran_env module~mod_io->iso_fortran_env module~mod_io->module~mod_optional_args module~mod_loss_abstract->module~mod_mpi module~mod_loss_abstract->module~mod_precision module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_output_files_and_cost_4g_charges->module~mod_abstract_property_model module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator module~mod_output_files_and_cost_4g_charges->module~mod_cutoff_function module~mod_output_files_and_cost_4g_charges->module~mod_data_container module~mod_output_files_and_cost_4g_charges->module~mod_dataloader_file module~mod_output_files_and_cost_4g_charges->module~mod_dataset_storage module~mod_output_files_and_cost_4g_charges->module~mod_feature_calculator module~mod_output_files_and_cost_4g_charges->module~mod_mpi module~mod_output_files_and_cost_4g_charges->module~mod_settings module~mod_output_files_and_cost_4g_charges->module~mod_training_charge_equilibration 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 iso_c_binding iso_c_binding module~mod_precision->iso_c_binding module~mod_precision->iso_fortran_env module~mod_settings->module~mod_io module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_settings->module~mod_periodic_table module~mod_signal_handler->module~mod_mpi module~mod_signal_handler->module~mod_throw module~mod_signal_handler->module~mod_timer module~mod_signal_handler->iso_c_binding module~mod_signal_handler->module~mod_global_warning module~mod_signal_handler->module~mod_write_headers module~mod_structures->module~mod_mpi module~mod_structures->module~mod_precision module~mod_structures->module~mod_throw 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_periodic_table module~mod_structures_helper mod_structures_helper module~mod_structures->module~mod_structures_helper module~mod_throw->module~mod_io module~mod_throw->module~mod_mpi module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_throw->module~mod_sort module~mod_timer->module~mod_io module~mod_timer->module~mod_precision module~mod_timer->module~mod_throw module~mod_timer->ieee_arithmetic module~mod_timer->module~mod_optional_args module~mod_train_4g_atomic_charges_structure_batch->module~mod_abstract_property_model module~mod_train_4g_atomic_charges_structure_batch->module~mod_abstractoptimizer module~mod_train_4g_atomic_charges_structure_batch->module~mod_data_container module~mod_train_4g_atomic_charges_structure_batch->module~mod_dataloader_file module~mod_train_4g_atomic_charges_structure_batch->module~mod_feature_calculator module~mod_train_4g_atomic_charges_structure_batch->module~mod_loss_abstract module~mod_train_4g_atomic_charges_structure_batch->module~mod_mpi module~mod_train_4g_atomic_charges_structure_batch->module~mod_precision module~mod_train_4g_atomic_charges_structure_batch->module~mod_settings module~mod_train_4g_atomic_charges_structure_batch->module~mod_throw module~mod_train_4g_atomic_charges_structure_batch->module~mod_timer module~mod_train_4g_atomic_charges_structure_batch->module~mod_train_helpers module~mod_train_4g_atomic_charges_structure_batch->module~mod_training_charge_equilibration module~mod_create_batches mod_create_batches module~mod_train_4g_atomic_charges_structure_batch->module~mod_create_batches module~mod_forward_backward_batched mod_forward_backward_batched module~mod_train_4g_atomic_charges_structure_batch->module~mod_forward_backward_batched module~mod_forward_batched mod_forward_batched module~mod_train_4g_atomic_charges_structure_batch->module~mod_forward_batched module~mod_get_max_num_output_properties mod_get_max_num_output_properties module~mod_train_4g_atomic_charges_structure_batch->module~mod_get_max_num_output_properties module~mod_train_4g_atomic_charges_structure_batch->module~mod_periodic_table module~mod_train_helpers->module~mod_abstract_property_model module~mod_train_helpers->module~mod_abstractoptimizer module~mod_train_helpers->module~mod_decorations module~mod_train_helpers->module~mod_io module~mod_train_helpers->module~mod_loss_abstract module~mod_train_helpers->module~mod_mpi module~mod_train_helpers->module~mod_precision module~mod_train_helpers->module~mod_settings module~mod_train_helpers->module~mod_throw module~mod_train_helpers->module~mod_global_warning module~mod_train_helpers->module~mod_periodic_table module~mod_training_charge_equilibration->module~mod_data_container module~mod_training_charge_equilibration->module~mod_precision module~mod_training_charge_equilibration->module~mod_structures module~mod_training_charge_equilibration->module~mod_abstract_electrostatics module~mod_cross_matrix mod_cross_matrix module~mod_training_charge_equilibration->module~mod_cross_matrix module~mod_training_charge_equilibration->module~mod_ewald_summation module~mod_training_charge_equilibration->module~mod_linalg module~mod_training_charge_equilibration->module~mod_optional_args module~mod_training_charge_equilibration->module~mod_pair_electrostatics module~mod_abstract_charge_equilibration->module~mod_precision module~mod_abstract_charge_equilibration->module~mod_structures module~mod_abstract_charge_equilibration->module~mod_abstract_electrostatics module~mod_abstract_charge_equilibration->module~mod_periodic_table module~mod_abstract_cutoff_function->module~mod_precision module~mod_abstract_electrostatics->module~mod_precision module~mod_abstract_electrostatics->module~mod_structures module~mod_abstract_property_list->module~mod_mpi module~mod_abstract_property_list->module~mod_throw module~mod_abstract_property_list->module~mod_dynamic_int_array module~mod_abstract_property_list->module~mod_optional_args module~mod_abstract_property_list->module~mod_string module~mod_dynamic_int_array_2d mod_dynamic_int_array_2d module~mod_abstract_property_list->module~mod_dynamic_int_array_2d module~mod_dynamic_string_array mod_dynamic_string_array module~mod_abstract_property_list->module~mod_dynamic_string_array module~mod_abstract_structure_data_file->module~mod_dataset_storage module~mod_abstract_structure_data_file->module~mod_mpi module~mod_abstract_structure_data_file->module~mod_structures module~mod_abstract_structure_data_file->module~mod_periodic_table module~mod_genericfile mod_genericfile module~mod_abstract_structure_data_file->module~mod_genericfile module~mod_angular_symmetry_function_3->module~mod_cutoff_function module~mod_angular_symmetry_function_3->module~mod_precision module~mod_angular_symmetry_function_3->module~mod_structures module~mod_angular_symmetry_function_3->module~mod_throw module~mod_angular_symmetry_function_3->module~mod_constants module~mod_angular_symmetry_function_3->module~mod_feature_map module~mod_angular_symmetry_function_3->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_3->module~mod_periodic_table module~mod_abstract_angular_symmetry_function mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_3->module~mod_abstract_angular_symmetry_function module~mod_abstract_symmetry_function mod_abstract_symmetry_function module~mod_angular_symmetry_function_3->module~mod_abstract_symmetry_function module~mod_fastmath mod_fastmath module~mod_angular_symmetry_function_3->module~mod_fastmath module~mod_hash mod_hash module~mod_angular_symmetry_function_3->module~mod_hash module~mod_angular_symmetry_function_8->module~mod_cutoff_function module~mod_angular_symmetry_function_8->module~mod_precision module~mod_angular_symmetry_function_8->module~mod_structures module~mod_angular_symmetry_function_8->module~mod_throw module~mod_angular_symmetry_function_8->module~mod_constants module~mod_angular_symmetry_function_8->module~mod_feature_map module~mod_angular_symmetry_function_8->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_8->module~mod_periodic_table module~mod_angular_symmetry_function_8->module~mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_8->module~mod_abstract_symmetry_function module~mod_angular_symmetry_function_8->module~mod_hash module~mod_angular_symmetry_function_9->module~mod_cutoff_function module~mod_angular_symmetry_function_9->module~mod_precision module~mod_angular_symmetry_function_9->module~mod_structures module~mod_angular_symmetry_function_9->module~mod_throw module~mod_angular_symmetry_function_9->module~mod_constants module~mod_angular_symmetry_function_9->module~mod_feature_map module~mod_angular_symmetry_function_9->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_9->module~mod_periodic_table module~mod_angular_symmetry_function_9->module~mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_9->module~mod_abstract_symmetry_function module~mod_angular_symmetry_function_9->module~mod_fastmath module~mod_angular_symmetry_function_9->module~mod_hash module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_atomic_descriptor->module~mod_precision module~mod_atomic_descriptor->module~mod_structures module~mod_atomic_descriptor->module~mod_element module~mod_committee_helper->module~mod_io module~mod_committee_helper->module~mod_settings module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_cpu_vendor->iso_c_binding module~mod_create_batches->module~mod_mpi module~mod_create_batches->module~mod_precision module~mod_create_batches->module~mod_databatcher module~mod_create_batches->module~mod_periodic_table module~mod_cross_matrix->module~mod_precision module~mod_cross_matrix->module~mod_linalg 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_throw module~mod_cutoff_function_null->module~mod_abstract_cutoff_function module~mod_cutoff_function_polynomial->module~mod_precision module~mod_cutoff_function_polynomial->module~mod_abstract_cutoff_function 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_databatcher->module~mod_mpi module~mod_databatcher->module~mod_precision module~mod_databatcher->module~mod_throw module~mod_databatcher->module~mod_array_helpers module~mod_databatcher->module~mod_random module~mod_direct_charge_equilibration->module~mod_precision module~mod_direct_charge_equilibration->module~mod_abstract_charge_equilibration module~mod_direct_charge_equilibration->module~mod_abstract_electrostatics module~mod_direct_charge_equilibration->module~mod_linalg module~mod_ee4g_feature_calculator->module~mod_io module~mod_ee4g_feature_calculator->module~mod_precision module~mod_ee4g_feature_calculator->module~mod_settings module~mod_ee4g_feature_calculator->module~mod_structures module~mod_ee4g_feature_calculator->module~mod_throw module~mod_ee4g_feature_calculator->module~mod_constants module~mod_ee4g_feature_calculator->module~mod_feature_map_neighborlist module~mod_ee4g_feature_calculator->module~mod_inputnn module~mod_ee4g_feature_calculator->module~mod_path module~mod_ee4g_feature_calculator->module~mod_periodic_table module~mod_ee4g_feature_calculator->module~mod_sort module~mod_global_feature_calculator mod_global_feature_calculator module~mod_ee4g_feature_calculator->module~mod_global_feature_calculator module~mod_outer_product mod_outer_product module~mod_ee4g_feature_calculator->module~mod_outer_product module~mod_element->module~mod_cutoff_function module~mod_element->module~mod_decorations module~mod_element->module~mod_io module~mod_element->module~mod_mpi module~mod_element->module~mod_precision module~mod_element->module~mod_throw module~mod_element->module~mod_angular_symmetry_function_3 module~mod_element->module~mod_angular_symmetry_function_9 module~mod_element->module~mod_constants module~mod_element->module~mod_feature_map module~mod_element->module~mod_optional_args module~mod_element->module~mod_periodic_table module~mod_element->module~mod_radial_symmetry_function_2 module~mod_element->module~mod_set_integer module~mod_arrays_init mod_arrays_init module~mod_element->module~mod_arrays_init module~mod_dubious_feature_map_handler mod_dubious_feature_map_handler module~mod_element->module~mod_dubious_feature_map_handler module~mod_element->module~mod_hash module~mod_set_character mod_set_character module~mod_element->module~mod_set_character module~mod_elemental_property_model->module~mod_abstract_property_model module~mod_elemental_property_model->module~mod_decorations module~mod_elemental_property_model->module~mod_io module~mod_elemental_property_model->module~mod_precision module~mod_elemental_property_model->module~mod_throw module~mod_elemental_property_model->module~mod_array_helpers module~mod_elemental_property_model->module~mod_initialize_array module~mod_elemental_property_model->module~mod_periodic_table module~mod_elemental_property_model->module~mod_random module~mod_activationfunctions mod_activationfunctions module~mod_elemental_property_model->module~mod_activationfunctions module~mod_ewald_summation->module~mod_precision module~mod_ewald_summation->module~mod_abstract_electrostatics module~mod_ewald_summation->module~mod_constants module~mod_ewald_summation->module~mod_linalg module~mod_ewald_summation->module~mod_pair_electrostatics module~mod_neighbor_grid mod_neighbor_grid module~mod_ewald_summation->module~mod_neighbor_grid module~mod_neighborlist_helper mod_neighborlist_helper module~mod_ewald_summation->module~mod_neighborlist_helper module~mod_ewald_summation->module~mod_outer_product module~mod_extrapolation_warning->module~mod_precision module~mod_extrapolation_warning->module~mod_throw module~mod_extrapolation_warning->iso_c_binding module~mod_extrapolation_warning->module~mod_periodic_table module~mod_abstract_warning mod_abstract_warning module~mod_extrapolation_warning->module~mod_abstract_warning module~mod_feature_map->module~mod_cutoff_function module~mod_feature_map->module~mod_io module~mod_feature_map->module~mod_precision module~mod_feature_map->module~mod_structures module~mod_feature_map->module~mod_throw module~mod_feature_map->module~mod_feature_map_neighborlist module~mod_feature_map->module~mod_hash module~mod_sanitize mod_sanitize module~mod_feature_map->module~mod_sanitize module~mod_feature_map_neighborlist->module~mod_io module~mod_feature_map_neighborlist->module~mod_mpi module~mod_feature_map_neighborlist->module~mod_precision module~mod_feature_map_neighborlist->module~mod_structures module~mod_feature_map_neighborlist->module~mod_throw module~mod_feature_map_neighborlist->module~mod_timer module~mod_feature_map_neighborlist->module~mod_abstract_cutoff_function module~mod_feature_map_neighborlist->module~mod_constants module~mod_neighborlist mod_neighborlist module~mod_feature_map_neighborlist->module~mod_neighborlist module~mod_forward_backward_batched->module~mod_abstract_property_model module~mod_forward_backward_batched->module~mod_mpi module~mod_forward_backward_batched->module~mod_precision module~mod_forward_backward_batched->module~mod_throw module~mod_forward_backward_batched->module~mod_databatcher module~mod_forward_backward_batched->module~mod_periodic_table module~mod_forward_batched->module~mod_abstract_property_model module~mod_forward_batched->module~mod_mpi module~mod_forward_batched->module~mod_precision module~mod_forward_batched->module~mod_throw module~mod_forward_batched->module~mod_databatcher module~mod_forward_batched->module~mod_periodic_table module~mod_get_max_num_output_properties->module~mod_abstract_property_model module~mod_get_max_num_output_properties->module~mod_mpi module~mod_global_warning->module~mod_io module~mod_global_warning->module~mod_throw module~mod_global_warning->module~mod_abstract_warning module~mod_gradient_clipping->module~mod_precision module~mod_gradient_clipping->module~mod_settings module~mod_hdnn->module~mod_abstract_property_model module~mod_hdnn->module~mod_decorations module~mod_hdnn->module~mod_io module~mod_hdnn->module~mod_precision module~mod_hdnn->module~mod_settings module~mod_hdnn->module~mod_throw module~mod_hdnn->module~mod_array_helpers module~mod_hdnn->module~mod_global_warning module~mod_hdnn->module~mod_initialize_array module~mod_hdnn->module~mod_periodic_table module~mod_hdnn->module~mod_random module~mod_neural_network mod_neural_network module~mod_hdnn->module~mod_neural_network module~mod_hirshfeld_vdw->module~mod_io module~mod_hirshfeld_vdw->module~mod_mpi module~mod_hirshfeld_vdw->module~mod_precision module~mod_hirshfeld_vdw->module~mod_throw module~mod_hirshfeld_vdw->module~mod_feature_map_neighborlist module~mod_hirshfeld_vdw->module~mod_periodic_table module~mod_initialize_array->module~mod_io module~mod_initialize_array->module~mod_mpi module~mod_initialize_array->module~mod_precision module~mod_initialize_array->module~mod_throw module~mod_initialize_array->module~mod_random module~mod_parameter_file mod_parameter_file module~mod_initialize_array->module~mod_parameter_file module~mod_inputnn->module~mod_io module~mod_inputnn->module~mod_mpi module~mod_inputnn->module~mod_throw module~mod_abstract_broadcast_file mod_abstract_broadcast_file module~mod_inputnn->module~mod_abstract_broadcast_file module~mod_iterative_charge_equilibration_cg->module~mod_precision module~mod_abstract_iterative_charge_equilibration mod_abstract_iterative_charge_equilibration module~mod_iterative_charge_equilibration_cg->module~mod_abstract_iterative_charge_equilibration module~mod_iterative_charge_equilibration_sqnm->module~mod_precision module~mod_iterative_charge_equilibration_sqnm->module~mod_abstract_iterative_charge_equilibration module~sqnm sqnm module~mod_iterative_charge_equilibration_sqnm->module~sqnm module~mod_linalg->module~mod_precision module~mod_linalg->module~mod_settings module~mod_linalg->module~mod_throw module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_lossfunctions->module~mod_io module~mod_lossfunctions->module~mod_loss_abstract module~mod_lossfunctions->module~mod_throw module~mod_loss_mae mod_loss_mae module~mod_lossfunctions->module~mod_loss_mae module~mod_loss_mse mod_loss_mse module~mod_lossfunctions->module~mod_loss_mse module~mod_loss_mse_torch mod_loss_mse_torch module~mod_lossfunctions->module~mod_loss_mse_torch module~mod_loss_rmse mod_loss_rmse module~mod_lossfunctions->module~mod_loss_rmse module~mod_memory_estimation->module~mod_feature_calculator module~mod_memory_estimation->module~mod_io module~mod_memory_estimation->module~mod_mpi module~mod_memory_estimation->module~mod_precision module~mod_memory_estimation->module~mod_settings module~mod_memory_estimation->module~mod_structures module~mod_memory_estimation->module~mod_throw module~mod_memory_estimation->module~mod_feature_map_neighborlist module~mod_memory_estimation->module~mod_periodic_table module~mod_table mod_table module~mod_memory_estimation->module~mod_table module~mod_nan_check->module~mod_io module~mod_nan_check->module~mod_precision module~mod_nan_check->module~mod_throw module~mod_nan_check->ieee_arithmetic module~mod_optimizers->module~mod_abstractoptimizer module~mod_optimizers->module~mod_io module~mod_optimizers->module~mod_throw module~mod_adam mod_adam module~mod_optimizers->module~mod_adam module~mod_gradient_descent mod_gradient_descent module~mod_optimizers->module~mod_gradient_descent module~mod_kalman_filter mod_kalman_filter module~mod_optimizers->module~mod_kalman_filter module~mod_kalman_filter_std mod_kalman_filter_std module~mod_optimizers->module~mod_kalman_filter_std module~mod_nada_opt mod_nada_opt module~mod_optimizers->module~mod_nada_opt module~mod_stochastic_gradient_descent mod_stochastic_gradient_descent module~mod_optimizers->module~mod_stochastic_gradient_descent module~mod_overlap_matrix->module~mod_cutoff_function module~mod_overlap_matrix->module~mod_precision module~mod_overlap_matrix->module~mod_structures module~mod_overlap_matrix->module~mod_feature_map module~mod_overlap_matrix->module~mod_feature_map_neighborlist module~mod_pair_electrostatics->module~mod_precision module~mod_pair_electrostatics->module~mod_throw module~mod_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_constants module~mod_path->module~mod_io module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_array_helpers module~mod_periodic_table->module~mod_constants module~mod_pppm->module~mod_precision module~mod_pppm->module~mod_throw module~mod_pppm->module~mod_abstract_electrostatics module~mod_pppm->module~mod_ewald_summation module~mod_pppm->module~mod_linalg module~mod_pppm->module~mod_pair_electrostatics module~mod_pppm->module~mod_pw module~mod_pppm->module~mod_neighbor_grid module~mod_pppm->module~mod_outer_product module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_abstract_property_model module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_data_container module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_dataset_storage module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_feature_calculator module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_mpi module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_precision module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_settings module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_structures module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_throw module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_timer module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_training_charge_equilibration module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_databatcher module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_feature_map_neighborlist module~mod_structure_batch_iterator mod_structure_batch_iterator module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_structure_batch_iterator module~mod_pw->module~mod_precision module~mod_pw->module~mod_throw module~mod_pw->module~mod_abstract_electrostatics module~mod_fft_potential mod_fft_potential module~mod_pw->module~mod_fft_potential module~mod_qeq_feature_calculator->module~mod_io module~mod_qeq_feature_calculator->module~mod_precision module~mod_qeq_feature_calculator->module~mod_settings module~mod_qeq_feature_calculator->module~mod_structures module~mod_qeq_feature_calculator->module~mod_throw module~mod_qeq_feature_calculator->module~mod_training_charge_equilibration module~mod_qeq_feature_calculator->module~mod_inputnn module~mod_qeq_feature_calculator->module~mod_path module~mod_qeq_feature_calculator->module~mod_global_feature_calculator module~mod_radial_symmetry_function_1->module~mod_cutoff_function module~mod_radial_symmetry_function_1->module~mod_io module~mod_radial_symmetry_function_1->module~mod_precision module~mod_radial_symmetry_function_1->module~mod_structures module~mod_radial_symmetry_function_1->module~mod_throw module~mod_radial_symmetry_function_1->module~mod_feature_map module~mod_radial_symmetry_function_1->module~mod_feature_map_neighborlist module~mod_radial_symmetry_function_1->module~mod_periodic_table module~mod_abstract_radial_symmetry_function mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_1->module~mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_1->module~mod_hash module~mod_radial_symmetry_function_2->module~mod_cutoff_function module~mod_radial_symmetry_function_2->module~mod_precision module~mod_radial_symmetry_function_2->module~mod_structures module~mod_radial_symmetry_function_2->module~mod_throw module~mod_radial_symmetry_function_2->module~mod_feature_map module~mod_radial_symmetry_function_2->module~mod_feature_map_neighborlist module~mod_radial_symmetry_function_2->module~mod_periodic_table module~mod_radial_symmetry_function_2->module~mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_2->module~mod_abstract_symmetry_function module~mod_radial_symmetry_function_2->module~mod_hash module~mod_random->module~mod_precision module~mod_random->module~mod_constants module~mod_set_integer->module~mod_throw module~mod_sort->module~mod_precision module~mod_split_and_assign->module~mod_mpi module~mod_split_and_assign->module~mod_precision module~mod_split_and_assign->module~mod_throw module~mod_storage_container->module~mod_io module~mod_storage_container->module~mod_mpi module~mod_storage_container->mod_property_list module~mod_storage_container->module~mod_abstract_property_list module~mod_storage_container->module~mod_dynamic_int_array module~mod_storage_container->module~mod_sort module~mod_storage_container->module~mod_string module~mod_string->module~mod_precision module~mod_structures_helper->module~mod_precision module~mod_structures_helper->module~mod_linalg module~mod_two_body->module~mod_cutoff_function module~mod_two_body->module~mod_dataloader_file module~mod_two_body->module~mod_dataset_storage module~mod_two_body->module~mod_io module~mod_two_body->module~mod_precision module~mod_two_body->module~mod_settings module~mod_two_body->module~mod_structures module~mod_two_body->module~mod_throw module~mod_two_body->module~mod_feature_map_neighborlist module~mod_two_body->module~mod_periodic_table module~mod_write_headers->module~mod_abstract_property_model module~mod_write_headers->module~mod_abstractoptimizer module~mod_write_headers->module~mod_decorations module~mod_write_headers->module~mod_io module~mod_write_headers->module~mod_mpi module~mod_write_headers->module~mod_settings module~mod_write_headers->module~mod_throw module~mod_write_headers->module~mod_timer module~mod_git_info mod_git_info module~mod_write_headers->module~mod_git_info module~mod_version mod_version module~mod_write_headers->module~mod_version module~mod_write_outfiles_training->module~mod_abstract_property_model module~mod_write_outfiles_training->module~mod_cost_epoch module~mod_write_outfiles_training->module~mod_dataset_storage module~mod_write_outfiles_training->module~mod_io module~mod_write_outfiles_training->module~mod_mpi module~mod_write_outfiles_training->module~mod_settings module~mod_write_outfiles_training->module~mod_path module~mod_write_outfiles_training->module~mod_sort module~mod_write_outfiles_training->module~mod_genericfile module~mod_write_outfiles mod_write_outfiles module~mod_write_outfiles_training->module~mod_write_outfiles module~cublas_wrapper->module~mod_settings module~cublas_wrapper->iso_c_binding module~mod_abstract_angular_symmetry_function->module~mod_precision module~mod_abstract_angular_symmetry_function->module~mod_structures module~mod_abstract_angular_symmetry_function->module~mod_feature_map_neighborlist module~mod_abstract_angular_symmetry_function->module~mod_periodic_table module~mod_abstract_angular_symmetry_function->module~mod_abstract_symmetry_function module~mod_abstract_broadcast_file->module~mod_io module~mod_abstract_broadcast_file->module~mod_mpi module~mod_abstract_broadcast_file->module~mod_throw module~mod_abstract_broadcast_file->module~mod_genericfile module~mod_abstract_broadcast_file->module~mod_sanitize module~mod_abstract_iterative_charge_equilibration->module~mod_io module~mod_abstract_iterative_charge_equilibration->module~mod_precision module~mod_abstract_iterative_charge_equilibration->module~mod_throw module~mod_abstract_iterative_charge_equilibration->module~mod_abstract_charge_equilibration module~mod_abstract_iterative_charge_equilibration->module~mod_abstract_electrostatics module~mod_abstract_iterative_charge_equilibration->module~mod_pair_electrostatics module~mod_abstract_radial_symmetry_function->module~mod_precision module~mod_abstract_radial_symmetry_function->module~mod_structures module~mod_abstract_radial_symmetry_function->module~mod_feature_map_neighborlist module~mod_abstract_radial_symmetry_function->module~mod_abstract_symmetry_function module~mod_abstract_symmetry_function->module~mod_io module~mod_abstract_symmetry_function->module~mod_precision module~mod_abstract_symmetry_function->module~mod_structures module~mod_abstract_symmetry_function->module~mod_throw module~mod_abstract_symmetry_function->module~mod_feature_map module~mod_abstract_symmetry_function->module~mod_feature_map_neighborlist module~mod_electric_field_prefactor mod_electric_field_prefactor module~mod_abstract_symmetry_function->module~mod_electric_field_prefactor module~mod_spin_prefactor mod_spin_prefactor module~mod_abstract_symmetry_function->module~mod_spin_prefactor module~mod_activationfunctions->module~mod_throw module~mod_activationfunction_abstract mod_activationfunction_abstract module~mod_activationfunctions->module~mod_activationfunction_abstract module~mod_activationfunction_linear mod_activationfunction_linear module~mod_activationfunctions->module~mod_activationfunction_linear module~mod_activationfunction_relu mod_activationfunction_relu module~mod_activationfunctions->module~mod_activationfunction_relu module~mod_activationfunction_sigmoid mod_activationfunction_sigmoid module~mod_activationfunctions->module~mod_activationfunction_sigmoid module~mod_activationfunction_softplus mod_activationfunction_softplus module~mod_activationfunctions->module~mod_activationfunction_softplus module~mod_activationfunction_square mod_activationfunction_square module~mod_activationfunctions->module~mod_activationfunction_square module~mod_activationfunction_stanh mod_activationfunction_stanh module~mod_activationfunctions->module~mod_activationfunction_stanh module~mod_activationfunction_tanh mod_activationfunction_tanh module~mod_activationfunctions->module~mod_activationfunction_tanh module~mod_adam->module~mod_abstractoptimizer module~mod_adam->module~mod_decorations module~mod_adam->module~mod_io module~mod_adam->module~mod_precision module~mod_adam->module~mod_throw module~mod_adam->module~mod_lossfunctions module~mod_adam->module~mod_loss_mse module~mod_learning_rate mod_learning_rate module~mod_adam->module~mod_learning_rate module~mod_arrays_init->module~mod_precision module~mod_dubious_feature_map_handler->module~mod_decorations module~mod_dubious_feature_map_handler->module~mod_io module~mod_dubious_feature_map_handler->module~mod_precision module~mod_dubious_feature_map_handler->module~mod_throw module~mod_dubious_feature_map_handler->module~mod_dynamic_int_array module~mod_dynamic_double_array mod_dynamic_double_array module~mod_dubious_feature_map_handler->module~mod_dynamic_double_array module~mod_dynamic_line_array mod_dynamic_line_array module~mod_dubious_feature_map_handler->module~mod_dynamic_line_array module~mod_dynamic_int_array_2d->module~mod_mpi module~mod_dynamic_string_array->module~mod_string module~mod_fastmath->module~mod_precision module~mod_fft_potential->module~mod_precision module~mod_fft_potential->module~mod_throw module~mod_fft_potential->iso_c_binding module~mod_fft_potential->module~mod_constants module~mod_fft_potential->module~mod_linalg module~mod_fft_potential->module~mod_structures_helper module~mod_fft_potential->module~mod_neighborlist_helper module~mod_fft mod_fft module~mod_fft_potential->module~mod_fft module~mod_genericfile->module~mod_io module~mod_genericfile->module~mod_mpi module~mod_genericfile->module~mod_throw module~mod_global_feature_calculator->module~mod_data_container module~mod_global_feature_calculator->module~mod_io module~mod_global_feature_calculator->module~mod_precision module~mod_global_feature_calculator->module~mod_structures module~mod_global_feature_calculator->module~mod_throw module~mod_global_feature_calculator->module~mod_training_charge_equilibration module~mod_global_feature_calculator->module~mod_optional_args module~mod_global_feature_calculator->module~mod_periodic_table module~mod_free mod_free module~mod_global_feature_calculator->module~mod_free module~mod_global_atomic_descriptor mod_global_atomic_descriptor module~mod_global_feature_calculator->module~mod_global_atomic_descriptor module~mod_global_feature_statistics mod_global_feature_statistics module~mod_global_feature_calculator->module~mod_global_feature_statistics module~mod_statistics_container mod_statistics_container module~mod_global_feature_calculator->module~mod_statistics_container module~mod_gradient_descent->module~mod_abstractoptimizer module~mod_gradient_descent->module~mod_decorations module~mod_gradient_descent->module~mod_io module~mod_gradient_descent->module~mod_precision module~mod_gradient_descent->module~mod_throw module~mod_gradient_descent->module~mod_lossfunctions module~mod_gradient_descent->module~mod_loss_mse module~mod_gradient_descent->module~mod_learning_rate module~mod_hash->module~mod_io module~mod_hash->module~mod_precision module~mod_hash->module~mod_periodic_table module~mod_kalman_filter->module~mod_abstractoptimizer module~mod_kalman_filter->module~mod_io module~mod_kalman_filter->module~mod_mpi module~mod_kalman_filter->module~mod_precision module~mod_kalman_filter->module~mod_throw module~mod_abstract_kalman_filter mod_abstract_kalman_filter module~mod_kalman_filter->module~mod_abstract_kalman_filter module~mod_kalman_filter_std->module~mod_abstractoptimizer module~mod_kalman_filter_std->module~mod_io module~mod_kalman_filter_std->module~mod_mpi module~mod_kalman_filter_std->module~mod_precision module~mod_kalman_filter_std->module~mod_throw module~mod_kalman_filter_std->module~mod_abstract_kalman_filter module~mod_parse_logical_keyword mod_parse_logical_keyword module~mod_kalman_filter_std->module~mod_parse_logical_keyword module~mod_loss_mae->module~mod_loss_abstract module~mod_loss_mae->module~mod_precision module~mod_loss_mse->module~mod_loss_abstract module~mod_loss_mse->module~mod_precision module~mod_loss_mse_torch->module~mod_loss_abstract module~mod_loss_mse_torch->module~mod_precision module~mod_loss_rmse->module~mod_loss_abstract module~mod_loss_rmse->module~mod_precision module~mod_nada_opt->module~mod_abstractoptimizer module~mod_nada_opt->module~mod_decorations module~mod_nada_opt->module~mod_io module~mod_nada_opt->module~mod_precision module~mod_nada_opt->module~mod_throw module~mod_nada_opt->module~mod_lossfunctions module~mod_nada_opt->module~mod_loss_mse module~mod_nada_opt->module~mod_learning_rate module~mod_neighbor_grid->module~mod_mpi module~mod_neighbor_grid->module~mod_precision module~mod_neighbor_grid->module~mod_dynamic_int_array module~mod_neighbor_grid->module~mod_structures_helper module~mod_neighbor_grid->module~mod_neighborlist_helper module~mod_neighborlist->module~mod_io module~mod_neighborlist->module~mod_mpi module~mod_neighborlist->module~mod_precision module~mod_neighborlist->module~mod_settings module~mod_neighborlist->module~mod_structures module~mod_neighborlist->module~mod_throw module~mod_neighborlist->module~mod_dynamic_int_array module~mod_neighborlist->module~mod_neighbor_grid module~mod_neighborlist->module~mod_neighborlist_helper module~mod_neighborlist->module~mod_dynamic_double_array module~mod_neighborlist_helper->module~mod_mpi module~mod_neighborlist_helper->module~mod_precision module~mod_neighborlist_helper->module~mod_linalg module~mod_neural_network->module~mod_decorations module~mod_neural_network->module~mod_io module~mod_neural_network->module~mod_precision module~mod_neural_network->module~mod_throw module~mod_neural_network->module~mod_optional_args module~mod_neural_network->module~mod_random module~mod_neural_network->module~mod_activationfunctions module~mod_layers mod_layers module~mod_neural_network->module~mod_layers module~mod_outer_product->module~mod_precision module~mod_outer_product->module~mod_linalg module~mod_parameter_file->module~mod_io module~mod_parameter_file->module~mod_precision module~mod_parameter_file->module~mod_throw module~mod_parameter_file->module~mod_nan_check module~mod_parameter_file->module~mod_abstract_broadcast_file module~mod_sanitize->module~mod_throw module~mod_set_character->module~mod_throw module~mod_stochastic_gradient_descent->module~mod_abstractoptimizer module~mod_stochastic_gradient_descent->module~mod_decorations module~mod_stochastic_gradient_descent->module~mod_io module~mod_stochastic_gradient_descent->module~mod_precision module~mod_stochastic_gradient_descent->module~mod_throw module~mod_stochastic_gradient_descent->module~mod_lossfunctions module~mod_stochastic_gradient_descent->module~mod_loss_mse module~mod_stochastic_gradient_descent->module~mod_learning_rate module~mod_structure_batch_iterator->module~mod_abstract_property_model module~mod_structure_batch_iterator->module~mod_feature_calculator module~mod_structure_batch_iterator->module~mod_mpi module~mod_structure_batch_iterator->module~mod_precision module~mod_structure_batch_iterator->module~mod_settings module~mod_structure_batch_iterator->module~mod_structures module~mod_structure_batch_iterator->module~mod_throw module~mod_structure_batch_iterator->module~mod_databatcher module~mod_structure_batch_iterator->module~mod_feature_map_neighborlist module~mod_structure_batch_iterator->module~mod_get_max_num_output_properties module~mod_structure_batch_iterator->module~mod_optional_args module~mod_structure_batch_iterator->module~mod_global_feature_calculator module~mod_calc_atomic_properties mod_calc_atomic_properties module~mod_structure_batch_iterator->module~mod_calc_atomic_properties module~mod_global_features_helper mod_global_features_helper module~mod_structure_batch_iterator->module~mod_global_features_helper module~mod_table->module~mod_decorations module~mod_table->module~mod_io module~mod_table->module~mod_precision module~mod_table->module~mod_throw module~mod_write_outfiles->module~mod_dataset_storage module~mod_write_outfiles->module~mod_initialize module~mod_write_outfiles->module~mod_io module~mod_write_outfiles->module~mod_mpi module~mod_write_outfiles->module~mod_throw module~mod_write_outfiles->module~mod_string module~mod_write_outfiles->module~mod_genericfile module~mod_sum_out mod_sum_out module~mod_write_outfiles->module~mod_sum_out module~sqnm->module~mod_precision module~sqnm->iso_c_binding module~sqnm->module~mod_linalg module~historylist historylist module~sqnm->module~historylist module~historylist->iso_c_binding module~mod_abstract_kalman_filter->module~mod_abstractoptimizer module~mod_abstract_kalman_filter->module~mod_data_container module~mod_abstract_kalman_filter->module~mod_decorations module~mod_abstract_kalman_filter->module~mod_io module~mod_abstract_kalman_filter->module~mod_mpi module~mod_abstract_kalman_filter->module~mod_precision module~mod_abstract_kalman_filter->module~mod_throw module~mod_abstract_kalman_filter->module~mod_linalg module~mod_abstract_kalman_filter->module~mod_lossfunctions module~mod_abstract_kalman_filter->module~mod_path module~mod_abstract_kalman_filter->module~mod_loss_mae module~mod_abstract_kalman_filter->module~mod_parse_logical_keyword module~mod_activationfunction_linear->module~mod_precision module~mod_activationfunction_linear->module~mod_activationfunction_abstract module~mod_activationfunction_relu->module~mod_precision module~mod_activationfunction_relu->module~mod_activationfunction_abstract module~mod_activationfunction_sigmoid->module~mod_precision module~mod_activationfunction_sigmoid->module~mod_activationfunction_abstract module~mod_activationfunction_softplus->module~mod_precision module~mod_activationfunction_softplus->module~mod_activationfunction_abstract module~mod_activationfunction_square->module~mod_precision module~mod_activationfunction_square->module~mod_activationfunction_abstract module~mod_activationfunction_stanh->module~mod_precision module~mod_activationfunction_stanh->module~mod_activationfunction_abstract module~mod_activationfunction_tanh->module~mod_precision module~mod_activationfunction_tanh->module~mod_activationfunction_abstract module~mod_calc_atomic_properties->module~mod_abstract_property_model module~mod_calc_atomic_properties->module~mod_feature_calculator module~mod_calc_atomic_properties->module~mod_mpi module~mod_calc_atomic_properties->module~mod_precision module~mod_calc_atomic_properties->module~mod_throw module~mod_calc_atomic_properties->module~mod_timer module~mod_calc_atomic_properties->module~mod_feature_map_neighborlist module~mod_calc_atomic_properties->module~mod_forward_batched module~mod_calc_atomic_properties->module~mod_periodic_table module~mod_calc_atomic_properties->module~mod_set_integer module~mod_dynamic_double_array->module~mod_precision module~mod_dynamic_double_array->module~mod_throw module~mod_electric_field_prefactor->module~mod_precision module~mod_electric_field_prefactor->module~mod_settings module~mod_electric_field_prefactor->module~mod_feature_map_neighborlist module~mod_fft->iso_c_binding fftw3 fftw3 module~mod_fft->fftw3 module~mod_free->module~mod_precision module~mod_global_atomic_descriptor->module~mod_precision module~mod_global_atomic_descriptor->module~mod_optional_args module~mod_global_feature_statistics->module~mod_io module~mod_global_feature_statistics->module~mod_precision module~mod_global_feature_statistics->module~mod_throw module~mod_global_feature_statistics->module~mod_periodic_table module~mod_global_feature_statistics->module~mod_free module~mod_global_feature_statistics->module~mod_statistics_container module~mod_statisticsfile mod_statisticsfile module~mod_global_feature_statistics->module~mod_statisticsfile module~mod_global_features_helper->module~mod_feature_calculator module~mod_global_features_helper->module~mod_precision module~mod_global_features_helper->module~mod_structures module~mod_global_features_helper->module~mod_extrapolation_warning module~mod_global_features_helper->module~mod_global_feature_calculator module~mod_global_features_helper->module~mod_global_feature_statistics module~mod_dense_layer mod_dense_layer module~mod_layers->module~mod_dense_layer module~mod_dense_layer_with_single_activations mod_dense_layer_with_single_activations module~mod_layers->module~mod_dense_layer_with_single_activations module~mod_input_layer mod_input_layer module~mod_layers->module~mod_input_layer module~mod_input_layer_with_activations mod_input_layer_with_activations module~mod_layers->module~mod_input_layer_with_activations module~mod_learning_rate->module~mod_abstractoptimizer module~mod_learning_rate->module~mod_precision module~mod_parse_logical_keyword->module~mod_io module~mod_parse_logical_keyword->module~mod_throw module~mod_spin_prefactor->module~mod_precision module~mod_spin_prefactor->module~mod_feature_map_neighborlist module~mod_statistics_container->module~mod_io module~mod_statistics_container->module~mod_mpi module~mod_statistics_container->module~mod_precision module~mod_statistics_container->module~mod_throw module~mod_statistics_container->module~mod_constants module~mod_statistics_container->module~mod_periodic_table module~mod_statistics_container->module~mod_table module~mod_sum_out->module~mod_io module~mod_sum_out->module~mod_mpi module~mod_sum_out->module~mod_precision module~mod_sum_out->module~mod_throw module~mod_sum_out->module~mod_dynamic_int_array module~mod_sum_out->module~mod_storage_container module~mod_sum_out->module~mod_string module~mod_sum_out->module~mod_genericfile module~mod_dense_layer->module~mod_decorations module~mod_dense_layer->module~mod_io module~mod_dense_layer->module~mod_precision module~mod_dense_layer->module~mod_throw module~mod_dense_layer->module~mod_constants module~mod_dense_layer->module~mod_global_warning module~mod_dense_layer->module~mod_initialize_array module~mod_dense_layer->module~mod_linalg module~mod_dense_layer->module~mod_nan_check module~mod_dense_layer->module~mod_optional_args module~mod_dense_layer->module~mod_random module~mod_dense_layer->module~mod_activationfunctions module~mod_dense_layer_with_single_activations->module~mod_decorations module~mod_dense_layer_with_single_activations->module~mod_io module~mod_dense_layer_with_single_activations->module~mod_precision module~mod_dense_layer_with_single_activations->module~mod_throw module~mod_dense_layer_with_single_activations->module~mod_global_warning module~mod_dense_layer_with_single_activations->module~mod_linalg module~mod_dense_layer_with_single_activations->module~mod_activationfunctions module~mod_dense_layer_with_single_activations->module~mod_dense_layer module~mod_input_layer->module~mod_decorations module~mod_input_layer->module~mod_io module~mod_input_layer->module~mod_precision module~mod_input_layer->module~mod_throw module~mod_input_layer->module~mod_constants module~mod_input_layer_with_activations->module~mod_decorations module~mod_input_layer_with_activations->module~mod_io module~mod_input_layer_with_activations->module~mod_precision module~mod_input_layer_with_activations->module~mod_throw module~mod_input_layer_with_activations->module~mod_global_warning module~mod_input_layer_with_activations->module~mod_activationfunctions module~mod_input_layer_with_activations->module~mod_input_layer module~mod_statisticsfile->module~mod_mpi module~mod_statisticsfile->module~mod_abstract_broadcast_file module~mod_statisticsfile->module~mod_statistics_container

Used By

module~~mod_train_loop_4g_charges~~UsedByGraph module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_train_loop_4g_charges program~runner RuNNer program~runner->module~mod_train_mode

Procedures Summary

Name Type Description
train_loop_4g_charges Subroutine Main driver routine to train atomic charges with a charge equilibration (QEq) model. This...
initialize_cost_calculator_4g_charge Subroutine Initializes the CostCalculator for 4G charge training. This helper subroutine sets up the...

Procedure Details

subroutine train_loop_4g_charges

subroutine train_loop_4g_charges( &
    data_loader, &
    models, &
    feature_calculators, &
    cutoff_functions, &
    ids_train_test, &
    num_samples_train_test, &
    optimizers, &
    results_pred, &
    loss_functions, &
    cost_functions, &
    qeq_solvers, &
    file_coul_mat &
)

Main driver routine to train atomic charges with a charge equilibration (QEq) model.

This subroutine orchestrates the entire training process for a 4G-HDNNP charge model. It iterates over a specified number of epochs, and within each epoch, it processes the training data in chunks and batches.

Outline

  1. Initialization: It initializes a CostCalculator to manage error metrics and output. An initial cost evaluation is performed on the untrained models.
  2. Epoch Loop: The main training loop begins, iterating up to the maximum number of epochs.
  3. Chunking: Within each epoch, the dataset is loaded chunk by chunk to manage memory usage.
  4. Structure Batching: The training structures within a chunk are grouped into batches.
  5. Feature Calculation: For each structure batch, atomic features (symmetry functions) are computed.
  6. Batch Training: The core training logic is invoked for each batch via train_4g_atomic_charges_structure_batch. This involves forward and backward passes, loss calculation, and optimizer updates.
  7. Optimizer Updates: After each epoch, optimizer hyperparameters (like learning rates) are updated.
  8. Cost Evaluation: At regular intervals the models' performance is evaluated on both the training and test sets by calling output_files_and_cost_4g_charges. The results are printed to standard output and optionally predicted values to separate files.
  9. Finalization: Information about the best performing epoch is written to file.

The TrainingChargeEquilibrator object and performance considerations

The charge equilibration (QEq) method relies on solving a system of linear equations for each structure, which can be expressed as A * q = b, where q is the vector of unknown atomic charges. The matrix A, often called the Coulomb matrix, depends on the atomic geometry and the chemical hardness of each atom. Solving this system by inverting A at every training step is computationally expensive, especially for large structures.

To significantly accelerate training, this routine leverages a TrainingChargeEquilibrator object (qeq_solvers). The key idea is to pre-calculate the geometry-dependent part of the Coulomb matrix and its inverse before the main training loop begins. This is handled by the precalc_coulomb_matrix_all_chunks routine.

There are two main scenarios affecting performance:

  1. Fixed Hardness: When atomic hardness values are kept constant (i.e., not trained), the entire Coulomb matrix A is constant for a given structure. In this case, its inverse A⁻¹ can be computed just once. Charge calculation then becomes a very fast matrix-vector multiplication (q = A⁻¹ * b). Passing the pre-initialized qeq_solvers object is therefore highly recommended for optimal performance.

  2. Trained Hardness: When atomic hardness values are trained, they change at each training step. The hardnesses appear on the diagonal of the Coulomb matrix A. Consequently, A and its inverse change. However, by pre-calculating the geometry-dependent off-diagonal elements, we still save considerable computation. The TrainingChargeEquilibrator object can efficiently update the diagonal and re-invert the matrix, which is much faster than rebuilding it from scratch every time.

If the optional qeq_solvers argument is not provided, the routine will construct and invert the Coulomb matrix on-the-fly for each structure within the training loop. This is highly inefficient and will lead to a significant slowdown of the training process. It is therefore strongly advised to ensure sufficient RAM is available to pre-calculate and store these matrices for the entire dataset, which requires the data to be loaded in a single chunk.

Arguments

  • data_loader : class(FileDataLoader) [inout]– An initialized `FileDataLoader` with an attached data source. Prior to calling this routine, the dataloader should have collected statistical information about the attached data source and read all reference properties. It can already contain an allocated `structures` array.
  • models : type(ModelPtr) (dim: (:,:)) [inout]– The list of all initialized models. Multiple committee members may be specified for each model. Even though only a subset of these models may be trained, we pass on the full list of models to reuse our generic prediction routines. Dimension (num_committee_members, num_models).
  • feature_calculators : type(FeatureCalculator) (dim: (:)) [inout]– List of initialized feature calculators for all `models`. Feature calculators must already contain fully initialized `Elements` objects with feature map definitions. If enough memory is available, all features and feature derivatives should be precomputed before calling this routine (better OpenMP parallelization). This routine only evaluates the feature calculators once for each structure batch and frees the memory after the optimizer update.
  • cutoff_functions : type(CutoffFunctionPtr) (dim: (:)) [inout]– The globally declared list of cutoff functions for calculating neighbor lists.
  • ids_train_test : integer (dim: (:,:)) [in]– The global indices of the training and test set across all chunks and processes. Dimension: maxval(num_samples_train_test, dim = 1), 2
  • num_samples_train_test : integer (dim: (:)) [in]– The number of train and test samples. This must be the number of entries in the first dimension of `ids_train_test`.
  • optimizers : type(OptimizerPtr) (dim: (:,:)) [inout]– The optimizers for all `models` that are supposed to be trained. One separate optimizer must be given for each committee member. Note that the number of optimizer may be larger than the number of models themselves, as models can have submodels (like atomic NNs) that each have separate optimizers.
  • results_pred : type(DatasetStorage) (dim: (:)) [inout]– Initialized `DatasetStorage` for storing the calculated property values for all atoms. This is used for RMSE calculation and writing output files (`results_pred` stores values across chunks).
  • loss_functions : type(LossFunctionPtr) (dim: (:)) [in]– All loss functions that are required by the given `optimizers`. Each optimizer keeps track of its corresponding loss function.
  • cost_functions : type(LossFunctionPtr) (dim: (:)) [in]– All cost functions that shall be used for reporting cost values after each epoch
  • qeq_solvers : type(TrainingChargeEquilibrator) (dim: (:)) [inout]– One TrainingQEq object for each structure on this process. If the calculators are given, they must have already been initialized for all structures on this process. As we use `structure%id_on_process` to access the object we need for a given update step, it only makes sense to pass this object when there is only a single chunk. Upon initialization, the `TrainingChargeEquilibrator` calculates the Coulomb matrix for a structure and inverts it. Based on this, charge equilibration comes down to a simple matrix vector multiplication, which is very efficient. However, this only works as long as the hardness values do not change (because they appear on the diagonal of the Coulomb matrix). When the hardness is trained, we reinvert the Coulomb matrix each time a new update for a strucure is requested. Nevertheless, we still save the recomputation of the Coulomb matrix (which is the expensive step, the matrix inversion is rather cheap for reasonably sized training structures). If the object is not given, we will initialize it on the fly one structure at a time, calculate and invert eh Coulomb matrix and use this to calculate charges. This is, however, highly inefficient, so you should try your best to buy enough RAM so we can precompute the A matrix in advance for the entire dataset.
  • file_coul_mat : type(DataCont) [inout]– If Coulomb matrices are parsed from file into `qeq_solvers`, the corresponding `DataCont` object is required. We will read values once per structure batch.

Called By

proc~~train_loop_4g_charges~~CalledByGraph proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode

subroutine initialize_cost_calculator_4g_charge

subroutine initialize_cost_calculator_4g_charge( &
    cost_functions, &
    optimal_epoch_property, &
    cost_calculator &
)

Initializes the CostCalculator for 4G charge training.

This helper subroutine sets up the CostCalculator object with parameters specific to training atomic charges. It defines the property to be tracked ('charge'), its corresponding label for output ('Atomic charges'), its unit ('me', milli-electron), and the conversion factor from atomic units (1000.0). It also identifies which property should be monitored for determining the optimal epoch based on user settings.

Arguments

  • cost_functions : type(LossFunctionPtr) (dim: (:)) [in]– The cost functions (e.g., RMSE) to be used for reporting.
  • optimal_epoch_property : character [in]– The name of the property to monitor for finding the best epoch.
  • cost_calculator : type(CostCalculator) [out]– The `CostCalculator` object to be initialized.

Called By

proc~~initialize_cost_calculator_4g_charge~~CalledByGraph proc~initialize_cost_calculator_4g_charge mod_train_loop_4g_charges::initialize_cost_calculator_4g_charge proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~initialize_cost_calculator_4g_charge proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode