finley::FinleyDomain Class Reference

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

`#include <FinleyDomain.h>`

Inheritance diagram for finley::FinleyDomain:

## 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...
NodeFile * | getNodes () const
| returns a pointer to this domain's node file More...
void | setElements (ElementFile *elements)
| replaces the element file by `elements` More...
ElementFile * | getElements () const
| returns a pointer to this domain's element file More...
void | setFaceElements (ElementFile *elements)
| replaces the face element file by `elements` More...
ElementFile * | getFaceElements () const
| returns a pointer to this domain's face element file More...
void | setContactElements (ElementFile *elements)
| replaces the contact element file by `elements` More...
ElementFile * | getContactElements () const
| returns a pointer to this domain's contact element file More...
void | setPoints (ElementFile *elements)
| replaces the point element file by `elements` More...
ElementFile * | getPoints () 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< escript::DataTypes::real_t > &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 void | setToIntegrals (std::vector< escript::DataTypes::cplx_t > &integrals, const escript::Data &arg) const
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 int | getVTKElementType () const
| returns the VTK element type 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 TagMap & | getTagMap () 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 FinleyDomain * | merge (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)
template<typename Scalar >
void | setToIntegralsWorker (std::vector< Scalar > &integrals, const escript::Data &arg) const
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
NodeFile * | m_nodes
| the table of the nodes More...
ElementFile * | m_elements
| the table of the elements More...
ElementFile * | m_faceElements
| the table of face elements More...
ElementFile * | m_contactElements
| the table of contact elements More...
ElementFile * | m_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

  name | a descriptive name for the domain
  numDim | dimensionality of the domain (2 or 3)
  jmpi | shared 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 | ( |  | ) |

Destructor for FinleyDomain.

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

## Member Function Documentation

## addDiracPoints()

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

References finley::ElementFile::allocTable(), finley::ElementFile::Color, finley::NodeFile::Coordinates, finley::NodeFile::degreesOfFreedomDistribution, getDim(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::globalReducedDOFIndex, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, integrationOrder, paso::LARGE_POSITIVE_FLOAT, m_mpiInfo, m_nodes, m_points, finley::ElementFile::maxColor, finley::ElementFile::minColor, MPI_DOUBLE, finley::ElementFile::Nodes, finley::ElementFile::numElements, finley::ElementFile::Owner, finley::Point1, escript::DataTypes::real_t_max(), reducedIntegrationOrder, finley::ElementFile::referenceElementSet, and finley::ElementFile::Tag.

Referenced by finley::brick(), finley::readGmsh_driver(), finley::readMesh_driver(), and finley::rectangle().

## 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().

## 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().

## 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().

## 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

adds a PDE onto a transport problem

Reimplemented from escript::AbstractContinuousDomain.

References finley::Assemble_PDE(), paso::TransportProblem::borrowMassMatrix(), paso::TransportProblem::borrowTransportMatrix(), escript::Data::expand(), paso::M, m_contactElements, m_elements, m_faceElements, m_nodes, and m_points.

Referenced by BOOST_PYTHON_MODULE().

## borrowListOfTagsInUse()

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

virtual

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, finley::ElementFile::tagsInUse, and finley::NodeFile::tagsInUse.

## borrowSampleReferenceIDs()

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

virtual

Return the reference number of the given sample number.

Parameters

  functionSpaceType | Input - The function space type.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::NodeFile::degreesOfFreedomId, finley::Elements, finley::FaceElements, getDescription(), finley::ElementFile::Id, finley::NodeFile::Id, m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::NodeFile::reducedDegreesOfFreedomId, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, and finley::NodeFile::reducedNodesId.

## canTag()

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

virtual

Checks if this domain allows tags for the specified functionSpace code.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::Elements, finley::FaceElements, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedElements, and finley::ReducedFaceElements.

## commonFunctionSpace()

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

virtual

given a vector of FunctionSpace typecodes, pass back a code which then can all be interpolated to.

Returns
  true is result is valid, false if not

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

## 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().

## 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

  NE0 | Input - number of elements in first dimension
  NE1 | Input - number of elements in second dimension
  NE2 | Input - number of elements in third dimension
  l0 | Input - length of domain in first dimension (width)
  l1 | Input - length of domain in second dimension (height)
  l2 | Input - length of domain in third dimension (depth)
  periodic0 | Input - use periodic boundary in first dimension?
  periodic1 | Input - use periodic boundary in second dimension?
  periodic2 | Input - use periodic boundary in third dimension?
  order | Input - integration order (1 or 2)
  reducedOrder | Input - reduced integration order (1 or 2)
  useElementsOnFace | Input - whether to use rich face elements
  useFullElementOrder | Input - ignored
  useMacroElements | Input - whether to use Macro element type
  optimize | Input - whether to optimize node/DOF labelling
  jmpi | Input - Shared pointer to MPI Information to be used

References finley::ElementFile::allocTable(), finley::NodeFile::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, paso::util::l2(), 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

  NE0 | Input - number of elements in first dimension
  NE1 | Input - number of elements in second dimension
  NE2 | Input - number of elements in third dimension
  l0 | Input - length of domain in first dimension (width)
  l1 | Input - length of domain in second dimension (height)
  l2 | Input - length of domain in third dimension (depth)
  periodic0 | Input - use periodic boundary in first dimension?
  periodic1 | Input - use periodic boundary in second dimension?
  periodic2 | Input - use periodic boundary in third dimension?
  order | Input - integration order (1 or 2)
  reducedOrder | Input - reduced integration order (1 or 2)
  useElementsOnFace | Input - whether to use rich face elements
  optimize | Input - whether to optimize node/DOF labelling
  jmpi | Input - Shared pointer to MPI Information to be used

References finley::ElementFile::allocTable(), finley::NodeFile::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, paso::util::l2(), 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
| ) |  |

