ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
elc.cpp File Reference
#include "config/config.hpp"
#include "electrostatics/elc.hpp"
#include "electrostatics/coulomb.hpp"
#include "electrostatics/p3m.hpp"
#include "BoxGeometry.hpp"
#include "Particle.hpp"
#include "ParticlePropertyIterator.hpp"
#include "ParticleRange.hpp"
#include "cell_system/CellStructure.hpp"
#include "communication.hpp"
#include "errorhandling.hpp"
#include "system/System.hpp"
#include <utils/Vector.hpp>
#include <utils/math/sqr.hpp>
#include <boost/mpi/collectives/all_reduce.hpp>
#include <boost/range/combine.hpp>
#include <algorithm>
#include <cassert>
#include <cmath>
#include <cstddef>
#include <functional>
#include <numbers>
#include <variant>
#include <vector>
+ Include dependency graph for elc.cpp:

Go to the source code of this file.

Classes

struct  SCCache
 structure for caching sin and cos values More...
 
struct  ImageSum
 

Macros

Product decomposition data organization

For the cell blocks it is assumed that the lower blocks part is in the lower half.

This has to have positive sign, so that has to be first.

#define POQESP   0
 
#define POQECP   1
 
#define POQESM   2
 
#define POQECM   3
 
#define PQESSP   0
 
#define PQESCP   1
 
#define PQECSP   2
 
#define PQECCP   3
 
#define PQESSM   4
 
#define PQESCM   5
 
#define PQECSM   6
 
#define PQECCM   7
 

Enumerations

enum class  PoQ : int { P , Q }
 ELC axes (x and y directions) More...
 
enum class  ChargeProtocol : int { REAL , IMAGE , BOTH }
 ELC charge sum/assign protocol: real charges, image charges, or both. More...
 

Functions

template<std::size_t dir>
static std::vector< SCCachecalc_sc_cache (ParticleRange const &particles, std::size_t n_freq, double u)
 Calculate cached sin/cos values for one direction.
 
static std::pair< std::size_t, std::size_t > prepare_sc_cache (ParticleRange const &particles, BoxGeometry const &box_geo, double far_cut)
 
static void clear_vec (double *pdc, std::size_t size)
 
static void copy_vec (double *pdc_d, double const *pdc_s, std::size_t size)
 
static void add_vec (double *pdc_d, double const *pdc_s1, double const *pdc_s2, std::size_t size)
 
static void addscale_vec (double *pdc_d, double scale, double const *pdc_s1, double const *pdc_s2, std::size_t size)
 
static void scale_vec (double scale, double *pdc, std::size_t size)
 
static double * block (double *p, std::size_t index, std::size_t size)
 
static void distribute (std::size_t size)
 
static auto calc_total_charge (CellStructure const &cell_structure)
 
template<ChargeProtocol protocol, typename combined_ranges >
void charge_assign (elc_data const &elc, CoulombP3M &solver, combined_ranges const &p_q_pos_range)
 
template<ChargeProtocol protocol, typename combined_range >
void modify_p3m_sums (elc_data const &elc, CoulombP3M &solver, combined_range const &p_q_pos_range)
 
q=0 or p=0 per frequency code
template<PoQ axis>
void setup_PoQ (elc_data const &elc, double prefactor, std::size_t index, double omega, ParticleRange const &particles, BoxGeometry const &box_geo)
 
template<PoQ axis>
void add_PoQ_force (ParticleRange const &particles)
 
static double PoQ_energy (double omega, std::size_t n_part)
 
p,q <> 0 per frequency code
static void setup_PQ (elc_data const &elc, double prefactor, std::size_t index_p, std::size_t index_q, double omega, ParticleRange const &particles, BoxGeometry const &box_geo)
 
static void add_PQ_force (std::size_t index_p, std::size_t index_q, double omega, ParticleRange const &particles, BoxGeometry const &box_geo)
 
static double PQ_energy (double omega, std::size_t n_part)
 

Variables

static std::vector< double > partblk
 temporary buffers for product decomposition
 
static double gblcblk [8]
 collected data from the other cells
 
