escript  Revision_
Public Types | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
finley::FinleyDomain Class Reference

FinleyDomain implements the AbstractContinuousDomain interface for the Finley library. More...

#include <FinleyDomain.h>

Inheritance diagram for finley::FinleyDomain:
escript::AbstractContinuousDomain escript::AbstractDomain

Public Types

typedef std::map< int, std::string > FunctionSpaceNamesMapType
 
- Public Types inherited from escript::AbstractDomain
typedef int StatusType
 

Public Member Functions

 FinleyDomain (const std::string &name, int numDim, escript::JMPI jmpi)
 Constructor for FinleyDomain. More...
 
 FinleyDomain (const FinleyDomain &in)
 Copy constructor. More...
 
 ~FinleyDomain ()
 Destructor for FinleyDomain. More...
 
void addDiracPoints (const std::vector< double > &points, const std::vector< int > &tags)
 adds Dirac delta points. Do NOT call this at any time other than construction! Using them later creates consistency problems More...
 
NodeFilegetNodes () const
 returns a pointer to this domain's node file More...
 
void setElements (ElementFile *elements)
 replaces the element file by elements More...
 
ElementFilegetElements () const
 returns a pointer to this domain's element file More...
 
void setFaceElements (ElementFile *elements)
 replaces the face element file by elements More...
 
ElementFilegetFaceElements () const
 returns a pointer to this domain's face element file More...
 
void setContactElements (ElementFile *elements)
 replaces the contact element file by elements More...
 
ElementFilegetContactElements () const
 returns a pointer to this domain's contact element file More...
 
void setPoints (ElementFile *elements)
 replaces the point element file by elements More...
 
ElementFilegetPoints () const
 returns a pointer to this domain's point (nodal) element file More...
 
virtual escript::JMPI getMPI () const
 returns a reference to the MPI information wrapper for this domain More...
 
virtual int getMPISize () const
 returns the number of processors used for this domain More...
 
virtual int getMPIRank () const
 returns the number MPI rank of this processor More...
 
virtual void MPIBarrier () const
 If compiled for MPI then execute an MPI_Barrier, else do nothing. More...
 
virtual bool onMasterProcessor () const
 returns true if on MPI processor 0, else false More...
 
MPI_Comm getMPIComm () const
 get the communicator for this domain. Returns an integer on non-MPI builds Routine must be implemented by the DomainAdapter. More...
 
void write (const std::string &fileName) const
 writes the current mesh to a file with the given name in the fly file format. More...
 
void Print_Mesh_Info (bool full=false) const
 
void dump (const std::string &fileName) const
 dumps the mesh to a file with the given name. More...
 
int getTagFromSampleNo (int functionSpaceType, index_t sampleNo) const
 Return the tag key for the given sample number. More...
 
const index_t * borrowSampleReferenceIDs (int functionSpaceType) const
 Return the reference number of the given sample number. More...
 
virtual bool isValidFunctionSpaceType (int functionSpaceType) const
 Returns true if the given integer is a valid function space type for this domain. More...
 
virtual std::string getDescription () const
 Return a description for this domain. More...
 
virtual std::string functionSpaceTypeAsString (int functionSpaceType) const
 Return a description for the given function space type code. More...
 
void setFunctionSpaceTypeNames ()
 Build the table of function space type names. More...
 
virtual int getContinuousFunctionCode () const
 Return a continuous FunctionSpace code. More...
 
virtual int getReducedContinuousFunctionCode () const
 Return a continuous on reduced order nodes FunctionSpace code. More...
 
virtual int getFunctionCode () const
 Return a function FunctionSpace code. More...
 
virtual int getReducedFunctionCode () const
 Return a function with reduced integration order FunctionSpace code. More...
 
virtual int getFunctionOnBoundaryCode () const
 Return a function on boundary FunctionSpace code. More...
 
virtual int getReducedFunctionOnBoundaryCode () const
 Return a function on boundary with reduced integration order FunctionSpace code. More...
 
virtual int getFunctionOnContactZeroCode () const
 Return a FunctionOnContactZero code. More...
 
virtual int getReducedFunctionOnContactZeroCode () const
 Return a FunctionOnContactZero code with reduced integration order. More...
 
virtual int getFunctionOnContactOneCode () const
 Return a FunctionOnContactOne code. More...
 
virtual int getReducedFunctionOnContactOneCode () const
 Return a FunctionOnContactOne code with reduced integration order. More...
 
virtual int getSolutionCode () const
 Return a Solution code. More...
 
virtual int getReducedSolutionCode () const
 Return a ReducedSolution code. More...
 
virtual int getDiracDeltaFunctionsCode () const
 Return a DiracDeltaFunctions code. More...
 
virtual int getDim () const
 returns the dimensionality of this domain More...
 
virtual StatusType getStatus () const
 Returns a status indicator of the domain. The status identifier should be unique over the live time if the object but may be updated if changes to the domain happen, e.g. modifications to its geometry. More...
 
virtual dim_t getNumDataPointsGlobal () const
 Return the number of data points summed across all MPI processes. More...
 
virtual std::pair< int, dim_t > getDataShape (int functionSpaceCode) const
 Return the number of data points per sample, and the number of samples as a pair. More...
 
virtual void setToX (escript::Data &arg) const
 copies the location of data points into arg. The domain of arg has to match this. has to be implemented by the actual Domain adapter. More...
 
virtual void setTagMap (const std::string &name, int tag)
 sets a map from a clear tag name to a tag key More...
 
virtual int getTag (const std::string &name) const
 Return the tag key for tag name. More...
 
virtual bool isValidTagName (const std::string &name) const
 Returns true if name is a defined tag name. More...
 
virtual std::string showTagNames () const
 Returns all tag names in a single string sperated by commas. More...
 
virtual void setNewX (const escript::Data &arg)
 assigns new location to the domain More...
 
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. More...
 
virtual bool probeInterpolationOnDomain (int functionSpaceType_source, int functionSpaceType_target) const
 True if interpolation is possible from source to target. More...
 
virtual signed char preferredInterpolationOnDomain (int functionSpaceType_source, int functionSpaceType_target) const
 Preferred direction of interpolation. If you really need to test for a particular direction, then use probeInterpolation. More...
 