References finley::NodeFile::createNodeMappings(), finley::NodeFile::getNumNodes(), m_nodes, markNodes(), and finley::util::packMask().

Referenced by load().

## 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

  NE0 | Input - number of elements in first dimension
  NE1 | Input - number of elements in second dimension
  l0 | Input - length of domain in first dimension (width)
  l1 | Input - length of domain in second dimension (height)
  periodic0 | Input - use periodic boundary in first dimension?
  periodic1 | Input - use periodic boundary in second dimension?
  order | Input - accuracy of integration scheme (order 1 or 2)
  reducedOrder | Input - reduced integration order (1 or 2)
  useElementsOnFace | Input - whether to use rich face elements
  optimize | Input - whether to optimize node/DOF labelling
  jmpi | Input - Shared pointer to MPI Information to be used

References finley::ElementFile::allocTable(), finley::NodeFile::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

  NE0 | Input - number of elements in first dimension
  NE1 | Input - number of elements in second dimension
  l0 | Input - length of domain in first dimension (width)
  l1 | Input - length of domain in second dimension (height)
  periodic0 | Input - use periodic boundary in first dimension?
  periodic1 | Input - use periodic boundary in second dimension?
  order | Input - accuracy of integration scheme (order 1 or 2)
  reducedOrder | Input - reduced integration order (1 or 2)
  useElementsOnFace | Input - whether to use rich face elements
  useFullElementOrder | Input - if true the main element type will be Rec9
  useMacroElements | Input - whether to use Macro element type
  optimize | Input - whether to optimize node/DOF labelling
  jmpi | Input - Shared pointer to MPI Information to be used

References finley::ElementFile::allocTable(), finley::NodeFile::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 prepare().

## dump()

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

virtual

dumps the mesh to a file with the given name.

Parameters

  fileName | Input - The name of the file

Implements escript::AbstractDomain.

