Escript  Revision_4320
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
ripley::Brick Class Reference

Brick is the 3-dimensional implementation of a RipleyDomain. More...

#include <Brick.h>

Inheritance diagram for ripley::Brick:
ripley::RipleyDomain escript::AbstractContinuousDomain escript::AbstractDomain

Public Member Functions

 Brick (int n0, int n1, int n2, double x0, double y0, double z0, double x1, double y1, double z1, int d0=-1, int d1=-1, int d2=-1)
 creates a hexagonal mesh with n0 x n1 x n2 elements over the brick [x0,x1] x [y0,y1] x [z0,z1].
 ~Brick ()
 Destructor.
virtual std::string getDescription () const
 returns a description for this domain
virtual bool operator== (const escript::AbstractDomain &other) const
 equality operator
void dump (const std::string &filename) const
 dumps the mesh to a file with the given name
virtual void readBinaryGrid (escript::Data &out, std::string filename, const std::vector< int > &first, const std::vector< int > &numValues, const std::vector< int > &multiplier) const
virtual void readNcGrid (escript::Data &out, std::string filename, std::string varname, const std::vector< int > &first, const std::vector< int > &numValues, const std::vector< int > &multiplier) const
const int * borrowSampleReferenceIDs (int fsType) const
 returns the reference number of the given sample number
virtual bool ownSample (int fsType, index_t id) const
 returns true if this rank owns the sample id.
virtual void setToNormal (escript::Data &out) const
 copies the surface normals at data points into out. The actual function space to be considered is defined by out. out has to be defined on this domain.
virtual void setToSize (escript::Data &out) const
 copies the size of samples into out. The actual function space to be considered is defined by out. out has to be defined on this domain.
virtual int getNumDataPointsGlobal () const
 returns the number of data points summed across all MPI processes
virtual void Print_Mesh_Info (const bool full=false) const
 writes information about the mesh to standard output
virtual IndexVector getNumNodesPerDim () const
 returns the number of nodes per MPI rank in each dimension
virtual IndexVector getNumElementsPerDim () const
 returns the number of elements per MPI rank in each dimension
virtual IndexVector getNumFacesPerBoundary () const
 returns the number of face elements in the order (left,right,bottom,top,[front,back]) on current MPI rank
virtual IndexVector getNodeDistribution () const
 returns the node distribution vector
virtual IndexVector getNumSubdivisionsPerDim () const
 returns the number of spatial subdivisions in each dimension
virtual std::pair< double, double > getFirstCoordAndSpacing (dim_t dim) const
 returns the first coordinate value and the node spacing along given dimension as a pair
- Public Member Functions inherited from ripley::RipleyDomain
 RipleyDomain (dim_t dim)
 Constructor with number of dimensions. Allocates MPI info structure.
 ~RipleyDomain ()
 Destructor.
virtual int getMPISize () const
 returns the number of processors used for this domain
virtual int getMPIRank () const
 returns the MPI rank of this processor
virtual void MPIBarrier () const
 if compiled for MPI then executes an MPI_Barrier, else does nothing
virtual bool onMasterProcessor () const
 returns true if on MPI processor 0, else false
unsigned int getMPIComm () const
 returns the MPI communicator
virtual bool isValidFunctionSpaceType (int fsType) const
 returns true if the argument is a valid function space type for this domain
virtual std::string functionSpaceTypeAsString (int fsType) const
 returns a description for the given function space type code
virtual int getDim () const
 returns the number of spatial dimensions of the domain
virtual bool operator!= (const escript::AbstractDomain &other) const
 inequality operator
virtual std::pair< int, int > getDataShape (int fsType) const
 returns the number of data points per sample, and the number of samples as a pair.
int getTagFromSampleNo (int fsType, int sampleNo) const
 returns the tag key for the given sample number
virtual void setTagMap (const std::string &name, int tag)
 sets a map from a clear tag name to a tag key
virtual int getTag (const std::string &name) const
 returns the tag key for tag name
virtual bool isValidTagName (const std::string &name) const
 returns true if name is a defined tag name
virtual std::string showTagNames () const
 returns all tag names in a single string separated by commas
virtual void setNewX (const escript::Data &arg)
 assigns new location to the domain.
