Skip to content

mod_training_charge_equilibration

Lines: 306 | Visibility: public

Contains subroutines, functions and types that can be used to calculate electrostatics, charge equilibration and all the derivatives. This is useful for training when the properties of the same system is calculated often. author: Moritz Gubler

Dependencies

Uses

module~~mod_training_charge_equilibration~~UsesGraph module~mod_training_charge_equilibration mod_training_charge_equilibration module~mod_abstract_electrostatics mod_abstract_electrostatics 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_data_container mod_data_container module~mod_training_charge_equilibration->module~mod_data_container module~mod_ewald_summation mod_ewald_summation module~mod_training_charge_equilibration->module~mod_ewald_summation module~mod_linalg mod_linalg module~mod_training_charge_equilibration->module~mod_linalg module~mod_optional_args mod_optional_args module~mod_training_charge_equilibration->module~mod_optional_args module~mod_pair_electrostatics mod_pair_electrostatics module~mod_training_charge_equilibration->module~mod_pair_electrostatics module~mod_precision mod_precision module~mod_training_charge_equilibration->module~mod_precision module~mod_structures mod_structures module~mod_training_charge_equilibration->module~mod_structures module~mod_abstract_electrostatics->module~mod_precision module~mod_abstract_electrostatics->module~mod_structures module~mod_cross_matrix->module~mod_linalg module~mod_cross_matrix->module~mod_precision module~mod_data_container->module~mod_precision module~mod_io mod_io module~mod_data_container->module~mod_io module~mod_throw mod_throw module~mod_data_container->module~mod_throw module~mod_ewald_summation->module~mod_abstract_electrostatics module~mod_ewald_summation->module~mod_linalg module~mod_ewald_summation->module~mod_pair_electrostatics module~mod_ewald_summation->module~mod_precision module~mod_constants mod_constants module~mod_ewald_summation->module~mod_constants 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_outer_product mod_outer_product module~mod_ewald_summation->module~mod_outer_product module~mod_linalg->module~mod_precision module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_settings mod_settings module~mod_linalg->module~mod_settings module~mod_linalg->module~mod_throw module~mod_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_precision module~mod_pair_electrostatics->module~mod_constants module~mod_pair_electrostatics->module~mod_throw 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_linalg 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_mpi mod_mpi 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~cublas_wrapper->iso_c_binding module~cublas_wrapper->module~mod_settings 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_io->module~mod_optional_args module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_neighbor_grid->module~mod_precision module~mod_neighbor_grid->module~mod_mpi module~mod_neighbor_grid->module~mod_neighborlist_helper module~mod_neighbor_grid->module~mod_structures_helper module~mod_dynamic_int_array mod_dynamic_int_array module~mod_neighbor_grid->module~mod_dynamic_int_array module~mod_neighborlist_helper->module~mod_linalg module~mod_neighborlist_helper->module~mod_precision module~mod_neighborlist_helper->module~mod_mpi module~mod_outer_product->module~mod_linalg module~mod_outer_product->module~mod_precision 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_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_structures_helper->module~mod_linalg module~mod_structures_helper->module~mod_precision 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_cpu_vendor->iso_c_binding module~mod_sort->module~mod_precision

Used By

