Skip to content

mod_pw

Lines: 159 | Visibility: private

Plain-wave electrostatics solver.

Explicit solver used by the PPPMCalculator. author: Moritz Gubler.

Dependencies

Uses

module~~mod_pw~~UsesGraph module~mod_pw mod_pw module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_pw->module~mod_abstract_electrostatics module~mod_fft_potential mod_fft_potential module~mod_pw->module~mod_fft_potential module~mod_precision mod_precision module~mod_pw->module~mod_precision module~mod_throw mod_throw module~mod_pw->module~mod_throw module~mod_abstract_electrostatics->module~mod_precision module~mod_structures mod_structures module~mod_abstract_electrostatics->module~mod_structures module~mod_fft_potential->module~mod_precision module~mod_fft_potential->module~mod_throw iso_c_binding iso_c_binding module~mod_fft_potential->iso_c_binding module~mod_constants mod_constants module~mod_fft_potential->module~mod_constants module~mod_fft mod_fft module~mod_fft_potential->module~mod_fft module~mod_linalg mod_linalg module~mod_fft_potential->module~mod_linalg module~mod_neighborlist_helper mod_neighborlist_helper module~mod_fft_potential->module~mod_neighborlist_helper module~mod_structures_helper mod_structures_helper module~mod_fft_potential->module~mod_structures_helper module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_io mod_io 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~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_fft->iso_c_binding fftw3 fftw3 module~mod_fft->fftw3 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_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_neighborlist_helper->module~mod_precision module~mod_neighborlist_helper->module~mod_linalg module~mod_neighborlist_helper->module~mod_mpi module~mod_sort->module~mod_precision module~mod_structures->module~mod_precision module~mod_structures->module~mod_throw module~mod_structures->module~mod_constants module~mod_structures->module~mod_linalg module~mod_structures->module~mod_mpi module~mod_structures->module~mod_structures_helper module~mod_array_helpers mod_array_helpers module~mod_structures->module~mod_array_helpers module~mod_periodic_table mod_periodic_table module~mod_structures->module~mod_periodic_table 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_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_constants module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_array_helpers module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_settings->module~mod_io module~mod_settings->module~mod_periodic_table module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_cpu_vendor->iso_c_binding

Used By

module~~mod_pw~~UsedByGraph module~mod_pw mod_pw module~mod_initialize mod_initialize module~mod_initialize->module~mod_pw module~mod_pppm mod_pppm module~mod_initialize->module~mod_pppm module~mod_pppm->module~mod_pw 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

Derived Types Summary

Name Description
PwCalculator

Procedures Summary

Name Type Description
initialize_pw_electrostatics_calculator Subroutine
evaluate_pw_electrostatics_calculator Subroutine @todo Remove commented lines of code.
calc_lambda_q_derivatives Subroutine
free_fftw Subroutine

Derived Types Details

type PwCalculator

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_pw_electrostatics_calculator
evaluate_intern_to_implement public ⇒ evaluate_pw_electrostatics_calculator
calc_lambda_q_derivatives public ⇒ calc_lambda_q_derivatives
free_fftw_intern public ⇒ free_fftw

Inherits

type~~pwcalculator~~InheritsGraph type~pwcalculator PwCalculator type~abstractelectrostaticscalculator AbstractElectrostaticsCalculator type~pwcalculator->type~abstractelectrostaticscalculator type~pwpotcalculator PWPotCalculator type~pwcalculator->type~pwpotcalculator pwpot_calc, lagrange_calculator c_ptr c_ptr type~pwpotcalculator->c_ptr prho, prhofft, ppot, ps1, ps2, ps3, ps4, ps5, ps6, ppotfft, psf1, psf2, psf3, psf4, psf5, psf6, pweight

Inherited By

type~~pwcalculator~~InheritedByGraph type~pwcalculator PwCalculator type~pppmcalculator PppmCalculator type~pppmcalculator->type~pwcalculator pw_calc

Procedure Details

subroutine initialize_pw_electrostatics_calculator

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

Arguments

  • self : class(PwCalculator) [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]

Called By

proc~~initialize_pw_electrostatics_calculator~~CalledByGraph proc~initialize_pw_electrostatics_calculator mod_pw::PwCalculator%initialize_pw_electrostatics_calculator proc~initialize_pppm mod_pppm::PppmCalculator%initialize_pppm proc~initialize_pppm->proc~initialize_pw_electrostatics_calculator

subroutine evaluate_pw_electrostatics_calculator

subroutine evaluate_pw_electrostatics_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 &
)

@todo Remove commented lines of code.

Arguments

  • self : class(PwCalculator) [inout]
  • pos : real(DP) (dim: (3,self%num_atoms)) [in]
  • lat : real(DP) (dim: (3,3)) [in]
  • charges : real(DP) [in]
  • lagrange_charges : real(DP) [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 calc_lambda_q_derivatives

subroutine calc_lambda_q_derivatives( &
    self, &
    pos, &
    lat, &
    charges, &
    lagrange, &
    unscaled_forces &
)

Arguments

  • self : class(PwCalculator)
  • 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 : real(DP) (dim: (self%num_atoms)) [in]
  • unscaled_forces : real(DP) [in]

Called By

proc~~calc_lambda_q_derivatives~~CalledByGraph proc~calc_lambda_q_derivatives mod_pw::PwCalculator%calc_lambda_q_derivatives proc~evaluate_pw_electrostatics_calculator mod_pw::PwCalculator%evaluate_pw_electrostatics_calculator proc~evaluate_pw_electrostatics_calculator->proc~calc_lambda_q_derivatives

subroutine free_fftw

subroutine free_fftw( &
    self &
)

Arguments