Skip to content

mod_ewald_summation

Lines: 978 | Visibility: private

3D periodic Ewald summation implementation.

Code has been adapted from the original 4G implementation and this: https://github.com/Jonas-Finkler/ewald-summation For stress see https://wanglab.hosted.uark.edu/DLPOLY2/node65.html. The original code was created by Jonas A. Finkler on 04.02.20. IMPORTANT: if the first element of sigma is set to a value <= 0, point charges are used. In this case self interaction of the charges is omitted. Lattice convention: lat(:,i) is the i-th lattice vector author: Jonas A. Finkler

Dependencies

Uses

module~~mod_ewald_summation~~UsesGraph module~mod_ewald_summation mod_ewald_summation module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_ewald_summation->module~mod_abstract_electrostatics module~mod_constants mod_constants module~mod_ewald_summation->module~mod_constants module~mod_linalg mod_linalg module~mod_ewald_summation->module~mod_linalg 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_pair_electrostatics mod_pair_electrostatics module~mod_ewald_summation->module~mod_pair_electrostatics module~mod_precision mod_precision module~mod_ewald_summation->module~mod_precision module~mod_abstract_electrostatics->module~mod_precision module~mod_structures mod_structures module~mod_abstract_electrostatics->module~mod_structures module~mod_constants->module~mod_precision iso_c_binding iso_c_binding module~mod_constants->iso_c_binding 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_throw mod_throw module~mod_linalg->module~mod_throw module~mod_neighbor_grid->module~mod_neighborlist_helper module~mod_neighbor_grid->module~mod_precision module~mod_dynamic_int_array mod_dynamic_int_array module~mod_neighbor_grid->module~mod_dynamic_int_array module~mod_mpi mod_mpi module~mod_neighbor_grid->module~mod_mpi module~mod_structures_helper mod_structures_helper module~mod_neighbor_grid->module~mod_structures_helper 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_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_constants module~mod_pair_electrostatics->module~mod_precision module~mod_pair_electrostatics->module~mod_throw module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~cublas_wrapper->iso_c_binding module~cublas_wrapper->module~mod_settings module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_settings->module~mod_constants module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_io mod_io module~mod_settings->module~mod_io module~mod_periodic_table mod_periodic_table module~mod_settings->module~mod_periodic_table module~mod_structures->module~mod_constants module~mod_structures->module~mod_linalg module~mod_structures->module~mod_precision module~mod_structures->module~mod_mpi module~mod_structures->module~mod_structures_helper module~mod_structures->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_structures->module~mod_array_helpers module~mod_structures->module~mod_periodic_table 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_mpi module~mod_throw->module~mod_io module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_cpu_vendor->iso_c_binding module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_periodic_table->module~mod_constants 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_io module~mod_sort->module~mod_precision

Used By