References finley::ElementFile::Color, finley::NodeFile::Coordinates, finley::NodeFile::degreesOfFreedomDistribution, getMPIComm(), getMPIRank(), getMPISize(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::globalNodesIndex, finley::NodeFile::globalReducedDOFIndex, finley::NodeFile::globalReducedNodesIndex, finley::ElementFile::Id, finley::NodeFile::Id, integrationOrder, m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_name, m_nodes, m_points, m_tagMap, MPI_INT, finley::ElementFile::Nodes, finley::NodeFile::nodesDistribution, finley::NodeFile::numDim, finley::ElementFile::numElements, finley::ElementFile::numNodes, finley::ElementFile::Owner, reducedIntegrationOrder, finley::ElementFile::referenceElementSet, finley::ElementFile::Tag, and finley::NodeFile::Tag.

Referenced by BOOST_PYTHON_MODULE().

## findMatchingFaces()

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

private

References finley::NodeFile::Coordinates, finley::FaceCenterCompare(), finley::util::gather(), finley::getDist(), INDEX2, INDEX3, finley::lockingGridSize, m_faceElements, m_nodes, finley::ElementFile::Nodes, finley::NodeFile::numDim, finley::ElementFile::numElements, finley::ElementFile::numNodes, and finley::ElementFile::referenceElementSet.

Referenced by glueFaces(), and joinFaces().

## 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.

## getApproximationOrder()

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

virtual

returns the approximation order used for a function space functionSpaceCode

Implements escript::AbstractDomain.

References approximationOrder, finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, integrationOrder, finley::Nodes, finley::Points, reducedApproximationOrder, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, reducedIntegrationOrder, and finley::ReducedNodes.

## getContactElements()

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

inline

returns a pointer to this domain's contact element file

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.

## getDataShape()

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

virtual

Return the number of data points per sample, and the number of samples as a pair.

Parameters

  functionSpaceCode | Input -

Reimplemented from escript::AbstractContinuousDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, getDescription(), finley::NodeFile::getNumDegreesOfFreedom(), finley::NodeFile::getNumNodes(), finley::NodeFile::getNumReducedDegreesOfFreedom(), finley::NodeFile::getNumReducedNodes(), m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::ElementFile::numElements, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, and finley::ElementFile::referenceElementSet.

Referenced by BOOST_PYTHON_MODULE().

## getDescription()

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

virtual

Return a description for this domain.

Reimplemented from escript::AbstractContinuousDomain.

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

## getDim()

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

inline virtual

returns the dimensionality of this domain

Implements escript::AbstractDomain.

Referenced by addDiracPoints(), BOOST_PYTHON_MODULE(), merge(), Print_Mesh_Info(), resolveNodeIds(), and write().

## getDiracDeltaFunctionsCode()

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

virtual

Return a DiracDeltaFunctions code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::Points.

## getElements()

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

inline

returns a pointer to this domain's element file

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

## getFaceElements()

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

inline

returns a pointer to this domain's face element file

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.

## getFunctionOnBoundaryCode()

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

virtual

Return a function on boundary FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::FaceElements.

## getFunctionOnContactOneCode()

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

virtual

Return a FunctionOnContactOne code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ContactElementsOne.

## getFunctionOnContactZeroCode()

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

virtual

Return a FunctionOnContactZero code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ContactElementsZero.

## getMPI()

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

inline virtual

returns a reference to the MPI information wrapper for this domain

Implements escript::AbstractDomain.

Referenced by getTransportTypeId().

## getMPIComm()

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

inline virtual

get the communicator for this domain. Returns an integer on non-MPI builds Routine must be implemented by the DomainAdapter.

Implements escript::AbstractDomain.

Referenced by dump(), and MPIBarrier().

## getMPIRank()

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

inline virtual

returns the number MPI rank of this processor

Implements escript::AbstractDomain.

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

## getMPISize()

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

inline virtual

returns the number of processors used for this domain

Implements escript::AbstractDomain.

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

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().

## getNumberOfTagsInUse()

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

virtual

returns the number of tags in use and a pointer to an array with the number of tags in use

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, finley::ElementFile::tagsInUse, and finley::NodeFile::tagsInUse.

## 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().

## getPoints()

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

inline

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

Referenced by finley::brick(), merge(), and finley::rectangle().

## getReducedContinuousFunctionCode()

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

virtual

Return a continuous on reduced order nodes FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedNodes.

## getReducedFunctionCode()

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

virtual

Return a function with reduced integration order FunctionSpace code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedElements.

## 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.

## getReducedFunctionOnContactOneCode()

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

virtual

Return a FunctionOnContactOne code with reduced integration order.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedContactElementsOne.

## getReducedFunctionOnContactZeroCode()

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

virtual

Return a FunctionOnContactZero code with reduced integration order.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedContactElementsZero.

## getReducedSolutionCode()

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

virtual

Return a ReducedSolution code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::ReducedDegreesOfFreedom.

## 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().

## getSolutionCode()

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

virtual

Return a Solution code.

Reimplemented from escript::AbstractContinuousDomain.

References finley::DegreesOfFreedom.

## 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.

## getSystemMatrixTypeId()

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

virtual

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.

Parameters

  options | a SolverBuddy instance with the desired options set

Reimplemented from escript::AbstractContinuousDomain.

References getMPISize(), escript::SolverBuddy::getPackage(), escript::SolverBuddy::getPreconditioner(), escript::SolverBuddy::getSolverMethod(), paso::SystemMatrix< T >::getSystemMatrixTypeId(), escript::SolverBuddy::isComplex(), escript::isDirectSolver(), escript::SolverBuddy::isSymmetric(), m_mpiInfo, finley::SMT_COMPLEX, finley::SMT_PASO, finley::SMT_TRILINOS, finley::SMT_UNROLL, escript::SO_DEFAULT, escript::SO_METHOD_DIRECT, escript::SO_PACKAGE_TRILINOS, escript::SO_PRECONDITIONER_AMG, and escript::SO_PRECONDITIONER_ILUT.

Referenced by BOOST_PYTHON_MODULE().

## getTag()

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

virtual

Return the tag key for tag name.

Parameters

  name | Input - tag name

Implements escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE().

## getTagFromSampleNo()

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

Return the tag key for the given sample number.

Parameters

  functionSpaceType | Input - The function space type.
  sampleNo | Input - The sample number.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, getDescription(), m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, finley::ElementFile::Tag, and finley::NodeFile::Tag.

## getTagMap()

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

inline

returns a reference to the tag name->value map

Referenced by finley::readGmsh_driver(), and finley::readMesh_driver().

## 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().

## getVTKElementType()

int finley::FinleyDomain::getVTKElementType | ( |  | ) | const

virtual

returns the VTK element type

References m_elements, finley::ReferenceElementInfo::Name, and finley::ElementFile::referenceElementSet.

Referenced by BOOST_PYTHON_MODULE().

## 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().

## glueFaces()

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

References finley::ElementFile::allocTable(), finley::NodeFile::allocTable(), findMatchingFaces(), finley::ElementFile::gather(), finley::NodeFile::gather(), finley::NodeFile::getNumNodes(), INDEX2, m_faceElements, m_mpiInfo, m_nodes, finley::ElementFile::Nodes, finley::NodeFile::numDim, finley::ElementFile::numElements, finley::ElementFile::numNodes, prepare(), finley::ElementFile::referenceElementSet, and relabelElementNodes().

Referenced by finley::glueFaces().

## 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.

## interpolateOnDomain()

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

virtual

interpolates data given on source onto target where source and target have to be given on the same domain.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, escript::continuousFunction(), finley::DegreesOfFreedom, finley::Elements, escript::Data::expand(), finley::FaceElements, escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), getMPISize(), escript::FunctionSpace::getTypeCode(), escript::Data::isComplex(), m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, escript::reducedContinuousFunction(), finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

