Skip to content

mod_hirshfeld_vdw

Lines: 226 | Visibility: private

Dispersion correction module based on method by Tkatchenko and Scheffler (PRL 102, 073005 (2009)) and implementation of Muhli et al. (PHYSICAL REVIEW B 104, 054106 (2021)). author: Knut Nikolas Lausch

Dependencies

Uses

module~~mod_hirshfeld_vdw~~UsesGraph module~mod_hirshfeld_vdw mod_hirshfeld_vdw module~mod_feature_map_neighborlist mod_feature_map_neighborlist module~mod_hirshfeld_vdw->module~mod_feature_map_neighborlist module~mod_io mod_io module~mod_hirshfeld_vdw->module~mod_io module~mod_mpi mod_mpi module~mod_hirshfeld_vdw->module~mod_mpi module~mod_periodic_table mod_periodic_table module~mod_hirshfeld_vdw->module~mod_periodic_table module~mod_precision mod_precision module~mod_hirshfeld_vdw->module~mod_precision module~mod_throw mod_throw module~mod_hirshfeld_vdw->module~mod_throw module~mod_feature_map_neighborlist->module~mod_io module~mod_feature_map_neighborlist->module~mod_mpi module~mod_feature_map_neighborlist->module~mod_precision module~mod_feature_map_neighborlist->module~mod_throw module~mod_abstract_cutoff_function mod_abstract_cutoff_function module~mod_feature_map_neighborlist->module~mod_abstract_cutoff_function module~mod_constants mod_constants module~mod_feature_map_neighborlist->module~mod_constants module~mod_neighborlist mod_neighborlist module~mod_feature_map_neighborlist->module~mod_neighborlist module~mod_structures mod_structures module~mod_feature_map_neighborlist->module~mod_structures module~mod_timer mod_timer module~mod_feature_map_neighborlist->module~mod_timer module~mod_io->module~mod_precision iso_fortran_env iso_fortran_env module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_periodic_table->module~mod_array_helpers module~mod_periodic_table->module~mod_constants iso_c_binding iso_c_binding module~mod_precision->iso_c_binding module~mod_precision->iso_fortran_env module~mod_throw->module~mod_io module~mod_throw->module~mod_mpi module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_abstract_cutoff_function->module~mod_precision 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_neighborlist->module~mod_io module~mod_neighborlist->module~mod_mpi module~mod_neighborlist->module~mod_precision module~mod_neighborlist->module~mod_throw module~mod_neighborlist->module~mod_structures module~mod_dynamic_double_array mod_dynamic_double_array module~mod_neighborlist->module~mod_dynamic_double_array module~mod_dynamic_int_array mod_dynamic_int_array module~mod_neighborlist->module~mod_dynamic_int_array module~mod_neighbor_grid mod_neighbor_grid module~mod_neighborlist->module~mod_neighbor_grid module~mod_neighborlist_helper mod_neighborlist_helper module~mod_neighborlist->module~mod_neighborlist_helper module~mod_settings mod_settings module~mod_neighborlist->module~mod_settings module~mod_sort->module~mod_precision module~mod_structures->module~mod_mpi module~mod_structures->module~mod_periodic_table module~mod_structures->module~mod_precision module~mod_structures->module~mod_throw module~mod_structures->module~mod_array_helpers module~mod_structures->module~mod_constants module~mod_linalg mod_linalg module~mod_structures->module~mod_linalg module~mod_structures_helper mod_structures_helper module~mod_structures->module~mod_structures_helper module~mod_timer->module~mod_io module~mod_timer->module~mod_precision module~mod_timer->module~mod_throw module~mod_timer->module~mod_optional_args ieee_arithmetic ieee_arithmetic module~mod_timer->ieee_arithmetic module~mod_dynamic_double_array->module~mod_precision module~mod_dynamic_double_array->module~mod_throw module~mod_linalg->module~mod_precision module~mod_linalg->module~mod_throw module~mod_linalg->module~mod_settings module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_neighbor_grid->module~mod_mpi module~mod_neighbor_grid->module~mod_precision module~mod_neighbor_grid->module~mod_dynamic_int_array module~mod_neighbor_grid->module~mod_neighborlist_helper module~mod_neighbor_grid->module~mod_structures_helper module~mod_neighborlist_helper->module~mod_mpi module~mod_neighborlist_helper->module~mod_precision module~mod_neighborlist_helper->module~mod_linalg module~mod_settings->module~mod_io module~mod_settings->module~mod_periodic_table module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_structures_helper->module~mod_precision module~mod_structures_helper->module~mod_linalg module~cublas_wrapper->iso_c_binding module~cublas_wrapper->module~mod_settings module~mod_cpu_vendor->iso_c_binding