module~~mod_ewald_summation~~UsedByGraph module~mod_ewald_summation mod_ewald_summation module~mod_initialize mod_initialize module~mod_initialize->module~mod_ewald_summation module~mod_pppm mod_pppm module~mod_initialize->module~mod_pppm module~mod_qeq_feature_calculator mod_qeq_feature_calculator module~mod_initialize->module~mod_qeq_feature_calculator module~mod_ee4g_feature_calculator mod_ee4g_feature_calculator module~mod_initialize->module~mod_ee4g_feature_calculator module~mod_pppm->module~mod_ewald_summation module~mod_training_charge_equilibration mod_training_charge_equilibration module~mod_training_charge_equilibration->module~mod_ewald_summation 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_mode mod_predict_mode module~mod_predict_mode->module~mod_initialize module~mod_predict_mode->module~mod_qeq_feature_calculator module~mod_write_outfiles mod_write_outfiles module~mod_predict_mode->module~mod_write_outfiles module~mod_predict_mode->module~mod_ee4g_feature_calculator module~mod_enforce_reading mod_enforce_reading module~mod_predict_mode->module~mod_enforce_reading module~mod_predict_multiple_structures mod_predict_multiple_structures module~mod_predict_mode->module~mod_predict_multiple_structures 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_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_runner_interface_bindings mod_runner_interface_bindings module~mod_runner_interface_bindings->module~mod_initialize module~mod_runner_interface_bindings->module~mod_qeq_feature_calculator module~mod_runner_interface_bindings->module~mod_enforce_reading module~mod_global_features_helper mod_global_features_helper module~mod_runner_interface_bindings->module~mod_global_features_helper 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_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_energy_multiple_structures mod_train_energy_multiple_structures module~mod_train_energy_multiple_structures->module~mod_initialize module~mod_train_forces_multiple_structures mod_train_forces_multiple_structures 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_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_initialize 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_train_loop_4g_charges->module~mod_cost_calculator module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_loop_atomic_property->module~mod_initialize module~mod_train_loop_atomic_property->module~mod_cost_calculator module~mod_output_files_and_cost mod_output_files_and_cost module~mod_train_loop_atomic_property->module~mod_output_files_and_cost module~mod_train_loop_short_range mod_train_loop_short_range module~mod_train_loop_short_range->module~mod_initialize 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_train_energy_multiple_structures module~mod_train_loop_short_range->module~mod_train_forces_multiple_structures module~mod_train_loop_short_range->module~mod_ee4g_feature_calculator module~mod_train_loop_short_range->module~mod_global_features_helper module~mod_output_files_and_cost_4g_short_range mod_output_files_and_cost_4g_short_range module~mod_train_loop_short_range->module~mod_output_files_and_cost_4g_short_range module~mod_predict_ee4g_feature_calculator_multiple_structures mod_predict_ee4g_feature_calculator_multiple_structures module~mod_train_loop_short_range->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_loop_short_range->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_train_loop_short_range->module~mod_cost_calculator module~mod_train_loop_short_range->module~mod_output_files_and_cost module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_initialize 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_train_mode->module~mod_train_loop_atomic_property module~mod_train_mode->module~mod_train_loop_short_range 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_predict_ee4g_feature_calculator_multiple_structures module~mod_train_mode->module~mod_predict_qeq_feature_calculator_multiple_structures module~mod_write_outfiles_training mod_write_outfiles_training module~mod_train_mode->module~mod_write_outfiles_training module~mod_predict_all_chunks mod_predict_all_chunks module~mod_train_mode->module~mod_predict_all_chunks module~mod_write_outfiles->module~mod_initialize program~runner RuNNer program~runner->module~mod_initialize program~runner->module~mod_calculate_coulomb_matrix program~runner->module~mod_predict_mode program~runner->module~mod_qeq_feature_calculator program~runner->module~mod_train_mode program~runner->module~mod_ee4g_feature_calculator module~mod_precompute_global_features_all_chunks mod_precompute_global_features_all_chunks program~runner->module~mod_precompute_global_features_all_chunks module~mod_ee4g_feature_calculator->module~mod_global_feature_calculator 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->module~mod_global_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_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->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_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_structure_batch_iterator->module~mod_global_feature_calculator module~mod_structure_batch_iterator->module~mod_global_features_helper module~mod_write_outfiles_training->module~mod_write_outfiles module~mod_cost_calculator->module~mod_write_outfiles_training module~mod_evaluate_4g_single_structure->module~mod_ee4g_feature_calculator module~mod_output_files_and_cost->module~mod_ee4g_feature_calculator module~mod_output_files_and_cost->module~mod_cost_calculator module~mod_output_files_and_cost->module~mod_predict_multiple_structures 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_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

Derived Types Summary

Name Description
EwaldCalculator

Procedures Summary

Name Type Description
get_optimal_eta Function Compute the optimal value of eta to get the \f$ \mathcal{O}(n^{3/2}) \f$ scaling. Taken from...
get_optimal_eta_matrix Function Compute the optimal value of eta for the calculation of A or its derivatives. When the matrix...
get_optimal_eta_gauss_charges Function Compute the optimal value of eta for gaussian charges Adjust the optimal eta to take into...
get_optimal_cutoff_real Function Compute the real cutoff radius such that the error is below prec
get_optimal_cutoff_recip Function Compute the reciprocal cutoff radius such that the error is below prec
initialize_ewald Subroutine
evaluate_ewald_calculator Subroutine
ewald_energy_force_stress Subroutine Compute Ewald energy, forces and stress Gaussian charges (and also the compensating Ewald...
ewald_energy_force_stress_real_pair Subroutine Pairwise contributions to the explicit calculation of the real-space Ewald energies, forces,...
ewald_energy_force_stress_real Subroutine Real space part of the Ewald sum
ewald_energy_force_stress_recip Subroutine Reciprocal space part of the Ewald sum
ewald_energy_self_interaction Subroutine Self interaction part of the Ewald sum.
ewald_a Subroutine Calculates the Coulomb matrix A, such that E = 1/2 * q^t * A * q the periodic A matrix is not...
ewald_a_real_pair Subroutine Pairwise contribution to the real-space part of the Ewald A matrix.
ewald_a_real Subroutine Real space part of the Coulomb matrix calculation
ewald_a_recip Subroutine Reciprocal space part of the Coulomb matrix calculation Please not that this routine has a...
ewald_a_self_interaction Subroutine Self interaction part for the Coulomb matrix
ewald_da_dlat_times_q Subroutine Compute the matrix sum_j dA_ij/dlat_jk * q_j There is a dependence of A on eta. The partial...
ewald_da_dlat_times_q_real_pair Subroutine Compute the pairwise contribution to the Ewald real-space dA_{iat,jat}/dlat.
ewald_da_dlat_times_q_real Subroutine Real space part of the dA/dlat derivatives This does not take the dependence on eta into...
ewald_da_dlat_times_q_recip Subroutine Reciprocal space part of the dA/dlat derivatives
ewald_da_dpos_times_q Subroutine Computes sum_j dA_ij/dr_kl * q_j
ewald_da_dpos_times_q_real_pair Subroutine Compute the pairwise contribution to the Ewald real-space dA_{iat,jat}/dxyz.
ewald_da_dpos_times_q_real Subroutine Real space part of the dA/DPos derivatives
ewald_da_dpos_times_q_recip Subroutine Reciprocal space part of the dA/DPos derivatives
ewald_da_dpos Subroutine Computes sum_j dA_ij/dr_kl
ewald_da_dpos_real Subroutine Real-space contribution to Ewald dA/dr.
ewald_da_dpos_recip Subroutine Reciprocal-space contribution to Ewald dA/dr.
free_fftw Subroutine

Derived Types Details

type EwaldCalculator

Components

Type-Bound Procedures

Name Attributes Binding
initialize_abstract_electrostatics_calculator_private public ⇒ initialize_abstract_electrostatics_calculator_private
numerical_forces public ⇒ numerical_forces_electrostatic
numerical_stress public ⇒ numerical_stress_electrostatic
evaluate public ⇒ evaluate
evaluate_structure public ⇒ evaluate_structure
update_sigma public ⇒ update_sigma
initialize public ⇒ initialize_ewald
evaluate_intern_to_implement public ⇒ evaluate_ewald_calculator
free_fftw_intern public ⇒ free_fftw

Inherits

type~~ewaldcalculator~~InheritsGraph type~ewaldcalculator EwaldCalculator type~abstractelectrostaticscalculator AbstractElectrostaticsCalculator type~ewaldcalculator->type~abstractelectrostaticscalculator

Procedure Details

function get_optimal_eta

function get_optimal_eta( &
    nat, &
    lat, &
    sigma &
)

Compute the optimal value of eta to get the \f$ \mathcal{O}(n^{3/2}) \f$ scaling.

Taken from https://arxiv.org/pdf/1904.08875.pdf Modified to account for Gaussian charges. Not sure if optimal.

Arguments

  • nat : integer [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]

Called By

proc~~get_optimal_eta~~CalledByGraph proc~get_optimal_eta mod_ewald_summation::get_optimal_eta proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~get_optimal_eta

function get_optimal_eta_matrix

function get_optimal_eta_matrix( &
    lat, &
    sigma &
)

Compute the optimal value of eta for the calculation of A or its derivatives.

When the matrix is built, each reciprocal term takes \f$ \mathcal{O}(nat^2) \f$ computations. Therefore reciprocal is not cheaper than real anymore and the optimal choice of eta is different (it is independant of nat).

Arguments

  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (:)) [in]

Called By

proc~~get_optimal_eta_matrix~~CalledByGraph proc~get_optimal_eta_matrix mod_ewald_summation::get_optimal_eta_matrix proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~get_optimal_eta_matrix proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~get_optimal_eta_matrix 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

function get_optimal_eta_gauss_charges

function get_optimal_eta_gauss_charges( &
    eta, &
    sigma &
)

Compute the optimal value of eta for gaussian charges

Adjust the optimal eta to take into account the smearing of the charges. Using maxval(sigma) (most diffuse Gaussian) → smallest correction, slight oversmoothing for tighter Gaussians. Using minval(sigma) (tightest Gaussian) → largest correction, could be closer to “truly optimal” for the worst-case species, with more change in η.

Arguments

  • eta : real(DP) [in]
  • sigma : real(DP) (dim: (:)) [in]

Called By

proc~~get_optimal_eta_gauss_charges~~CalledByGraph proc~get_optimal_eta_gauss_charges mod_ewald_summation::get_optimal_eta_gauss_charges proc~get_optimal_eta mod_ewald_summation::get_optimal_eta proc~get_optimal_eta->proc~get_optimal_eta_gauss_charges proc~get_optimal_eta_matrix mod_ewald_summation::get_optimal_eta_matrix proc~get_optimal_eta_matrix->proc~get_optimal_eta_gauss_charges proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~get_optimal_eta proc~evaluate_ewald_calculator->proc~get_optimal_eta_matrix proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~get_optimal_eta_matrix 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

