ESScript  Revision_4488
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
ripley::RipleyDomain Class Reference

RipleyDomain extends the AbstractContinuousDomain interface for the Ripley library and is the base class for Rectangle and Brick. More...

#include <RipleyDomain.h>

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

Public Member Functions

 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
 equality operator
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 (DoubleVector &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
virtual void Print_Mesh_Info (const bool full=false) const
 writes information about the mesh to standard output
virtual std::string getDescription () const =0
 writes the current mesh to a file with the given name
void dump (const std::string &filename) const =0
 dumps the mesh to a file with the given name
const int * borrowSampleReferenceIDs (int fsType) const =0
 returns the array of reference numbers for a function space type
virtual void setToNormal (escript::Data &out) const =0
 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 =0
 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 void readBinaryGrid (escript::Data &out, std::string filename, const std::vector< int > &first, const std::vector< int > &numValues, const std::vector< int > &multiplier) const =0
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 =0
virtual void writeBinaryGrid (const escript::Data &in, std::string filename, int byteOrder, int dataType) const =0
virtual bool ownSample (int fsType, index_t id) const =0
 returns true if this rank owns the sample id on given function space
virtual int getNumDataPointsGlobal () const =0
 returns the number of data points summed across all MPI processes
virtual const int * getNumNodesPerDim () const =0
 returns the number of nodes per MPI rank in each dimension
virtual const int * getNumElementsPerDim () const =0
 returns the number of elements per MPI rank in each dimension
virtual const int * getNumFacesPerBoundary () const =0
 returns the number of face elements in the order (left,right,bottom,top,[front,back]) on current MPI rank
virtual IndexVector getNodeDistribution () const =0
 returns the node distribution vector
virtual const int * getNumSubdivisionsPerDim () const =0
 returns the number of spatial subdivisions in each dimension
virtual double getLocalCoordinate (int index, int dim) const =0
 returns the index'th coordinate value in given dimension for this rank
virtual boost::python::tuple getGridParameters () const =0
 returns the tuple (origin, spacing, number_of_elements)
- Public Member Functions inherited from escript::AbstractContinuousDomain
 AbstractContinuousDomain ()
 Default constructor for AbstractContinuousDomain.
virtual ~AbstractContinuousDomain ()
 Destructor for AbstractContinuousDomain.
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. has to be implemented by the Domain Adapter.
- 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

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 DoubleVector &array) const
virtual dim_t getNumNodes () const =0
 returns the number of nodes per MPI rank
virtual dim_t getNumElements () const =0
 returns the number of elements per MPI rank
virtual dim_t getNumDOF () const =0
 returns the number of degrees of freedom per MPI rank
virtual dim_t getNumFaceElements () const =0
 returns the number of face elements on current MPI rank
virtual dim_t insertNeighbourNodes (IndexVector &index, index_t node) const =0
virtual void assembleCoordinates (escript::Data &arg) const =0
 populates the data object 'arg' with the node coordinates
virtual void assembleGradient (escript::Data &out, escript::Data &in) const =0
 computes the gradient of 'in' and puts the result in 'out'
virtual void assembleIntegrate (DoubleVector &integrals, escript::Data &arg) const =0
 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 =0