module~~mod_training_charge_equilibration~~UsedByGraph module~mod_training_charge_equilibration mod_training_charge_equilibration module~mod_calculate_coulomb_matrix mod_calculate_coulomb_matrix module~mod_calculate_coulomb_matrix->module~mod_training_charge_equilibration module~mod_dataset_statistics mod_dataset_statistics module~mod_dataset_statistics->module~mod_training_charge_equilibration module~mod_dataset_statistics_chi_all_chunks mod_dataset_statistics_chi_all_chunks module~mod_dataset_statistics_chi_all_chunks->module~mod_training_charge_equilibration module~mod_dataset_statistics_chi_all_chunks->module~mod_dataset_statistics module~mod_global_feature_calculator mod_global_feature_calculator module~mod_global_feature_calculator->module~mod_training_charge_equilibration 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_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 module~mod_cost_calculator mod_cost_calculator module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator module~mod_precalc_coulomb_matrix_all_chunks mod_precalc_coulomb_matrix_all_chunks module~mod_precalc_coulomb_matrix_all_chunks->module~mod_training_charge_equilibration module~mod_precalc_coulomb_matrix_all_chunks->module~mod_predict_4g_charges_training_qeq_multiple_structures module~mod_predict_4g_charges_training_qeq_multiple_structures->module~mod_training_charge_equilibration 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_predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure module~mod_predict_qeq_feature_calculator_single_structure->module~mod_training_charge_equilibration module~mod_qeq_feature_calculator mod_qeq_feature_calculator module~mod_predict_qeq_feature_calculator_single_structure->module~mod_qeq_feature_calculator module~mod_qeq_feature_calculator->module~mod_training_charge_equilibration module~mod_qeq_feature_calculator->module~mod_global_feature_calculator 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_training_charge_equilibration module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_training_charge_equilibration 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_initialize mod_initialize module~mod_train_loop_4g_charges->module~mod_initialize module~mod_train_loop_4g_charges->module~mod_cost_calculator module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_training_charge_equilibration 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_global_feature_calculator module~mod_train_mode->module~mod_precalc_coulomb_matrix_all_chunks module~mod_train_mode->module~mod_predict_4g_charges_training_qeq_multiple_structures module~mod_train_mode->module~mod_qeq_feature_calculator module~mod_train_mode->module~mod_train_loop_4g_charges module~mod_ee4g_feature_calculator mod_ee4g_feature_calculator module~mod_train_mode->module~mod_ee4g_feature_calculator module~mod_feature_map_scaling_all_chunks mod_feature_map_scaling_all_chunks module~mod_train_mode->module~mod_feature_map_scaling_all_chunks module~mod_train_mode->module~mod_initialize module~mod_predict_ee4g_feature_calculator_multiple_structures mod_predict_ee4g_feature_calculator_multiple_structures module~mod_train_mode->module~mod_predict_ee4g_feature_calculator_multiple_structures module~mod_predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_mode->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_loop_short_range mod_train_loop_short_range module~mod_train_mode->module~mod_train_loop_short_range module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_mode->module~mod_train_loop_atomic_property module~mod_predict_all_chunks mod_predict_all_chunks module~mod_train_mode->module~mod_predict_all_chunks module~mod_write_outfiles_training mod_write_outfiles_training module~mod_train_mode->module~mod_write_outfiles_training module~mod_ee4g_feature_calculator->module~mod_global_feature_calculator module~mod_enforce_reading mod_enforce_reading module~mod_enforce_reading->module~mod_global_feature_calculator module~mod_feature_map_scaling_all_chunks->module~mod_global_feature_calculator module~mod_feature_map_scaling_all_chunks->module~mod_qeq_feature_calculator module~mod_feature_map_scaling_all_chunks->module~mod_ee4g_feature_calculator module~mod_feature_map_scaling_all_chunks->module~mod_structure_batch_iterator module~mod_global_features_helper mod_global_features_helper module~mod_global_features_helper->module~mod_global_feature_calculator module~mod_initialize->module~mod_qeq_feature_calculator module~mod_initialize->module~mod_ee4g_feature_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_global_feature_calculator 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_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_precompute_global_features_all_chunks mod_precompute_global_features_all_chunks module~mod_precompute_global_features_all_chunks->module~mod_qeq_feature_calculator module~mod_precompute_global_features_all_chunks->module~mod_ee4g_feature_calculator 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_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure module~mod_predict_4g_no_force_trick_single_structure->module~mod_global_feature_calculator module~mod_predict_4g_no_force_trick_single_structure->module~mod_predict_qeq_feature_calculator_single_structure module~mod_predict_4g_no_force_trick_single_structure->module~mod_qeq_feature_calculator 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_4g_short_range_training_qeq_multiple_structures->module~mod_global_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_global_feature_calculator module~mod_predict_ee4g_feature_calculator_multiple_structures->module~mod_qeq_feature_calculator module~mod_predict_ee4g_feature_calculator_multiple_structures->module~mod_ee4g_feature_calculator module~mod_predict_mode mod_predict_mode module~mod_predict_mode->module~mod_qeq_feature_calculator module~mod_predict_mode->module~mod_ee4g_feature_calculator module~mod_predict_mode->module~mod_enforce_reading module~mod_predict_mode->module~mod_initialize module~mod_predict_multiple_structures mod_predict_multiple_structures module~mod_predict_mode->module~mod_predict_multiple_structures module~mod_write_outfiles mod_write_outfiles module~mod_predict_mode->module~mod_write_outfiles 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_qeq_feature_calculator module~mod_predict_qeq_feature_calculator_multiple_structures->module~mod_structure_batch_iterator module~mod_runner_interface_bindings mod_runner_interface_bindings module~mod_runner_interface_bindings->module~mod_qeq_feature_calculator module~mod_runner_interface_bindings->module~mod_enforce_reading module~mod_runner_interface_bindings->module~mod_global_features_helper module~mod_runner_interface_bindings->module~mod_initialize module~mod_evaluate_4g_single_structure mod_evaluate_4g_single_structure module~mod_runner_interface_bindings->module~mod_evaluate_4g_single_structure module~mod_runner_interface mod_runner_interface module~mod_runner_interface_bindings->module~mod_runner_interface module~mod_structure_batch_iterator->module~mod_global_feature_calculator module~mod_structure_batch_iterator->module~mod_global_features_helper module~mod_train_loop_short_range->module~mod_global_feature_calculator module~mod_train_loop_short_range->module~mod_qeq_feature_calculator module~mod_train_loop_short_range->module~mod_ee4g_feature_calculator 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_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_output_files_and_cost mod_output_files_and_cost module~mod_train_loop_short_range->module~mod_output_files_and_cost 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_loop_short_range->module~mod_cost_calculator program~runner RuNNer program~runner->module~mod_calculate_coulomb_matrix program~runner->module~mod_qeq_feature_calculator program~runner->module~mod_train_mode program~runner->module~mod_ee4g_feature_calculator program~runner->module~mod_initialize program~runner->module~mod_precompute_global_features_all_chunks program~runner->module~mod_predict_mode module~mod_evaluate_4g_single_structure->module~mod_ee4g_feature_calculator module~mod_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_lammps_interface->module~mod_runner_interface module~mod_output_files_and_cost->module~mod_ee4g_feature_calculator module~mod_output_files_and_cost->module~mod_predict_multiple_structures module~mod_output_files_and_cost->module~mod_cost_calculator module~mod_post_processing_4g_single_structure mod_post_processing_4g_single_structure module~mod_post_processing_4g_single_structure->module~mod_ee4g_feature_calculator module~mod_post_processing_4g_single_structure->module~mod_evaluate_4g_single_structure module~mod_post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_ee4g_feature_calculator module~mod_post_processing_wrapper_single_structure->module~mod_global_features_helper module~mod_post_processing_wrapper_single_structure->module~mod_evaluate_4g_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_4g_single_structure module~mod_predict_multiple_structures->module~mod_ee4g_feature_calculator module~mod_predict_multiple_structures->module~mod_structure_batch_iterator module~mod_predict_multiple_structures->module~mod_post_processing_wrapper_single_structure module~mod_predict_single_structure mod_predict_single_structure module~mod_predict_single_structure->module~mod_ee4g_feature_calculator module~mod_predict_single_structure->module~mod_post_processing_wrapper_single_structure module~mod_runner_interface->module~mod_ee4g_feature_calculator 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_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_cost_calculator module~mod_write_outfiles->module~mod_initialize 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_predict_all_chunks->module~mod_predict_multiple_structures module~mod_write_outfiles_training->module~mod_write_outfiles module~mod_cost_calculator->module~mod_write_outfiles_training