function get_optimal_cutoff_real

function get_optimal_cutoff_real( &
    eta, &
    prec &
)

Compute the real cutoff radius such that the error is below prec

Arguments

  • eta : real(DP) [in]
  • prec : real(DP) [in]

Called By

proc~~get_optimal_cutoff_real~~CalledByGraph proc~get_optimal_cutoff_real mod_ewald_summation::get_optimal_cutoff_real proc~calc_real_space_party mod_pppm::PppmCalculator%calc_real_space_party proc~calc_real_space_party->proc~get_optimal_cutoff_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~get_optimal_cutoff_real proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~get_optimal_cutoff_real proc~evaluate_intern_to_implement mod_pppm::PppmCalculator%evaluate_intern_to_implement proc~evaluate_intern_to_implement->proc~calc_real_space_party 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

function get_optimal_cutoff_recip

function get_optimal_cutoff_recip( &
    eta, &
    prec &
)

Compute the reciprocal cutoff radius such that the error is below prec

Arguments

  • eta : real(DP) [in]
  • prec : real(DP) [in]

Called By

proc~~get_optimal_cutoff_recip~~CalledByGraph proc~get_optimal_cutoff_recip mod_ewald_summation::get_optimal_cutoff_recip proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~get_optimal_cutoff_recip proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~get_optimal_cutoff_recip 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_ewald

subroutine initialize_ewald( &
    self, &
    num_atoms, &
    atomic_sigmas, &
    electrostatics_precision, &
    lattice &
)

Arguments

  • self : class(EwaldCalculator) [out]
  • num_atoms : integer [in]
  • atomic_sigmas : real(DP) (dim: (num_atoms)) [in]
  • electrostatics_precision : real(DP) [in]
  • lattice : real(DP) (dim: (3,3)) [in]

subroutine evaluate_ewald_calculator

subroutine evaluate_ewald_calculator( &
    self, &
    pos, &
    lat, &
    charges, &
    lagrange_charges, &
    calc_energy, &
    calc_forces, &
    calc_stress, &
    calc_de_dq, &
    calc_a_matrix, &
    calc_lambda_times_da_dpos_times_q, &
    calc_lambda_times_da_dstress_times_q &
)

Arguments

  • self : class(EwaldCalculator) [inout]
  • pos : real(DP) (dim: (3,self%num_atoms)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (self%num_atoms)) [in]
  • lagrange_charges : real(DP) (dim: (self%num_atoms)) [in]
  • calc_energy : logical [in]
  • calc_forces : logical [in]
  • calc_stress : logical [in]
  • calc_de_dq : logical [in]
  • calc_a_matrix : logical [in]
  • calc_lambda_times_da_dpos_times_q : logical [in]
  • calc_lambda_times_da_dstress_times_q : logical [in]

subroutine ewald_energy_force_stress

subroutine ewald_energy_force_stress( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    cutoff_real, &
    eta, &
    cutoff_recip, &
    energy, &
    forces, &
    stress, &
    de_dq &
)

Compute Ewald energy, forces and stress Gaussian charges (and also the compensating Ewald Gaussians) are of the form \f$ \frac{1}{(2 \PI \sigma^2)^{3/2}} \exp\left(\frac{-r^2}{(2 \sigma^2)}\right) \f$ -> \f$ \sigma = \sqrt{2} \alpha_\text{cent} \f$

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff_real : real(DP) [in]
  • eta : real(DP) [in]
  • cutoff_recip : real(DP) [in]
  • energy : real(DP) [out]
  • forces : real(DP) (dim: (3,nat)) [out]
  • stress : real(DP) (dim: (3,3)) [out]
  • de_dq : real(DP) (dim: (nat)) [inout]

Called By

proc~~ewald_energy_force_stress~~CalledByGraph proc~ewald_energy_force_stress mod_ewald_summation::ewald_energy_force_stress proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_energy_force_stress

subroutine ewald_energy_force_stress_real_pair

subroutine ewald_energy_force_stress_real_pair( &
    nat, &
    iat, &
    jat, &
    invsqrt2eta, &
    invsqrt2eta2, &
    sigma, &
    r, &
    d, &
    d2, &
    qi, &
    qj, &
    lat_det, &
    energy, &
    forces, &
    stress, &
    de_dq &
)