virtual void interpolateOnDomain (escript::Data &target, const escript::Data &source) const
 interpolates data given on source onto target where source and target have to be given on the same domain
virtual bool probeInterpolationOnDomain (int fsType_source, int fsType_target) const
 returns true if data on fsType_source can be interpolated onto fsType_target, false otherwise
virtual signed char preferredInterpolationOnDomain (int fsType_source, int fsType_target) const
 Preferred direction of interpolation.
bool commonFunctionSpace (const std::vector< int > &fs, int &resultcode) const
 given a vector of FunctionSpace type codes, passes back a code which all can be interpolated to
virtual void interpolateACross (escript::Data &target, const escript::Data &source) const
 interpolates data given on source onto target where source and target are given on different domains
virtual bool probeInterpolationACross (int, const escript::AbstractDomain &, int) const
 determines whether interpolation from source to target is possible
virtual escript::Data getX () const
 returns locations in the FEM nodes
virtual escript::Data getNormal () const
 returns boundary normals at the quadrature point on the face elements
virtual escript::Data getSize () const
 returns the element size
virtual void setToX (escript::Data &arg) const
 copies the location of data points into arg. The domain of arg has to match this domain.
virtual void setToGradient (escript::Data &out, const escript::Data &in) const
 copies the gradient of 'in' into 'out'. The actual function space to be considered for the gradient is defined by 'in'. Both arguments have to be defined on this domain.
virtual void setTags (const int fsType, const int newTag, const escript::Data &mask) const
 assigns new tag newTag to all samples of given function space with a positive value of mask for any of its sample points
virtual bool isCellOriented (int fsType) const
 returns true if data on this domain and given function space type has to be considered as cell centered data
virtual StatusType getStatus () const
 returns a status indicator of the domain. The status identifier should be unique over the lifetime of the object but may be updated if changes to the domain happen, e.g. modifications to its geometry.
virtual int getNumberOfTagsInUse (int fsType) const
 returns the number of tags in use for a function space type
virtual const int * borrowListOfTagsInUse (int fsType) const
 returns a pointer to the list of tags in use for a function space type
virtual bool canTag (int fsType) const
 checks if this domain allows tags for the specified function space type
virtual int getApproximationOrder (const int fsType) const
 returns the approximation order used for a function space
virtual bool supportsContactElements () const
 returns true if this domain supports contact elements, false otherwise
virtual int getContinuousFunctionCode () const
 returns a continuous FunctionSpace code
virtual int getReducedContinuousFunctionCode () const
 returns a continuous on reduced order nodes FunctionSpace code
virtual int getFunctionCode () const
 returns a function FunctionSpace code
virtual int getReducedFunctionCode () const
 returns a function with reduced integration order FunctionSpace code
virtual int getFunctionOnBoundaryCode () const
 returns a function on boundary FunctionSpace code
virtual int getReducedFunctionOnBoundaryCode () const
 returns a function on boundary with reduced integration order FunctionSpace code
virtual int getFunctionOnContactZeroCode () const
 return a FunctionOnContactZero code
virtual int getReducedFunctionOnContactZeroCode () const
 returns a FunctionOnContactZero code with reduced integration order
virtual int getFunctionOnContactOneCode () const
 returns a FunctionOnContactOne code
virtual int getReducedFunctionOnContactOneCode () const
 returns a FunctionOnContactOne code with reduced integration order
virtual int getSolutionCode () const
 returns a Solution FunctionSpace code
virtual int getReducedSolutionCode () const
 returns a ReducedSolution FunctionSpace code
virtual int getDiracDeltaFunctionsCode () const
 returns a DiracDeltaFunctions FunctionSpace code
virtual int getSystemMatrixTypeId (const int solver, const int preconditioner, const int package, const bool symmetry) const
 returns the identifier of the matrix type to be used for the global stiffness matrix when a particular solver, package, preconditioner, and symmetric matrix is used
virtual int getTransportTypeId (const int solver, const int preconditioner, const int package, const bool symmetry) const
 returns the identifier of the transport problem type to be used when a particular solver, preconditioner, package and symmetric matrix is used
virtual void setToIntegrals (std::vector< double > &integrals, const escript::Data &arg) const
 copies the integrals of the function defined by arg into integrals. arg has to be defined on this domain.