Derived Types Summary

Name Description
TrainingChargeEquilibrator Stores coulomb matrix, its inverse and its derivative with respect to positions in a sparse...

Procedures Summary

Name Type Description
get_data Function Returns all the data in a matrix needed to create the object again.
compute_charge Function Return charge equilibration charge of atom i.
compute_charges Function Returns charge equilibration charges of all atoms
compute_chis Function Returns the electronegativities of all atoms for a given set of charges.
get_memory_usage Function Returns the memory usage of the object in bytes.
dqi_drj Function Returns the derivative of charge of atom with charge_index with respect to atom with atom_pos_index
get_electric_energy Function Returns the electrostatic energy.
get_electric_force Function Calculates electrostatic force. Does not include any dq/dr correction.
get_de_dcharges Function Computes derivative of electric energy with respect to charges. Puts charges on constraint first...
dcharge_dchi Function Returns derivative of charge equilibration charges with respect to electronegativity
dcharge_i_d_hardness_j Function Returns the derivative of charge equilibration charge with respect to hardness
free Subroutine
initialize_from_arrays Subroutine Initialize routine chooses wether to calculate or load the coulomb matrices.
initialize_from_structure Subroutine Initialize type from structure type. See initialize_from_arrays for more information.
initialize_from_arrays_calc Subroutine Initialize type from structure. Matrices are calculated and stored internally. For larger...
initialize_with_data Subroutine Initialize class with data matrix obtained from get_data function of this class.
initialize_from_arrays_file Subroutine Initialize class with data matrix obtained from file.
update_inverse Subroutine