bool commonFunctionSpace (const std::vector< int > &fs, int &resultcode) const
 given a vector of FunctionSpace typecodes, pass back a code which then can all be interpolated to. More...
 
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. More...
 
virtual bool probeInterpolationAcross (int functionSpaceType_source, const escript::AbstractDomain &targetDomain, int functionSpaceType_target) const
 determines whether interpolation from source to target is possible. More...
 
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. More...
 
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. More...
 
virtual void setToGradient (escript::Data &grad, const escript::Data &arg) const
 copies the gradient of arg into grad. The actual function space to be considered for the gradient is defined by grad. arg and grad have to be defined on this. More...
 
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. More...
 
virtual int getSystemMatrixTypeId (const boost::python::object &options) const
 return 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. More...
 
virtual int getTransportTypeId (int solver, int preconditioner, int package, bool symmetry) const
 return the identifier of the transport problem type to be used when a particular solver, perconditioner, package and symmetric matrix is used. More...
 
virtual bool isCellOriented (int functionSpaceCode) const
 returns true if data on this domain and a function space of type functionSpaceCode has to considered as cell centered data. More...
 
virtual bool ownSample (int fsCode, index_t id) const
 
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 a rhs More...
 
virtual void addPDEToLumpedSystem (escript::Data &mat, const escript::Data &D, const escript::Data &d, const escript::Data &d_dirac, bool useHRZ) const
 adds a PDE onto the lumped stiffness matrix matrix More...
 
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 the stiffness matrix mat and a rhs More...
 
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 More...
 
escript::ASM_ptr newSystemMatrix (int row_blocksize, const escript::FunctionSpace &row_functionspace, int column_blocksize, const escript::FunctionSpace &column_functionspace, int type) const
 creates a stiffness matrix and initializes it with zeros More...
 
escript::ATP_ptr newTransportProblem (int blocksize, const escript::FunctionSpace &functionspace, int type) const
 creates a TransportProblem More...
 
virtual escript::Data getX () const
 returns locations in the FEM nodes More...
 
virtual escript::Data getNormal () const
 returns boundary normals at the quadrature point on the face elements More...
 
virtual escript::Data getSize () const
 returns the element size More...
 
virtual bool operator== (const escript::AbstractDomain &other) const
 comparison operators More...
 
virtual bool operator!= (const escript::AbstractDomain &other) const
 Return true if given domains are not equal. More...
 
virtual void setTags (int functionSpaceType, int newTag, const escript::Data &mask) const
 assigns new tag newTag to all samples of functionspace with a positive value of mask for any its sample point. More...
 
virtual int getNumberOfTagsInUse (int functionSpaceCode) const
 returns the number of tags in use and a pointer to an array with the number of tags in use More...
 
virtual const int * borrowListOfTagsInUse (int functionSpaceCode) const
 
virtual bool canTag (int functionSpaceCode) const
 Checks if this domain allows tags for the specified functionSpace code. More...
 
virtual int getApproximationOrder (int functionSpaceCode) const
 returns the approximation order used for a function space functionSpaceCode More...
 
virtual bool supportsContactElements () const
 
virtual escript::Data randomFill (const escript::DataTypes::ShapeType &shape, const escript::FunctionSpace &what, long seed, const boost::python::tuple &filter) const
 Fills the data object with filtered random values. More...
 
const TagMapgetTagMap () const
 returns a reference to the tag name->value map More...
 
void createMappings (const IndexVector &dofDistribution, const IndexVector &nodeDistribution)
 
void glueFaces (double safetyFactor, double tolerance, bool optimize)
 
void joinFaces (double safetyFactor, double tolerance, bool optimize)
 
- Public Member Functions inherited from escript::AbstractContinuousDomain
 AbstractContinuousDomain ()
 Default constructor for AbstractContinuousDomain. More...
 
virtual ~AbstractContinuousDomain ()
 Destructor for AbstractContinuousDomain. More...
 
- 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. More...
 
const_Domain_ptr getPtr () const
 
virtual ~AbstractDomain ()
 Destructor for AbstractDomain. More...
 
virtual int getTagFromSampleNo (int functionSpaceType, DataTypes::index_t sampleNo) const =0
 Return the tag key for the given sample number. More...
 
virtual bool ownSample (int fs_code, DataTypes::index_t id) const =0
 True if this rank owns the sample(id) Must be implemented by the Domain adapter. More...
 
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. More...
 
virtual bool supportsFilter (const boost::python::tuple &t) const
 true if this domain can handle to specified tuple of filter options. More...
 

Static Public Member Functions

static escript::Domain_ptr load (const std::string &filename)
 recovers domain from a dump file More...
 
static escript::Domain_ptr read (escript::JMPI mpiInfo, const std::string &fileName, int integrationOrder=-1, int reducedIntegrationOrder=-1, bool optimize=false)
 reads a mesh from a fly file. For MPI parallel runs fans out the mesh to multiple processes. More...
 
static escript::Domain_ptr readGmsh (escript::JMPI mpiInfo, const std::string &filename, int numDim, int integrationOrder=-1, int reducedIntegrationOrder=-1, bool optimize=false, bool useMacroElements=false)
 reads a gmsh mesh file. More...
 
static escript::Domain_ptr createRec4 (dim_t NE0, dim_t NE1, double L0, double L1, bool periodic0, bool periodic1, int order, int reducedOrder, bool useElementsOnFace, bool optimize, escript::JMPI jmpi)
 Creates a 2-dimensional rectangular domain with first order (Rec4) elements in the rectangle [0,L0] x [0,L1]. More...
 
static escript::Domain_ptr createRec8 (dim_t NE0, dim_t NE1, double l0, double l1, bool periodic0, bool periodic1, int order, int reducedOrder, bool useElementsOnFace, bool useFullElementOrder, bool useMacroElements, bool optimize, escript::JMPI jmpi)
 Creates a 2-dimensional rectangular domain with second order (Rec8 or Rec9) elements in the rectangle [0,L0] x [0,L1]. More...
 