Used By

module~~mod_hirshfeld_vdw~~UsedByGraph module~mod_hirshfeld_vdw mod_hirshfeld_vdw module~mod_initialize mod_initialize module~mod_initialize->module~mod_hirshfeld_vdw module~mod_post_processing_vdw_hirshfeld_single_structure mod_post_processing_vdw_hirshfeld_single_structure module~mod_post_processing_vdw_hirshfeld_single_structure->module~mod_hirshfeld_vdw module~mod_post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure module~mod_post_processing_wrapper_single_structure->module~mod_hirshfeld_vdw module~mod_post_processing_wrapper_single_structure->module~mod_post_processing_vdw_hirshfeld_single_structure module~mod_predict_all_chunks mod_predict_all_chunks module~mod_predict_all_chunks->module~mod_hirshfeld_vdw module~mod_predict_multiple_structures mod_predict_multiple_structures module~mod_predict_all_chunks->module~mod_predict_multiple_structures module~mod_predict_mode mod_predict_mode module~mod_predict_mode->module~mod_hirshfeld_vdw module~mod_predict_mode->module~mod_initialize module~mod_predict_mode->module~mod_predict_multiple_structures module~mod_write_outfiles mod_write_outfiles module~mod_predict_mode->module~mod_write_outfiles module~mod_predict_multiple_structures->module~mod_hirshfeld_vdw 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_hirshfeld_vdw module~mod_predict_single_structure->module~mod_post_processing_wrapper_single_structure module~mod_runner_interface mod_runner_interface module~mod_runner_interface->module~mod_hirshfeld_vdw module~mod_runner_interface_bindings mod_runner_interface_bindings module~mod_runner_interface_bindings->module~mod_hirshfeld_vdw module~mod_runner_interface_bindings->module~mod_initialize module~mod_runner_interface_bindings->module~mod_post_processing_vdw_hirshfeld_single_structure module~mod_runner_interface_bindings->module~mod_runner_interface program~runner RuNNer program~runner->module~mod_hirshfeld_vdw program~runner->module~mod_initialize program~runner->module~mod_predict_mode module~mod_train_mode mod_train_mode program~runner->module~mod_train_mode 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_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_output_files_and_cost mod_output_files_and_cost module~mod_output_files_and_cost->module~mod_predict_multiple_structures module~mod_cost_calculator mod_cost_calculator module~mod_output_files_and_cost->module~mod_cost_calculator 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_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_output_files_and_cost module~mod_train_loop_atomic_property->module~mod_cost_calculator 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_output_files_and_cost 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_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->module~mod_initialize module~mod_train_mode->module~mod_predict_all_chunks 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 module~mod_write_outfiles_training->module~mod_write_outfiles module~mod_cost_calculator->module~mod_write_outfiles_training 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

Derived Types Summary

Name Description
HirshfeldVdwCalculator

Procedures Summary