Referenced by setToX().

## isCellOriented()

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

virtual

returns true if data on this domain and a function space of type functionSpaceCode has to considered as cell centered data.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, and finley::ReducedFaceElements.

## 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.

## isValidTagName()

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

virtual

Returns true if name is a defined tag name.

Parameters

  name | Input - tag name to be checked.

Reimplemented from escript::AbstractDomain.

References m_tagMap.

Referenced by BOOST_PYTHON_MODULE().

## joinFaces()

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

References finley::ElementFile::allocTable(), finley::ElementFile::Color, finley::ElementFile::copyTable(), findMatchingFaces(), finley::ElementFile::gather(), finley::ElementFile::Id, INDEX2, m_contactElements, m_faceElements, m_mpiInfo, finley::ElementFile::maxColor, finley::ElementFile::minColor, finley::ElementFile::Nodes, finley::ElementFile::numElements, finley::ElementFile::numNodes, prepare(), finley::ElementFile::referenceElementSet, and finley::ElementFile::Tag.

Referenced by finley::joinFaces().

## load()

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

static

recovers domain from a dump file

Parameters

  filename | the name of the file

References finley::ElementFile::allocTable(), finley::NodeFile::allocTable(), finley::cleanupAndThrow(), finley::ElementFile::Color, finley::NodeFile::Coordinates, createMappings(), getNodes(), escript::AbstractDomain::getPtr(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::globalNodesIndex, finley::NodeFile::globalReducedDOFIndex, finley::NodeFile::globalReducedNodesIndex, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, escript::makeInfo(), finley::ElementFile::maxColor, finley::ElementFile::minColor, MPI_COMM_WORLD, finley::ElementFile::Nodes, finley::ElementFile::Owner, setContactElements(), setElements(), setFaceElements(), setPoints(), setTagMap(), finley::ElementFile::Tag, finley::NodeFile::Tag, finley::ElementFile::updateTagList(), and finley::NodeFile::updateTagList().

Referenced by BOOST_PYTHON_MODULE().

## markNodes()

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

private

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

Referenced by createMappings(), prepare(), and resolveNodeIds().

## merge()

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

static

takes nodes, elements, etc. of all input meshes and copies them into a new mesh. Ids of output are shifted by the maximum Id of inputs.

References finley::ElementFile::allocTable(), finley::NodeFile::allocTable(), finley::NodeFile::copyTable(), finley::ElementFile::copyTable(), FinleyDomain(), getContactElements(), getDim(), getElements(), getFaceElements(), finley::util::getMaxInt(), getMPISize(), getNodes(), getPoints(), integrationOrder, finley::NoRef, prepare(), reducedIntegrationOrder, setContactElements(), setElements(), setFaceElements(), and setPoints().

## 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().

## 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

creates a stiffness matrix and initializes it with zeros

Reimplemented from escript::AbstractContinuousDomain.

References finley::DegreesOfFreedom, escript::FunctionSpace::getDomain(), escript::FunctionSpace::getTypeCode(), m_mpiInfo, MATRIX_FORMAT_COMPLEX, finley::ReducedDegreesOfFreedom, finley::SMT_COMPLEX, finley::SMT_PASO, finley::SMT_TRILINOS, and finley::SMT_UNROLL.

Referenced by BOOST_PYTHON_MODULE().

## newTransportProblem()

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

virtual

creates a TransportProblem

Reimplemented from escript::AbstractContinuousDomain.

References finley::DegreesOfFreedom, escript::FunctionSpace::getDomain(), escript::FunctionSpace::getTypeCode(), and finley::ReducedDegreesOfFreedom.

Referenced by BOOST_PYTHON_MODULE().

## onMasterProcessor()

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

inline virtual

returns true if on MPI processor 0, else false

Implements escript::AbstractDomain.

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==().

## 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 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 prepare().

## optimizeDOFLabeling()

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

private

optimizes the labeling of the DOFs on each processor

References paso::Pattern::fromIndexListArray(), getMPIRank(), getMPISize(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::IndexList_insertElementsWithRowRangeNoMainDiagonal(), m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_nodes, and m_points.

Referenced by prepare().

## 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 prepare().

## ownSample()

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

virtual

References finley::NodeFile::borrowGlobalNodesIndex(), finley::Elements, finley::FaceElements, FINLEY_DEGREES_OF_FREEDOM, FINLEY_REDUCED_DEGREES_OF_FREEDOM, finley::NodeFile::getFirstNode(), finley::NodeFile::getLastNode(), getMPISize(), m_nodes, finley::Nodes, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

## 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().

## prepare()

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

private

prepares the mesh for further use

References finley::NodeFile::createDenseDOFLabeling(), finley::NodeFile::createDenseNodeLabeling(), finley::NodeFile::createDenseReducedLabeling(), finley::NodeFile::createNodeMappings(), distributeByRankOfDOF(), finley::NodeFile::getNumNodes(), m_mpiInfo, m_nodes, markNodes(), optimizeDOFDistribution(), optimizeDOFLabeling(), optimizeElementOrdering(), finley::util::packMask(), setOrders(), and updateTagList().

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

## Print_Mesh_Info()

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

virtual

Parameters

  full | whether to include coordinate values and id's

Reimplemented from escript::AbstractContinuousDomain.

References approximationOrder, finley::NodeFile::Coordinates, getDim(), finley::NodeFile::getNumNodes(), finley::NodeFile::globalDegreesOfFreedom, finley::NodeFile::globalNodesIndex, finley::NodeFile::globalReducedDOFIndex, finley::NodeFile::globalReducedNodesIndex, finley::NodeFile::Id, INDEX2, integrationOrder, m_contactElements, m_elements, m_faceElements, m_mpiInfo, m_name, m_nodes, m_points, m_tagMap, printElementInfo(), reducedApproximationOrder, reducedIntegrationOrder, and finley::NodeFile::Tag.

Referenced by BOOST_PYTHON_MODULE().

## printElementInfo()

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

private

References finley::ElementFile::Color, finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, m_mpiInfo, m_nodes, finley::ElementFile::Nodes, finley::ElementFile::numElements, finley::ElementFile::numNodes, finley::ElementFile::Owner, finley::ElementFile::referenceElementSet, and finley::ElementFile::Tag.

Referenced by Print_Mesh_Info().

## 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.

## probeInterpolationOnDomain()

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

virtual

True if interpolation is possible from source to target.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

Referenced by preferredInterpolationOnDomain().

## 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(), escript::randomFillArray(), and escript::DataTypes::DataVectorAlt< T >::size().

## 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

  mpiInfo | the MPI information structure
  fileName | the name of the file
  integrationOrder | order of the quadrature scheme. If <0 the order is selected automatically.
  reducedIntegrationOrder | order of the reduced quadrature scheme. If <0 the order is selected automatically.
  optimize | whether 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

  mpiInfo | the MPI information structure
  filename | the name of the gmsh file
  numDim | spatial dimensionality
  integrationOrder | order of the quadrature scheme. If <0 the order is selected automatically.
  reducedIntegrationOrder | order of the reduced quadrature scheme. If <0 the order is selected automatically.
  optimize | whether to optimize the node labels
  useMacroElements | whether 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 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(), 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(), 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(), 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(), load(), merge(), and read().

## setFunctionSpaceTypeNames()

void finley::FinleyDomain::setFunctionSpaceTypeNames | ( |  | ) |

Build the table of function space type names.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, m_functionSpaceTypeNames, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

Referenced by FinleyDomain().

## setNewX()

void finley::FinleyDomain::setNewX | ( | const escript::Data & | arg | ) |

virtual

assigns new location to the domain

Reimplemented from escript::AbstractContinuousDomain.

References escript::continuousFunction(), escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), m_nodes, and finley::NodeFile::setCoordinates().

Referenced by BOOST_PYTHON_MODULE().

## setOrders()

void finley::FinleyDomain::setOrders | ( |  | ) |

private

References approximationOrder, integrationOrder, m_contactElements, m_elements, m_faceElements, m_mpiInfo, MPI_INT, MPI_MIN, finley::ElementFile::numElements, reducedApproximationOrder, reducedIntegrationOrder, and finley::ElementFile::referenceElementSet.

Referenced by prepare().

## setPoints()

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

replaces the point element file by `elements`

References m_points.

Referenced by createHex20(), createHex8(), createRec4(), createRec8(), 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

  name | Input - tag name.
  tag | Input - tag key.

Implements escript::AbstractDomain.

References m_tagMap.

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

## setTags()

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

virtual

assigns new tag newTag to all samples of functionspace with a positive value of mask for any its sample point.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, m_contactElements, m_elements, m_faceElements, m_nodes, m_points, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, finley::ReducedNodes, finley::ElementFile::setTags(), and finley::NodeFile::setTags().

## setToGradient()

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

virtual

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.

Implements escript::AbstractDomain.

References finley::ContactElementsOne, finley::ContactElementsZero, escript::continuousFunction(), finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), getMPISize(), escript::FunctionSpace::getTypeCode(), escript::Data::isComplex(), m_contactElements, m_elements, m_faceElements, m_nodes, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, escript::reducedContinuousFunction(), finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