static escript::Domain_ptr createHex8 (dim_t NE0, dim_t NE1, dim_t NE2, double l0, double l1, double l2, bool periodic0, bool periodic1, bool periodic2, int order, int reducedOrder, bool useElementsOnFace, bool optimize, escript::JMPI jmpi)
 Creates a 3-dimensional rectangular domain with first order (Hex8) elements. More...
 
static escript::Domain_ptr createHex20 (dim_t NE0, dim_t NE1, dim_t NE2, double l0, double l1, double l2, bool periodic0, bool periodic1, bool periodic2, int order, int reducedOrder, bool useElementsOnFace, bool useFullElementOrder, bool useMacroElements, bool optimize, escript::JMPI jmpi)
 Creates a 3-dimensional rectangular domain with second order (Hex20 or Hex27) elements. More...
 
static FinleyDomainmerge (const std::vector< const FinleyDomain *> &meshes)
 

Private Member Functions

void prepare (bool optimize)
 prepares the mesh for further use More...
 
void setOrders ()
 
void resolveNodeIds ()
 
void relabelElementNodes (const IndexVector &newNode, index_t offset)
 
void createColoring (const IndexVector &dofMap)
 tries to reduce the number of colours for all element files More...
 
void distributeByRankOfDOF (const IndexVector &distribution)
 
void markNodes (std::vector< short > &mask, index_t offset, bool useLinear) const
 
void optimizeDOFDistribution (IndexVector &distribution)
 
void optimizeDOFLabeling (const IndexVector &distribution)
 optimizes the labeling of the DOFs on each processor More...
 
void optimizeElementOrdering ()
 redistributes elements to minimize communication during assemblage More...
 
void findMatchingFaces (double safetyFactor, double tolerance, int *numPairs, int *elem0, int *elem1, int *matchingNodes) const
 
void updateTagList ()
 regenerates list of tags in use for node file and element files More...
 
void printElementInfo (const ElementFile *e, const std::string &title, const std::string &defaultType, bool full) const
 
void writeElementInfo (std::ostream &stream, const ElementFile *e, const std::string &defaultType) const
 

Private Attributes

escript::JMPI m_mpiInfo
 MPI information. More...
 
std::string m_name
 domain description More...
 
int approximationOrder
 
int reducedApproximationOrder
 
int integrationOrder
 
int reducedIntegrationOrder
 
NodeFilem_nodes
 the table of the nodes More...
 
ElementFilem_elements
 the table of the elements More...
 
ElementFilem_faceElements
 the table of face elements More...
 
ElementFilem_contactElements
 the table of contact elements More...
 
ElementFilem_points
 the table of points (treated as elements of dimension 0) More...
 
TagMap m_tagMap
 the tag map mapping names to tag keys More...
 

Static Private Attributes

static FunctionSpaceNamesMapType m_functionSpaceTypeNames
 

Detailed Description

FinleyDomain implements the AbstractContinuousDomain interface for the Finley library.

Member Typedef Documentation

◆ FunctionSpaceNamesMapType

typedef std::map<int, std::string> finley::FinleyDomain::FunctionSpaceNamesMapType

Constructor & Destructor Documentation

◆ FinleyDomain() [1/2]

finley::FinleyDomain::FinleyDomain ( const std::string &  name,
int  numDim,
escript::JMPI  jmpi 
)

Constructor for FinleyDomain.

Parameters
namea descriptive name for the domain
numDimdimensionality of the domain (2 or 3)
jmpishared pointer to MPI Information to be used

References m_mpiInfo, m_nodes, and setFunctionSpaceTypeNames().

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), merge(), and read().

◆ FinleyDomain() [2/2]

finley::FinleyDomain::FinleyDomain ( const FinleyDomain in)

Copy constructor.

References setFunctionSpaceTypeNames().

◆ ~FinleyDomain()

finley::FinleyDomain::~FinleyDomain ( )

Member Function Documentation

◆ addDiracPoints()

void finley::FinleyDomain::addDiracPoints ( const std::vector< double > &  points,
const std::vector< int > &  tags 
)

◆ addPDEToLumpedSystem()

void finley::FinleyDomain::addPDEToLumpedSystem ( escript::Data mat,
const escript::Data D,
const escript::Data d,
const escript::Data d_dirac,
bool  useHRZ 
) const
virtual

adds a PDE onto the lumped stiffness matrix matrix

References finley::Assemble_LumpedSystem(), m_elements, m_faceElements, m_nodes, and m_points.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ addPDEToRHS()

void finley::FinleyDomain::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 the stiffness matrix mat and a rhs

Reimplemented from escript::AbstractContinuousDomain.

References finley::Assemble_PDE(), m_contactElements, m_elements, m_faceElements, m_nodes, and m_points.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ addPDEToSystem()

void finley::FinleyDomain::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 a rhs

Reimplemented from escript::AbstractContinuousDomain.

References finley::Assemble_PDE(), escript::AbstractSystemMatrix::getPtr(), m_contactElements, m_elements, m_faceElements, m_nodes, and m_points.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ addPDEToTransportProblem()

void finley::FinleyDomain::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

◆ borrowListOfTagsInUse()

const int * finley::FinleyDomain::borrowListOfTagsInUse ( int  functionSpaceCode) const
virtual

◆ borrowSampleReferenceIDs()

const index_t * finley::FinleyDomain::borrowSampleReferenceIDs ( int  functionSpaceType) const
virtual

◆ canTag()

bool finley::FinleyDomain::canTag ( int  functionSpaceCode) const
virtual

◆ commonFunctionSpace()

bool finley::FinleyDomain::commonFunctionSpace ( const std::vector< int > &  fs,
int &  resultcode 
) const
virtual

◆ createColoring()

void finley::FinleyDomain::createColoring ( const IndexVector &  dofMap)
private

tries to reduce the number of colours for all element files

References finley::ElementFile::createColoring(), m_contactElements, m_elements, m_faceElements, and m_points.

Referenced by distributeByRankOfDOF(), and getTagMap().

◆ createHex20()