Name Type Description
constructor_hirshfeld_vdw_calculator Function
get_c6_ab Function Implementation of c6_ab coefficient interpolation scheme used in Tkatchenko and Scheffler...
get_c6_ab_free Function Implementation of c6_ab_free coefficient calculation from c6_aa and c6_bb reference values. Used...
print_hirshfeld_vdw_calculator Subroutine Initialization of HirshfeldVdwCalculator
close_hirshfeld_vdw_calculator Subroutine Closing of HirshfeldVdwCalculator
evaluate_hirshfeld_vdw_calculator Subroutine Main Tkatchenko-Scheffler dispersion model calculation routine. @TODO Change the sign in the...
fermi_damping_function Subroutine Implementation of Fermi damping function used in Tkatchenko and Scheffler dispersion model. of...
calculate_c6_ab_free_matrix Subroutine Precalculation of c6_ab_free coefficient matrix to avoid recalculation for every atom pair. Used...

Derived Types Details

type HirshfeldVdwCalculator

Components

  • neighbor_list_idx : integer
  • sr : real(DP)– Functional dependent Fermi damping function parameter
  • damp_parm : real(DP)– empirical parameter in Fermi damping function parameter
  • c6_ab_free_mat : real(DP) (dim: (:,:))
  • hirshfeld_vdw_fcut_inner_cutoff : real(DP)
  • hirshfeld_vdw_fcut_outer_cutoff : real(DP)
  • hirshfeld_vdw_fcut_inner_buffer : real(DP)
  • hirshfeld_vdw_fcut_outer_buffer : real(DP)
  • element_index : integer (dim: (MAX_ELEM_NUM))
  • energy : real(DP)
  • force : real(DP) (dim: (:,:))
  • d_energy_d_vol : real(DP) (dim: (:))
  • d_energy_d_strain : real(DP) (dim: (3,3))

Type-Bound Procedures

Name Attributes Binding
print public ⇒ print_hirshfeld_vdw_calculator
close public ⇒ close_hirshfeld_vdw_calculator
evaluate public ⇒ evaluate_hirshfeld_vdw_calculator

Inherited By

type~~hirshfeldvdwcalculator~~InheritedByGraph type~hirshfeldvdwcalculator HirshfeldVdwCalculator type~runnerinterface RuNNerInterface type~runnerinterface->type~hirshfeldvdwcalculator vdw_calc

Interface Details

interface HirshfeldVdwCalculator


Procedure Details

function constructor_hirshfeld_vdw_calculator

function constructor_hirshfeld_vdw_calculator( &
    atomic_numbers, &
    neighbor_list_idx, &
    sr, &
    damp_parm, &
    hirshfeld_vdw_fcut_inner_cutoff, &
    hirshfeld_vdw_fcut_outer_cutoff, &
    hirshfeld_vdw_fcut_inner_buffer, &
    hirshfeld_vdw_fcut_outer_buffer &
)

Arguments

  • atomic_numbers : integer (dim: (:)) [in]
  • neighbor_list_idx : integer [in]– Which neighbor list is used by this calculator in the list of neighbor lists.
  • sr : real(DP) [in]
  • damp_parm : real(DP) [in]
  • hirshfeld_vdw_fcut_inner_cutoff : real(DP) [in]
  • hirshfeld_vdw_fcut_outer_cutoff : real(DP) [in]
  • hirshfeld_vdw_fcut_inner_buffer : real(DP) [in]
  • hirshfeld_vdw_fcut_outer_buffer : real(DP) [in]

Called By

proc~~constructor_hirshfeld_vdw_calculator~~CalledByGraph proc~constructor_hirshfeld_vdw_calculator mod_hirshfeld_vdw::constructor_hirshfeld_vdw_calculator interface~hirshfeldvdwcalculator mod_hirshfeld_vdw::HirshfeldVdwCalculator interface~hirshfeldvdwcalculator->proc~constructor_hirshfeld_vdw_calculator

function get_c6_ab

function get_c6_ab( &
    v_a, &
    v_b, &
    c6_ab_free &
)

Implementation of c6_ab coefficient interpolation scheme used in Tkatchenko and Scheffler dispersion model.