## setToIntegrals() [1/2]

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

virtual

Reimplemented from escript::AbstractContinuousDomain.

## setToIntegrals() [2/2]

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

virtual

copies the integrals of the function defined by arg into integrals. arg has to be defined on this.

Reimplemented from escript::AbstractContinuousDomain.

## setToIntegralsWorker()

template<typename Scalar >

void finley::FinleyDomain::setToIntegralsWorker | ( | std::vector< Scalar > & | integrals,
|  | const escript::Data & | arg
| ) |  | const

private

References finley::Assemble_integrate(), finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, escript::function(), escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), escript::FunctionSpace::getTypeCode(), m_contactElements, m_elements, m_faceElements, m_nodes, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

## setToNormal()

void finley::FinleyDomain::setToNormal | ( | escript::Data & | out | ) | const

virtual

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

Implements escript::AbstractDomain.

References finley::Assemble_getNormal(), finley::ContactElementsOne, finley::ContactElementsZero, finley::FaceElements, escript::FunctionSpace::getDomain(), escript::Data::getFunctionSpace(), escript::FunctionSpace::getTypeCode(), m_contactElements, m_faceElements, m_nodes, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, and finley::ReducedFaceElements.

## setToSize()

void finley::FinleyDomain::setToSize | ( | escript::Data & | out | ) | const

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.