virtual void assemblePDEBoundarySingle (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const =0
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 =0
virtual void assemblePDEBoundarySingleReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const =0
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 =0
virtual void assemblePDEBoundarySystem (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const =0
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 =0
virtual void assemblePDEBoundarySystemReduced (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const =0
virtual Paso_SystemMatrixPatterngetPattern (bool reducedRowOrder, bool reducedColOrder) const =0
 returns the Paso system matrix pattern
virtual void interpolateNodesOnElements (escript::Data &out, escript::Data &in, bool reduced) const =0
 interpolates data on nodes in 'in' onto (reduced) elements in 'out'
virtual void interpolateNodesOnFaces (escript::Data &out, escript::Data &in, bool reduced) const =0
 interpolates data on nodes in 'in' onto (reduced) face elements in 'out'
virtual void nodesToDOF (escript::Data &out, escript::Data &in) const =0
 converts data on nodes in 'in' to degrees of freedom in 'out'
virtual void dofToNodes (escript::Data &out, escript::Data &in) const =0
 converts data on degrees of freedom in 'in' to nodes in 'out'

Protected Attributes

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

Private Member Functions

void assemblePDE (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
 calls the right PDE assembly routines after performing input checks
void assemblePDEBoundary (Paso_SystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const

Additional Inherited Members

- Public Types inherited from escript::AbstractDomain
typedef int StatusType
typedef struct ValueBuffer ValueBuffer
typedef std::map< int,
ValueBuffer
BufferMapType

Detailed Description

RipleyDomain extends the AbstractContinuousDomain interface for the Ripley library and is the base class for Rectangle and Brick.

Constructor & Destructor Documentation

ripley::RipleyDomain::RipleyDomain ( dim_t  dim)

Constructor with number of dimensions. Allocates MPI info structure.

References Esys_MPIInfo_alloc(), m_mpiInfo, and MPI_COMM_WORLD.

ripley::RipleyDomain::~RipleyDomain ( )

Destructor.

References Esys_MPIInfo_free(), and m_mpiInfo.

Member Function Documentation

void ripley::RipleyDomain::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
virtual

adds a PDE onto rhs

Reimplemented from escript::AbstractContinuousDomain.

References assemblePDE(), assemblePDEBoundary(), and escript::Data::isEmpty().

Referenced by BOOST_PYTHON_MODULE().

void ripley::RipleyDomain::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
virtual

adds a PDE onto the stiffness matrix mat and rhs

Reimplemented from escript::AbstractContinuousDomain.

References assemblePDE(), assemblePDEBoundary(), paso::SystemMatrixAdapter::getPaso_SystemMatrix(), escript::Data::isEmpty(), and S.

Referenced by BOOST_PYTHON_MODULE().

void ripley::RipleyDomain::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
virtual
void ripley::RipleyDomain::addToSystemMatrix ( Paso_SystemMatrix in,
const IndexVector nodes_Eq,
dim_t  num_Eq,
const IndexVector nodes_Sol,
dim_t  num_Sol,
const DoubleVector array 
) const
protected
virtual void ripley::RipleyDomain::assembleCoordinates ( escript::Data arg) const
protectedpure virtual

populates the data object 'arg' with the node coordinates

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by setToX().

virtual void ripley::RipleyDomain::assembleGradient ( escript::Data out,
escript::Data in 
) const
protectedpure virtual

computes the gradient of 'in' and puts the result in 'out'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by setToGradient().

virtual void ripley::RipleyDomain::assembleIntegrate ( DoubleVector integrals,
escript::Data arg 
) const
protectedpure virtual

copies the integrals of the function defined by 'arg' into 'integrals'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by setToIntegrals().

void ripley::RipleyDomain::assemblePDE ( 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
private
void ripley::RipleyDomain::assemblePDEBoundary ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
private
virtual void ripley::RipleyDomain::assemblePDEBoundarySingle ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDEBoundary().

virtual void ripley::RipleyDomain::assemblePDEBoundarySingleReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDEBoundary().

virtual void ripley::RipleyDomain::assemblePDEBoundarySystem ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDEBoundary().

virtual void ripley::RipleyDomain::assemblePDEBoundarySystemReduced ( Paso_SystemMatrix mat,
escript::Data rhs,
const escript::Data d,
const escript::Data y 
) const
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDEBoundary().

virtual void ripley::RipleyDomain::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
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDE().

virtual void ripley::RipleyDomain::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
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDE().

virtual void ripley::RipleyDomain::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
protectedpure virtual

assembles a system of PDEs into the system matrix 'mat' and the right hand side 'rhs'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDE().

virtual void ripley::RipleyDomain::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
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by assemblePDE().

void ripley::RipleyDomain::averageData ( escript::Data out,
escript::Data in 
) const
protected
const int * ripley::RipleyDomain::borrowListOfTagsInUse ( int  fsType) const
virtual

returns a pointer to the list of tags in use for a function space type

Reimplemented from escript::AbstractDomain.

References ripley::Elements, ripley::FaceElements, m_elementTagsInUse, m_faceTagsInUse, m_nodeTagsInUse, ripley::Nodes, ripley::ReducedElements, and ripley::ReducedFaceElements.

const int* ripley::RipleyDomain::borrowSampleReferenceIDs ( int  fsType) const
pure virtual

returns the array of reference numbers for a function space type

Parameters
fsTypeThe function space type

Reimplemented from escript::AbstractDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyNodes::initFromRipley(), and weipa::RipleyElements::initFromRipley().

bool ripley::RipleyDomain::canTag ( int  fsType) const
virtual
bool ripley::RipleyDomain::commonFunctionSpace ( const std::vector< int > &  fs,
int &  resultcode 
) const
virtual

given a vector of FunctionSpace type codes, passes back a code which all can be interpolated to

Returns
true if result is valid, false if not

Reimplemented from escript::AbstractDomain.

References ripley::DegreesOfFreedom, ripley::Elements, ripley::FaceElements, ripley::Nodes, ripley::Points, ripley::ReducedDegreesOfFreedom, ripley::ReducedElements, ripley::ReducedFaceElements, and ripley::ReducedNodes.

void ripley::RipleyDomain::copyData ( escript::Data out,
escript::Data in 
) const
protected
void ripley::RipleyDomain::createCouplePatterns ( const std::vector< IndexVector > &  colIndices,
const dim_t  N,
Paso_Pattern **  colPattern,
Paso_Pattern **  rowPattern 
) const
protected

creates the pattern for the column and row couple blocks of the system matrix. colIndices[i] contains all IDs of DOFs that are connected with DOF i but remote and 'N' is the total number of remote components

References createPasoPattern(), getNumDOF(), M, and N.

Referenced by ripley::Brick::createPattern(), and ripley::Rectangle::createPattern().

Paso_Pattern * ripley::RipleyDomain::createMainPattern ( ) const
protected

creates the pattern for the main block of the system matrix

References createPasoPattern(), getNumDOF(), and insertNeighbourNodes().

Referenced by ripley::Brick::createPattern(), and ripley::Rectangle::createPattern().

Paso_Pattern * ripley::RipleyDomain::createPasoPattern ( const IndexVector ptr,
const IndexVector index,
const dim_t  M,
const dim_t  N 
) const
protected

allocates and returns a Paso pattern structure

References MATRIX_FORMAT_DEFAULT, and Paso_Pattern_alloc().

Referenced by createCouplePatterns(), and createMainPattern().

virtual void ripley::RipleyDomain::dofToNodes ( escript::Data out,
escript::Data in 
) const
protectedpure virtual

converts data on degrees of freedom in 'in' to nodes in 'out'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by interpolateOnDomain().

void ripley::RipleyDomain::dump ( const std::string &  filename) const
pure virtual

dumps the mesh to a file with the given name

Parameters
filenameThe name of the output file

Reimplemented from escript::AbstractDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by BOOST_PYTHON_MODULE().

string ripley::RipleyDomain::functionSpaceTypeAsString ( int  fsType) const
virtual
virtual int ripley::RipleyDomain::getApproximationOrder ( const int  fsType) const
inlinevirtual

returns the approximation order used for a function space

Reimplemented from escript::AbstractDomain.

virtual int ripley::RipleyDomain::getContinuousFunctionCode ( ) const
inlinevirtual

returns a continuous FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::Nodes.

pair< int, int > ripley::RipleyDomain::getDataShape ( int  fsType) const
virtual
virtual std::string ripley::RipleyDomain::getDescription ( ) const
pure virtual

writes the current mesh to a file with the given name

Parameters
filenameThe name of the file to write to

returns a description for this domain

Reimplemented from escript::AbstractContinuousDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by BOOST_PYTHON_MODULE(), canTag(), getDataShape(), isCellOriented(), preferredInterpolationOnDomain(), Print_Mesh_Info(), and probeInterpolationOnDomain().

virtual int ripley::RipleyDomain::getDim ( ) const
inlinevirtual

returns the number of spatial dimensions of the domain

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE(), weipa::RipleyNodes::initFromRipley(), and weipa::RipleyElements::initFromRipley().

virtual int ripley::RipleyDomain::getDiracDeltaFunctionsCode ( ) const
inlinevirtual

returns a DiracDeltaFunctions FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::Points.

virtual int ripley::RipleyDomain::getFunctionCode ( ) const
inlinevirtual

returns a function FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::Elements.

virtual int ripley::RipleyDomain::getFunctionOnBoundaryCode ( ) const
inlinevirtual

returns a function on boundary FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::FaceElements.

virtual int ripley::RipleyDomain::getFunctionOnContactOneCode ( ) const
inlinevirtual

returns a FunctionOnContactOne code

Reimplemented from escript::AbstractContinuousDomain.

virtual int ripley::RipleyDomain::getFunctionOnContactZeroCode ( ) const
inlinevirtual

return a FunctionOnContactZero code

Reimplemented from escript::AbstractContinuousDomain.

virtual boost::python::tuple ripley::RipleyDomain::getGridParameters ( ) const
pure virtual

returns the tuple (origin, spacing, number_of_elements)

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by BOOST_PYTHON_MODULE().

virtual double ripley::RipleyDomain::getLocalCoordinate ( int  index,
int  dim 
) const
pure virtual

returns the index'th coordinate value in given dimension for this rank

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyNodes::initFromRipley().

unsigned int ripley::RipleyDomain::getMPIComm ( ) const
inlinevirtual

returns the MPI communicator

Reimplemented from escript::AbstractDomain.

virtual int ripley::RipleyDomain::getMPIRank ( ) const
inlinevirtual

returns the MPI rank of this processor

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE(), and weipa::RipleyElements::initFromRipley().

virtual int ripley::RipleyDomain::getMPISize ( ) const
inlinevirtual

returns the number of processors used for this domain

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE(), interpolateOnDomain(), ripley::Rectangle::ownSample(), ripley::Brick::ownSample(), and setToGradient().

virtual IndexVector ripley::RipleyDomain::getNodeDistribution ( ) const
pure virtual

returns the node distribution vector

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyNodes::initFromRipley().

escript::Data ripley::RipleyDomain::getNormal ( ) const
virtual

returns boundary normals at the quadrature point on the face elements

Reimplemented from escript::AbstractDomain.

References escript::functionOnBoundary(), and escript::FunctionSpace::getNormal().

Referenced by BOOST_PYTHON_MODULE().

int ripley::RipleyDomain::getNumberOfTagsInUse ( int  fsType) const
virtual
virtual int ripley::RipleyDomain::getNumDataPointsGlobal ( ) const
pure virtual

returns the number of data points summed across all MPI processes

Reimplemented from escript::AbstractContinuousDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by BOOST_PYTHON_MODULE(), and weipa::RipleyNodes::initFromRipley().

virtual dim_t ripley::RipleyDomain::getNumDOF ( ) const
protectedpure virtual

returns the number of degrees of freedom per MPI rank

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by createCouplePatterns(), createMainPattern(), and getDataShape().

virtual dim_t ripley::RipleyDomain::getNumElements ( ) const
protectedpure virtual

returns the number of elements per MPI rank

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by getDataShape(), Print_Mesh_Info(), and setTags().

virtual const int* ripley::RipleyDomain::getNumElementsPerDim ( ) const
pure virtual

returns the number of elements per MPI rank in each dimension

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyElements::initFromRipley().

virtual dim_t ripley::RipleyDomain::getNumFaceElements ( ) const
protectedpure virtual

returns the number of face elements on current MPI rank

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by getDataShape(), and setTags().

virtual const int* ripley::RipleyDomain::getNumFacesPerBoundary ( ) const
pure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyElements::initFromRipley().

virtual dim_t ripley::RipleyDomain::getNumNodes ( ) const
protectedpure virtual

returns the number of nodes per MPI rank

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by getDataShape(), and setTags().

virtual const int* ripley::RipleyDomain::getNumNodesPerDim ( ) const
pure virtual

returns the number of nodes per MPI rank in each dimension

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyNodes::initFromRipley(), and weipa::RipleyElements::initFromRipley().

virtual const int* ripley::RipleyDomain::getNumSubdivisionsPerDim ( ) const
pure virtual

returns the number of spatial subdivisions in each dimension

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by weipa::RipleyElements::initFromRipley().

virtual Paso_SystemMatrixPattern* ripley::RipleyDomain::getPattern ( bool  reducedRowOrder,
bool  reducedColOrder 
) const
protectedpure virtual

returns the Paso system matrix pattern

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by newSystemMatrix(), and newTransportProblem().

virtual int ripley::RipleyDomain::getReducedContinuousFunctionCode ( ) const
inlinevirtual

returns a continuous on reduced order nodes FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::ReducedNodes.

virtual int ripley::RipleyDomain::getReducedFunctionCode ( ) const
inlinevirtual

returns a function with reduced integration order FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::ReducedElements.

virtual int ripley::RipleyDomain::getReducedFunctionOnBoundaryCode ( ) const
inlinevirtual

returns a function on boundary with reduced integration order FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::ReducedFaceElements.

virtual int ripley::RipleyDomain::getReducedFunctionOnContactOneCode ( ) const
inlinevirtual

returns a FunctionOnContactOne code with reduced integration order

Reimplemented from escript::AbstractContinuousDomain.

virtual int ripley::RipleyDomain::getReducedFunctionOnContactZeroCode ( ) const
inlinevirtual

returns a FunctionOnContactZero code with reduced integration order

Reimplemented from escript::AbstractContinuousDomain.

virtual int ripley::RipleyDomain::getReducedSolutionCode ( ) const
inlinevirtual

returns a ReducedSolution FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::ReducedDegreesOfFreedom.

escript::Data ripley::RipleyDomain::getSize ( ) const
virtual

returns the element size

Reimplemented from escript::AbstractDomain.

References escript::function(), and escript::FunctionSpace::getSize().

Referenced by BOOST_PYTHON_MODULE().

virtual int ripley::RipleyDomain::getSolutionCode ( ) const
inlinevirtual

returns a Solution FunctionSpace code

Reimplemented from escript::AbstractContinuousDomain.

References ripley::DegreesOfFreedom.

virtual StatusType ripley::RipleyDomain::getStatus ( ) const
inlinevirtual

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.

Reimplemented from escript::AbstractDomain.

int ripley::RipleyDomain::getSystemMatrixTypeId ( const int  solver,
const int  preconditioner,
const int  package,
const bool  symmetry 
) const
virtual

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

Parameters
solver
preconditioner
package
symmetry

Reimplemented from escript::AbstractContinuousDomain.

References m_mpiInfo.

Referenced by BOOST_PYTHON_MODULE().

virtual int ripley::RipleyDomain::getTag ( const std::string &  name) const
inlinevirtual

returns the tag key for tag name

Parameters
nametag name

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE().

int ripley::RipleyDomain::getTagFromSampleNo ( int  fsType,
int  sampleNo 
) const
virtual

returns the tag key for the given sample number

Parameters
fsTypeThe function space type
sampleNoThe sample number

Reimplemented from escript::AbstractDomain.

References ripley::Elements, ripley::FaceElements, m_elementTags, m_faceTags, m_nodeTags, ripley::Nodes, ripley::ReducedElements, and ripley::ReducedFaceElements.

int ripley::RipleyDomain::getTransportTypeId ( const int  solver,
const int  preconditioner,
const int  package,
const bool  symmetry 
) const
virtual

returns the identifier of the transport problem type to be used when a particular solver, preconditioner, package and symmetric matrix is used

Parameters
solver
preconditioner
package
symmetry

Reimplemented from escript::AbstractContinuousDomain.

References m_mpiInfo.

Referenced by BOOST_PYTHON_MODULE().

escript::Data ripley::RipleyDomain::getX ( ) const
virtual

returns locations in the FEM nodes

Reimplemented from escript::AbstractDomain.

References escript::continuousFunction(), and escript::FunctionSpace::getX().

Referenced by BOOST_PYTHON_MODULE().

virtual dim_t ripley::RipleyDomain::insertNeighbourNodes ( IndexVector index,
index_t  node 
) const
protectedpure virtual

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

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by createMainPattern().

void ripley::RipleyDomain::interpolateACross ( escript::Data target,
const escript::Data source 
) const
virtual

interpolates data given on source onto target where source and target are given on different domains

Reimplemented from escript::AbstractDomain.

virtual void ripley::RipleyDomain::interpolateNodesOnElements ( escript::Data out,
escript::Data in,
bool  reduced 
) const
protectedpure virtual

interpolates data on nodes in 'in' onto (reduced) elements in 'out'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by interpolateOnDomain().

virtual void ripley::RipleyDomain::interpolateNodesOnFaces ( escript::Data out,
escript::Data in,
bool  reduced 
) const
protectedpure virtual

interpolates data on nodes in 'in' onto (reduced) face elements in 'out'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by interpolateOnDomain().

void ripley::RipleyDomain::interpolateOnDomain ( escript::Data target,
const escript::Data source 
) const
virtual
bool ripley::RipleyDomain::isCellOriented ( int  fsType) const
virtual

returns true if data on this domain and given function space type has to be considered as cell centered data

Reimplemented from escript::AbstractDomain.

References ripley::DegreesOfFreedom, ripley::Elements, ripley::FaceElements, getDescription(), ripley::Nodes, ripley::Points, ripley::ReducedDegreesOfFreedom, ripley::ReducedElements, ripley::ReducedFaceElements, and ripley::ReducedNodes.

bool ripley::RipleyDomain::isValidFunctionSpaceType ( int  fsType) const
virtual
virtual bool ripley::RipleyDomain::isValidTagName ( const std::string &  name) const
inlinevirtual

returns true if name is a defined tag name

Parameters
nametag name to be checked

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE().

virtual void ripley::RipleyDomain::MPIBarrier ( ) const
inlinevirtual

if compiled for MPI then executes an MPI_Barrier, else does nothing

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE(), ripley::Brick::writeBinaryGridImpl(), and ripley::Rectangle::writeBinaryGridImpl().

void ripley::RipleyDomain::multiplyData ( escript::Data out,
escript::Data in 
) const
protected
escript::ASM_ptr ripley::RipleyDomain::newSystemMatrix ( const int  row_blocksize,
const escript::FunctionSpace row_functionspace,
const int  column_blocksize,
const escript::FunctionSpace column_functionspace,
const int  type 
) const
virtual
escript::ATP_ptr ripley::RipleyDomain::newTransportProblem ( const int  blocksize,
const escript::FunctionSpace functionspace,
const int  type 
) const
virtual
virtual void ripley::RipleyDomain::nodesToDOF ( escript::Data out,
escript::Data in 
) const
protectedpure virtual

converts data on nodes in 'in' to degrees of freedom in 'out'

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by interpolateOnDomain().

virtual bool ripley::RipleyDomain::onMasterProcessor ( ) const
inlinevirtual

returns true if on MPI processor 0, else false

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE().

virtual bool ripley::RipleyDomain::operator!= ( const escript::AbstractDomain other) const
inlinevirtual

inequality operator

Reimplemented from escript::AbstractDomain.

bool ripley::RipleyDomain::operator== ( const escript::AbstractDomain other) const
virtual

equality operator

Reimplemented from escript::AbstractDomain.

Reimplemented in ripley::Brick, and ripley::Rectangle.

References m_elementTags, m_faceTags, m_nodeTags, and m_tagMap.

virtual bool ripley::RipleyDomain::ownSample ( int  fsType,
index_t  id 
) const
pure virtual

returns true if this rank owns the sample id on given function space

Reimplemented from escript::AbstractDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

signed char ripley::RipleyDomain::preferredInterpolationOnDomain ( int  fsType_source,
int  fsType_target 
) const
virtual

Preferred direction of interpolation.

If you really need to test for a particular direction, then use probeInterpolation.

Returns
0 for not possible, 1 for possible and preferred, -1 other direction preferred (does not mean this direction is possible)

Reimplemented from escript::AbstractDomain.

References ripley::DegreesOfFreedom, ripley::Elements, ripley::FaceElements, getDescription(), isValidFunctionSpaceType(), ripley::Nodes, ripley::Points, ripley::ReducedDegreesOfFreedom, ripley::ReducedElements, ripley::ReducedFaceElements, and ripley::ReducedNodes.

void ripley::RipleyDomain::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 escript::AbstractContinuousDomain.

Reimplemented in ripley::Brick, and ripley::Rectangle.

References getDescription(), getNumElements(), m_mpiInfo, m_numDim, m_tagMap, Esys_MPIInfo::rank, and Esys_MPIInfo::size.

Referenced by BOOST_PYTHON_MODULE().

bool ripley::RipleyDomain::probeInterpolationACross ( int  fsType_source,
const escript::AbstractDomain ,
int  fsType_target 
) const
virtual

determines whether interpolation from source to target is possible

Reimplemented from escript::AbstractDomain.

bool ripley::RipleyDomain::probeInterpolationOnDomain ( int  fsType_source,
int  fsType_target 
) const
virtual
virtual void ripley::RipleyDomain::readBinaryGrid ( escript::Data out,
std::string  filename,
const std::vector< int > &  first,
const std::vector< int > &  numValues,
const std::vector< int > &  multiplier 
) const
pure virtual

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by ripley::readBinaryGrid().

virtual void ripley::RipleyDomain::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
pure virtual

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by ripley::readNcGrid().

void ripley::RipleyDomain::setNewX ( const escript::Data arg)
virtual

assigns new location to the domain.

Note
This is not supported in Ripley

Reimplemented from escript::AbstractContinuousDomain.

virtual void ripley::RipleyDomain::setTagMap ( const std::string &  name,
int  tag 
)
inlinevirtual

sets a map from a clear tag name to a tag key

Parameters
nametag name
tagtag key

Reimplemented from escript::AbstractDomain.

Referenced by BOOST_PYTHON_MODULE(), ripley::Brick::populateSampleIds(), and ripley::Rectangle::populateSampleIds().

void ripley::RipleyDomain::setTags ( const int  fsType,
const int  newTag,
const escript::Data mask 
) const
virtual

assigns new tag newTag to all samples of given function space with a positive value of mask for any of its sample points

Reimplemented from escript::AbstractDomain.

References ripley::Elements, ripley::FaceElements, getNumElements(), getNumFaceElements(), getNumNodes(), escript::Data::getSampleDataRO(), m_elementTags, m_faceTags, m_nodeTags, ripley::Nodes, ripley::ReducedElements, ripley::ReducedFaceElements, and updateTagsInUse().

void ripley::RipleyDomain::setToGradient ( escript::Data out,
const escript::Data in 
) const
virtual
void ripley::RipleyDomain::setToIntegrals ( DoubleVector integrals,
const escript::Data arg 
) const
virtual
virtual void ripley::RipleyDomain::setToNormal ( escript::Data out) const
pure 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.

Reimplemented from escript::AbstractDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

virtual void ripley::RipleyDomain::setToSize ( escript::Data out) const
pure virtual

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.

Reimplemented from escript::AbstractDomain.

Implemented in ripley::Brick, and ripley::Rectangle.

void ripley::RipleyDomain::setToX ( escript::Data arg) const
virtual
string ripley::RipleyDomain::showTagNames ( ) const
virtual

returns all tag names in a single string separated by commas

Reimplemented from escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE().

virtual bool ripley::RipleyDomain::supportsContactElements ( ) const
inlinevirtual

returns true if this domain supports contact elements, false otherwise

Reimplemented from escript::AbstractDomain.

void ripley::RipleyDomain::updateTagsInUse ( int  fsType) const
protected
virtual void ripley::RipleyDomain::writeBinaryGrid ( const escript::Data in,
std::string  filename,
int  byteOrder,
int  dataType 
) const
pure virtual

Implemented in ripley::Brick, and ripley::Rectangle.

Referenced by BOOST_PYTHON_MODULE().

Member Data Documentation

IndexVector ripley::RipleyDomain::m_elementTags
mutableprotected
IndexVector ripley::RipleyDomain::m_elementTagsInUse
mutableprotected
IndexVector ripley::RipleyDomain::m_faceTags
mutableprotected
IndexVector ripley::RipleyDomain::m_faceTagsInUse
mutableprotected
Esys_MPIInfo* ripley::RipleyDomain::m_mpiInfo
protected
IndexVector ripley::RipleyDomain::m_nodeTags
mutableprotected
IndexVector ripley::RipleyDomain::m_nodeTagsInUse
mutableprotected
dim_t ripley::RipleyDomain::m_numDim
protected
StatusType ripley::RipleyDomain::m_status
protected
TagMap ripley::RipleyDomain::m_tagMap
protected

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