Derived Types Details

type TrainingChargeEquilibrator

Stores coulomb matrix, its inverse and its derivative with respect to positions in a sparse matrix format. After initialization, all electrostatic and charge equilibration properties can be calculated for arbitrary charges and electronegativities quickly (Assuming positions and lattice do not change).

Components

  • coul_matrix : real(DP) (dim: (:,:))– Coulomb matrix. Does not contain hardness
  • coul_hardness_inv : real(DP) (dim: (:,:))– Inverse coulomb Matrix. Contains hardess. Currently, their hardness cannot be changed after initialization. Dimension is nat+1, nat+1
  • da_dr : type(CrossMatrix) (dim: (:,:))– array of length (3, n_at) containing all the derivatives of the Coulomb matrix A. Sored as sparse cross matrix. Dimension is nat+1, nat+1
  • nat : integer– Number of atoms
  • total_charge : real(DP)– Total charge
  • work1 : real(DP) (dim: (:))– Work arrays of length nat+1.
  • work2 : real(DP) (dim: (:))– Work arrays of length nat+1.
  • initialized : logical

Type-Bound Procedures

Name Attributes Binding
initialize public ⇒ initialize_from_arrays⇒ initialize_from_structure
initialize_from_arrays_calc private ⇒ initialize_from_arrays_calc
initialize_from_arrays_file private ⇒ initialize_from_arrays_file
initialize_from_structure private ⇒ initialize_from_structure
initialize_from_arrays private ⇒ initialize_from_arrays
compute_charge public ⇒ compute_charge
compute_charges public ⇒ compute_charges
compute_chis public ⇒ compute_chis
dqi_drj public ⇒ dqi_drj
get_memory_usage public ⇒ get_memory_usage
get_electric_energy public ⇒ get_electric_energy
get_de_dcharges public ⇒ get_de_dcharges
get_electric_force public ⇒ get_electric_force
dcharge_dchi public ⇒ dcharge_dchi
get_data public ⇒ get_data
initialize_with_data public ⇒ initialize_with_data
dcharge_i_d_hardness_j public ⇒ dcharge_i_d_hardness_j
free public ⇒ free
update_inverse public ⇒ update_inverse

Inherits

type~~trainingchargeequilibrator~~InheritsGraph type~trainingchargeequilibrator TrainingChargeEquilibrator type~crossmatrix CrossMatrix type~trainingchargeequilibrator->type~crossmatrix da_dr

Inherited By

type~~trainingchargeequilibrator~~InheritedByGraph type~trainingchargeequilibrator TrainingChargeEquilibrator type~qeqfeaturecalculator QEqFeatureCalculator type~qeqfeaturecalculator->type~trainingchargeequilibrator qeq

Procedure Details

function get_data

function get_data( &
    self &
)

Returns all the data in a matrix needed to create the object again.

Arguments

Called By

proc~~get_data~~CalledByGraph proc~get_data mod_training_charge_equilibration::TrainingChargeEquilibrator%get_data proc~write_coul_mat_structure mod_calculate_coulomb_matrix::write_coul_mat_structure proc~write_coul_mat_structure->proc~get_data proc~precompute_coulomb_matrix_all_chunks mod_calculate_coulomb_matrix::precompute_coulomb_matrix_all_chunks proc~precompute_coulomb_matrix_all_chunks->proc~write_coul_mat_structure program~runner RuNNer program~runner->proc~precompute_coulomb_matrix_all_chunks

function compute_charge

function compute_charge( &
    self, &
    iat, &
    electronegativities, &
    total_charge &
)

Return charge equilibration charge of atom i.

Arguments

  • self : class(TrainingChargeEquilibrator) [in]
  • iat : integer [in]– Index of atom i.
  • electronegativities : real(DP) (dim: (self%nat)) [in]– Electronegativities of all atoms
  • total_charge : real(DP) [in]– Total charge of the structure to which atom i belongs.

function compute_charges

function compute_charges( &
    self, &
    electronegativities, &
    total_charge &
)

Returns charge equilibration charges of all atoms