Implements escript::AbstractDomain.

References finley::Assemble_getSize(), finley::ContactElementsOne, finley::ContactElementsZero, finley::DegreesOfFreedom, finley::Elements, finley::FaceElements, escript::Data::getFunctionSpace(), escript::FunctionSpace::getTypeCode(), m_contactElements, m_elements, m_faceElements, m_nodes, finley::Nodes, finley::Points, finley::ReducedContactElementsOne, finley::ReducedContactElementsZero, finley::ReducedDegreesOfFreedom, finley::ReducedElements, finley::ReducedFaceElements, and finley::ReducedNodes.

## 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().

## 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().

## supportsContactElements()

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

inline virtual

Implements escript::AbstractDomain.

## 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::ElementFile::updateTagList(), and finley::NodeFile::updateTagList().

Referenced by 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

  fileName | Input - 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().

## writeElementInfo()

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

private

References finley::ElementFile::Id, finley::NodeFile::Id, INDEX2, m_nodes, finley::ElementFile::Nodes, finley::ElementFile::numElements, finley::ElementFile::numNodes, finley::ElementFile::referenceElementSet, and finley::ElementFile::Tag.

Referenced by write().

## Member Data Documentation

## approximationOrder

int finley::FinleyDomain::approximationOrder

private

Referenced by getApproximationOrder(), Print_Mesh_Info(), and setOrders().

