Skip to content

mod_iterative_charge_equilibration_sqnm

Lines: 53 | Visibility: private

Quasi-Newton optimization method for the iterative QeQ solver. author: Jonas A. Finkler, Moritz Gubler.

Dependencies

Uses

module~~mod_iterative_charge_equilibration_sqnm~~UsesGraph module~mod_iterative_charge_equilibration_sqnm mod_iterative_charge_equilibration_sqnm module~mod_abstract_iterative_charge_equilibration mod_abstract_iterative_charge_equilibration module~mod_iterative_charge_equilibration_sqnm->module~mod_abstract_iterative_charge_equilibration module~mod_precision mod_precision module~mod_iterative_charge_equilibration_sqnm->module~mod_precision module~sqnm sqnm module~mod_iterative_charge_equilibration_sqnm->module~sqnm module~mod_abstract_iterative_charge_equilibration->module~mod_precision module~mod_abstract_charge_equilibration mod_abstract_charge_equilibration module~mod_abstract_iterative_charge_equilibration->module~mod_abstract_charge_equilibration module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_abstract_iterative_charge_equilibration->module~mod_abstract_electrostatics module~mod_io mod_io module~mod_abstract_iterative_charge_equilibration->module~mod_io module~mod_pair_electrostatics mod_pair_electrostatics module~mod_abstract_iterative_charge_equilibration->module~mod_pair_electrostatics module~mod_throw mod_throw module~mod_abstract_iterative_charge_equilibration->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~sqnm->module~mod_precision module~sqnm->iso_c_binding module~historylist historylist module~sqnm->module~historylist module~mod_linalg mod_linalg module~sqnm->module~mod_linalg module~historylist->iso_c_binding module~mod_abstract_charge_equilibration->module~mod_precision module~mod_abstract_charge_equilibration->module~mod_abstract_electrostatics module~mod_periodic_table mod_periodic_table module~mod_abstract_charge_equilibration->module~mod_periodic_table module~mod_structures mod_structures module~mod_abstract_charge_equilibration->module~mod_structures module~mod_abstract_electrostatics->module~mod_precision module~mod_abstract_electrostatics->module~mod_structures module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_linalg->module~mod_precision module~mod_linalg->module~mod_throw module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_settings mod_settings module~mod_linalg->module~mod_settings module~mod_pair_electrostatics->module~mod_precision module~mod_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_throw module~mod_constants mod_constants module~mod_pair_electrostatics->module~mod_constants 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_mpi mod_mpi 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_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_constants module~mod_array_helpers mod_array_helpers module~mod_periodic_table->module~mod_array_helpers module~mod_settings->module~mod_precision module~mod_settings->module~mod_io module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_settings->module~mod_periodic_table module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_sort->module~mod_precision module~mod_structures->module~mod_precision module~mod_structures->module~mod_linalg module~mod_structures->module~mod_throw module~mod_structures->module~mod_constants module~mod_structures->module~mod_mpi module~mod_structures->module~mod_periodic_table module~mod_structures->module~mod_array_helpers module~mod_structures_helper mod_structures_helper module~mod_structures->module~mod_structures_helper module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_cpu_vendor->iso_c_binding module~mod_structures_helper->module~mod_precision module~mod_structures_helper->module~mod_linalg

Used By

module~~mod_iterative_charge_equilibration_sqnm~~UsedByGraph module~mod_iterative_charge_equilibration_sqnm mod_iterative_charge_equilibration_sqnm module~mod_initialize mod_initialize module~mod_initialize->module~mod_iterative_charge_equilibration_sqnm module~mod_predict_mode mod_predict_mode module~mod_predict_mode->module~mod_initialize module~mod_write_outfiles mod_write_outfiles module~mod_predict_mode->module~mod_write_outfiles module~mod_runner_interface_bindings mod_runner_interface_bindings module~mod_runner_interface_bindings->module~mod_initialize 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_cost_calculator mod_cost_calculator module~mod_train_loop_4g_charges->module~mod_cost_calculator module~mod_output_files_and_cost_4g_charges mod_output_files_and_cost_4g_charges module~mod_train_loop_4g_charges->module~mod_output_files_and_cost_4g_charges module~mod_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_train_energy_multiple_structures module~mod_train_loop_short_range->module~mod_train_forces_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_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_train_mode mod_train_mode module~mod_train_mode->module~mod_initialize 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_write_outfiles_training mod_write_outfiles_training module~mod_train_mode->module~mod_write_outfiles_training module~mod_write_outfiles->module~mod_initialize program~runner RuNNer program~runner->module~mod_initialize program~runner->module~mod_predict_mode program~runner->module~mod_train_mode module~mod_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_write_outfiles_training->module~mod_write_outfiles module~mod_cost_calculator->module~mod_write_outfiles_training module~mod_output_files_and_cost->module~mod_cost_calculator module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator module~mod_output_files_and_cost_4g_short_range->module~mod_cost_calculator