escript::Domain_ptr finley::FinleyDomain::createHex20 ( dim_t  NE0,
dim_t  NE1,
dim_t  NE2,
double  l0,
double  l1,
double  l2,
bool  periodic0,
bool  periodic1,
bool  periodic2,
int  order,
int  reducedOrder,
bool  useElementsOnFace,
bool  useFullElementOrder,
bool  useMacroElements,
bool  optimize,
escript::JMPI  jmpi 
)
static

Creates a 3-dimensional rectangular domain with second order (Hex20 or Hex27) elements.

Parameters
NE0Input - number of elements in first dimension
NE1Input - number of elements in second dimension
NE2Input - number of elements in third dimension
l0Input - length of domain in first dimension (width)
l1Input - length of domain in second dimension (height)
l2Input - length of domain in third dimension (depth)
periodic0Input - use periodic boundary in first dimension?
periodic1Input - use periodic boundary in second dimension?
periodic2Input - use periodic boundary in third dimension?
orderInput - integration order (1 or 2)
reducedOrderInput - reduced integration order (1 or 2)
useElementsOnFaceInput - whether to use rich face elements
useFullElementOrderInput - ignored
useMacroElementsInput - whether to use Macro element type
optimizeInput - whether to optimize node/DOF labelling
jmpiInput - Shared pointer to MPI Information to be used

References finley::NodeFile::allocTable(), finley::ElementFile::allocTable(), finley::NodeFile::Coordinates, DIM, FinleyDomain(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::Hex20, finley::Hex20Face, finley::Hex20Face_Contact, finley::Hex27, finley::Hex27Macro, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, MAX3, finley::ElementFile::Nodes, finley::ElementFile::numNodes, finley::ElementFile::Owner, finley::Point1, prepare(), finley::Rec8, finley::Rec8_Contact, finley::Rec9, finley::Rec9_Contact, finley::Rec9Macro, resolveNodeIds(), setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), finley::ElementFile::Tag, and finley::NodeFile::Tag.

◆ createHex8()

escript::Domain_ptr finley::FinleyDomain::createHex8 ( dim_t  NE0,
dim_t  NE1,
dim_t  NE2,
double  l0,
double  l1,
double  l2,
bool  periodic0,
bool  periodic1,
bool  periodic2,
int  order,
int  reducedOrder,
bool  useElementsOnFace,
bool  optimize,
escript::JMPI  jmpi 
)
static

Creates a 3-dimensional rectangular domain with first order (Hex8) elements.

Parameters
NE0Input - number of elements in first dimension
NE1Input - number of elements in second dimension
NE2Input - number of elements in third dimension
l0Input - length of domain in first dimension (width)
l1Input - length of domain in second dimension (height)
l2Input - length of domain in third dimension (depth)
periodic0Input - use periodic boundary in first dimension?
periodic1Input - use periodic boundary in second dimension?
periodic2Input - use periodic boundary in third dimension?
orderInput - integration order (1 or 2)
reducedOrderInput - reduced integration order (1 or 2)
useElementsOnFaceInput - whether to use rich face elements
optimizeInput - whether to optimize node/DOF labelling
jmpiInput - Shared pointer to MPI Information to be used

References finley::NodeFile::allocTable(), finley::ElementFile::allocTable(), finley::NodeFile::Coordinates, DIM, FinleyDomain(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::Hex8, finley::Hex8Face, finley::Hex8Face_Contact, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, MAX3, finley::ElementFile::Nodes, finley::ElementFile::numNodes, finley::ElementFile::Owner, finley::Point1, prepare(), finley::Rec4, finley::Rec4_Contact, resolveNodeIds(), setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), finley::ElementFile::Tag, and finley::NodeFile::Tag.

◆ createMappings()

void finley::FinleyDomain::createMappings ( const IndexVector &  dofDistribution,
const IndexVector &  nodeDistribution 
)

◆ createRec4()

escript::Domain_ptr finley::FinleyDomain::createRec4 ( dim_t  NE0,
dim_t  NE1,
double  L0,
double  L1,
bool  periodic0,
bool  periodic1,
int  order,
int  reducedOrder,
bool  useElementsOnFace,
bool  optimize,
escript::JMPI  jmpi 
)
static

Creates a 2-dimensional rectangular domain with first order (Rec4) elements in the rectangle [0,L0] x [0,L1].

Parameters
NE0Input - number of elements in first dimension
NE1Input - number of elements in second dimension
l0Input - length of domain in first dimension (width)
l1Input - length of domain in second dimension (height)
periodic0Input - use periodic boundary in first dimension?
periodic1Input - use periodic boundary in second dimension?
orderInput - accuracy of integration scheme (order 1 or 2)
reducedOrderInput - reduced integration order (1 or 2)
useElementsOnFaceInput - whether to use rich face elements
optimizeInput - whether to optimize node/DOF labelling
jmpiInput - Shared pointer to MPI Information to be used

References finley::NodeFile::allocTable(), finley::ElementFile::allocTable(), finley::NodeFile::Coordinates, DIM, FinleyDomain(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, finley::Line2, finley::Line2_Contact, finley::ElementFile::Nodes, finley::ElementFile::numNodes, finley::ElementFile::Owner, finley::Point1, prepare(), finley::Rec4, finley::Rec4Face, finley::Rec4Face_Contact, resolveNodeIds(), setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), finley::ElementFile::Tag, and finley::NodeFile::Tag.

◆ createRec8()

escript::Domain_ptr finley::FinleyDomain::createRec8 ( dim_t  NE0,
dim_t  NE1,
double  l0,
double  l1,
bool  periodic0,
bool  periodic1,
int  order,
int  reducedOrder,
bool  useElementsOnFace,
bool  useFullElementOrder,
bool  useMacroElements,
bool  optimize,
escript::JMPI  jmpi 
)
static

Creates a 2-dimensional rectangular domain with second order (Rec8 or Rec9) elements in the rectangle [0,L0] x [0,L1].

Parameters
NE0Input - number of elements in first dimension
NE1Input - number of elements in second dimension
l0Input - length of domain in first dimension (width)
l1Input - length of domain in second dimension (height)
periodic0Input - use periodic boundary in first dimension?
periodic1Input - use periodic boundary in second dimension?
orderInput - accuracy of integration scheme (order 1 or 2)
reducedOrderInput - reduced integration order (1 or 2)
useElementsOnFaceInput - whether to use rich face elements
useFullElementOrderInput - if true the main element type will be Rec9
useMacroElementsInput - whether to use Macro element type
optimizeInput - whether to optimize node/DOF labelling
jmpiInput - Shared pointer to MPI Information to be used