## integrationOrder

int finley::FinleyDomain::integrationOrder

private

Referenced by addDiracPoints(), dump(), getApproximationOrder(), merge(), Print_Mesh_Info(), and setOrders().

## m_contactElements

ElementFile* finley::FinleyDomain::m_contactElements

private

the table of contact elements

Referenced by addPDEToRHS(), addPDEToSystem(), addPDEToTransportProblem(), borrowListOfTagsInUse(), borrowSampleReferenceIDs(), createColoring(), distributeByRankOfDOF(), dump(), getDataShape(), getNumberOfTagsInUse(), getTagFromSampleNo(), interpolateOnDomain(), joinFaces(), markNodes(), operator==(), optimizeDOFDistribution(), optimizeDOFLabeling(), optimizeElementOrdering(), Print_Mesh_Info(), relabelElementNodes(), resolveNodeIds(), setContactElements(), setOrders(), setTags(), setToGradient(), setToIntegralsWorker(), setToNormal(), setToSize(), updateTagList(), write(), and ~FinleyDomain().

## m_elements

ElementFile* finley::FinleyDomain::m_elements

private

the table of the elements

Referenced by addPDEToLumpedSystem(), addPDEToRHS(), addPDEToSystem(), addPDEToTransportProblem(), borrowListOfTagsInUse(), borrowSampleReferenceIDs(), createColoring(), distributeByRankOfDOF(), dump(), getDataShape(), getNumberOfTagsInUse(), getTagFromSampleNo(), getVTKElementType(), interpolateOnDomain(), markNodes(), operator==(), optimizeDOFDistribution(), optimizeDOFLabeling(), optimizeElementOrdering(), Print_Mesh_Info(), relabelElementNodes(), resolveNodeIds(), setElements(), setOrders(), setTags(), setToGradient(), setToIntegralsWorker(), setToSize(), updateTagList(), write(), and ~FinleyDomain().

## m_faceElements

ElementFile* finley::FinleyDomain::m_faceElements

private

the table of face elements

