mod_pppm
Lines: 188 |
Visibility: private
Electrostatics solver using the Particle-Particle-Particle Mesh method.
author: Moritz Gubler.
Dependencies
Uses
module~~mod_pppm~~UsesGraph
module~mod_pppm
mod_pppm
module~mod_abstract_electrostatics
mod_abstract_electrostatics
module~mod_pppm->module~mod_abstract_electrostatics
module~mod_ewald_summation
mod_ewald_summation
module~mod_pppm->module~mod_ewald_summation
module~mod_linalg
mod_linalg
module~mod_pppm->module~mod_linalg
module~mod_neighbor_grid
mod_neighbor_grid
module~mod_pppm->module~mod_neighbor_grid
module~mod_outer_product
mod_outer_product
module~mod_pppm->module~mod_outer_product
module~mod_pair_electrostatics
mod_pair_electrostatics
module~mod_pppm->module~mod_pair_electrostatics
module~mod_precision
mod_precision
module~mod_pppm->module~mod_precision
module~mod_pw
mod_pw
module~mod_pppm->module~mod_pw
module~mod_throw
mod_throw
module~mod_pppm->module~mod_throw
module~mod_abstract_electrostatics->module~mod_precision
module~mod_structures
mod_structures
module~mod_abstract_electrostatics->module~mod_structures
module~mod_ewald_summation->module~mod_abstract_electrostatics
module~mod_ewald_summation->module~mod_linalg
module~mod_ewald_summation->module~mod_neighbor_grid
module~mod_ewald_summation->module~mod_outer_product
module~mod_ewald_summation->module~mod_pair_electrostatics
module~mod_ewald_summation->module~mod_precision
module~mod_constants
mod_constants
module~mod_ewald_summation->module~mod_constants
module~mod_neighborlist_helper
mod_neighborlist_helper
module~mod_ewald_summation->module~mod_neighborlist_helper
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_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_neighbor_grid->module~mod_neighborlist_helper
module~mod_structures_helper
mod_structures_helper
module~mod_neighbor_grid->module~mod_structures_helper
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_precision
module~mod_pair_electrostatics->module~mod_throw
module~mod_pair_electrostatics->module~mod_constants
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_pw->module~mod_abstract_electrostatics
module~mod_pw->module~mod_precision
module~mod_pw->module~mod_throw
module~mod_fft_potential
mod_fft_potential
module~mod_pw->module~mod_fft_potential
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_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_fft_potential->module~mod_linalg
module~mod_fft_potential->module~mod_precision
module~mod_fft_potential->module~mod_throw
module~mod_fft_potential->iso_c_binding
module~mod_fft_potential->module~mod_constants
module~mod_fft_potential->module~mod_neighborlist_helper
module~mod_fft_potential->module~mod_structures_helper
module~mod_fft
mod_fft
module~mod_fft_potential->module~mod_fft
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_mpi->module~mod_precision
mpi_f08
mpi_f08
module~mod_mpi->mpi_f08
module~mod_neighborlist_helper->module~mod_linalg
module~mod_neighborlist_helper->module~mod_precision
module~mod_neighborlist_helper->module~mod_mpi
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_cpu_vendor
mod_cpu_vendor
module~mod_settings->module~mod_cpu_vendor
module~mod_periodic_table
mod_periodic_table
module~mod_settings->module~mod_periodic_table
module~mod_sort->module~mod_precision
module~mod_structures->module~mod_linalg
module~mod_structures->module~mod_precision
module~mod_structures->module~mod_throw
module~mod_structures->module~mod_constants
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_structures->module~mod_periodic_table
module~mod_structures_helper->module~mod_linalg
module~mod_structures_helper->module~mod_precision
module~mod_array_helpers->module~mod_precision
module~mod_array_helpers->module~mod_throw
module~mod_cpu_vendor->iso_c_binding
module~mod_fft->iso_c_binding
fftw3
fftw3
module~mod_fft->fftw3
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
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Used By
module~~mod_pppm~~UsedByGraph
module~mod_pppm
mod_pppm
module~mod_initialize
mod_initialize
module~mod_initialize->module~mod_pppm
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
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Module Variables
Derived Types Summary
Procedures Summary
Derived Types Details
type PppmCalculator
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_pppm
evaluate_intern_to_implement
public
⇒ evaluate_intern_to_implement
calc_real_space_party
private
⇒ calc_real_space_party
calc_real_space_pair
private
⇒ calc_real_space_pair
free_fftw_intern
public
⇒ free_fftw
Inherits
type~~pppmcalculator~~InheritsGraph
type~pppmcalculator
PppmCalculator
type~abstractelectrostaticscalculator
AbstractElectrostaticsCalculator
type~pppmcalculator->type~abstractelectrostaticscalculator
type~pwcalculator
PwCalculator
type~pppmcalculator->type~pwcalculator
pw_calc
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
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Procedure Details
subroutine initialize_pppm
subroutine initialize_pppm ( & self, & num_atoms, & atomic_sigmas, & electrostatics_precision, & lattice &)
Arguments
self :
class (PppmCalculator ) [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_intern_to_implement
subroutine evaluate_intern_to_implement ( & 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 (PppmCalculator ) [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 calc_real_space_party
subroutine calc_real_space_party ( & self, & pos, & lat, & charges, & lagrange_charges, & calc_forces, & calc_stress, & calc_lambda_times_da_dpos_times_q, & calc_lambda_times_da_dstress_times_q &)
@todo: There is still room for performance improvements in this routine.
@todo Use the same setting or take it from the input file
todo why here but not in other calculators?
@todo why here but not in other calculators?
Arguments
self :
class (PppmCalculator ) [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_forces :
logical [in]
calc_stress :
logical [in]
calc_lambda_times_da_dpos_times_q :
logical [in]– If true, the quantity lambda * dA/dxyz * q is computed.
It adds it to what is already in self%lambda_da_dpos_q.
calc_lambda_times_da_dstress_times_q :
logical [in]– If true, the quantity lambda * dA/dstress * q is computed.
It adds it to what is already in self%lambda_da_dstress_q.
Called By
proc~~calc_real_space_party~~CalledByGraph
proc~calc_real_space_party
mod_pppm::PppmCalculator%calc_real_space_party
proc~evaluate_intern_to_implement
mod_pppm::PppmCalculator%evaluate_intern_to_implement
proc~evaluate_intern_to_implement->proc~calc_real_space_party
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
subroutine calc_real_space_pair
subroutine calc_real_space_pair ( & self, & iat, & jat, & d, & r, & lat, & qi, & lqi, & charges, & lagrange_charges, & calc_grad, & calc_forces, & calc_stress, & calc_lambda_times_da_dpos_times_q, & calc_lambda_times_da_dstress_times_q &)
Arguments
self :
class (PppmCalculator ) [inout]
iat :
integer [in]
jat :
integer [in]
d :
real (DP) (dim: (3)) [in]
r :
real (DP) [in]
lat :
real (DP) (dim: (3,3)) [in]
qi :
real (DP) [in]
lqi :
real (DP) [in]
charges :
real (DP) (dim: (self%num_atoms)) [in]
lagrange_charges :
real (DP) (dim: (self%num_atoms)) [in]
calc_grad :
logical [in]
calc_forces :
logical [in]
calc_stress :
logical [in]
calc_lambda_times_da_dpos_times_q :
logical [in]
calc_lambda_times_da_dstress_times_q :
logical [in]
Called By
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
subroutine free_fftw
subroutine free_fftw ( & self &)
Arguments