Pairwise contributions to the explicit calculation of the real-space Ewald energies, forces, stress, and de_dq.

Arguments

  • nat : integer [in]
  • iat : integer [in]
  • jat : integer [in]
  • invsqrt2eta : real(DP) [in]
  • invsqrt2eta2 : real(DP) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • r : real(DP) [in]
  • d : real(DP) (dim: (3)) [in]
  • d2 : real(DP) [in]
  • qi : real(DP) [in]
  • qj : real(DP) [in]
  • lat_det : real(DP) [in]
  • energy : real(DP) [inout]
  • forces : real(DP) (dim: (3,nat)) [inout]
  • stress : real(DP) (dim: (3,3)) [inout]
  • de_dq : real(DP) (dim: (nat)) [inout]

Called By

proc~~ewald_energy_force_stress_real_pair~~CalledByGraph proc~ewald_energy_force_stress_real_pair mod_ewald_summation::ewald_energy_force_stress_real_pair proc~ewald_energy_force_stress_real mod_ewald_summation::ewald_energy_force_stress_real proc~ewald_energy_force_stress_real->proc~ewald_energy_force_stress_real_pair proc~ewald_energy_force_stress mod_ewald_summation::ewald_energy_force_stress proc~ewald_energy_force_stress->proc~ewald_energy_force_stress_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_energy_force_stress

subroutine ewald_energy_force_stress_real

subroutine ewald_energy_force_stress_real( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    cutoff, &
    eta, &
    energy, &
    forces, &
    stress, &
    de_dq &
)

Real space part of the Ewald sum

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff : real(DP) [in]
  • eta : real(DP) [in]
  • energy : real(DP) [inout]
  • forces : real(DP) (dim: (3,nat)) [inout]
  • stress : real(DP) (dim: (3,3)) [inout]
  • de_dq : real(DP) (dim: (nat)) [inout]

Called By

proc~~ewald_energy_force_stress_real~~CalledByGraph proc~ewald_energy_force_stress_real mod_ewald_summation::ewald_energy_force_stress_real proc~ewald_energy_force_stress mod_ewald_summation::ewald_energy_force_stress proc~ewald_energy_force_stress->proc~ewald_energy_force_stress_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_energy_force_stress

subroutine ewald_energy_force_stress_recip

subroutine ewald_energy_force_stress_recip( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    eta, &
    cutoff, &
    energy, &
    forces, &
    stress, &
    de_dq &
)

Reciprocal space part of the Ewald sum

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • energy : real(DP) [inout]
  • forces : real(DP) (dim: (3,nat)) [inout]
  • stress : real(DP) (dim: (3,3)) [inout]
  • de_dq : real(DP) (dim: (nat)) [inout]

Called By

proc~~ewald_energy_force_stress_recip~~CalledByGraph proc~ewald_energy_force_stress_recip mod_ewald_summation::ewald_energy_force_stress_recip proc~ewald_energy_force_stress mod_ewald_summation::ewald_energy_force_stress proc~ewald_energy_force_stress->proc~ewald_energy_force_stress_recip proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_energy_force_stress

subroutine ewald_energy_self_interaction

subroutine ewald_energy_self_interaction( &
    nat, &
    charges, &
    sigma, &
    eta, &
    energy, &
    de_dq &
)

Self interaction part of the Ewald sum.

