From d07cf22ac5d0899469b6eeb4121065e7f415006a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 22 Dec 2020 10:13:53 -0500 Subject: [PATCH] use parsed-literal sections to reduce spellchecking variable names --- doc/src/Developer_notes.rst | 66 ++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/doc/src/Developer_notes.rst b/doc/src/Developer_notes.rst index c1a808f98b..87ef97ea7b 100644 --- a/doc/src/Developer_notes.rst +++ b/doc/src/Developer_notes.rst @@ -30,7 +30,7 @@ allocated as a 1d vector or 3d array. Either way, the ordering of values within contiguous memory x fastest, then y, z slowest. For the ``3d decomposition`` of the grid, the global grid is -partitioned into bricks that correspond to the subdomains of the +partitioned into bricks that correspond to the sub-domains of the simulation box that each processor owns. Often, this is a regular 3d array (Px by Py by Pz) of bricks, where P = number of processors = Px * Py * Pz. More generally it can be a tiled decomposition, where @@ -46,10 +46,11 @@ P1 * P2. The following indices store the inclusive bounds of the brick a processor owns, within the global grid: -* nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in = 3d decomposition brick -* nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft = FFT decomposition brick -* nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out = 3d - decomposition brick + ghost cells +.. parsed-literal:: + + nxlo_in,nxhi_in,nylo_in,nyhi_in,nzlo_in,nzhi_in = 3d decomposition brick + nxlo_fft,nxhi_fft,nylo_fft,nyhi_fft,nzlo_fft,nzhi_fft = FFT decomposition brick + nxlo_out,nxhi_out,nylo_out,nyhi_out,nzlo_out,nzhi_out = 3d decomposition brick + ghost cells The ``in`` and ``fft`` indices are from 0 to N-1 inclusive in each dimension, where N is the grid size. @@ -61,41 +62,44 @@ the grid plus ghost cells that surround it. These indices can thus be The number of ghost cells a processor owns in each of the 6 directions is a function of: -* neighbor skin distance (since atoms can move outside a proc subdomain) -* qdist = offset or charge from atom due to TIP4P fictitious charge -* order = mapping stencil size -* shift = factor used when order is an even number (see below) +.. parsed-literal:: -Here is an explanation of how the PPPM variables order, nlower/nupper, -shift, and OFFSET work. + neighbor skin distance (since atoms can move outside a proc subdomain) + qdist = offset or charge from atom due to TIP4P fictitious charge + order = mapping stencil size + shift = factor used when order is an even number (see below) -These are the relevant variables that determine how atom charge is -mapped to grid points and how field values are mapped from grid points -to atoms: +Here is an explanation of how the PPPM variables ``order``, +``nlower`` / ``nupper``, ``shift``, and ``OFFSET`` work. They are the +relevant variables that determine how atom charge is mapped to grid +points and how field values are mapped from grid points to atoms: + +.. parsed-literal:: + + order = # of nearby grid points in each dim that atom charge/field are mapped to/from + nlower,nupper = extent of stencil around the grid point an atom is assigned to + OFFSET = large integer added/subtracted when mapping to avoid int(-0.75) = 0 when -1 is the desired result -* order = # of nearby grid points in each dim that atom charge/field are mapped to/from -* nlower,nupper = extent of stencil around the grid point an atom is assigned to -* OFFSET = large integer added/subtracted when mapping to avoid - int(-0.75) = 0 when -1 is the desired result - The particle_map() method assigns each atom to a grid point. If order is even, say 4: -* atom is assigned to grid point to its left (in each dim) -* shift = OFFSET -* nlower = -1, nupper = 2, which are offsets from assigned grid point -* window of mapping grid pts is thus 2 grid points to left of atom, 2 to right - +.. parsed-literal:: + + atom is assigned to grid point to its left (in each dim) + shift = OFFSET + nlower = -1, nupper = 2, which are offsets from assigned grid point + window of mapping grid pts is thus 2 grid points to left of atom, 2 to right + If order is odd, say 5: -* atom is assigned to left/right grid pt it is closest to (in each dim) -* shift = OFFSET + 0.5 -* nlower = 2, nupper = 2 -* if point is in left half of cell, then - window of affected grid pts is 3 grid points to left of atom, 2 to right -* if point is in right half of cell, then - window of affected grid pts is 2 grid points to left of atom, 3 to right +.. parsed-literal:: + + atom is assigned to left/right grid pt it is closest to (in each dim) + shift = OFFSET + 0.5 + nlower = 2, nupper = 2 + if point is in left half of cell, then window of affected grid pts is 3 grid points to left of atom, 2 to right + if point is in right half of cell, then window of affected grid pts is 2 grid points to left of atom, 3 to right These settings apply to each dimension, so that if order = 5, an atom's charge is mapped to 125 grid points that surround the atom.