static std::vector< SCCachescxcache
 Cached sin/cos values along the x-axis and y-axis.
 
static std::vector< SCCachescycache
 

Macro Definition Documentation

◆ POQECM

#define POQECM   3

Definition at line 63 of file elc.cpp.

◆ POQECP

#define POQECP   1

Definition at line 61 of file elc.cpp.

◆ POQESM

#define POQESM   2

Definition at line 62 of file elc.cpp.

◆ POQESP

#define POQESP   0

Definition at line 60 of file elc.cpp.

◆ PQECCM

#define PQECCM   7

Definition at line 72 of file elc.cpp.

◆ PQECCP

#define PQECCP   3

Definition at line 68 of file elc.cpp.

◆ PQECSM

#define PQECSM   6

Definition at line 71 of file elc.cpp.

◆ PQECSP

#define PQECSP   2

Definition at line 67 of file elc.cpp.

◆ PQESCM

#define PQESCM   5

Definition at line 70 of file elc.cpp.

◆ PQESCP

#define PQESCP   1

Definition at line 66 of file elc.cpp.

◆ PQESSM

#define PQESSM   4

Definition at line 69 of file elc.cpp.

◆ PQESSP

#define PQESSP   0

Definition at line 65 of file elc.cpp.

Enumeration Type Documentation

◆ ChargeProtocol

enum class ChargeProtocol : int
strong

ELC charge sum/assign protocol: real charges, image charges, or both.

Enumerator
REAL 
IMAGE 
BOTH 

Definition at line 78 of file elc.cpp.

◆ PoQ

enum class PoQ : int
strong

ELC axes (x and y directions)

Enumerator

Definition at line 76 of file elc.cpp.

Function Documentation

◆ add_PoQ_force()

template<PoQ axis>
void add_PoQ_force ( ParticleRange const &  particles)

Definition at line 601 of file elc.cpp.

References Particle::force(), gblcblk, partblk, POQECM, POQECP, POQESM, and POQESP.

◆ add_PQ_force()

static void add_PQ_force ( std::size_t  index_p,
std::size_t  index_q,
double  omega,
ParticleRange const &  particles,
BoxGeometry const &  box_geo 
)
static

◆ add_vec()

static void add_vec ( double *  pdc_d,
double const *  pdc_s1,
double const *  pdc_s2,
std::size_t  size 
)
static

Definition at line 155 of file elc.cpp.

Referenced by setup_PoQ(), and setup_PQ().

◆ addscale_vec()

static void addscale_vec ( double *  pdc_d,
double  scale,
double const *  pdc_s1,
double const *  pdc_s2,
std::size_t  size 
)
static

Definition at line 161 of file elc.cpp.

Referenced by setup_PoQ(), and setup_PQ().

◆ block()

static double * block ( double *  p,
std::size_t  index,
std::size_t  size 
)
static

Definition at line 172 of file elc.cpp.