Arguments

  • nat : integer [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • energy : real(DP) [inout]
  • de_dq : real(DP) (dim: (nat)) [inout]

Called By

proc~~ewald_energy_self_interaction~~CalledByGraph proc~ewald_energy_self_interaction mod_ewald_summation::ewald_energy_self_interaction proc~ewald_energy_force_stress mod_ewald_summation::ewald_energy_force_stress proc~ewald_energy_force_stress->proc~ewald_energy_self_interaction proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_energy_force_stress

subroutine ewald_a

subroutine ewald_a( &
    nat, &
    pos, &
    lat, &
    sigma, &
    cutoff_real, &
    eta, &
    cutoff_recip, &
    a_matrix &
)

Calculates the Coulomb matrix A, such that E = 1/2 * q^t * A * q the periodic A matrix is not unique (depends on eta) however, because sum(q)==0, A*q is independent of eta

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff_real : real(DP) [in]
  • eta : real(DP) [in]
  • cutoff_recip : real(DP) [in]
  • a_matrix : real(DP) (dim: (nat,nat)) [out]

Called By

proc~~ewald_a~~CalledByGraph proc~ewald_a mod_ewald_summation::ewald_a proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_a proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_a 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 ewald_a_real_pair

subroutine ewald_a_real_pair( &
    nat, &
    iat, &
    jat, &
    r, &
    invsqrt2eta, &
    sigma, &
    contrib &
)

Pairwise contribution to the real-space part of the Ewald A matrix.

Arguments

  • nat : integer [in]
  • iat : integer [in]
  • jat : integer [in]
  • r : real(DP) [in]
  • invsqrt2eta : real(DP) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • contrib : real(DP) [out]

Called By

proc~~ewald_a_real_pair~~CalledByGraph proc~ewald_a_real_pair mod_ewald_summation::ewald_a_real_pair proc~ewald_a_real mod_ewald_summation::ewald_a_real proc~ewald_a_real->proc~ewald_a_real_pair proc~ewald_a mod_ewald_summation::ewald_a proc~ewald_a->proc~ewald_a_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_a proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_a 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 ewald_a_real

subroutine ewald_a_real( &
    nat, &
    pos, &
    lat, &
    sigma, &
    cutoff, &
    eta, &
    a_matrix &
)

Real space part of the Coulomb matrix calculation

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff : real(DP) [in]
  • eta : real(DP) [in]
  • a_matrix : real(DP) (dim: (nat,nat)) [inout]

Called By

proc~~ewald_a_real~~CalledByGraph proc~ewald_a_real mod_ewald_summation::ewald_a_real proc~ewald_a mod_ewald_summation::ewald_a proc~ewald_a->proc~ewald_a_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_a proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_a 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 ewald_a_recip

subroutine ewald_a_recip( &
    nat, &
    pos, &
    lat, &
    eta, &
    cutoff, &
    a_matrix &
)

Reciprocal space part of the Coulomb matrix calculation Please not that this routine has a different scaling that than the one for the energy force and stress calculation, as each reciprocal lattice point requires O(nat**2) instead of O(nat) computations hence the different optimal ewald eta for the matrix

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • a_matrix : real(DP) (dim: (nat,nat)) [inout]

Called By

proc~~ewald_a_recip~~CalledByGraph proc~ewald_a_recip mod_ewald_summation::ewald_a_recip proc~ewald_a mod_ewald_summation::ewald_a proc~ewald_a->proc~ewald_a_recip proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_a proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_a 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 ewald_a_self_interaction

subroutine ewald_a_self_interaction( &
    nat, &
    eta, &
    sigma, &
    a_matrix &
)

Self interaction part for the Coulomb matrix

Arguments

  • nat : integer [in]
  • eta : real(DP) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • a_matrix : real(DP) (dim: (nat,nat)) [inout]

Called By

proc~~ewald_a_self_interaction~~CalledByGraph proc~ewald_a_self_interaction mod_ewald_summation::ewald_a_self_interaction proc~ewald_a mod_ewald_summation::ewald_a proc~ewald_a->proc~ewald_a_self_interaction proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_a proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_a 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 ewald_da_dlat_times_q

subroutine ewald_da_dlat_times_q( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    cutoff_real, &
    eta, &
    cutoff_recip, &
    da_dlat_times_q &
)

Compute the matrix sum_j dA_ij/dlat_jk * q_j There is a dependence of A on eta. The partial derivative of this is not considered here since it cancels out when sum(q_i) == 0. These routines are not optimized, but they work and are tested vs finite differences.

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff_real : real(DP) [in]
  • eta : real(DP) [in]
  • cutoff_recip : real(DP) [in]
  • da_dlat_times_q : real(DP) (dim: (nat,3,3)) [out]

Called By

proc~~ewald_da_dlat_times_q~~CalledByGraph proc~ewald_da_dlat_times_q mod_ewald_summation::ewald_da_dlat_times_q proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dlat_times_q

subroutine ewald_da_dlat_times_q_real_pair

subroutine ewald_da_dlat_times_q_real_pair( &
    nat, &
    iat, &
    jat, &
    invsqrt2eta, &
    invsqrt2eta2, &
    sigma, &
    r, &
    d, &
    d2, &
    invlat, &
    contrib &
)

Compute the pairwise contribution to the Ewald real-space dA_{iat,jat}/dlat.

Arguments

  • nat : integer [in]
  • iat : integer [in]
  • jat : integer [in]
  • invsqrt2eta : real(DP) [in]
  • invsqrt2eta2 : real(DP) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • r : real(DP) [in]
  • d : real(DP) (dim: (3)) [in]
  • d2 : real(DP) [in]
  • invlat : real(DP) (dim: (3,3)) [in]
  • contrib : real(DP) (dim: (3,3)) [out]

Called By

proc~~ewald_da_dlat_times_q_real_pair~~CalledByGraph proc~ewald_da_dlat_times_q_real_pair mod_ewald_summation::ewald_da_dlat_times_q_real_pair proc~ewald_da_dlat_times_q_real mod_ewald_summation::ewald_da_dlat_times_q_real proc~ewald_da_dlat_times_q_real->proc~ewald_da_dlat_times_q_real_pair proc~ewald_da_dlat_times_q mod_ewald_summation::ewald_da_dlat_times_q proc~ewald_da_dlat_times_q->proc~ewald_da_dlat_times_q_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dlat_times_q

subroutine ewald_da_dlat_times_q_real

subroutine ewald_da_dlat_times_q_real( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    cutoff, &
    eta, &
    da_dlat_times_q &
)

Real space part of the dA/dlat derivatives This does not take the dependence on eta into account. However it should cancel out with the reciprocal part.

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff : real(DP) [in]
  • eta : real(DP) [in]
  • da_dlat_times_q : real(DP) (dim: (nat,3,3)) [inout]

Called By

proc~~ewald_da_dlat_times_q_real~~CalledByGraph proc~ewald_da_dlat_times_q_real mod_ewald_summation::ewald_da_dlat_times_q_real proc~ewald_da_dlat_times_q mod_ewald_summation::ewald_da_dlat_times_q proc~ewald_da_dlat_times_q->proc~ewald_da_dlat_times_q_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dlat_times_q

subroutine ewald_da_dlat_times_q_recip

subroutine ewald_da_dlat_times_q_recip( &
    nat, &
    pos, &
    lat, &
    charges, &
    sigma, &
    eta, &
    cutoff, &
    da_dlat_times_q &
)

Reciprocal space part of the dA/dlat derivatives

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • da_dlat_times_q : real(DP) (dim: (nat,3,3)) [inout]

Called By

proc~~ewald_da_dlat_times_q_recip~~CalledByGraph proc~ewald_da_dlat_times_q_recip mod_ewald_summation::ewald_da_dlat_times_q_recip proc~ewald_da_dlat_times_q mod_ewald_summation::ewald_da_dlat_times_q proc~ewald_da_dlat_times_q->proc~ewald_da_dlat_times_q_recip proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dlat_times_q

subroutine ewald_da_dpos_times_q

subroutine ewald_da_dpos_times_q( &
    nat, &
    pos, &
    lat, &
    charges, &
    lagrange_charges, &
    sigma, &
    cutoff_real, &
    eta, &
    cutoff_recip, &
    da_dpos_times_q &
)

Computes sum_j dA_ij/dr_kl * q_j

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • lagrange_charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff_real : real(DP) [in]
  • eta : real(DP) [in]
  • cutoff_recip : real(DP) [in]
  • da_dpos_times_q : real(DP) (dim: (nat,3,nat)) [inout]

Called By

proc~~ewald_da_dpos_times_q~~CalledByGraph proc~ewald_da_dpos_times_q mod_ewald_summation::ewald_da_dpos_times_q proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dpos_times_q

subroutine ewald_da_dpos_times_q_real_pair

subroutine ewald_da_dpos_times_q_real_pair( &
    nat, &
    iat, &
    jat, &
    invsqrt2eta, &
    invsqrt2eta2, &
    sigma, &
    d, &
    d2, &
    contrib &
)

Compute the pairwise contribution to the Ewald real-space dA_{iat,jat}/dxyz.

Arguments

  • nat : integer [in]
  • iat : integer [in]
  • jat : integer [in]
  • invsqrt2eta : real(DP) [in]
  • invsqrt2eta2 : real(DP) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • d : real(DP) (dim: (3)) [in]
  • d2 : real(DP) [in]
  • contrib : real(DP) (dim: (3)) [out]

Called By

proc~~ewald_da_dpos_times_q_real_pair~~CalledByGraph proc~ewald_da_dpos_times_q_real_pair mod_ewald_summation::ewald_da_dpos_times_q_real_pair proc~ewald_da_dpos_real mod_ewald_summation::ewald_da_dpos_real proc~ewald_da_dpos_real->proc~ewald_da_dpos_times_q_real_pair proc~ewald_da_dpos_times_q_real mod_ewald_summation::ewald_da_dpos_times_q_real proc~ewald_da_dpos_times_q_real->proc~ewald_da_dpos_times_q_real_pair proc~ewald_da_dpos mod_ewald_summation::ewald_da_dpos proc~ewald_da_dpos->proc~ewald_da_dpos_real proc~ewald_da_dpos_times_q mod_ewald_summation::ewald_da_dpos_times_q proc~ewald_da_dpos_times_q->proc~ewald_da_dpos_times_q_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dpos_times_q proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_da_dpos 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 ewald_da_dpos_times_q_real

subroutine ewald_da_dpos_times_q_real( &
    nat, &
    pos, &
    lat, &
    charges, &
    lagrange_charges, &
    sigma, &
    cutoff, &
    eta, &
    da_dpos_times_q &
)

Real space part of the dA/DPos derivatives

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • lagrange_charges : real(DP) (dim: (nat)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • cutoff : real(DP) [in]
  • eta : real(DP) [in]
  • da_dpos_times_q : real(DP) (dim: (nat,3,nat)) [inout]

Called By

proc~~ewald_da_dpos_times_q_real~~CalledByGraph proc~ewald_da_dpos_times_q_real mod_ewald_summation::ewald_da_dpos_times_q_real proc~ewald_da_dpos_times_q mod_ewald_summation::ewald_da_dpos_times_q proc~ewald_da_dpos_times_q->proc~ewald_da_dpos_times_q_real proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dpos_times_q

subroutine ewald_da_dpos_times_q_recip

subroutine ewald_da_dpos_times_q_recip( &
    nat, &
    pos, &
    lat, &
    charges, &
    lagrange_charges, &
    eta, &
    cutoff, &
    da_dpos_times_q &
)

Reciprocal space part of the dA/DPos derivatives

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) (dim: (nat)) [in]
  • lagrange_charges : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • da_dpos_times_q : real(DP) (dim: (nat,3,nat)) [inout]

Called By

proc~~ewald_da_dpos_times_q_recip~~CalledByGraph proc~ewald_da_dpos_times_q_recip mod_ewald_summation::ewald_da_dpos_times_q_recip proc~ewald_da_dpos_times_q mod_ewald_summation::ewald_da_dpos_times_q proc~ewald_da_dpos_times_q->proc~ewald_da_dpos_times_q_recip proc~evaluate_ewald_calculator mod_ewald_summation::EwaldCalculator%evaluate_ewald_calculator proc~evaluate_ewald_calculator->proc~ewald_da_dpos_times_q

subroutine ewald_da_dpos

subroutine ewald_da_dpos( &
    nat, &
    pos, &
    lat, &
    sigma, &
    eta, &
    cutoff_real, &
    cutoff_recip, &
    da_dpos &
)

Computes sum_j dA_ij/dr_kl

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • cutoff_real : real(DP) [in]
  • cutoff_recip : real(DP) [in]
  • da_dpos : real(DP) (dim: (nat,nat,3)) [out]

Called By

proc~~ewald_da_dpos~~CalledByGraph proc~ewald_da_dpos mod_ewald_summation::ewald_da_dpos proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_da_dpos 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 ewald_da_dpos_real

subroutine ewald_da_dpos_real( &
    nat, &
    pos, &
    lat, &
    sigma, &
    eta, &
    cutoff, &
    da_dpos &
)

Real-space contribution to Ewald dA/dr.

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • sigma : real(DP) (dim: (nat)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • da_dpos : real(DP) (dim: (nat,nat,3)) [inout]

Called By

proc~~ewald_da_dpos_real~~CalledByGraph proc~ewald_da_dpos_real mod_ewald_summation::ewald_da_dpos_real proc~ewald_da_dpos mod_ewald_summation::ewald_da_dpos proc~ewald_da_dpos->proc~ewald_da_dpos_real proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_da_dpos 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 ewald_da_dpos_recip

subroutine ewald_da_dpos_recip( &
    nat, &
    pos, &
    lat, &
    eta, &
    cutoff, &
    da_dpos &
)

Reciprocal-space contribution to Ewald dA/dr.

Arguments

  • nat : integer [in]
  • pos : real(DP) (dim: (3,nat)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • eta : real(DP) [in]
  • cutoff : real(DP) [in]
  • da_dpos : real(DP) (dim: (nat,nat,3)) [inout]

Called By

proc~~ewald_da_dpos_recip~~CalledByGraph proc~ewald_da_dpos_recip mod_ewald_summation::ewald_da_dpos_recip proc~ewald_da_dpos mod_ewald_summation::ewald_da_dpos proc~ewald_da_dpos->proc~ewald_da_dpos_recip proc~initialize_from_arrays_calc mod_training_charge_equilibration::TrainingChargeEquilibrator%initialize_from_arrays_calc proc~initialize_from_arrays_calc->proc~ewald_da_dpos 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 free_fftw

subroutine free_fftw( &
    self &
)

Arguments