Arguments

  • self : class(TrainingChargeEquilibrator) [inout]
  • electronegativities : real(DP) (dim: (self%nat)) [in]– Electronegativities of all atoms
  • total_charge : real(DP) [in]

Called By

proc~~compute_charges~~CalledByGraph proc~compute_charges mod_training_charge_equilibration::TrainingChargeEquilibrator%compute_charges proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->proc~compute_charges proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->proc~compute_charges proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->proc~compute_charges proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_4g_charges proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_mode->proc~train_loop_short_range proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure program~runner RuNNer program~runner->proc~train_mode proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks program~runner->proc~precompute_global_features_all_chunks proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures

function compute_chis

function compute_chis( &
    self, &
    charges, &
    hardnesses &
)

Returns the electronegativities of all atoms for a given set of charges.

Arguments

  • self : class(TrainingChargeEquilibrator) [inout]
  • charges : real(DP) (dim: (self%nat)) [in]
  • hardnesses : real(DP) (dim: (self%nat)) [in]

Called By

proc~~compute_chis~~CalledByGraph proc~compute_chis mod_training_charge_equilibration::TrainingChargeEquilibrator%compute_chis proc~update_dataset_statistics_chi_multiple_structures mod_dataset_statistics::update_dataset_statistics_chi_multiple_structures proc~update_dataset_statistics_chi_multiple_structures->proc~compute_chis proc~dataset_statistics_chi_all_chunks mod_dataset_statistics_chi_all_chunks::dataset_statistics_chi_all_chunks proc~dataset_statistics_chi_all_chunks->proc~update_dataset_statistics_chi_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~dataset_statistics_chi_all_chunks program~runner RuNNer program~runner->proc~train_mode

function get_memory_usage

function get_memory_usage( &
    self &
)

Returns the memory usage of the object in bytes.

Arguments


function dqi_drj

function dqi_drj( &
    self, &
    charge_index, &
    atom_pos_index, &
    d_chi_drj, &
    d_hardness_drj, &
    charges &
)

Returns the derivative of charge of atom with charge_index with respect to atom with atom_pos_index

Arguments

  • self : class(TrainingChargeEquilibrator) [in]
  • charge_index : integer [in]– Index of atom to which the charge belongs
  • atom_pos_index : integer [in]– Index of the atom that is used to differentiate
  • d_chi_drj : real(DP) (dim: (3,self%nat)) [in]– derivative of electronegativity with respect to position
  • d_hardness_drj : real(DP) (dim: (3,self%nat)) [in]– derivative of hardness with respect to position
  • charges : real(DP) (dim: (self%nat)) [in]– Charge equilibration charges.

Called By

proc~~dqi_drj~~CalledByGraph proc~dqi_drj mod_training_charge_equilibration::TrainingChargeEquilibrator%dqi_drj proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->proc~dqi_drj proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~precompute_global_features_all_chunks program~runner->proc~train_mode

function get_electric_energy

function get_electric_energy( &
    self, &
    charges, &
    total_charge &
)

Returns the electrostatic energy.

Arguments

  • self : class(TrainingChargeEquilibrator) [inout]
  • charges : real(DP) (dim: (self%nat)) [inout]– Atomic charges
  • total_charge : real(DP) [in]

Called By

proc~~get_electric_energy~~CalledByGraph proc~get_electric_energy mod_training_charge_equilibration::TrainingChargeEquilibrator%get_electric_energy proc~calc_electrostatic_contributions_single_structure mod_predict_qeq_feature_calculator_single_structure::calc_electrostatic_contributions_single_structure proc~calc_electrostatic_contributions_single_structure->proc~get_electric_energy proc~calc_electrostatic_contributions_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::calc_electrostatic_contributions_multiple_structures proc~calc_electrostatic_contributions_multiple_structures->proc~calc_electrostatic_contributions_single_structure proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~calc_electrostatic_contributions_single_structure proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~precompute_global_features_all_chunks program~runner->proc~train_mode

function get_electric_force

function get_electric_force( &
    self, &
    charges, &
    atom_index, &
    total_charge &
)

Calculates electrostatic force. Does not include any dq/dr correction.

Arguments

  • self : class(TrainingChargeEquilibrator) [in]
  • charges : real(DP) (dim: (self%nat)) [inout]– Atomic charges
  • atom_index : integer [in]– Index of the force that should be returned
  • total_charge : real(DP) [in]

Called By

