ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
P3MLocalMesh Struct Reference

Properties of the local mesh and halo region. More...

#include <common.hpp>

Public Member Functions

void recalc_ld_pos (P3MParameters const &params)
 Recalculate quantities derived from the mesh and box length: ld_pos (position of the left down mesh).
 
void calc_local_ca_mesh (P3MParameters const &params, LocalBox const &local_geo, double skin, double space_layer)
 Calculate properties of the local FFT mesh for the charge assignment process.
 

Public Attributes

Utils::Vector3i dim
 dimension (size) of local mesh including halo layers.
 
Utils::Vector3i dim_no_halo
 
std::size_t size
 number of local mesh points including halo layers.
 
Utils::Vector3i ld_ind
 index of lower left corner of the local mesh in the global mesh.
 
Utils::Vector3d ld_pos
 position of the first local mesh point.
 
Utils::Vector3i ld_no_halo
 
Utils::Vector3i ur_no_halo
 
Utils::Vector3i inner
 dimension of mesh inside node domain.
 
Utils::Vector3i in_ld
 inner left down grid point
 
Utils::Vector3i in_ur
 inner up right grid point + (1,1,1)
 
int margin [6]
 number of margin mesh points.
 
Utils::Vector3i n_halo_ld
 
Utils::Vector3i n_halo_ur
 
int r_margin [6]
 number of margin mesh points from neighbour nodes
 
int q_2_off
 offset between mesh lines of the last dimension
 
int q_21_off
 offset between mesh lines of the two last dimensions
 

Detailed Description

Properties of the local mesh and halo region.

The thickness of the halo region depends on the following parameters:

  • The half-width of the charge-assignment stencil (cao_cut = cao/2*a). A charge at position (0,0,0) is spread onto a cube of width cao, hence the half-width must be padded on both sides of the local domain.
  • The Verlet list skin must be added extra, since particles are not resorted at every time step, but rather when they moved more than one skin.
  • The ELC space layer is also needed when dielectric contrast is active, since real charges within space_layer of the bottom wall induce image charges outside the simulation box, hence the halo region is thicker in the non-periodic direction.

Definition at line 190 of file p3m/common.hpp.

Member Function Documentation

◆ calc_local_ca_mesh()

void P3MLocalMesh::calc_local_ca_mesh ( P3MParameters const &  params,
LocalBox const &  local_geo,
double  skin,
double  space_layer 
)

◆ recalc_ld_pos()

void P3MLocalMesh::recalc_ld_pos ( P3MParameters const &  params)
inline

Recalculate quantities derived from the mesh and box length: ld_pos (position of the left down mesh).

Definition at line 224 of file p3m/common.hpp.

References P3MParameters::a, ld_ind, ld_pos, and P3MParameters::mesh_off.

Referenced by CoulombP3MHeffte< FloatType, Architecture, FFTConfig >::scaleby_box_l(), and DipolarP3MHeffte< FloatType, Architecture, FFTConfig >::scaleby_box_l().

Member Data Documentation

◆ dim

Utils::Vector3i P3MLocalMesh::dim

dimension (size) of local mesh including halo layers.

Definition at line 192 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), p3m_calculate_interpolation_weights(), and p3m_send_mesh< FloatType >::resize().

◆ dim_no_halo

Utils::Vector3i P3MLocalMesh::dim_no_halo

Definition at line 193 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ in_ld

Utils::Vector3i P3MLocalMesh::in_ld

inner left down grid point

Definition at line 206 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ in_ur

Utils::Vector3i P3MLocalMesh::in_ur

inner up right grid point + (1,1,1)

Definition at line 208 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and p3m_send_mesh< FloatType >::resize().

◆ inner

Utils::Vector3i P3MLocalMesh::inner

dimension of mesh inside node domain.

Definition at line 204 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ ld_ind

Utils::Vector3i P3MLocalMesh::ld_ind

index of lower left corner of the local mesh in the global mesh.

Definition at line 198 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and recalc_ld_pos().

◆ ld_no_halo

Utils::Vector3i P3MLocalMesh::ld_no_halo

Definition at line 201 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ ld_pos

Utils::Vector3d P3MLocalMesh::ld_pos

position of the first local mesh point.

Definition at line 200 of file p3m/common.hpp.

Referenced by p3m_calculate_interpolation_weights(), and recalc_ld_pos().

◆ margin

int P3MLocalMesh::margin[6]

number of margin mesh points.

Definition at line 210 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and p3m_send_mesh< FloatType >::resize().

◆ n_halo_ld

Utils::Vector3i P3MLocalMesh::n_halo_ld

Definition at line 211 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ n_halo_ur

Utils::Vector3i P3MLocalMesh::n_halo_ur

Definition at line 212 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().

◆ q_21_off

int P3MLocalMesh::q_21_off

offset between mesh lines of the two last dimensions

Definition at line 218 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and p3m_interpolate().

◆ q_2_off

int P3MLocalMesh::q_2_off

offset between mesh lines of the last dimension

Definition at line 216 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and p3m_interpolate().

◆ r_margin

int P3MLocalMesh::r_margin[6]

number of margin mesh points from neighbour nodes

Definition at line 214 of file p3m/common.hpp.

◆ size

std::size_t P3MLocalMesh::size

number of local mesh points including halo layers.

Definition at line 195 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh(), and CoulombP3MHeffte< FloatType, Architecture, FFTConfig >::prepare_fft_mesh().

◆ ur_no_halo

Utils::Vector3i P3MLocalMesh::ur_no_halo

Definition at line 202 of file p3m/common.hpp.

Referenced by calc_local_ca_mesh().


The documentation for this struct was generated from the following files: