Skip to content

mod_analyse_a_prime_matrix_eigenvalues

Lines: 53 | Visibility: private

Provide analysis routines for the A prime matrix during 4G charge equilibration.

The routines in this module are not meant for production runs. Instead, they may be helpful to understand problematic QEq behavior (eg. covergence issues).

Dependencies

Uses

module~~mod_analyse_a_prime_matrix_eigenvalues~~UsesGraph module~mod_analyse_a_prime_matrix_eigenvalues mod_analyse_a_prime_matrix_eigenvalues module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_abstract_electrostatics module~mod_abstract_property_model mod_abstract_property_model module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_abstract_property_model module~mod_direct_charge_equilibration mod_direct_charge_equilibration module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_direct_charge_equilibration module~mod_pair_electrostatics mod_pair_electrostatics module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_pair_electrostatics module~mod_periodic_table mod_periodic_table module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_periodic_table module~mod_precision mod_precision module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_precision module~mod_structures mod_structures module~mod_analyse_a_prime_matrix_eigenvalues->module~mod_structures module~mod_abstract_electrostatics->module~mod_precision module~mod_abstract_electrostatics->module~mod_structures module~mod_abstract_property_model->module~mod_precision module~mod_array_helpers mod_array_helpers module~mod_abstract_property_model->module~mod_array_helpers module~mod_initialize_array mod_initialize_array module~mod_abstract_property_model->module~mod_initialize_array module~mod_io mod_io module~mod_abstract_property_model->module~mod_io module~mod_random mod_random module~mod_abstract_property_model->module~mod_random module~mod_settings mod_settings module~mod_abstract_property_model->module~mod_settings module~mod_throw mod_throw module~mod_abstract_property_model->module~mod_throw module~mod_direct_charge_equilibration->module~mod_abstract_electrostatics module~mod_direct_charge_equilibration->module~mod_precision module~mod_abstract_charge_equilibration mod_abstract_charge_equilibration module~mod_direct_charge_equilibration->module~mod_abstract_charge_equilibration module~mod_linalg mod_linalg module~mod_direct_charge_equilibration->module~mod_linalg module~mod_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_precision module~mod_constants mod_constants module~mod_pair_electrostatics->module~mod_constants module~mod_pair_electrostatics->module~mod_throw module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_array_helpers module~mod_periodic_table->module~mod_constants module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_throw iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~mod_structures->module~mod_periodic_table module~mod_structures->module~mod_precision module~mod_structures->module~mod_array_helpers module~mod_structures->module~mod_constants module~mod_structures->module~mod_linalg module~mod_mpi mod_mpi module~mod_structures->module~mod_mpi module~mod_structures_helper mod_structures_helper module~mod_structures->module~mod_structures_helper module~mod_structures->module~mod_throw module~mod_abstract_charge_equilibration->module~mod_abstract_electrostatics module~mod_abstract_charge_equilibration->module~mod_periodic_table module~mod_abstract_charge_equilibration->module~mod_precision module~mod_abstract_charge_equilibration->module~mod_structures module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_initialize_array->module~mod_precision module~mod_initialize_array->module~mod_io module~mod_initialize_array->module~mod_mpi module~mod_initialize_array->module~mod_random module~mod_initialize_array->module~mod_throw module~mod_parameter_file mod_parameter_file module~mod_initialize_array->module~mod_parameter_file module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_linalg->module~mod_precision module~mod_linalg->module~mod_settings module~mod_linalg->module~mod_throw module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_random->module~mod_precision module~mod_random->module~mod_constants module~mod_settings->module~mod_periodic_table module~mod_settings->module~mod_precision module~mod_settings->module~mod_constants module~mod_settings->module~mod_io module~mod_settings->module~mod_throw module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_structures_helper->module~mod_precision module~mod_structures_helper->module~mod_linalg module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_throw->module~mod_io module~mod_throw->module~mod_mpi module~mod_sort mod_sort module~mod_throw->module~mod_sort module~cublas_wrapper->iso_c_binding module~cublas_wrapper->module~mod_settings module~mod_cpu_vendor->iso_c_binding module~mod_parameter_file->module~mod_precision module~mod_parameter_file->module~mod_io module~mod_parameter_file->module~mod_throw module~mod_abstract_broadcast_file mod_abstract_broadcast_file module~mod_parameter_file->module~mod_abstract_broadcast_file module~mod_nan_check mod_nan_check module~mod_parameter_file->module~mod_nan_check module~mod_sort->module~mod_precision module~mod_abstract_broadcast_file->module~mod_io module~mod_abstract_broadcast_file->module~mod_mpi module~mod_abstract_broadcast_file->module~mod_throw module~mod_genericfile mod_genericfile module~mod_abstract_broadcast_file->module~mod_genericfile module~mod_sanitize mod_sanitize module~mod_abstract_broadcast_file->module~mod_sanitize module~mod_nan_check->module~mod_precision module~mod_nan_check->module~mod_io module~mod_nan_check->module~mod_throw ieee_arithmetic ieee_arithmetic module~mod_nan_check->ieee_arithmetic module~mod_genericfile->module~mod_io module~mod_genericfile->module~mod_mpi module~mod_genericfile->module~mod_throw module~mod_sanitize->module~mod_throw

Procedures Summary

Name Type Description
analyse_a_prime_matrix_eigenvalues Subroutine Calculates the eigenvalues of the A' matrix for all structures. And writes them to one file per...

Procedure Details

subroutine analyse_a_prime_matrix_eigenvalues

subroutine analyse_a_prime_matrix_eigenvalues( &
    structures, &
    indices_struc, &
    iter_tol, &
    precision, &
    elemental_sigma, &
    hardness_model, &
    elec_calc, &
    qeq_solver &
)

Calculates the eigenvalues of the A' matrix for all structures. And writes them to one file per structure. Filenames are of the form 'eigenvalues_1', 'eigenvalues_2', etc.

This routine should not be used in MPI-parallel runs.

author: Moritz R. Schäfer

Arguments

  • structures : type(Structure) (dim: (:)) [in]– A list of all structures.
  • indices_struc : integer (dim: (:)) [in]– The index of the structures in `structures` which should be calculated. We hand over the full list of `structures` to avoid an additional copy operation.
  • iter_tol : real(DP) [in]– Convergence threshold for the iterative solver. Can be set by keyword iter_tol.
  • precision : real(DP) [in]– Precision of the electrostatics calculator. Can be set by keyword `electrostatics_precision`. Has to be smaller than `iter_tol`.
  • elemental_sigma : real(DP) (dim: (MAX_ELEM_NUM)) [in]– Gausswidth of charges for each element.
  • hardness_model : type(ModelPtr) [in]– Model for the hardness. Must be already initialized.
  • elec_calc : class(AbstractElectrostaticsCalculator) [inout]– Electrostatic calculator used to process the charges. Is reinitialized for each structure. Its state after the routine is determined by the last structure in indices_struc.
  • qeq_solver : class(DirectChargeEquilibrator) [inout]– Charge equilibrator to calculate charges from hardnesses and predicted chis. Is reinitialized for each structure. Its state after the routine is determined by the last structure in indices_struc.