proc~~get_electric_force~~CalledByGraph proc~get_electric_force mod_training_charge_equilibration::TrainingChargeEquilibrator%get_electric_force proc~calc_electrostatic_contributions_single_structure mod_predict_qeq_feature_calculator_single_structure::calc_electrostatic_contributions_single_structure proc~calc_electrostatic_contributions_single_structure->proc~get_electric_force proc~calc_electrostatic_contributions_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::calc_electrostatic_contributions_multiple_structures proc~calc_electrostatic_contributions_multiple_structures->proc~calc_electrostatic_contributions_single_structure proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~calc_electrostatic_contributions_single_structure proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~precompute_global_features_all_chunks program~runner->proc~train_mode

function get_de_dcharges

function get_de_dcharges( &
    self, &
    charges, &
    total_charge &
)

Computes derivative of electric energy with respect to charges. Puts charges on constraint first to reproduce behaviour of electrostatic calculator. Charges obtained using the charge equilibration are already on the charge constraint manifold.

Arguments

  • self : class(TrainingChargeEquilibrator) [inout]
  • charges : real(DP) (dim: (self%nat)) [inout]– Atomic charges
  • total_charge : real(DP) [in]

Called By

proc~~get_de_dcharges~~CalledByGraph proc~get_de_dcharges mod_training_charge_equilibration::TrainingChargeEquilibrator%get_de_dcharges proc~calc_electrostatic_contributions_single_structure mod_predict_qeq_feature_calculator_single_structure::calc_electrostatic_contributions_single_structure proc~calc_electrostatic_contributions_single_structure->proc~get_de_dcharges proc~calc_electrostatic_contributions_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::calc_electrostatic_contributions_multiple_structures proc~calc_electrostatic_contributions_multiple_structures->proc~calc_electrostatic_contributions_single_structure proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~calc_electrostatic_contributions_single_structure proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~precompute_global_features_all_chunks program~runner->proc~train_mode

function dcharge_dchi

function dcharge_dchi( &
    self, &
    charge_index, &
    chi_index &
)

Returns derivative of charge equilibration charges with respect to electronegativity

Arguments

  • self : class(TrainingChargeEquilibrator) [in]
  • charge_index : integer [in]– Index of atomic charge
  • chi_index : integer [in]– Index of electronegativity

Called By

proc~~dcharge_dchi~~CalledByGraph proc~dcharge_dchi mod_training_charge_equilibration::TrainingChargeEquilibrator%dcharge_dchi proc~accumulate_charge_loss_gradient mod_train_4g_atomic_charges_structure_batch::accumulate_charge_loss_gradient proc~accumulate_charge_loss_gradient->proc~dcharge_dchi proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->proc~accumulate_charge_loss_gradient proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode

function dcharge_i_d_hardness_j

function dcharge_i_d_hardness_j( &
    self, &
    charges, &
    charge_index, &
    hardness_index &
)

Returns the derivative of charge equilibration charge with respect to hardness

Arguments

  • self : class(TrainingChargeEquilibrator)
  • charges : real(DP) (dim: (self%nat)) [in]– Atomic charges
  • charge_index : integer [in]– Iddex of atomic charge
  • hardness_index : integer [in]– Index of hardness

Called By

proc~~dcharge_i_d_hardness_j~~CalledByGraph proc~dcharge_i_d_hardness_j mod_training_charge_equilibration::TrainingChargeEquilibrator%dcharge_i_d_hardness_j proc~accumulate_charge_loss_gradient mod_train_4g_atomic_charges_structure_batch::accumulate_charge_loss_gradient proc~accumulate_charge_loss_gradient->proc~dcharge_i_d_hardness_j proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->proc~accumulate_charge_loss_gradient proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch 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 free

subroutine free( &
    self &
)

Arguments


subroutine initialize_from_arrays

subroutine initialize_from_arrays( &
    self, &
    nat, &
    pos, &
    lperiodic, &
    lat, &
    sigma, &
    hardness, &
    electrostatic_precision, &
    file_coul_mat, &
    struc_id, &
    load_coul_mat &
)

Initialize routine chooses wether to calculate or load the coulomb matrices.

Arguments

  • self : class(TrainingChargeEquilibrator) [out]
  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lperiodic : logical [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]– standard deviation of gaussian charge densities
  • hardness : real(DP) (dim: (nat)) [in]– Element specific hardnesses of all atoms.
  • electrostatic_precision : real(DP) [in]– Electrostatic precision.
  • file_coul_mat : type(DataCont) [inout]– File object with coulomb matrix and its inverse
  • struc_id : integer [in]– Global structure ID of the structure to be loaded
  • load_coul_mat : logical [in]– Flag if should be loaded or not