References finley::NodeFile::allocTable(), finley::ElementFile::allocTable(), finley::NodeFile::Coordinates, DIM, FinleyDomain(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, finley::Line3, finley::Line3_Contact, finley::Line3Macro, finley::ElementFile::Nodes, finley::ElementFile::numNodes, finley::ElementFile::Owner, finley::Point1, prepare(), finley::Rec8, finley::Rec8Face, finley::Rec8Face_Contact, finley::Rec9, finley::Rec9Macro, resolveNodeIds(), setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), finley::ElementFile::Tag, and finley::NodeFile::Tag.

◆ distributeByRankOfDOF()

void finley::FinleyDomain::distributeByRankOfDOF ( const IndexVector &  distribution)
private

redistributes the Nodes and Elements including overlap according to the DOF distribution. It will create an element colouring but will not create any mappings.

References finley::NodeFile::assignMPIRankToDOFs(), createColoring(), finley::ElementFile::distributeByRankOfDOF(), ESYS_ASSERT, finley::NodeFile::getDOFRange(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::Id, m_contactElements, m_elements, m_faceElements, m_nodes, m_points, and resolveNodeIds().

Referenced by getTagMap(), and prepare().

◆ dump()

void finley::FinleyDomain::dump ( const std::string &  fileName) const
virtual

◆ findMatchingFaces()

void finley::FinleyDomain::findMatchingFaces ( double  safetyFactor,
double  tolerance,
int *  numPairs,
int *  elem0,
int *  elem1,
int *  matchingNodes 
) const
private

◆ functionSpaceTypeAsString()

string finley::FinleyDomain::functionSpaceTypeAsString ( int  functionSpaceType) const
virtual

Return a description for the given function space type code.

Implements escript::AbstractDomain.

References m_functionSpaceTypeNames.

Referenced by getMPIComm().

◆ getApproximationOrder()

int finley::FinleyDomain::getApproximationOrder ( int  functionSpaceCode) const
virtual

◆ getContactElements()

ElementFile* finley::FinleyDomain::getContactElements ( ) const
inline

returns a pointer to this domain's contact element file

References m_contactElements, and setPoints().

Referenced by weipa::FinleyDomain::initFromEscript(), and merge().

◆ getContinuousFunctionCode()

int finley::FinleyDomain::getContinuousFunctionCode ( ) const
virtual

Return a continuous FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::Nodes.

Referenced by getMPIComm().

◆ getDataShape()

pair< int, dim_t > finley::FinleyDomain::getDataShape ( int  functionSpaceCode) const
virtual

◆ getDescription()

string finley::FinleyDomain::getDescription ( ) const
virtual

Return a description for this domain.

Reimplemented from escript::AbstractContinuousDomain.

Referenced by BOOST_PYTHON_MODULE(), borrowSampleReferenceIDs(), getDataShape(), getMPIComm(), and getTagFromSampleNo().

◆ getDim()

virtual int finley::FinleyDomain::getDim ( ) const
inlinevirtual

◆ getDiracDeltaFunctionsCode()

int finley::FinleyDomain::getDiracDeltaFunctionsCode ( ) const
virtual

Return a DiracDeltaFunctions code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::Points.

Referenced by getMPIComm().

◆ getElements()

ElementFile* finley::FinleyDomain::getElements ( ) const
inline

returns a pointer to this domain's element file

References m_elements, and setFaceElements().

Referenced by weipa::FinleyDomain::initFromEscript(), and merge().

◆ getFaceElements()

ElementFile* finley::FinleyDomain::getFaceElements ( ) const
inline

returns a pointer to this domain's face element file

References m_faceElements, and setContactElements().

Referenced by weipa::FinleyDomain::initFromEscript(), and merge().

◆ getFunctionCode()

int finley::FinleyDomain::getFunctionCode ( ) const
virtual

Return a function FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::Elements.

Referenced by getMPIComm().

◆ getFunctionOnBoundaryCode()

int finley::FinleyDomain::getFunctionOnBoundaryCode ( ) const
virtual

Return a function on boundary FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::FaceElements.

Referenced by getMPIComm().

◆ getFunctionOnContactOneCode()

int finley::FinleyDomain::getFunctionOnContactOneCode ( ) const
virtual

Return a FunctionOnContactOne code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ContactElementsOne.

Referenced by getMPIComm().

◆ getFunctionOnContactZeroCode()

int finley::FinleyDomain::getFunctionOnContactZeroCode ( ) const
virtual

Return a FunctionOnContactZero code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ContactElementsZero.

Referenced by getMPIComm().

◆ getMPI()

virtual escript::JMPI finley::FinleyDomain::getMPI ( ) const
inlinevirtual

returns a reference to the MPI information wrapper for this domain

Implements escript::AbstractDomain.

References m_mpiInfo.

Referenced by getTransportTypeId().

◆ getMPIComm()

MPI_Comm finley::FinleyDomain::getMPIComm ( ) const
inlinevirtual

◆ getMPIRank()

virtual int finley::FinleyDomain::getMPIRank ( ) const
inlinevirtual

returns the number MPI rank of this processor

Implements escript::AbstractDomain.

References m_mpiInfo, and MPIBarrier().

Referenced by BOOST_PYTHON_MODULE(), dump(), onMasterProcessor(), and optimizeDOFLabeling().

◆ getMPISize()

virtual int finley::FinleyDomain::getMPISize ( ) const
inlinevirtual

returns the number of processors used for this domain

Implements escript::AbstractDomain.

References m_mpiInfo.

Referenced by BOOST_PYTHON_MODULE(), dump(), getSystemMatrixTypeId(), interpolateOnDomain(), merge(), optimizeDOFLabeling(), ownSample(), and setToGradient().

◆ getNodes()

NodeFile* finley::FinleyDomain::getNodes ( ) const
inline

returns a pointer to this domain's node file

References m_nodes, and setElements().

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), weipa::FinleyDomain::initFromEscript(), load(), merge(), and read().

◆ getNormal()

escript::Data finley::FinleyDomain::getNormal ( ) const
virtual

returns boundary normals at the quadrature point on the face elements

Implements escript::AbstractDomain.

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

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ getNumberOfTagsInUse()

int finley::FinleyDomain::getNumberOfTagsInUse ( int  functionSpaceCode) const
virtual

◆ getNumDataPointsGlobal()

dim_t finley::FinleyDomain::getNumDataPointsGlobal ( ) const
virtual

Return the number of data points summed across all MPI processes.

Reimplemented from escript::AbstractContinuousDomain.

References finley::NodeFile::getGlobalNumNodes(), and m_nodes.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ getPoints()

ElementFile* finley::FinleyDomain::getPoints ( ) const
inline

returns a pointer to this domain's point (nodal) element file

References m_points.

Referenced by merge().

◆ getReducedContinuousFunctionCode()

int finley::FinleyDomain::getReducedContinuousFunctionCode ( ) const
virtual

Return a continuous on reduced order nodes FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedNodes.

Referenced by getMPIComm().

◆ getReducedFunctionCode()

int finley::FinleyDomain::getReducedFunctionCode ( ) const
virtual

Return a function with reduced integration order FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedElements.

Referenced by getMPIComm().

◆ getReducedFunctionOnBoundaryCode()

int finley::FinleyDomain::getReducedFunctionOnBoundaryCode ( ) const
virtual

Return a function on boundary with reduced integration order FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedFaceElements.

Referenced by getMPIComm().

◆ getReducedFunctionOnContactOneCode()

int finley::FinleyDomain::getReducedFunctionOnContactOneCode ( ) const
virtual

Return a FunctionOnContactOne code with reduced integration order.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedContactElementsOne.

Referenced by getMPIComm().

◆ getReducedFunctionOnContactZeroCode()

int finley::FinleyDomain::getReducedFunctionOnContactZeroCode ( ) const
virtual

Return a FunctionOnContactZero code with reduced integration order.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedContactElementsZero.

Referenced by getMPIComm().

◆ getReducedSolutionCode()

int finley::FinleyDomain::getReducedSolutionCode ( ) const
virtual

Return a ReducedSolution code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedDegreesOfFreedom.

Referenced by getMPIComm().

◆ getSize()

escript::Data finley::FinleyDomain::getSize ( ) const
virtual

returns the element size

Implements escript::AbstractDomain.

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

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ getSolutionCode()

int finley::FinleyDomain::getSolutionCode ( ) const
virtual

Return a Solution code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::DegreesOfFreedom.

Referenced by getMPIComm().

◆ getStatus()

FinleyDomain::StatusType finley::FinleyDomain::getStatus ( ) const
virtual

Returns a status indicator of the domain. The status identifier should be unique over the live time if the object but may be updated if changes to the domain happen, e.g. modifications to its geometry.

Reimplemented from escript::AbstractDomain.

References m_nodes, and finley::NodeFile::status.

Referenced by getDim().

◆ getSystemMatrixTypeId()

int finley::FinleyDomain::getSystemMatrixTypeId ( const boost::python::object &  options) const
virtual

◆ getTag()

int finley::FinleyDomain::getTag ( const std::string &  name) const
virtual

Return the tag key for tag name.

Parameters
nameInput - tag name

Implements escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ getTagFromSampleNo()

int finley::FinleyDomain::getTagFromSampleNo ( int  functionSpaceType,
index_t  sampleNo 
) const

◆ getTagMap()

const TagMap& finley::FinleyDomain::getTagMap ( ) const
inline

◆ getTransportTypeId()

int finley::FinleyDomain::getTransportTypeId ( int  solver,
int  preconditioner,
int  package,
bool  symmetry 
) const
virtual

return the identifier of the transport problem type to be used when a particular solver, perconditioner, package and symmetric matrix is used.

Parameters
solver
preconditioner
package
symmetry

Reimplemented from escript::AbstractContinuousDomain.

References getMPI(), and paso::TransportProblem::getTypeId().

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ getX()

escript::Data finley::FinleyDomain::getX ( ) const
virtual

returns locations in the FEM nodes

Implements escript::AbstractDomain.

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

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ glueFaces()

void finley::FinleyDomain::glueFaces ( double  safetyFactor,
double  tolerance,
bool  optimize 
)

◆ interpolateAcross()

void finley::FinleyDomain::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.

Implements escript::AbstractDomain.

Referenced by getDim().

◆ interpolateOnDomain()

void finley::FinleyDomain::interpolateOnDomain ( escript::Data target,
const escript::Data source 
) const
virtual

◆ isCellOriented()

bool finley::FinleyDomain::isCellOriented ( int  functionSpaceCode) const
virtual

◆ isValidFunctionSpaceType()

bool finley::FinleyDomain::isValidFunctionSpaceType ( int  functionSpaceType) const
virtual

Returns true if the given integer is a valid function space type for this domain.

Reimplemented from escript::AbstractContinuousDomain.

References m_functionSpaceTypeNames.

Referenced by getMPIComm().

◆ isValidTagName()

bool finley::FinleyDomain::isValidTagName ( const std::string &  name) const
virtual

Returns true if name is a defined tag name.

Parameters
nameInput - tag name to be checked.

Reimplemented from escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ joinFaces()

void finley::FinleyDomain::joinFaces ( double  safetyFactor,
double  tolerance,
bool  optimize 
)

◆ load()

Domain_ptr finley::FinleyDomain::load ( const std::string &  filename)
static

◆ markNodes()

void finley::FinleyDomain::markNodes ( std::vector< short > &  mask,
index_t  offset,
bool  useLinear 
) const
private

◆ merge()

FinleyDomain * finley::FinleyDomain::merge ( const std::vector< const FinleyDomain *> &  meshes)
static

◆ MPIBarrier()

void finley::FinleyDomain::MPIBarrier ( ) const
virtual

If compiled for MPI then execute an MPI_Barrier, else do nothing.

Implements escript::AbstractDomain.

References getMPIComm().

Referenced by BOOST_PYTHON_MODULE(), and getMPIRank().