Referenced by addPDEToLumpedSystem(), addPDEToRHS(), addPDEToSystem(), addPDEToTransportProblem(), borrowListOfTagsInUse(), borrowSampleReferenceIDs(), createColoring(), distributeByRankOfDOF(), dump(), findMatchingFaces(), getDataShape(), getNumberOfTagsInUse(), getTagFromSampleNo(), glueFaces(), interpolateOnDomain(), joinFaces(), markNodes(), operator==(), optimizeDOFDistribution(), optimizeDOFLabeling(), optimizeElementOrdering(), Print_Mesh_Info(), relabelElementNodes(), resolveNodeIds(), setFaceElements(), setOrders(), setTags(), setToGradient(), setToIntegralsWorker(), setToNormal(), setToSize(), updateTagList(), write(), and ~FinleyDomain().

## m_functionSpaceTypeNames

FinleyDomain::FunctionSpaceNamesMapType finley::FinleyDomain::m_functionSpaceTypeNames

static private

Referenced by functionSpaceTypeAsString(), isValidFunctionSpaceType(), and setFunctionSpaceTypeNames().

## m_mpiInfo

escript::JMPI finley::FinleyDomain::m_mpiInfo

private

MPI information.

Referenced by addDiracPoints(), dump(), FinleyDomain(), getSystemMatrixTypeId(), glueFaces(), joinFaces(), newSystemMatrix(), optimizeDOFDistribution(), optimizeDOFLabeling(), prepare(), Print_Mesh_Info(), printElementInfo(), resolveNodeIds(), setOrders(), and write().

## 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

the table of the nodes

Referenced by addDiracPoints(), addPDEToLumpedSystem(), addPDEToRHS(), addPDEToSystem(), addPDEToTransportProblem(), borrowListOfTagsInUse(), borrowSampleReferenceIDs(), createMappings(), distributeByRankOfDOF(), dump(), findMatchingFaces(), FinleyDomain(), getDataShape(), getNumberOfTagsInUse(), getNumDataPointsGlobal(), getStatus(), getTagFromSampleNo(), glueFaces(), interpolateOnDomain(), operator==(), optimizeDOFDistribution(), optimizeDOFLabeling(), ownSample(), prepare(), Print_Mesh_Info(), printElementInfo(), resolveNodeIds(), setNewX(), setTags(), setToGradient(), setToIntegralsWorker(), setToNormal(), setToSize(), setToX(), updateTagList(), write(), writeElementInfo(), and ~FinleyDomain().

## m_points

ElementFile* finley::FinleyDomain::m_points

private

the table of points (treated as elements of dimension 0)

Referenced by addDiracPoints(), addPDEToLumpedSystem(), addPDEToRHS(), addPDEToSystem(), addPDEToTransportProblem(), borrowListOfTagsInUse(), borrowSampleReferenceIDs(), createColoring(), distributeByRankOfDOF(), dump(), getDataShape(), getNumberOfTagsInUse(), getTagFromSampleNo(), interpolateOnDomain(), markNodes(), operator==(), optimizeDOFDistribution(), optimizeDOFLabeling(), optimizeElementOrdering(), Print_Mesh_Info(), relabelElementNodes(), resolveNodeIds(), setPoints(), setTags(), updateTagList(), write(), and ~FinleyDomain().

## m_tagMap

TagMap finley::FinleyDomain::m_tagMap

private

the tag map mapping names to tag keys

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

## reducedApproximationOrder

int finley::FinleyDomain::reducedApproximationOrder

private

Referenced by getApproximationOrder(), Print_Mesh_Info(), and setOrders().

## reducedIntegrationOrder

int finley::FinleyDomain::reducedIntegrationOrder

private

Referenced by addDiracPoints(), dump(), getApproximationOrder(), merge(), Print_Mesh_Info(), and setOrders().

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

- finley/src/FinleyDomain.h
- finley/src/DomainFactory.cpp
- finley/src/FinleyDomain.cpp
- Mesh_addPoints.cpp
- Mesh_findMatchingFaces.cpp
- Mesh_glueFaces.cpp
- Mesh_hex20.cpp
- Mesh_hex8.cpp
- Mesh_joinFaces.cpp
- Mesh_merge.cpp
- finley/src/Mesh_optimizeDOFDistribution.cpp
- finley/src/Mesh_read.cpp
- finley/src/Mesh_readGmsh.cpp
- Mesh_rec4.cpp
- Mesh_rec8.cpp
- finley/src/Mesh_write.cpp