virtual void addPDEToSystem (escript::AbstractSystemMatrix &mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
 adds a PDE onto the stiffness matrix mat and rhs
virtual void addPDEToRHS (escript::Data &rhs, const escript::Data &X, const escript::Data &Y, const escript::Data &y, const escript::Data &y_contact, const escript::Data &y_dirac) const
 adds a PDE onto rhs
virtual void addPDEToTransportProblem (escript::AbstractTransportProblem &tp, escript::Data &source, const escript::Data &M, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y, const escript::Data &d, const escript::Data &y, const escript::Data &d_contact, const escript::Data &y_contact, const escript::Data &d_dirac, const escript::Data &y_dirac) const
 adds a PDE onto a transport problem
virtual escript::ASM_ptr newSystemMatrix (const int row_blocksize, const escript::FunctionSpace &row_functionspace, const int column_blocksize, const escript::FunctionSpace &column_functionspace, const int type) const
 creates a stiffness matrix and initializes it with zeros
virtual escript::ATP_ptr newTransportProblem (const int blocksize, const escript::FunctionSpace &functionspace, const int type) const
 creates a transport problem
- Public Member Functions inherited from escript::AbstractContinuousDomain
 AbstractContinuousDomain ()
 Default constructor for AbstractContinuousDomain.
virtual ~AbstractContinuousDomain ()
 Destructor for AbstractContinuousDomain.
- Public Member Functions inherited from escript::AbstractDomain
Domain_ptr getPtr ()
 Returns smart pointer which is managing this object. If one does not exist yet it creates one.
const_Domain_ptr getPtr () const
 AbstractDomain ()
 Default constructor for AbstractDomain.
virtual ~AbstractDomain ()
 Destructor for AbstractDomain.
virtual void write (const std::string &filename) const
 Writes the domain to an external file filename.
void throwStandardException (const std::string &functionName) const
 Throw a standard exception. This function is called if any attempt is made to use a base class function.

Protected Member Functions

virtual dim_t getNumNodes () const
 returns the number of nodes per MPI rank
virtual dim_t getNumElements () const
 returns the number of elements per MPI rank
virtual dim_t getNumFaceElements () const
 returns the number of face elements on current MPI rank
virtual dim_t getNumDOF () const
 returns the number of degrees of freedom per MPI rank
virtual dim_t insertNeighbourNodes (IndexVector &index, index_t node) const
virtual void assembleCoordinates (escript::Data &arg) const
 populates the data object 'arg' with the node coordinates
virtual void assembleGradient (escript::Data &out, escript::Data &in) const
 computes the gradient of 'in' and puts the result in 'out'
virtual void assembleIntegrate (std::vector< double > &integrals, escript::Data &arg) const
 copies the integrals of the function defined by 'arg' into 'integrals'
virtual void assemblePDESingle (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y) const
virtual void assemblePDEBoundarySingle (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
virtual void assemblePDESingleReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y) const
virtual void assemblePDEBoundarySingleReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
virtual void assemblePDESystem (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y) const
virtual void assemblePDEBoundarySystem (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
virtual void assemblePDESystemReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y) const
virtual void assemblePDEBoundarySystemReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
virtual Paso_SystemMatrixPatterngetPattern (bool reducedRowOrder, bool reducedColOrder) const
 returns the Paso system matrix pattern
virtual void interpolateNodesOnElements (escript::Data &out, escript::Data &in, bool reduced) const
 interpolates data on nodes in 'in' onto (reduced) elements in 'out'
virtual void interpolateNodesOnFaces (escript::Data &out, escript::Data &in, bool reduced) const
 interpolates data on nodes in 'in' onto (reduced) face elements in 'out'
virtual void nodesToDOF (escript::Data &out, escript::Data &in) const
 converts data on nodes in 'in' to degrees of freedom in 'out'
virtual void dofToNodes (escript::Data &out, escript::Data &in) const
 converts data on degrees of freedom in 'in' to nodes in 'out'
- Protected Member Functions inherited from ripley::RipleyDomain
void copyData (escript::Data &out, escript::Data &in) const
 copies data in 'in' to 'out' (both must be on same function space)
void averageData (escript::Data &out, escript::Data &in) const
 averages data in 'in' to 'out' (from non-reduced to reduced fs)
void multiplyData (escript::Data &out, escript::Data &in) const
 copies data in 'in' to 'out' (from reduced to non-reduced fs)
void updateTagsInUse (int fsType) const
Paso_PatterncreatePasoPattern (const IndexVector &ptr, const IndexVector &index, const dim_t M, const dim_t N) const
 allocates and returns a Paso pattern structure
Paso_PatterncreateMainPattern () const
 creates the pattern for the main block of the system matrix
void createCouplePatterns (const std::vector< IndexVector > &colIndices, const dim_t N, Paso_Pattern **colPattern, Paso_Pattern **rowPattern) const
void addToSystemMatrix (Paso_SystemMatrix *in, const IndexVector &nodes_Eq, dim_t num_Eq, const IndexVector &nodes_Sol, dim_t num_Sol, const std::vector< double > &array) const

Private Member Functions

void populateSampleIds ()
void createPattern ()
void addToMatrixAndRHS (Paso_SystemMatrix *S, escript::Data &F, const std::vector< double > &EM_S, const std::vector< double > &EM_F, bool addS, bool addF, index_t firstNode, dim_t nEq=1, dim_t nComp=1) const

Private Attributes

dim_t m_gNE0
 total number of elements in each dimension
dim_t m_gNE1
dim_t m_gNE2
double m_x0
 location of domain
double m_y0
double m_z0
double m_l0
 side lengths of domain
double m_l1
double m_l2
int m_NX
 number of spatial subdivisions
int m_NY
int m_NZ
dim_t m_NE0
 number of elements for this rank in each dimension including shared
dim_t m_NE1
dim_t m_NE2
dim_t m_ownNE0
 number of own elements for this rank in each dimension
dim_t m_ownNE1
dim_t m_ownNE2
dim_t m_N0
 number of nodes for this rank in each dimension
dim_t m_N1
dim_t m_N2
dim_t m_offset0
 first node on this rank is at (offset0,offset1,offset2) in global mesh
dim_t m_offset1
dim_t m_offset2
IndexVector m_faceOffset
IndexVector m_dofId
 vector of sample reference identifiers
IndexVector m_nodeId
IndexVector m_elementId
IndexVector m_faceId
IndexVector m_nodeDistribution
IndexVector m_dofMap
Paso_Connectorm_connector
Paso_SystemMatrixPatternm_pattern

Additional Inherited Members

- Public Types inherited from escript::AbstractDomain
typedef int StatusType
typedef struct ValueBuffer ValueBuffer
typedef std::map< int,
ValueBuffer
BufferMapType
- Protected Attributes inherited from ripley::RipleyDomain
dim_t m_numDim
StatusType m_status
Esys_MPIInfom_mpiInfo
TagMap m_tagMap
IndexVector m_nodeTags
IndexVector m_nodeTagsInUse
IndexVector m_elementTags
IndexVector m_elementTagsInUse
IndexVector m_faceTags
IndexVector m_faceTagsInUse

Detailed Description

Brick is the 3-dimensional implementation of a RipleyDomain.

Constructor & Destructor Documentation

ripley::Brick::Brick ( int  n0,
int  n1,
int  n2,
double  x0,
double  y0,
double  z0,
double  x1,
double  y1,
double  z1,
int  d0 = -1,
int  d1 = -1,
int  d2 = -1 
)

creates a hexagonal mesh with n0 x n1 x n2 elements over the brick [x0,x1] x [y0,y1] x [z0,z1].

Parameters
n0,n1,n2number of elements in each dimension
x0,y0,z0,x1,y1,z1coordinates of corner nodes of the brick
d0,d1,d2number of subdivisions in each dimension

References createPattern(), m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, ripley::RipleyDomain::m_mpiInfo, m_N0, m_N1, m_N2, m_NE0, m_NE1, m_NE2, m_NX, m_NY, m_NZ, m_offset0, m_offset1, m_offset2, m_ownNE0, m_ownNE1, m_ownNE2, populateSampleIds(), Esys_MPIInfo::rank, and Esys_MPIInfo::size.

ripley::Brick::~Brick ( )

Member Function Documentation

void ripley::Brick::addToMatrixAndRHS ( Paso_SystemMatrix S,
escript::Data F,
const std::vector< double > &  EM_S,
const std::vector< double > &  EM_F,
bool  addS,
bool  addF,
index_t  firstNode,
dim_t  nEq = 1,
dim_t  nComp = 1 
) const
private
void ripley::Brick::assembleCoordinates ( escript::Data arg) const
protectedvirtual
void ripley::Brick::assembleGradient ( escript::Data out,
escript::Data in 
) const
protectedvirtual
void ripley::Brick::assembleIntegrate ( std::vector< double > &  integrals,
escript::Data arg 
) const
protectedvirtual
void ripley::Brick::assemblePDEBoundarySingle ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedvirtual

assembles boundary conditions of a single PDE into the system matrix 'mat' and the right hand side 'rhs'

Implements ripley::RipleyDomain.

References escript::Data::actsExpanded(), addToMatrixAndRHS(), getSampleDataRO(), INDEX2, escript::Data::isEmpty(), m_faceOffset, m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_N0, m_N1, m_N2, m_NE0, m_NE1, m_NE2, and escript::Data::requireWrite().

void ripley::Brick::assemblePDEBoundarySingleReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedvirtual

assembles boundary conditions of a single PDE with reduced order into the system matrix 'mat' and the right hand side 'rhs'

Implements ripley::RipleyDomain.

References addToMatrixAndRHS(), getSampleDataRO(), INDEX2, escript::Data::isEmpty(), m_faceOffset, m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_N0, m_N1, m_N2, m_NE0, m_NE1, m_NE2, and escript::Data::requireWrite().

void ripley::Brick::assemblePDEBoundarySystem ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedvirtual
void ripley::Brick::assemblePDEBoundarySystemReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedvirtual
void ripley::Brick::assemblePDESingle ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data A,
const escript::Data B,
const escript::Data C,
const escript::Data D,
const escript::Data X,
const escript::Data Y 
) const
protectedvirtual