Arguments

  • v_a : real(DP) [in]
  • v_b : real(DP) [in]
  • c6_ab_free : real(DP) [in]

Called By

proc~~get_c6_ab~~CalledByGraph proc~get_c6_ab mod_hirshfeld_vdw::get_c6_ab proc~evaluate_hirshfeld_vdw_calculator mod_hirshfeld_vdw::HirshfeldVdwCalculator%evaluate_hirshfeld_vdw_calculator proc~evaluate_hirshfeld_vdw_calculator->proc~get_c6_ab proc~post_processing_vdw_hirshfeld_single_structure mod_post_processing_vdw_hirshfeld_single_structure::post_processing_vdw_hirshfeld_single_structure proc~post_processing_vdw_hirshfeld_single_structure->proc~evaluate_hirshfeld_vdw_calculator proc~post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure::post_processing_wrapper_single_structure proc~post_processing_wrapper_single_structure->proc~post_processing_vdw_hirshfeld_single_structure proc~runner_interface_hirshfeld_vdw mod_runner_interface_bindings::runner_interface_hirshfeld_vdw proc~runner_interface_hirshfeld_vdw->proc~post_processing_vdw_hirshfeld_single_structure proc~predict_multiple_structures mod_predict_multiple_structures::predict_multiple_structures proc~predict_multiple_structures->proc~post_processing_wrapper_single_structure proc~predict_single_structure mod_predict_single_structure::predict_single_structure proc~predict_single_structure->proc~post_processing_wrapper_single_structure proc~output_files_and_cost mod_output_files_and_cost::output_files_and_cost proc~output_files_and_cost->proc~predict_multiple_structures proc~predict_all_chunks mod_predict_all_chunks::predict_all_chunks proc~predict_all_chunks->proc~predict_multiple_structures proc~predict_mode mod_predict_mode::predict_mode proc~predict_mode->proc~predict_multiple_structures proc~predict_structure_interface mod_generic_interface::predict_structure_interface proc~predict_structure_interface->proc~predict_single_structure proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~output_files_and_cost proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~output_files_and_cost proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_all_chunks proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~predict_mode program~runner->proc~train_mode

function get_c6_ab_free

function get_c6_ab_free( &
    atomic_number_a, &
    atomic_number_b &
)

Implementation of c6_ab_free coefficient calculation from c6_aa and c6_bb reference values. Used in Tkatchenko and Scheffler Dispersion model.

Arguments

  • atomic_number_a : integer [in]
  • atomic_number_b : integer [in]

Called By

proc~~get_c6_ab_free~~CalledByGraph proc~get_c6_ab_free mod_hirshfeld_vdw::get_c6_ab_free proc~calculate_c6_ab_free_matrix mod_hirshfeld_vdw::calculate_c6_ab_free_matrix proc~calculate_c6_ab_free_matrix->proc~get_c6_ab_free proc~constructor_hirshfeld_vdw_calculator mod_hirshfeld_vdw::constructor_hirshfeld_vdw_calculator proc~constructor_hirshfeld_vdw_calculator->proc~calculate_c6_ab_free_matrix interface~hirshfeldvdwcalculator mod_hirshfeld_vdw::HirshfeldVdwCalculator interface~hirshfeldvdwcalculator->proc~constructor_hirshfeld_vdw_calculator

subroutine print_hirshfeld_vdw_calculator

subroutine print_hirshfeld_vdw_calculator( &
    self &
)

Initialization of HirshfeldVdwCalculator

Arguments


subroutine close_hirshfeld_vdw_calculator

subroutine close_hirshfeld_vdw_calculator( &
    self &
)

Closing of HirshfeldVdwCalculator

Arguments


subroutine evaluate_hirshfeld_vdw_calculator

