48 for(
int iStencil = 0;iStencil <
numStencils;iStencil++){
56 for(
int iStencil = 0;iStencil <
numStencils;iStencil++){
61 for(
int iVal = 0;iVal <
numValues;iVal++){
144 int Initialize(base &stencilSet,
int interiorOrder);
150 std::vector<std::vector<double> > leftWeights, std::vector<int> leftOrders);
188 int BruteTest1(base &inOperator,
int interiorOrder,
int numDim,
189 int numComponents,
int numTrials,std::vector<bool> &testResults);
216 int *
stencilID,
bool fortranInterval=
false);
245 int *periodicDirs,
int *
stencilID,
bool fortranInterval=
false);
266 size_t *dualStencilConn,
size_t *numPointsStencil,
bool fortranInterval=
false);
287 int *stencilConnectivity);
308 int *stencilConnectivity);
321 namespace dissipation {
332 void SetMask(
const std::vector<size_t> &opIndices,
int maskBits,
int *inMask);
335 int maskBits,
int *inMask);
336 void UnSetMask(
const std::vector<size_t> &opIndices,
int maskBits,
int *inMask);
337 void UnSetMask(
const std::vector<size_t> &bufferSizes,
339 int maskBits,
int *inMask);
int InvertStencilConnectivity(int numDim, size_t *dimSizes, size_t *opInterval, int numStencils, int *stencilID, size_t *dualStencilConn, size_t *numPointsStencil, bool fortranInterval=false)
Inverts stencil connectivity to populate the so-called dual stencil connectivity
int CreateStencilConnectivity(int numDim, size_t *dimSizes, size_t *opInterval, int boundaryDepth, int *periodicDirs, int *stencilID, bool fortranInterval=false)
Creates simple stencil connectivity assuming all domain boundaries are either periodic or physical bo...
int * stencilSizes
The number of weights for each stencil.
int BoundaryStencilConnectivity(std::vector< size_t > &bufferSizes, pcpp::IndexIntervalType &partitionInterval, pcpp::IndexIntervalType &partitionBufferInterval, pcpp::IndexIntervalType &boundaryInterval, int boundaryDepth, int boundaryDirection, int *stencilConnectivity)
Update a stencil connectivity with a boundary.
void Copy(const stencilset &inStencilSet)
Copy a stencil.
int * stencilStarts
The starting index into the stencilWeight and stencilOffset arrays for each stencil.
int * stencilOffsets
The offsets wrt the grid point at which the stencil is being applied.
void SetMask(const std::vector< size_t > &bufferSizes, const pcpp::IndexIntervalType &opInterval, int maskBits, int *inMask)
void const size_t const size_t const size_t * opInterval
int BruteTest1(base &inOperator, int interiorOrder, int numDim, int numComponents, int numTrials, std::vector< bool > &testResults)
Brute-force accuracy test for SBP operators.
void double double double double double double double *void const size_t * dimSizes
int DetectHoles(int numDim, size_t *dimSizes, size_t *opInterval, int boundaryDepth, int holeBit, int *inMask, int *stencilID)
Detect unstructured holes and set up boundary stencil id's accordingly.
int MaskStencilConnectivity(int numDim, size_t *dimSizes, size_t *opInterval, int boundaryDepth, int boundaryStart, int holeBit, int *inMask, int *stencilID)
int HoleStencilConnectivity(std::vector< size_t > &bufferSizes, pcpp::IndexIntervalType &partitionInterval, pcpp::IndexIntervalType &partitionBufferInterval, pcpp::IndexIntervalType &holeInterval, int holeStencil, int *stencilConnectivity)
Update a stencil connectivity with a hole.
stencilset base
The sbp::base is an SBP-specific stencilset.
int Initialize(stencilset &stencilSet1, stencilset &stencilSet2, int interiorOrder)
void size_t int size_t int size_t int int int int double int int * stencilID
int * stencilOrders
Boundary weight needed by BC's.
Encapsulation for a collection of operator stencils.
int numValues
The total number of weights for all stencils (reqd for Fortran)
void const size_t const size_t * bufferSizes
void Destroy()
Destroy utility destroys the stencil set memory.
bool IsValidOrder(int overallOrder)
bool ownData
Indicates whether this data structure owns the stencil memory.
int boundaryWidth
Boundary width is the size of the on-boundary stencil.
double * stencilWeights
The stencil weights.
int numStencils
The number of stencils (e.g. interior + boundary)
double boundaryWeight
The order of accuracy for each stencil.
Simple Block Structured Mesh object.
void size_t int * numComponents
void OperatorSetup(base &stencilSet, int interiorOrder, int boundaryDepth, int boundaryWidth, double boundaryWeight, std::vector< double > centralWeightsRight, std::vector< std::vector< double > > leftWeights, std::vector< int > leftOrders)
Setup the SBP operator given the appropriate coefficients – called from Initialize.
int boundaryDepth
Boundary depth is the number of biased boundary stencils for one boundary.
int overallOrder
The overall order of the scheme this stencil implements.
void UnSetMask(const std::vector< size_t > &bufferSizes, const pcpp::IndexIntervalType &opInterval, int maskBits, int *inMask)