work on grid text

This commit is contained in:
Jan Petykiewicz 2019-12-10 01:52:07 -08:00
parent 808a8879ae
commit e69201ce24

View File

@ -376,10 +376,143 @@ $$
Grid description
================
As described in the section on scalar discrete derivatives above, cell widths along
each axis can be arbitrary and independently defined. Moreover, all field components
are defined at "derived" or "dual" positions, in-between the "base" grid points on
one or more axes.
As described in the section on scalar discrete derivatives above, cell widths
(`dx[i]`, `dy[j]`, `dz[k]`) along each axis can be arbitrary and independently
defined. Moreover, all field components are actually defined at "derived" or "dual"
positions, in-between the "base" grid points on one or more axes.
To get a better sense of how this works, let's start by drawing a grid with uniform
`dy` and `dz` and nonuniform `dx`. We will only draw one cell in the y and z dimensions
to make the illustration simpler; we need at least two cells in the x dimension to
demonstrate how nonuniform `dx` affects the various components.
Place the E fore-vectors at integer indices \\( r = (m, n, p) \\) and the H back-vectors
at fractional indices \\( r + \\frac{1}{2} = (m + \\frac{1}{2}, n + \\frac{1}{2}, p + \\frac{1}{2}.
Remember that these are indices and not coordinates; they can coorespond to arbitrary
(monotonically increasing) coordinates depending on the cell widths.
Draw lines to denote the planes on which the H components and back-vectors are defined.
For simplicity, don't draw the equivalent planes for the E components and fore-vectors,
except as necessary to show their locations -- it's easiest to just connect them to their
associated H-equivalents. The result looks something like this:
[figure: Component centers]
p=
[H]__________Hx___________[H]______Hx______[H] __ +1/2
z y /: /: /: /: /| | |
|/_x / : / : / : / : / | | |
/ : / : / : / : / | | |
Hy : Ez...........Hy : Ez......Hy | | |
/: : : : /: : : : /| | | |
/ : Hz : Ey....../.:..Hz : Ey./.|..Hz __ 0 | dz[0]
/ : /: : / / : /: : / / | /| | |
/_________________________/________________/ | / | | |
| :/ : :/ | :/ : :/ | |/ | | |
| Ex : [E].......|..Ex : [E]..|..Ex | | |
| : | : | | | |
| [H]..........Hx....|......[H].....Hx|......[H] __ --------- (m=+1/2, p=-1/2)
| / | / | / / /
| / | / | / / /
Hz / Hz / Hz / / /
| Hy | Hy | Hy __ 0 / dy[0]
| / | / | / / /
| / | / | / / /
|/ |/ |/ / /
[H]__________Hx___________[H]______Hx______[H] __ -1/2 /
=n
|------------|------------|--------|------|
-1/2 0 +1/2 +1 +3/2 = m
------------------------- ----------------
dx[0] dx[1]
Part of a nonuniform "base grid", with labels specifying
positions of the various field components. [E] fore-vectors
are at the cell centers, and [H] back-vectors are at the
vertices. H components along the near (-y) top (+z) edge
have been omitted to make the insides of the cubes easier
to visualize.
This figure shows where all the components are located; however, it is also useful to show
what volumes those components are responsible for representing. Consider the Ex component:
two of its nearest neighbors are E fore-vectors, labeled `[E]` in the figure.
[figure: Ex volumes]
<__________________________________________>
z y << /: / /: >> |
|/_x < < / : / / : > > |
< < / : / / : > > |
< < / : / / : > > |
<: < / : : / : >: > |
< : < / : : / : > : > | dz[0]
< : < / : : / : > : > |
<____________/_____________________________> : > |
< : < | : :| : > : > |
< Ex < | : Ex| : > Ex > |
< : < | : :| : > : > |
< : <....|.......:........:|.......:...>...:...>
< : < | / :| / / > : > /
< : < | / :| / / > : > /
< :< | / :|/ / > :> /
< < | / :| / > > /
< < | / | / > > / dy[0]
< < | / | / > > /
<< |/ |/ >> /
<____________|_________________|___________> /
~------------ ----------------- -----------~
dx'[-1] dx'[0] dx'[1]
The Ex values are positioned on the x-faces of the base
grid. They represent the Ex field in volumes shifted by
a half-cell in the x-dimension, as shown here. Only the
center cell is fully shown; the other two are truncated
(shown using >< markers).
Note that the Ex positions are the in the same positions
as the previous figure; only the cell boundaries have moved.
Also note that the points at which Ex is defined are not
necessarily centered in the volumes they represent; non-
uniform cell sizes result in off-center volumes like the
center cell here.
[figure: Hy volumes]
z y mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm s
|/_x << m: m: >> |
< < m : m : > > | dz'[1]
Hy............m...........Hy........m......Hy > |
< < m : m : > > |
< < m : m : > > |
< _______m_____:_______________m_____:_>______
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm > |
< < | / : | / :> > |
< < | / : | / :> > | dz'[0]
< < | / : | / :> > |
< wwwwww|w/wwwwwwwwwwwwwwwwwww|w/wwwww>wwwwwww s
< < |/ w |/ w > > /
_____________|_____________________|________ > /
< Hy........|...w...........Hy....|...w...>..Hy /
< < | w | w > > / dy[0]
< < | w | w > > /
<< |w |w >> /
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
~------------ --------------------- -------~
dx'[-1] dx'[0] dx'[1]
The Hy values are positioned on the y-edges of the base
grid. Again here, the 'Hy' labels represent the same points
as in the basic grid figure above; the edges have shifted
by a half-cell along the x- and z-axes.
The grid lines _|:/ are edges of the area represented by
each Hy value, and the lines drawn using <m>.w represent
edges where a cell's faces extend beyond the drawn area
(i.e. where the drawing is truncated in the x- or z-
directions).
TODO: explain dxes
[figure: 3D base and derived grids]
_____________________________ _____________________________
@ -432,117 +565,6 @@ one or more axes.
later figures for a better representation.
Nevertheless, while the spacing
[figure: Component centers]
[H]__________Hx___________[H]______Hx______[H]
z y /: /: /: /: /| |
|/_x / : / : / : / : / | |
/ : / : / : / : / | |
Hy : Ez...........Hy : Ez......Hy | |
/: : : : /: : : : /| | |
/ : Hz : Ey....../.:..Hz : Ey./.|..Hz | dz[0]
/ : /: : / / : /: : / / | /| |
/_________________________/________________/ | / | |
| :/ : :/ | :/ : :/ | |/ | |
| Ex : [E].......|..Ex : [E]..|..Ex | |
| : | : | | |
| [H]..........Hx....|......[H].....Hx|......[H]
| / | / | / /
| / | / | / /
Hz / Hz / Hz / /
| Hy | Hy | Hy /
| / | / | / / dy[0]
| / | / | / /
|/ |/ |/ /
[H]__________Hx___________[H]______Hx______[H] /
------------------------- ----------------
dx[0] dx[1]
Part of a nonuniform "base grid", with labels specifying
positions of the various field components. [E] fore-vectors
are at the cell centers, and [H] back-vectors are at the
vertices. H components along the near (-y) top (+z) edge
have been omitted to make the insides of the cubes easier
to visualize.
<__________________________________________>
z y << /: / /: >> |
|/_x < < / : / / : > > |
< < / : / / : > > |
< < / : / / : > > |
<: < / : : / : >: > |
< : < / : : / : > : > | dz[0]
< : < / : : / : > : > |
<____________/_____________________________> : > |
< : < | : :| : > : > |
< Ex < | : Ex| : > Ex > |
< : < | : :| : > : > |
< : <....|.......:........:|.......:...>...:...>
< : < | / :| / / > : > /
< : < | / :| / / > : > /
< :< | / :|/ / > :> /
< < | / :| / > > /
< < | / | / > > / dy[0]
< < | / | / > > /
<< |/ |/ >> /
<____________|_________________|___________> /
~------------ ----------------- -----------~
dx'[-1] dx'[0] dx'[1]
The Ex values are positioned on the x-faces of the base
grid. They represent the Ex field in volumes shifted by
a half-cell in the x-dimension, as shown here. Only the
center cell is fully shown; the other two are truncated
(shown using >< markers).
Note that the Ex positions are the in the same positions
as the previous figure; only the cell boundaries have moved.
Also note that the points at which Ex is defined are not
necessarily centered in the volumes they represent; non-
uniform cell sizes result in off-center volumes like the
center cell here.
z y mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm s
|/_x << m: m: >> |
< < m : m : > > | dz'[1]
Hy............m...........Hy........m......Hy > |
< < m : m : > > |
< < m : m : > > |
< _______m_____:_______________m_____:_>______
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm > |
< < | / : | / :> > |
< < | / : | / :> > | dz'[0]
< < | / : | / :> > |
< wwwwww|w/wwwwwwwwwwwwwwwwwww|w/wwwww>wwwwwww s
< < |/ w |/ w > > /
_____________|_____________________|________ > /
< Hy........|...w...........Hy....|...w...>..Hy /
< < | w | w > > / dy[0]
< < | w | w > > /
<< |w |w >> /
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
~------------ --------------------- -------~
dx'[-1] dx'[0] dx'[1]
The Hy values are positioned on the y-edges of the base
grid. Again here, the 'Hy' labels represent the same points
as in the basic grid figure above; the edges have shifted
by a half-cell along the x- and z-axes.
The grid lines _|:/ are edges of the area represented by
each Hy value, and the lines drawn using <m>.w represent
edges where a cell's faces extend beyond the drawn area
(i.e. where the drawing is truncated in the x- or z-
directions).
TODO: explain dxes
"""
from .types import fdfield_t, vfdfield_t, dx_lists_t, fdfield_updater_t