subroutine evaluate_hirshfeld_vdw_calculator( &
    self, &
    num_atoms, &
    num_local_atoms, &
    atomic_numbers, &
    idx_list, &
    atom_offset_on_process, &
    xyz, &
    hirshfeld_volumes, &
    neighbor_lists, &
    calculate_forces, &
    calculate_d_energy_d_strain, &
    calculate_hirshfeld_gradient &
)

Main Tkatchenko-Scheffler dispersion model calculation routine. @TODO Change the sign in the calculations and not here

of hirshfeld volumes this is the dc6_ab part of the chain rule this is the df_damp part of the chain rule, which is dependent on the hirshfeld volumes

Arguments

  • self : class(HirshfeldVdwCalculator) [inout]
  • num_atoms : integer [in]
  • num_local_atoms : integer [in]
  • atomic_numbers : integer (dim: (num_atoms)) [in]
  • idx_list : integer (dim: (num_local_atoms)) [in]– indices of atoms in structure for which vdW should be evaluated. This is necessary for the LAMMPS interface where only local atoms need to be evaluated.
  • atom_offset_on_process : integer [in]
  • xyz : real(DP) (dim: (3,num_atoms)) [in]
  • hirshfeld_volumes : real(DP) (dim: (num_atoms)) [in]
  • neighbor_lists : type(FeatureMapNeighborList) (dim: (:)) [in]
  • calculate_forces : logical [in]
  • calculate_d_energy_d_strain : logical [in]
  • calculate_hirshfeld_gradient : logical [in]

Called By

proc~~evaluate_hirshfeld_vdw_calculator~~CalledByGraph proc~evaluate_hirshfeld_vdw_calculator mod_hirshfeld_vdw::HirshfeldVdwCalculator%evaluate_hirshfeld_vdw_calculator proc~post_processing_vdw_hirshfeld_single_structure mod_post_processing_vdw_hirshfeld_single_structure::post_processing_vdw_hirshfeld_single_structure proc~post_processing_vdw_hirshfeld_single_structure->proc~evaluate_hirshfeld_vdw_calculator proc~post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure::post_processing_wrapper_single_structure proc~post_processing_wrapper_single_structure->proc~post_processing_vdw_hirshfeld_single_structure proc~runner_interface_hirshfeld_vdw mod_runner_interface_bindings::runner_interface_hirshfeld_vdw proc~runner_interface_hirshfeld_vdw->proc~post_processing_vdw_hirshfeld_single_structure proc~predict_multiple_structures mod_predict_multiple_structures::predict_multiple_structures proc~predict_multiple_structures->proc~post_processing_wrapper_single_structure proc~predict_single_structure mod_predict_single_structure::predict_single_structure proc~predict_single_structure->proc~post_processing_wrapper_single_structure proc~output_files_and_cost mod_output_files_and_cost::output_files_and_cost proc~output_files_and_cost->proc~predict_multiple_structures proc~predict_all_chunks mod_predict_all_chunks::predict_all_chunks proc~predict_all_chunks->proc~predict_multiple_structures proc~predict_mode mod_predict_mode::predict_mode proc~predict_mode->proc~predict_multiple_structures proc~predict_structure_interface mod_generic_interface::predict_structure_interface proc~predict_structure_interface->proc~predict_single_structure proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~output_files_and_cost proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~output_files_and_cost proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_all_chunks proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~predict_mode program~runner->proc~train_mode

subroutine fermi_damping_function

subroutine fermi_damping_function( &
    an_a, &
    an_b, &
    hirshfeld_volume_a, &
    hirshfeld_volume_b, &
    ab_coord, &
    r_ab, &
    damp_parm, &
    sr, &
    f_damp, &
    df_damp, &
    df_damp_hirsh_grad, &
    calc_forces, &
    calc_hirsh_gradient &
)

Implementation of Fermi damping function used in Tkatchenko and Scheffler dispersion model.

of the hirshfeld volumes wrt positions. These are often neglected in the TS model.

Arguments

  • an_a : integer [in]– Atomic number of atom A.
  • an_b : integer [in]– Atomic number of atom B.
  • hirshfeld_volume_a : real(DP) [in]– Hirshfeld volume of atom A
  • hirshfeld_volume_b : real(DP) [in]– Hirshfeld volume of atom B
  • ab_coord : real(DP) (dim: (3)) [in]– Relative coordinates of B wrt A
  • r_ab : real(DP) [in]
  • damp_parm : real(DP) [in]
  • sr : real(DP) [in]
  • f_damp : real(DP) [inout]
  • df_damp : real(DP) (dim: (3)) [out]
  • df_damp_hirsh_grad : real(DP) [out]
  • calc_forces : logical [in]
  • calc_hirsh_gradient : logical [in]

Called By

proc~~fermi_damping_function~~CalledByGraph proc~fermi_damping_function mod_hirshfeld_vdw::fermi_damping_function proc~evaluate_hirshfeld_vdw_calculator mod_hirshfeld_vdw::HirshfeldVdwCalculator%evaluate_hirshfeld_vdw_calculator proc~evaluate_hirshfeld_vdw_calculator->proc~fermi_damping_function proc~post_processing_vdw_hirshfeld_single_structure mod_post_processing_vdw_hirshfeld_single_structure::post_processing_vdw_hirshfeld_single_structure proc~post_processing_vdw_hirshfeld_single_structure->proc~evaluate_hirshfeld_vdw_calculator proc~post_processing_wrapper_single_structure mod_post_processing_wrapper_single_structure::post_processing_wrapper_single_structure proc~post_processing_wrapper_single_structure->proc~post_processing_vdw_hirshfeld_single_structure proc~runner_interface_hirshfeld_vdw mod_runner_interface_bindings::runner_interface_hirshfeld_vdw proc~runner_interface_hirshfeld_vdw->proc~post_processing_vdw_hirshfeld_single_structure proc~predict_multiple_structures mod_predict_multiple_structures::predict_multiple_structures proc~predict_multiple_structures->proc~post_processing_wrapper_single_structure proc~predict_single_structure mod_predict_single_structure::predict_single_structure proc~predict_single_structure->proc~post_processing_wrapper_single_structure proc~output_files_and_cost mod_output_files_and_cost::output_files_and_cost proc~output_files_and_cost->proc~predict_multiple_structures proc~predict_all_chunks mod_predict_all_chunks::predict_all_chunks proc~predict_all_chunks->proc~predict_multiple_structures proc~predict_mode mod_predict_mode::predict_mode proc~predict_mode->proc~predict_multiple_structures proc~predict_structure_interface mod_generic_interface::predict_structure_interface proc~predict_structure_interface->proc~predict_single_structure proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~output_files_and_cost proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~output_files_and_cost proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~predict_all_chunks proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~predict_mode program~runner->proc~train_mode

subroutine calculate_c6_ab_free_matrix

subroutine calculate_c6_ab_free_matrix( &
    atomic_numbers, &
    c6_ab_free_mat &
)

Precalculation of c6_ab_free coefficient matrix to avoid recalculation for every atom pair. Used in Tkatchenko-Scheffler dispersion model.

Arguments

  • atomic_numbers : integer (dim: (:)) [in]
  • c6_ab_free_mat : real(DP) (dim: (:,:)) [out]

Called By

proc~~calculate_c6_ab_free_matrix~~CalledByGraph proc~calculate_c6_ab_free_matrix mod_hirshfeld_vdw::calculate_c6_ab_free_matrix proc~constructor_hirshfeld_vdw_calculator mod_hirshfeld_vdw::constructor_hirshfeld_vdw_calculator proc~constructor_hirshfeld_vdw_calculator->proc~calculate_c6_ab_free_matrix interface~hirshfeldvdwcalculator mod_hirshfeld_vdw::HirshfeldVdwCalculator interface~hirshfeldvdwcalculator->proc~constructor_hirshfeld_vdw_calculator