assembles a single PDE into the system matrix 'mat' and the right hand side 'rhs'

Implements ripley::RipleyDomain.

References escript::Data::actsExpanded(), addToMatrixAndRHS(), getSampleDataRO(), INDEX2, INDEX3, escript::Data::isEmpty(), m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_N0, m_N1, m_NE0, m_NE1, m_NE2, and escript::Data::requireWrite().

void ripley::Brick::assemblePDESingleReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data A,
const escript::Data B,
const escript::Data C,
const escript::Data D,
const escript::Data X,
const escript::Data Y 
) const
protectedvirtual

assembles a single PDE with reduced order into the system matrix 'mat' and the right hand side 'rhs'

Implements ripley::RipleyDomain.

References addToMatrixAndRHS(), getSampleDataRO(), INDEX2, escript::Data::isEmpty(), m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_N0, m_N1, m_NE0, m_NE1, m_NE2, and escript::Data::requireWrite().

void ripley::Brick::assemblePDESystem ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data A,
const escript::Data B,
const escript::Data C,
const escript::Data D,
const escript::Data X,
const escript::Data Y 
) const
protectedvirtual
void ripley::Brick::assemblePDESystemReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data A,
const escript::Data B,
const escript::Data C,
const escript::Data D,
const escript::Data X,
const escript::Data Y 
) const
protectedvirtual
const int * ripley::Brick::borrowSampleReferenceIDs ( int  fsType) const
virtual
void ripley::Brick::createPattern ( )
private
void ripley::Brick::dofToNodes ( escript::Data out,
escript::Data in 
) const
protectedvirtual
void ripley::Brick::dump ( const std::string &  filename) const
virtual
string ripley::Brick::getDescription ( ) const
virtual

