interior+boundary-x3_adj-x2_adj. Note that are 3 sets of entries for each adjacent point.
The x3 adjacent points do not need to be removed in teh case of periodic boundary conditions.
This is technicall correct, but a bit misleading, I think.
Shouldn't it be lent=17(lx2-2)(lx3-2)+2(lx2-2)+2lx3-32(lx2-2)-32(lx3-2)???????
true interior with x3 boundaries which are not treated as interior in periodic solves
+ add x2 boundaries (note that these are now size lx3+1) + 3 entries for each x3 ghost cell that we are adding
- x2_adj (x2 is not periodici, two sets of three points each, note again the larger x3 size as compared to aperiodic solutions).
true interior with x3 boundaries which are not treated as interior in periodic solves
+ add x2 boundaries (note that these are now size lx3+1) + x3 edge cells (treated here as interior)
- x2_adj (x2 is not periodici, two sets of three points each, note again the larger x3 size as compared to aperiodic solutions).
note that we have one extra ghost cell now to deal with due to the way we've chosen to implement periodic boundary conditions
linear index referencing Phi(ix2,ix3) as a column vector. Also row of big matrix
BOTTOM GRID POINTS + CORNER
TOP GRID POINTS + CORNER
TREAT AS AN INTERIOR LOCATION, THIS INCLUDE X3 EDGES NOW SINCE PERIODIC,CIRCULANT
ZZZ - NEED TO WRAP INDICES AROUND: X 1)
matrix row/column entries; 2) references to dx3i*(anything but ix3); 3) references to conductances/bcs/etc.
add the grid size to wrap the index around (would be negative otherwise),
-1 at end because the last grid opint is actually the same as the first for our implementation
add in polarziation terms that include previous time step potential at this grid point
Arguments
Type
Intent
Optional
Attributes
Name
real(kind=wp),
intent(in),
dimension(:,:)
::
srcterm
real(kind=wp),
intent(in),
dimension(:,:)
::
SigP
real(kind=wp),
intent(in),
dimension(:,:)
::
SigH
real(kind=wp),
intent(in),
dimension(:,:)
::
gradSigH2
real(kind=wp),
intent(in),
dimension(:,:)
::
gradSigH3
real(kind=wp),
intent(in),
dimension(:,:)
::
Cm
real(kind=wp),
intent(in),
dimension(:,:)
::
v2
real(kind=wp),
intent(in),
dimension(:,:)
::
v3
real(kind=wp),
intent(in),
dimension(:)
::
Vminx2
real(kind=wp),
intent(in),
dimension(:)
::
Vmaxx2
real(kind=wp),
intent(in),
dimension(:)
::
Vminx3
real(kind=wp),
intent(in),
dimension(:)
::
Vmaxx3
real(kind=wp),
intent(in)
::
dt
real(kind=wp),
intent(in),
dimension(0:)
::
dx1
real(kind=wp),
intent(in),
dimension(:)
::
dx1i
real(kind=wp),
intent(in),
dimension(0:)
::
dx2all
real(kind=wp),
intent(in),
dimension(:)
::
dx2iall
real(kind=wp),
intent(in),
dimension(0:)
::
dx3all
real(kind=wp),
intent(in),
dimension(:)
::
dx3iall
real(kind=wp),
intent(in),
dimension(:,:)
::
Phi0
logical,
intent(in)
::
perflag
integer,
intent(in)
::
it
Return Value real(kind=wp),
dimension(size(SigP,1),size(SigP,2))
Nodes of different colours represent the following:
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.
Nodes of different colours represent the following:
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.