◆ newSystemMatrix()

escript::ASM_ptr finley::FinleyDomain::newSystemMatrix ( int  row_blocksize,
const escript::FunctionSpace row_functionspace,
int  column_blocksize,
const escript::FunctionSpace column_functionspace,
int  type 
) const
virtual

◆ newTransportProblem()

escript::ATP_ptr finley::FinleyDomain::newTransportProblem ( int  blocksize,
const escript::FunctionSpace functionspace,
int  type 
) const
virtual

◆ onMasterProcessor()

virtual bool finley::FinleyDomain::onMasterProcessor ( ) const
inlinevirtual

returns true if on MPI processor 0, else false

Implements escript::AbstractDomain.

References getMPIRank().

Referenced by BOOST_PYTHON_MODULE().

◆ operator!=()

bool finley::FinleyDomain::operator!= ( const escript::AbstractDomain other) const
virtual

Return true if given domains are not equal.

Implements escript::AbstractDomain.

References operator==().

Referenced by getDim().

◆ operator==()

bool finley::FinleyDomain::operator== ( const escript::AbstractDomain other) const
virtual

comparison operators

Implements escript::AbstractDomain.

References m_contactElements, m_elements, m_faceElements, m_nodes, and m_points.

Referenced by getDim(), and operator!=().

◆ optimizeDOFDistribution()

void finley::FinleyDomain::optimizeDOFDistribution ( IndexVector &  distribution)
private

optimizes the distribution of DOFs across processors using ParMETIS. On return a new distribution is given and the globalDOF are relabeled accordingly but the mesh has not been redistributed yet

References finley::NodeFile::Coordinates, finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, INDEX2, finley::IndexList_insertElementsWithRowRangeNoMainDiagonal(), m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_nodes, m_points, and finley::NodeFile::numDim.

Referenced by getTagMap(), and prepare().

◆ optimizeDOFLabeling()

void finley::FinleyDomain::optimizeDOFLabeling ( const IndexVector &  distribution)
private

◆ optimizeElementOrdering()

void finley::FinleyDomain::optimizeElementOrdering ( )
private

redistributes elements to minimize communication during assemblage

References m_contactElements, m_elements, m_faceElements, m_points, and finley::ElementFile::optimizeOrdering().

Referenced by getTagMap(), and prepare().

◆ ownSample()

bool finley::FinleyDomain::ownSample ( int  fsCode,
index_t  id 
) const
virtual

◆ preferredInterpolationOnDomain()

signed char finley::FinleyDomain::preferredInterpolationOnDomain ( int  functionSpaceType_source,
int  functionSpaceType_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)

Implements escript::AbstractDomain.

References probeInterpolationOnDomain().

Referenced by getDim().

◆ prepare()

void finley::FinleyDomain::prepare ( bool  optimize)
private

◆ Print_Mesh_Info()

void finley::FinleyDomain::Print_Mesh_Info ( bool  full = false) const
virtual

◆ printElementInfo()

void finley::FinleyDomain::printElementInfo ( const ElementFile e,
const std::string &  title,
const std::string &  defaultType,
bool  full 
) const
private

◆ probeInterpolationAcross()

bool finley::FinleyDomain::probeInterpolationAcross ( int  functionSpaceType_source,
const escript::AbstractDomain targetDomain,
int  functionSpaceType_target 
) const
virtual

determines whether interpolation from source to target is possible.

Implements escript::AbstractDomain.

Referenced by getDim().

◆ probeInterpolationOnDomain()

bool finley::FinleyDomain::probeInterpolationOnDomain ( int  functionSpaceType_source,
int  functionSpaceType_target 
) const
virtual

◆ randomFill()

escript::Data finley::FinleyDomain::randomFill ( const escript::DataTypes::ShapeType shape,
const escript::FunctionSpace what,
long  seed,
const boost::python::tuple &  filter 
) const
virtual

Fills the data object with filtered random values.

Implements escript::AbstractDomain.

References escript::Data::getExpandedVectorReference(), and escript::randomFillArray().

Referenced by supportsContactElements().

◆ read()

escript::Domain_ptr finley::FinleyDomain::read ( escript::JMPI  mpiInfo,
const std::string &  fileName,
int  integrationOrder = -1,
int  reducedIntegrationOrder = -1,
bool  optimize = false 
)
static

reads a mesh from a fly file. For MPI parallel runs fans out the mesh to multiple processes.

Parameters
mpiInfothe MPI information structure
fileNamethe name of the file
integrationOrderorder of the quadrature scheme. If <0 the order is selected automatically.
reducedIntegrationOrderorder of the reduced quadrature scheme. If <0 the order is selected automatically.
optimizewhether to optimize the node labels

References finley::NodeFile::allocTable(), finley::NodeFile::Coordinates, FinleyDomain(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::Id, INDEX2, MPI_DOUBLE, MPI_INT, prepare(), resolveNodeIds(), setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), and finley::NodeFile::Tag.

◆ readGmsh()

escript::Domain_ptr finley::FinleyDomain::readGmsh ( escript::JMPI  mpiInfo,
const std::string &  filename,
int  numDim,
int  integrationOrder = -1,
int  reducedIntegrationOrder = -1,
bool  optimize = false,
bool  useMacroElements = false 
)
static

reads a gmsh mesh file.

Parameters
mpiInfothe MPI information structure
filenamethe name of the gmsh file
numDimspatial dimensionality
integrationOrderorder of the quadrature scheme. If <0 the order is selected automatically.
reducedIntegrationOrderorder of the reduced quadrature scheme. If <0 the order is selected automatically.
optimizewhether to optimize the node labels
useMacroElementswhether to use first order macro elements

References escript::AbstractDomain::getPtr(), prepare(), and resolveNodeIds().

◆ relabelElementNodes()

void finley::FinleyDomain::relabelElementNodes ( const IndexVector &  newNode,
index_t  offset 
)
private

assigns new node reference numbers to all element files. If k is the old node, the new node is newNode[k-offset].

References m_contactElements, m_elements, m_faceElements, m_points, and finley::ElementFile::relabelNodes().

Referenced by getTagMap(), glueFaces(), and resolveNodeIds().