Called By

proc~~initialize_from_arrays~~CalledByGraph proc~initialize_from_arrays mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays none~initialize~3 mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize none~initialize~3->proc~initialize_from_arrays proc~initialize_from_structure mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_structure none~initialize~3->proc~initialize_from_structure proc~initialize_from_structure->proc~initialize_from_arrays proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->none~initialize~3 proc~precompute_coulomb_matrix_all_chunks mod_calculate_coulomb_matrix::precompute_coulomb_matrix_all_chunks proc~precompute_coulomb_matrix_all_chunks->none~initialize~3 proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->none~initialize~3 proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->none~initialize~3 proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_4g_charges program~runner RuNNer program~runner->proc~precompute_coulomb_matrix_all_chunks proc~train_mode mod_train_mode::train_mode program~runner->proc~train_mode proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks program~runner->proc~precompute_global_features_all_chunks proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~train_mode->proc~train_loop_4g_charges proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_mode->proc~train_loop_short_range proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures

subroutine initialize_from_structure

subroutine initialize_from_structure( &
    self, &
    struct, &
    sigma, &
    hardness, &
    electrostatic_precision &
)

Initialize type from structure type.

See initialize_from_arrays for more information.

Arguments

  • self : class(TrainingChargeEquilibrator) [out]
  • struct : type(Structure) [in]
  • sigma : real(DP) (dim: (struct%num_atoms)) [in]– standard deviation of gaussian charge densities
  • hardness : real(DP) (dim: (struct%num_atoms)) [in]– Element specific hardnesses of all atoms.
  • electrostatic_precision : real(DP) [in]– Electrostatic precision.

Called By

proc~~initialize_from_structure~~CalledByGraph proc~initialize_from_structure mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_structure none~initialize~3 mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize none~initialize~3->proc~initialize_from_structure proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->none~initialize~3 proc~precompute_coulomb_matrix_all_chunks mod_calculate_coulomb_matrix::precompute_coulomb_matrix_all_chunks proc~precompute_coulomb_matrix_all_chunks->none~initialize~3 proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->none~initialize~3 proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->none~initialize~3 proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_4g_charges program~runner RuNNer program~runner->proc~precompute_coulomb_matrix_all_chunks proc~train_mode mod_train_mode::train_mode program~runner->proc~train_mode proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks program~runner->proc~precompute_global_features_all_chunks proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~train_mode->proc~train_loop_4g_charges proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_mode->proc~train_loop_short_range proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures

subroutine initialize_from_arrays_calc

subroutine initialize_from_arrays_calc( &
    self, &
    nat, &
    pos, &
    lperiodic, &
    lat, &
    sigma, &
    hardness, &
    electrostatic_precision &
)

Initialize type from structure. Matrices are calculated and stored internally.

For larger systems, this might take a while. This object can only be used for the structure that was given in this constructor. Also, the positions and lattice vectors must not change. A change in atomic charges and electronegativites is ok.

Arguments

  • self : class(TrainingChargeEquilibrator) [out]
  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lperiodic : logical [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]– standard deviation of gaussian charge densities
  • hardness : real(DP) (dim: (nat)) [in]– Element specific hardnesses of all atoms.
  • electrostatic_precision : real(DP) [in]– Electrostatic precision.

Called By

proc~~initialize_from_arrays_calc~~CalledByGraph proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays proc~initialize_from_arrays->proc~initialize_from_arrays_calc none~initialize~3 mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize none~initialize~3->proc~initialize_from_arrays proc~initialize_from_structure mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_structure none~initialize~3->proc~initialize_from_structure proc~initialize_from_structure->proc~initialize_from_arrays proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->none~initialize~3 proc~precompute_coulomb_matrix_all_chunks mod_calculate_coulomb_matrix::precompute_coulomb_matrix_all_chunks proc~precompute_coulomb_matrix_all_chunks->none~initialize~3 proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->none~initialize~3 proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->none~initialize~3 proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_4g_charges program~runner RuNNer program~runner->proc~precompute_coulomb_matrix_all_chunks proc~train_mode mod_train_mode::train_mode program~runner->proc~train_mode proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks program~runner->proc~precompute_global_features_all_chunks proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~train_mode->proc~train_loop_4g_charges proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_mode->proc~train_loop_short_range proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures

subroutine initialize_with_data

subroutine initialize_with_data( &
    self, &
    data_matrix, &
    num_atoms &
)

Initialize class with data matrix obtained from get_data function of this class.

Arguments

  • self : class(TrainingChargeEquilibrator) [out]
  • data_matrix : real(DP) (dim: (num_atoms+1,num_atoms+1,5)) [in]– Data matrix obtained from get_data.
  • num_atoms : integer [in]– Number of atoms

subroutine initialize_from_arrays_file

subroutine initialize_from_arrays_file( &
    self, &
    num_atoms, &
    file_coul_mat, &
    hardness, &
    struc_id &
)

Initialize class with data matrix obtained from file.

Arguments

  • self : class(TrainingChargeEquilibrator) [out]
  • num_atoms : integer [in]– Number of atoms
  • file_coul_mat : type(DataCont) [inout]
  • hardness : real(DP) (dim: (num_atoms)) [in]
  • struc_id : integer [in]

Called By

proc~~initialize_from_arrays_file~~CalledByGraph proc~initialize_from_arrays_file mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_file proc~initialize_from_arrays mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays proc~initialize_from_arrays->proc~initialize_from_arrays_file none~initialize~3 mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize none~initialize~3->proc~initialize_from_arrays proc~initialize_from_structure mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_structure none~initialize~3->proc~initialize_from_structure proc~initialize_from_structure->proc~initialize_from_arrays proc~eval_qeq_feature_calculator mod_qeq_feature_calculator::QEqFeatureCalculator%eval_qeq_feature_calculator proc~eval_qeq_feature_calculator->none~initialize~3 proc~precompute_coulomb_matrix_all_chunks mod_calculate_coulomb_matrix::precompute_coulomb_matrix_all_chunks proc~precompute_coulomb_matrix_all_chunks->none~initialize~3 proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->none~initialize~3 proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->none~initialize~3 proc~evaluate_qeq_extra_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::evaluate_qeq_extra_feature_calculator_single_structure proc~evaluate_qeq_extra_feature_calculator_single_structure->proc~eval_qeq_feature_calculator proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_4g_charges program~runner RuNNer program~runner->proc~precompute_coulomb_matrix_all_chunks proc~train_mode mod_train_mode::train_mode program~runner->proc~train_mode proc~precompute_global_features_all_chunks mod_precompute_global_features_all_chunks::precompute_global_features_all_chunks program~runner->proc~precompute_global_features_all_chunks proc~predict_qeq_feature_calculator_single_structure mod_predict_qeq_feature_calculator_single_structure::predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_single_structure->proc~evaluate_qeq_extra_feature_calculator_single_structure proc~train_mode->proc~train_loop_4g_charges proc~predict_qeq_feature_calculator_multiple_structures mod_predict_qeq_feature_calculator_multiple_structures::predict_qeq_feature_calculator_multiple_structures proc~train_mode->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_mode->proc~train_loop_short_range proc~predict_4g_no_force_trick_single_structure mod_predict_4g_no_force_trick_single_structure::predict_4g_no_force_trick_single_structure proc~predict_4g_no_force_trick_single_structure->proc~predict_qeq_feature_calculator_single_structure proc~predict_qeq_feature_calculator_multiple_structures->proc~predict_qeq_feature_calculator_single_structure proc~precompute_global_features_all_chunks->proc~predict_qeq_feature_calculator_multiple_structures proc~train_loop_short_range->proc~predict_qeq_feature_calculator_multiple_structures

subroutine update_inverse

subroutine update_inverse( &
    self, &
    hardness &
)

Arguments

Called By

proc~~update_inverse~~CalledByGraph proc~update_inverse mod_training_charge_equilibration::TrainingChargeEquilibrator%update_inverse proc~predict_4g_charges_training_qeq_multiple_structures mod_predict_4g_charges_training_qeq_multiple_structures::predict_4g_charges_training_qeq_multiple_structures proc~predict_4g_charges_training_qeq_multiple_structures->proc~update_inverse proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->proc~update_inverse proc~output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges::output_files_and_cost_4g_charges proc~output_files_and_cost_4g_charges->proc~predict_4g_charges_training_qeq_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_4g_charges->proc~output_files_and_cost_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