Referenced by walberla::FFT< FloatType >::add_charge_to_field(), walberla::LBWalberlaImpl< FloatType, Architecture >::add_forces_at_pos(), walberla::LBWalberlaImpl< FloatType, Architecture >::add_to_storage(), assign_charges(), assign_forces(), walberla::BoundaryHandling< T, BoundaryClass >::block_dims(), walberla::EKReactionImplIndexed::boundary_update(), walberla::BoundaryHandling< T, BoundaryClass >::BoundaryHandling(), Utils::Interpolation::bspline_3d(), Utils::Interpolation::bspline_3d_gradient(), fft::anonymous_namespace{fft.cpp}::calc_send_block(), cuda_check_errors_exit(), DipolarDirectSum_kernel_wrapper_energy(), DipolarDirectSum_kernel_wrapper_force(), walberla::EKReactionImplIndexed::EKReactionImplIndexed(), walberla::pystencils::Dirichlet_double_precision::fillFromFlagField(), walberla::pystencils::Dirichlet_single_precision::fillFromFlagField(), walberla::pystencils::FixedFlux_double_precision::fillFromFlagField(), walberla::pystencils::FixedFlux_single_precision::fillFromFlagField(), walberla::lbm::Dynamic_UBB_double_precision::fillFromFlagField(), walberla::lbm::Dynamic_UBB_double_precisionCUDA::fillFromFlagField(), walberla::lbm::Dynamic_UBB_single_precision::fillFromFlagField(), walberla::lbm::Dynamic_UBB_single_precisionCUDA::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_1_double_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_1_single_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_2_double_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_2_single_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_3_double_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_3_single_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_4_double_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_4_single_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_5_double_precision::fillFromFlagField(), walberla::pystencils::ReactionKernelIndexed_5_single_precision::fillFromFlagField(), walberla::get_block(), walberla::get_block_and_cell(), walberla::get_block_extended(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_momentum(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_pressure_tensor(), walberla::EKinWalberlaImpl< FluxCount, FloatType >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_pressure_tensor(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_slice_velocity(), walberla::LBWalberlaImpl< FloatType, Architecture >::get_velocities_at_pos(), walberla::pystencils::Dirichlet_double_precision::inner(), walberla::pystencils::Dirichlet_single_precision::inner(), walberla::pystencils::FixedFlux_double_precision::inner(), walberla::pystencils::FixedFlux_single_precision::inner(), walberla::pystencils::ReactionKernelIndexed_1_double_precision::inner(), walberla::pystencils::ReactionKernelIndexed_1_single_precision::inner(), walberla::pystencils::ReactionKernelIndexed_2_double_precision::inner(), walberla::pystencils::ReactionKernelIndexed_2_single_precision::inner(), walberla::pystencils::ReactionKernelIndexed_3_double_precision::inner(), walberla::pystencils::ReactionKernelIndexed_3_single_precision::inner(), walberla::pystencils::ReactionKernelIndexed_4_double_precision::inner(), walberla::pystencils::ReactionKernelIndexed_4_single_precision::inner(), walberla::pystencils::ReactionKernelIndexed_5_double_precision::inner(), walberla::pystencils::ReactionKernelIndexed_5_single_precision::inner(), walberla::lbm::Dynamic_UBB_double_precision::inner(), walberla::lbm::Dynamic_UBB_single_precision::inner(), walberla::lbm::Dynamic_UBB_double_precisionCUDA::inner(), walberla::lbm::Dynamic_UBB_single_precisionCUDA::inner(), LatticeWalberla::LatticeWalberla(), walberla::BoundaryHandling< T, BoundaryClass >::operator()(), walberla::pystencils::AdvectiveFluxKernel_double_precision::operator()(), walberla::pystencils::AdvectiveFluxKernel_single_precision::operator()(), walberla::pystencils::ContinuityKernel_double_precision::operator()(), walberla::pystencils::ContinuityKernel_single_precision::operator()(), walberla::pystencils::DiffusiveFluxKernel_double_precision::operator()(), walberla::pystencils::DiffusiveFluxKernel_single_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelThermalized_double_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelThermalized_single_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_double_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_single_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_double_precision::operator()(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_single_precision::operator()(), walberla::pystencils::Dirichlet_double_precision::operator()(), walberla::pystencils::Dirichlet_single_precision::operator()(), walberla::pystencils::FixedFlux_double_precision::operator()(), walberla::pystencils::FixedFlux_single_precision::operator()(), walberla::pystencils::FrictionCouplingKernel_double_precision::operator()(), walberla::pystencils::FrictionCouplingKernel_single_precision::operator()(), walberla::pystencils::ReactionKernelBulk_1_double_precision::operator()(), walberla::pystencils::ReactionKernelBulk_1_single_precision::operator()(), walberla::pystencils::ReactionKernelBulk_2_double_precision::operator()(), walberla::pystencils::ReactionKernelBulk_2_single_precision::operator()(), walberla::pystencils::ReactionKernelBulk_3_double_precision::operator()(), walberla::pystencils::ReactionKernelBulk_3_single_precision::operator()(), walberla::pystencils::ReactionKernelBulk_4_double_precision::operator()(), walberla::pystencils::ReactionKernelBulk_4_single_precision::operator()(), walberla::pystencils::ReactionKernelBulk_5_double_precision::operator()(), walberla::pystencils::ReactionKernelBulk_5_single_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_1_double_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_1_single_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_2_double_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_2_single_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_3_double_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_3_single_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_4_double_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_4_single_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_5_double_precision::operator()(), walberla::pystencils::ReactionKernelIndexed_5_single_precision::operator()(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwards::operator()(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsAVX::operator()(), walberla::pystencils::CollideSweepDoublePrecisionThermalized::operator()(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedAVX::operator()(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwards::operator()(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsAVX::operator()(), walberla::pystencils::CollideSweepSinglePrecisionThermalized::operator()(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedAVX::operator()(), walberla::lbm::Dynamic_UBB_double_precision::operator()(), walberla::lbm::Dynamic_UBB_single_precision::operator()(), walberla::pystencils::InitialPDFsSetterDoublePrecision::operator()(), walberla::pystencils::InitialPDFsSetterSinglePrecision::operator()(), walberla::pystencils::StreamSweepDoublePrecision::operator()(), walberla::pystencils::StreamSweepDoublePrecisionAVX::operator()(), walberla::pystencils::StreamSweepSinglePrecision::operator()(), walberla::pystencils::StreamSweepSinglePrecisionAVX::operator()(), walberla::InterpolateAndShiftAtBoundary< FieldType, FloatType >::operator()(), walberla::ResetForce< PdfField, ForceField >::operator()(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsCUDA::operator()(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedCUDA::operator()(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsCUDA::operator()(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedCUDA::operator()(), walberla::lbm::Dynamic_UBB_double_precisionCUDA::operator()(), walberla::lbm::Dynamic_UBB_single_precisionCUDA::operator()(), walberla::pystencils::InitialPDFsSetterDoublePrecisionCUDA::operator()(), walberla::pystencils::InitialPDFsSetterSinglePrecisionCUDA::operator()(), walberla::pystencils::StreamSweepDoublePrecisionCUDA::operator()(), walberla::pystencils::StreamSweepSinglePrecisionCUDA::operator()(), walberla::pystencils::Dirichlet_double_precision::outer(), walberla::pystencils::Dirichlet_single_precision::outer(), walberla::pystencils::FixedFlux_double_precision::outer(), walberla::pystencils::FixedFlux_single_precision::outer(), walberla::pystencils::ReactionKernelIndexed_1_double_precision::outer(), walberla::pystencils::ReactionKernelIndexed_1_single_precision::outer(), walberla::pystencils::ReactionKernelIndexed_2_double_precision::outer(), walberla::pystencils::ReactionKernelIndexed_2_single_precision::outer(), walberla::pystencils::ReactionKernelIndexed_3_double_precision::outer(), walberla::pystencils::ReactionKernelIndexed_3_single_precision::outer(), walberla::pystencils::ReactionKernelIndexed_4_double_precision::outer(), walberla::pystencils::ReactionKernelIndexed_4_single_precision::outer(), walberla::pystencils::ReactionKernelIndexed_5_double_precision::outer(), walberla::pystencils::ReactionKernelIndexed_5_single_precision::outer(), walberla::lbm::Dynamic_UBB_double_precision::outer(), walberla::lbm::Dynamic_UBB_single_precision::outer(), walberla::lbm::Dynamic_UBB_double_precisionCUDA::outer(), walberla::lbm::Dynamic_UBB_single_precisionCUDA::outer(), p3m_gpu_init(), p3m_k_space_error_gpu(), walberla::pystencils::PackInfoPdfDoublePrecision::pack(), walberla::pystencils::PackInfoPdfSinglePrecision::pack(), walberla::pystencils::PackInfoVecDoublePrecision::pack(), walberla::pystencils::PackInfoVecSinglePrecision::pack(), walberla::pystencils::PackInfoPdfDoublePrecisionCUDA::pack(), walberla::pystencils::PackInfoPdfSinglePrecisionCUDA::pack(), walberla::pystencils::PackInfoVecDoublePrecisionCUDA::pack(), walberla::pystencils::PackInfoVecSinglePrecisionCUDA::pack(), walberla::EKReactionImplBulk::perform_reaction(), walberla::EKReactionImplIndexed::perform_reaction(), walberla::FFT< FloatType >::reset_charge_field(), walberla::pystencils::AdvectiveFluxKernel_double_precision::run(), walberla::pystencils::AdvectiveFluxKernel_single_precision::run(), walberla::pystencils::ContinuityKernel_double_precision::run(), walberla::pystencils::ContinuityKernel_single_precision::run(), walberla::pystencils::DiffusiveFluxKernel_double_precision::run(), walberla::pystencils::DiffusiveFluxKernel_single_precision::run(), walberla::pystencils::DiffusiveFluxKernelThermalized_double_precision::run(), walberla::pystencils::DiffusiveFluxKernelThermalized_single_precision::run(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_double_precision::run(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_single_precision::run(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_double_precision::run(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_single_precision::run(), walberla::pystencils::Dirichlet_double_precision::run(), walberla::pystencils::Dirichlet_single_precision::run(), walberla::pystencils::FixedFlux_double_precision::run(), walberla::pystencils::FixedFlux_single_precision::run(), walberla::pystencils::FrictionCouplingKernel_double_precision::run(), walberla::pystencils::FrictionCouplingKernel_single_precision::run(), walberla::pystencils::ReactionKernelBulk_1_double_precision::run(), walberla::pystencils::ReactionKernelBulk_1_single_precision::run(), walberla::pystencils::ReactionKernelBulk_2_double_precision::run(), walberla::pystencils::ReactionKernelBulk_2_single_precision::run(), walberla::pystencils::ReactionKernelBulk_3_double_precision::run(), walberla::pystencils::ReactionKernelBulk_3_single_precision::run(), walberla::pystencils::ReactionKernelBulk_4_double_precision::run(), walberla::pystencils::ReactionKernelBulk_4_single_precision::run(), walberla::pystencils::ReactionKernelBulk_5_double_precision::run(), walberla::pystencils::ReactionKernelBulk_5_single_precision::run(), walberla::pystencils::ReactionKernelIndexed_1_double_precision::run(), walberla::pystencils::ReactionKernelIndexed_1_single_precision::run(), walberla::pystencils::ReactionKernelIndexed_2_double_precision::run(), walberla::pystencils::ReactionKernelIndexed_2_single_precision::run(), walberla::pystencils::ReactionKernelIndexed_3_double_precision::run(), walberla::pystencils::ReactionKernelIndexed_3_single_precision::run(), walberla::pystencils::ReactionKernelIndexed_4_double_precision::run(), walberla::pystencils::ReactionKernelIndexed_4_single_precision::run(), walberla::pystencils::ReactionKernelIndexed_5_double_precision::run(), walberla::pystencils::ReactionKernelIndexed_5_single_precision::run(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwards::run(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsAVX::run(), walberla::pystencils::CollideSweepDoublePrecisionThermalized::run(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedAVX::run(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwards::run(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsAVX::run(), walberla::pystencils::CollideSweepSinglePrecisionThermalized::run(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedAVX::run(), walberla::lbm::Dynamic_UBB_double_precision::run(), walberla::lbm::Dynamic_UBB_single_precision::run(), walberla::pystencils::InitialPDFsSetterDoublePrecision::run(), walberla::pystencils::InitialPDFsSetterSinglePrecision::run(), walberla::pystencils::StreamSweepDoublePrecision::run(), walberla::pystencils::StreamSweepDoublePrecisionAVX::run(), walberla::pystencils::StreamSweepSinglePrecision::run(), walberla::pystencils::StreamSweepSinglePrecisionAVX::run(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsCUDA::run(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedCUDA::run(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsCUDA::run(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedCUDA::run(), walberla::lbm::Dynamic_UBB_double_precisionCUDA::run(), walberla::lbm::Dynamic_UBB_single_precisionCUDA::run(), walberla::pystencils::InitialPDFsSetterDoublePrecisionCUDA::run(), walberla::pystencils::InitialPDFsSetterSinglePrecisionCUDA::run(), walberla::pystencils::StreamSweepDoublePrecisionCUDA::run(), walberla::pystencils::StreamSweepSinglePrecisionCUDA::run(), walberla::pystencils::AdvectiveFluxKernel_double_precision::runOnCellInterval(), walberla::pystencils::AdvectiveFluxKernel_single_precision::runOnCellInterval(), walberla::pystencils::ContinuityKernel_double_precision::runOnCellInterval(), walberla::pystencils::ContinuityKernel_single_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernel_double_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernel_single_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelThermalized_double_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelThermalized_single_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_double_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelWithElectrostatic_single_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_double_precision::runOnCellInterval(), walberla::pystencils::DiffusiveFluxKernelWithElectrostaticThermalized_single_precision::runOnCellInterval(), walberla::pystencils::FrictionCouplingKernel_double_precision::runOnCellInterval(), walberla::pystencils::FrictionCouplingKernel_single_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_1_double_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_1_single_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_2_double_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_2_single_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_3_double_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_3_single_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_4_double_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_4_single_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_5_double_precision::runOnCellInterval(), walberla::pystencils::ReactionKernelBulk_5_single_precision::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwards::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsAVX::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionThermalized::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedAVX::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwards::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsAVX::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionThermalized::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedAVX::runOnCellInterval(), walberla::pystencils::InitialPDFsSetterDoublePrecision::runOnCellInterval(), walberla::pystencils::InitialPDFsSetterSinglePrecision::runOnCellInterval(), walberla::pystencils::StreamSweepDoublePrecision::runOnCellInterval(), walberla::pystencils::StreamSweepDoublePrecisionAVX::runOnCellInterval(), walberla::pystencils::StreamSweepSinglePrecision::runOnCellInterval(), walberla::pystencils::StreamSweepSinglePrecisionAVX::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionLeesEdwardsCUDA::runOnCellInterval(), walberla::pystencils::CollideSweepDoublePrecisionThermalizedCUDA::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionLeesEdwardsCUDA::runOnCellInterval(), walberla::pystencils::CollideSweepSinglePrecisionThermalizedCUDA::runOnCellInterval(), walberla::pystencils::InitialPDFsSetterDoublePrecisionCUDA::runOnCellInterval(), walberla::pystencils::InitialPDFsSetterSinglePrecisionCUDA::runOnCellInterval(), walberla::pystencils::StreamSweepDoublePrecisionCUDA::runOnCellInterval(), walberla::pystencils::StreamSweepSinglePrecisionCUDA::runOnCellInterval(), walberla::set_boundary_from_grid(), walberla::EKinWalberlaImpl< FluxCount, FloatType >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_density(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_last_applied_force(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_population(), walberla::LBWalberlaImpl< FloatType, Architecture >::set_slice_velocity(), setup_PoQ(), setup_PQ(), walberla::pystencils::PackInfoPdfDoublePrecision::size(), walberla::pystencils::PackInfoPdfSinglePrecision::size(), walberla::pystencils::PackInfoVecDoublePrecision::size(), walberla::pystencils::PackInfoVecSinglePrecision::size(), walberla::pystencils::PackInfoPdfDoublePrecisionCUDA::size(), walberla::pystencils::PackInfoPdfSinglePrecisionCUDA::size(), walberla::pystencils::PackInfoVecDoublePrecisionCUDA::size(), walberla::pystencils::PackInfoVecSinglePrecisionCUDA::size(), walberla::pystencils::PackInfoPdfDoublePrecision::unpack(), walberla::pystencils::PackInfoPdfSinglePrecision::unpack(), walberla::pystencils::PackInfoVecDoublePrecision::unpack(), walberla::pystencils::PackInfoVecSinglePrecision::unpack(), walberla::pystencils::PackInfoPdfDoublePrecisionCUDA::unpack(), walberla::pystencils::PackInfoPdfSinglePrecisionCUDA::unpack(), walberla::pystencils::PackInfoVecDoublePrecisionCUDA::unpack(), and walberla::pystencils::PackInfoVecSinglePrecisionCUDA::unpack().

◆ calc_sc_cache()

template<std::size_t dir>
static std::vector< SCCache > calc_sc_cache ( ParticleRange const &  particles,
std::size_t  n_freq,
double  u 
)
static

Calculate cached sin/cos values for one direction.

Template Parameters
dirIndex of the dimension to consider (e.g. 0 for x ...).
Parameters
particlesParticle to calculate values for
n_freqNumber of frequencies to calculate per particle
uInverse box length
Returns
Calculated values.

Definition at line 107 of file elc.cpp.

References ParticleRange::size().

◆ calc_total_charge()

static auto calc_total_charge ( CellStructure const &  cell_structure)
static

Definition at line 975 of file elc.cpp.

References comm_cart, CellStructure::local_particles(), and Particle::q().

◆ charge_assign()

template<ChargeProtocol protocol, typename combined_ranges >
void charge_assign ( elc_data const &  elc,
CoulombP3M solver,
combined_ranges const &  p_q_pos_range 
)

◆ clear_vec()

static void clear_vec ( double *  pdc,
std::size_t  size 
)
static

Definition at line 145 of file elc.cpp.

Referenced by setup_PoQ(), and setup_PQ().

◆ copy_vec()

static void copy_vec ( double *  pdc_d,
double const *  pdc_s,
std::size_t  size 
)
static

Definition at line 150 of file elc.cpp.

Referenced by distribute().

◆ distribute()

static void distribute ( std::size_t  size)
static

Definition at line 176 of file elc.cpp.

References comm_cart, copy_vec(), and gblcblk.

◆ modify_p3m_sums()

template<ChargeProtocol protocol, typename combined_range >
void modify_p3m_sums ( elc_data const &  elc,
CoulombP3M solver,
combined_range const &  p_q_pos_range 
)

◆ PoQ_energy()

static double PoQ_energy ( double  omega,
std::size_t  n_part 
)
static

Definition at line 620 of file elc.cpp.

References gblcblk, partblk, POQECM, POQECP, POQESM, and POQESP.

◆ PQ_energy()

static double PQ_energy ( double  omega,
std::size_t  n_part 
)
static

Definition at line 812 of file elc.cpp.

References gblcblk, partblk, PQECCM, PQECCP, PQECSM, PQECSP, PQESCM, PQESCP, PQESSM, and PQESSP.

◆ prepare_sc_cache()

static std::pair< std::size_t, std::size_t > prepare_sc_cache ( ParticleRange const &  particles,
BoxGeometry const &  box_geo,
double  far_cut 
)
static

Definition at line 127 of file elc.cpp.

References BoxGeometry::length(), BoxGeometry::length_inv(), scxcache, and scycache.

◆ scale_vec()

static void scale_vec ( double  scale,
double *  pdc,
std::size_t  size 
)
static

Definition at line 167 of file elc.cpp.

Referenced by setup_PoQ(), and setup_PQ().

◆ setup_PoQ()

template<PoQ axis>
void setup_PoQ ( elc_data const &  elc,
double  prefactor,
std::size_t  index,
double  omega,
ParticleRange const &  particles,
BoxGeometry const &  box_geo 
)

◆ setup_PQ()

static void setup_PQ ( elc_data const &  elc,
double  prefactor,
std::size_t  index_p,
std::size_t  index_q,
double  omega,
ParticleRange const &  particles,
BoxGeometry const &  box_geo 
)
static

Variable Documentation

◆ gblcblk

double gblcblk[8]
static

collected data from the other cells

Definition at line 83 of file elc.cpp.

Referenced by add_PoQ_force(), add_PQ_force(), distribute(), PoQ_energy(), PQ_energy(), setup_PoQ(), and setup_PQ().

◆ partblk

std::vector<double> partblk
static

temporary buffers for product decomposition

Definition at line 81 of file elc.cpp.

Referenced by add_PoQ_force(), add_PQ_force(), PoQ_energy(), PQ_energy(), setup_PoQ(), and setup_PQ().

◆ scxcache

std::vector<SCCache> scxcache
static

Cached sin/cos values along the x-axis and y-axis.

Definition at line 92 of file elc.cpp.

Referenced by prepare_sc_cache(), setup_PoQ(), and setup_PQ().

◆ scycache

std::vector<SCCache> scycache
static

Definition at line 93 of file elc.cpp.

Referenced by prepare_sc_cache(), setup_PoQ(), and setup_PQ().