returns a description for this domain

Implements ripley::RipleyDomain.

Referenced by dump().

pair< double, double > ripley::Brick::getFirstCoordAndSpacing ( dim_t  dim) const
virtual

returns the first coordinate value and the node spacing along given dimension as a pair

Implements ripley::RipleyDomain.

References m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_offset0, m_offset1, m_offset2, m_x0, m_y0, and m_z0.

Referenced by assembleCoordinates(), dump(), Print_Mesh_Info(), and setToSize().

virtual IndexVector ripley::Brick::getNodeDistribution ( ) const
inlinevirtual

returns the node distribution vector

Implements ripley::RipleyDomain.

virtual int ripley::Brick::getNumDataPointsGlobal ( ) const
inlinevirtual

returns the number of data points summed across all MPI processes

Implements ripley::RipleyDomain.

Referenced by populateSampleIds().

dim_t ripley::Brick::getNumDOF ( ) const
protectedvirtual

returns the number of degrees of freedom per MPI rank

Implements ripley::RipleyDomain.

References m_gNE0, m_gNE1, m_gNE2, m_NX, m_NY, and m_NZ.

Referenced by addToMatrixAndRHS(), dofToNodes(), ownSample(), and populateSampleIds().

virtual dim_t ripley::Brick::getNumElements ( ) const
inlineprotectedvirtual

returns the number of elements per MPI rank

Implements ripley::RipleyDomain.

Referenced by populateSampleIds(), and setToSize().

IndexVector ripley::Brick::getNumElementsPerDim ( ) const
virtual

returns the number of elements per MPI rank in each dimension

Implements ripley::RipleyDomain.

References m_NE0, m_NE1, and m_NE2.

Referenced by dump().

dim_t ripley::Brick::getNumFaceElements ( ) const
protectedvirtual

returns the number of face elements on current MPI rank

Implements ripley::RipleyDomain.

References getNumFacesPerBoundary().

Referenced by populateSampleIds().

IndexVector ripley::Brick::getNumFacesPerBoundary ( ) const
virtual

returns the number of face elements in the order (left,right,bottom,top,[front,back]) on current MPI rank

Implements ripley::RipleyDomain.

References ripley::RipleyDomain::m_mpiInfo, m_NE0, m_NE1, m_NE2, m_NX, m_NY, m_NZ, m_offset0, m_offset1, m_offset2, and Esys_MPIInfo::rank.

Referenced by getNumFaceElements(), ownSample(), and populateSampleIds().

virtual dim_t ripley::Brick::getNumNodes ( ) const
inlineprotectedvirtual

returns the number of nodes per MPI rank

Implements ripley::RipleyDomain.

Referenced by assembleCoordinates(), createPattern(), dofToNodes(), populateSampleIds(), and Print_Mesh_Info().

IndexVector ripley::Brick::getNumNodesPerDim ( ) const
virtual

returns the number of nodes per MPI rank in each dimension

Implements ripley::RipleyDomain.

References m_N0, m_N1, and m_N2.

Referenced by dump().

IndexVector ripley::Brick::getNumSubdivisionsPerDim ( ) const
virtual

returns the number of spatial subdivisions in each dimension

Implements ripley::RipleyDomain.

References m_NX, m_NY, and m_NZ.

Paso_SystemMatrixPattern * ripley::Brick::getPattern ( bool  reducedRowOrder,
bool  reducedColOrder 
) const
protectedvirtual

returns the Paso system matrix pattern

Implements ripley::RipleyDomain.

References m_pattern.

dim_t ripley::Brick::insertNeighbourNodes ( IndexVector index,
index_t  node 
) const
protectedvirtual

inserts the nodes that share an element with 'node' into 'index' and returns the number of these neighbours

Implements ripley::RipleyDomain.

References m_gNE0, m_gNE1, m_gNE2, m_NX, m_NY, m_NZ, and nz.

void ripley::Brick::interpolateNodesOnElements ( escript::Data out,
escript::Data in,
bool  reduced 
) const
protectedvirtual
void ripley::Brick::interpolateNodesOnFaces ( escript::Data out,
escript::Data in,
bool  reduced 
) const
protectedvirtual
void ripley::Brick::nodesToDOF ( escript::Data out,
escript::Data in 
) const
protectedvirtual
bool ripley::Brick::operator== ( const escript::AbstractDomain other) const
virtual

equality operator

Reimplemented from ripley::RipleyDomain.

References m_gNE0, m_gNE1, m_gNE2, m_l0, m_l1, m_l2, m_NX, m_NY, m_NZ, m_x0, m_y0, and m_z0.

bool ripley::Brick::ownSample ( int  fsType,
index_t  id 
) const
virtual
void ripley::Brick::populateSampleIds ( )
private
void ripley::Brick::Print_Mesh_Info ( const bool  full = false) const
virtual

writes information about the mesh to standard output

Parameters
fullwhether to print additional data