◆ resolveNodeIds()

void finley::FinleyDomain::resolveNodeIds ( )
private

Initially the element nodes refer to the numbering defined by the global id assigned to the nodes in the NodeFile. It is also not ensured that all nodes referred by an element are actually available on the process. At the output, a local node labeling is used and all nodes are available. In particular the numbering of the element nodes is between 0 and Nodes->numNodes. The function does not create a distribution of the degrees of freedom.

References finley::NodeFile::allocTable(), ESYS_ASSERT, finley::NodeFile::gather_global(), getDim(), finley::ElementFile::getNodeRange(), escript::DataTypes::index_t_max(), m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_nodes, m_points, markNodes(), MPI_MAX, finley::util::packMask(), and relabelElementNodes().

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), distributeByRankOfDOF(), getTagMap(), read(), and readGmsh().

◆ setContactElements()

void finley::FinleyDomain::setContactElements ( ElementFile elements)

replaces the contact element file by elements

References m_contactElements.

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), getFaceElements(), load(), merge(), and read().

◆ setElements()

void finley::FinleyDomain::setElements ( ElementFile elements)

replaces the element file by elements

References m_elements.

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), getNodes(), load(), merge(), and read().

◆ setFaceElements()

void finley::FinleyDomain::setFaceElements ( ElementFile elements)

replaces the face element file by elements

References m_faceElements.

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), getElements(), load(), merge(), and read().

◆ setFunctionSpaceTypeNames()

void finley::FinleyDomain::setFunctionSpaceTypeNames ( )

◆ setNewX()

void finley::FinleyDomain::setNewX ( const escript::Data arg)
virtual

◆ setOrders()

void finley::FinleyDomain::setOrders ( )
private

◆ setPoints()

void finley::FinleyDomain::setPoints ( ElementFile elements)

replaces the point element file by elements

References m_points.

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), getContactElements(), load(), merge(), and read().

◆ setTagMap()

void finley::FinleyDomain::setTagMap ( const std::string &  name,
int  tag 
)
virtual

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

Parameters
nameInput - tag name.
tagInput - tag key.

Implements escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE(), createHex20(), createHex8(), createRec4(), createRec8(), getDim(), load(), read(), finley::readGmsh_driver(), and finley::readMesh_driver().

◆ setTags()

void finley::FinleyDomain::setTags ( int  functionSpaceType,
int  newTag,
const escript::Data mask 
) const
virtual

◆ setToGradient()

void finley::FinleyDomain::setToGradient ( escript::Data grad,
const escript::Data arg 
) const
virtual

◆ setToIntegrals()

void finley::FinleyDomain::setToIntegrals ( std::vector< double > &  integrals,
const escript::Data arg 
) const
virtual

◆ setToNormal()

void finley::FinleyDomain::setToNormal ( escript::Data out) const
virtual

◆ setToSize()

void finley::FinleyDomain::setToSize ( escript::Data out) const
virtual

◆ setToX()

void finley::FinleyDomain::setToX ( escript::Data arg) const
virtual

copies the location of data points into arg. The domain of arg has to match this. has to be implemented by the actual Domain adapter.

Implements escript::AbstractDomain.

References finley::Assemble_NodeCoordinates(), escript::continuousFunction(), escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), escript::FunctionSpace::getTypeCode(), interpolateOnDomain(), m_nodes, finley::Nodes, and escript::Vector().

Referenced by getDim().

◆ showTagNames()

string finley::FinleyDomain::showTagNames ( ) const
virtual

Returns all tag names in a single string sperated by commas.

Implements escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE(), and getDim().

◆ supportsContactElements()

virtual bool finley::FinleyDomain::supportsContactElements ( ) const
inlinevirtual

Implements escript::AbstractDomain.

References randomFill().

◆ updateTagList()

void finley::FinleyDomain::updateTagList ( )
private

regenerates list of tags in use for node file and element files

References m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::NodeFile::updateTagList(), and finley::ElementFile::updateTagList().

Referenced by getTagMap(), and prepare().

◆ write()

void finley::FinleyDomain::write ( const std::string &  fileName) const
virtual

writes the current mesh to a file with the given name in the fly file format.

Parameters
fileNameInput - The name of the file to write to.

Implements escript::AbstractDomain.

References finley::NodeFile::Coordinates, getDim(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::Id, INDEX2, m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_name, m_nodes, m_points, m_tagMap, finley::NodeFile::Tag, and writeElementInfo().

Referenced by BOOST_PYTHON_MODULE(), and getMPIComm().

◆ writeElementInfo()

void finley::FinleyDomain::writeElementInfo ( std::ostream &  stream,
const ElementFile e,
const std::string &  defaultType 
) const
private

Member Data Documentation

◆ approximationOrder

int finley::FinleyDomain::approximationOrder
private

◆ integrationOrder

int finley::FinleyDomain::integrationOrder
private

◆ m_contactElements

ElementFile* finley::FinleyDomain::m_contactElements
private

◆ m_elements

ElementFile* finley::FinleyDomain::m_elements
private

◆ m_faceElements

ElementFile* finley::FinleyDomain::m_faceElements
private

◆ m_functionSpaceTypeNames

FinleyDomain::FunctionSpaceNamesMapType finley::FinleyDomain::m_functionSpaceTypeNames
staticprivate

◆ m_mpiInfo

escript::JMPI finley::FinleyDomain::m_mpiInfo
private

◆ m_name

std::string finley::FinleyDomain::m_name
private

domain description

Referenced by dump(), Print_Mesh_Info(), and write().

◆ m_nodes

NodeFile* finley::FinleyDomain::m_nodes
private

◆ m_points

ElementFile* finley::FinleyDomain::m_points
private

◆ m_tagMap

TagMap finley::FinleyDomain::m_tagMap
private

the tag map mapping names to tag keys

Referenced by dump(), getTag(), getTagMap(), isValidTagName(), Print_Mesh_Info(), setTagMap(), showTagNames(), and write().

◆ reducedApproximationOrder

int finley::FinleyDomain::reducedApproximationOrder
private

◆ reducedIntegrationOrder

int finley::FinleyDomain::reducedIntegrationOrder
private

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