Module Variables

  • MAX_HISTORY_LENGTH : integer
  • INITIAL_STEP_SIZE : real(DP)
  • MIN_STEP_SIZE : real(DP)
  • SUBSPACE_TOL : real(DP)

Derived Types Summary

Name Description
IterativeSQNMChargeEquilibrator

Procedures Summary

Name Type Description
sqnm_initial_iteration Subroutine
sqnm_iteration Subroutine

Derived Types Details

type IterativeSQNMChargeEquilibrator

Components

Type-Bound Procedures

Name Attributes Binding
initialize_private public ⇒ initialize_private
compute_charges public ⇒ compute_charges
compute_dcharge_delectronegativity public ⇒ compute_dcharge_delectronegativity
compute_dcharge_dhardness public ⇒ compute_dcharge_dhardness
set_hardness public ⇒ set_hardness
set_charges public ⇒ set_charges
get_lagrange_charges public ⇒ get_lagrange_charges
update_structure public ⇒ update_structure
initialize public ⇒ initialize_iterative
solve_linear_system public ⇒ solve_linear_system_iterative
make_initial_charge_guess public ⇒ make_initial_charge_guess_iterative_solver
make_initial_guess public ⇒ make_initial_guess
calc_f_and_df_dx public ⇒ calc_f_and_df_dx
calc_a_times_vector public ⇒ calc_a_times_vector
constrain_x public ⇒ constrain_x
constrain_df_dx public ⇒ constrain_df_dx
initial_iteration public ⇒ sqnm_initial_iteration
iteration public ⇒ sqnm_iteration

Inherits

type~~iterativesqnmchargeequilibrator~~InheritsGraph type~iterativesqnmchargeequilibrator IterativeSQNMChargeEquilibrator type~abstractiterativechargeequilibrator AbstractIterativeChargeEquilibrator type~iterativesqnmchargeequilibrator->type~abstractiterativechargeequilibrator type~sqnmoptimizer SQNMOptimizer type~iterativesqnmchargeequilibrator->type~sqnmoptimizer lin_solve type~abstractchargeequilibrator AbstractChargeEquilibrator type~abstractiterativechargeequilibrator->type~abstractchargeequilibrator type~hist_list hist_list type~sqnmoptimizer->type~hist_list x_list, flist type~abstractelectrostaticscalculator AbstractElectrostaticsCalculator type~abstractchargeequilibrator->type~abstractelectrostaticscalculator elec_calc

Procedure Details

subroutine sqnm_initial_iteration

subroutine sqnm_initial_iteration( &
    self, &
    rhs, &
    sum_x, &
    x, &
    df_dx &
)

Arguments

  • self : class(IterativeSQNMChargeEquilibrator) [inout]
  • rhs : real(DP) (dim: (self%nat)) [in]– Right hand side of the equation
  • sum_x : real(DP) [in]– This is the constraint (total charge)
  • x : real(DP) (dim: (self%nat)) [inout]– solution (and initial guess for iterative methods)
  • df_dx : real(DP) (dim: (self%nat)) [out]– This is used to check convergence

subroutine sqnm_iteration

subroutine sqnm_iteration( &
    self, &
    rhs, &
    sum_x, &
    x, &
    df_dx &
)

Arguments

  • self : class(IterativeSQNMChargeEquilibrator) [inout]
  • rhs : real(DP) (dim: (self%nat)) [in]– Right hand side of the equation
  • sum_x : real(DP) [in]– This is the constraint (total charge)
  • x : real(DP) (dim: (self%nat)) [inout]– solution (and initial guess for iterative methods)
  • df_dx : real(DP) (dim: (self%nat)) [out]– This is used to check convergence