Reimplemented from ripley::RipleyDomain.

References getFirstCoordAndSpacing(), getNumNodes(), m_N0, m_N1, and m_nodeId.

void ripley::Brick::readBinaryGrid ( escript::Data out,
std::string  filename,
const std::vector< int > &  first,
const std::vector< int > &  numValues,
const std::vector< int > &  multiplier 
) const
virtual
void ripley::Brick::readNcGrid ( escript::Data out,
std::string  filename,
std::string  varname,
const std::vector< int > &  first,
const std::vector< int > &  numValues,
const std::vector< int > &  multiplier 
) const
virtual
void ripley::Brick::setToNormal ( escript::Data out) const
virtual

copies the surface normals at data points into out. The actual function space to be considered is defined by out. out has to be defined on this domain.

Implements ripley::RipleyDomain.

References ripley::FaceElements, escript::Data::getFunctionSpace(), escript::Data::getSampleDataRW(), escript::FunctionSpace::getTypeCode(), INDEX2, m_faceOffset, m_NE0, m_NE1, m_NE2, ripley::ReducedFaceElements, and escript::Data::requireWrite().

void ripley::Brick::setToSize ( escript::Data out) const
virtual

Member Data Documentation

Paso_Connector* ripley::Brick::m_connector
private

Referenced by createPattern(), dofToNodes(), and ~Brick().

IndexVector ripley::Brick::m_dofId
private

vector of sample reference identifiers

Referenced by borrowSampleReferenceIDs(), and populateSampleIds().

IndexVector ripley::Brick::m_dofMap
private
IndexVector ripley::Brick::m_elementId
private
IndexVector ripley::Brick::m_faceId
private
IndexVector ripley::Brick::m_faceOffset
private

faceOffset[i]=-1 if face i is not an external face, otherwise it is the index of that face (where i: 0=left, 1=right, 2=bottom, 3=top, 4=front, 5=back)

Referenced by assembleGradient(), assembleIntegrate(), assemblePDEBoundarySingle(), assemblePDEBoundarySingleReduced(), assemblePDEBoundarySystem(), assemblePDEBoundarySystemReduced(), interpolateNodesOnFaces(), populateSampleIds(), setToNormal(), and setToSize().

dim_t ripley::Brick::m_gNE0
private
dim_t ripley::Brick::m_gNE1
private
dim_t ripley::Brick::m_gNE2
private
double ripley::Brick::m_l0
private
double ripley::Brick::m_l1
private
double ripley::Brick::m_l2
private
dim_t ripley::Brick::m_N0
private
dim_t ripley::Brick::m_N1
private
dim_t ripley::Brick::m_N2
private
dim_t ripley::Brick::m_NE0
private
dim_t ripley::Brick::m_NE1
private
dim_t ripley::Brick::m_NE2
private
IndexVector ripley::Brick::m_nodeDistribution
private

Referenced by createPattern(), and populateSampleIds().

IndexVector ripley::Brick::m_nodeId
private
int ripley::Brick::m_NX
private
int ripley::Brick::m_NY
private
int ripley::Brick::m_NZ
private
dim_t ripley::Brick::m_offset0
private

first node on this rank is at (offset0,offset1,offset2) in global mesh

Referenced by assembleIntegrate(), Brick(), createPattern(), getFirstCoordAndSpacing(), getNumFacesPerBoundary(), nodesToDOF(), populateSampleIds(), readBinaryGrid(), and readNcGrid().

dim_t ripley::Brick::m_offset1
private
dim_t ripley::Brick::m_offset2
private
dim_t ripley::Brick::m_ownNE0
private

number of own elements for this rank in each dimension

Referenced by assembleIntegrate(), and Brick().

dim_t ripley::Brick::m_ownNE1
private

Referenced by assembleIntegrate(), and Brick().

dim_t ripley::Brick::m_ownNE2
private

Referenced by assembleIntegrate(), and Brick().

Paso_SystemMatrixPattern* ripley::Brick::m_pattern
private

Referenced by createPattern(), getPattern(), and ~Brick().

double ripley::Brick::m_x0
private

location of domain

Referenced by getFirstCoordAndSpacing(), and operator==().

double ripley::Brick::m_y0
private
double ripley::Brick::m_z0
private

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