finley::ElementFile Class Reference

`#include <ElementFile.h>`

## Public Member Functions

| ElementFile (const_ReferenceElementSet_ptr refElementSet, escript::JMPI mpiInfo)
| ~ElementFile ()
| destructor More...
void | allocTable (dim_t NE)
| allocates the element table within an element file to hold NE elements More...
void | freeTable ()
| deallocates the element table within an element file More...
void | copyTable (index_t offset, index_t nodeOffset, index_t idOffset, const ElementFile *in)
void | distributeByRankOfDOF (const std::vector< int > &mpiRankOfDOF, index_t *nodesId)
| redistributes the elements including overlap by rank More...
void | createColoring (const IndexVector &dofMap)
| Tries to reduce the number of colours used to colour the elements. More...
void | optimizeOrdering ()
| reorders the elements so that they are stored close to the nodes More...
void | relabelNodes (const IndexVector &newNode, index_t offset)
void | markNodes (std::vector< short > &mask, int offset, bool useLinear)
void | gather (const index_t *index, const ElementFile *in)
void | scatter (index_t *index, const ElementFile *in)
void | setTags (const int newTag, const escript::Data &mask)
ElementFile_Jacobians * | borrowJacobians (const NodeFile *, bool, bool) const
std::pair< index_t, index_t > | getNodeRange () const
void | updateTagList ()

## Public Attributes

escript::JMPI | MPIInfo
const_ReferenceElementSet_ptr | referenceElementSet
| the reference element to be used More...
dim_t | numElements
| number of elements More...
index_t * | Id
int * | Tag
| Tag[i] is the tag of element i. More...
int * | Owner
| Owner[i] contains the rank that owns element i. More...
std::vector< int > | tagsInUse
| array of tags which are actually used More...
int | numNodes
| number of nodes per element More...
index_t * | Nodes
index_t * | Color
index_t | minColor
| minimum color value More...
index_t | maxColor
| maximum color value More...
ElementFile_Jacobians * | jacobians
| jacobians of the shape function used for solution approximation More...
ElementFile_Jacobians * | jacobians_reducedS
ElementFile_Jacobians * | jacobians_reducedQ
ElementFile_Jacobians * | jacobians_reducedS_reducedQ

## Private Member Functions

void | swapTable (ElementFile *other)

## Constructor & Destructor Documentation

## ElementFile()

finley::ElementFile::ElementFile | ( | const_ReferenceElementSet_ptr | refSet,
|  | escript::JMPI | mpiInfo
| ) |  |

constructor use ElementFile::allocTable to allocate the element table

## ~ElementFile()

finley::ElementFile::~ElementFile | ( |  | ) |

destructor

## Member Function Documentation

## allocTable()

void finley::ElementFile::allocTable | ( | dim_t | NE | ) |

allocates the element table within an element file to hold NE elements

allocates the element table within this element file to hold NE elements.

References dudley::ElementFile::Color, dudley::ElementFile::Id, INDEX2, dudley::ElementFile::Nodes, dudley::ElementFile::numNodes, dudley::ElementFile::Owner, and dudley::ElementFile::Tag.

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::load(), finley::FinleyDomain::merge(), and swapTable().

## borrowJacobians()

ElementFile_Jacobians * finley::ElementFile::borrowJacobians | ( | const NodeFile * | nodefile,
|  | bool | reducedShapefunction,
|  | bool | reducedIntegrationOrder
| ) |  | const

Referenced by finley::AssembleParameters::AssembleParameters().

## copyTable()

void finley::ElementFile::copyTable | ( | index_t | offset,
|  | index_t | nodeOffset,
|  | index_t | idOffset,
|  | const ElementFile * | in
| ) |  |

copies element file `in` into this element file starting from `offset`. The elements `offset` to in->numElements+offset-1 will be overwritten.

copies element file 'in' into this element file starting from 'offset'. The elements offset to in->numElements+offset-1 will be overwritten

Referenced by finley::FinleyDomain::merge().

## createColoring()

void finley::ElementFile::createColoring | ( | const IndexVector & | dofMap | ) |

Tries to reduce the number of colours used to colour the elements.

Tries to reduce the number of colors used to color elements in this ElementFile

References dudley::ElementFile::Color, ESYS_ASSERT, INDEX2, dudley::ElementFile::maxColor, dudley::ElementFile::Nodes, and dudley::ElementFile::numElements.

Referenced by finley::FinleyDomain::createColoring().

## distributeByRankOfDOF()

void finley::ElementFile::distributeByRankOfDOF | ( | const std::vector< int > & | mpiRankOfDOF,
|  | index_t * | nodesId
| ) |  |

redistributes the elements including overlap by rank

Referenced by finley::FinleyDomain::distributeByRankOfDOF().

## freeTable()

void finley::ElementFile::freeTable | ( |  | ) |

deallocates the element table within an element file

deallocates the element table within this element file

## gather()

void finley::ElementFile::gather | ( | const index_t * | index,
|  | const ElementFile * | in
| ) |  |

## getNodeRange()

std::pair< index_t, index_t > finley::ElementFile::getNodeRange | ( |  | ) | const

inline

returns the minimum and maximum reference number of nodes describing the elements

Referenced by finley::FinleyDomain::resolveNodeIds().

## markNodes()

void finley::ElementFile::markNodes | ( | std::vector< short > & | mask,
|  | int | offset,
|  | bool | useLinear
| ) |  |

References INDEX2, dudley::ElementFile::Nodes, and dudley::ElementFile::numNodes.

Referenced by finley::FinleyDomain::markNodes().

## optimizeOrdering()

void finley::ElementFile::optimizeOrdering | ( |  | ) |

reorders the elements so that they are stored close to the nodes

Referenced by finley::FinleyDomain::optimizeElementOrdering().

## relabelNodes()

void finley::ElementFile::relabelNodes | ( | const IndexVector & | newNode,
|  | index_t | offset
| ) |  |

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

Referenced by finley::FinleyDomain::relabelElementNodes().

## scatter()

void finley::ElementFile::scatter | ( | index_t * | index,
|  | const ElementFile * | in
| ) |  |

scatters the ElementFile in into this ElementFile. A conservative assumption on the coloring is made.

## setTags()

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

References escript::Data::getSampleDataRO(), and dudley::ElementFile::Tag.

Referenced by finley::FinleyDomain::setTags().

## swapTable()

void finley::ElementFile::swapTable | ( | ElementFile * | other | ) |

private

References allocTable(), dudley::ElementFile::ElementFile(), INDEX2, dudley::ElementFile::MPIInfo, dudley::ElementFile::Nodes, and dudley::ElementFile::numElements.

## updateTagList()

void finley::ElementFile::updateTagList | ( |  | ) |

inline

updates the list of tags in use. This method must be called by all ranks.

Referenced by finley::brick(), finley::FinleyDomain::load(), finley::rectangle(), and finley::FinleyDomain::updateTagList().

## Member Data Documentation

## Color

index_t* finley::ElementFile::Color

assigns each element a color. Elements with the same color don't share a node so they can be processed simultaneously. At any time Color must provide a valid value. In any case one can set Color[e]=e for all e

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::dump(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::load(), and finley::FinleyDomain::printElementInfo().

## Id

index_t* finley::ElementFile::Id

Id[i] is the id number of node i. This number is used when elements are resorted. In the entire code the term 'element id' refers to i and not to Id[i] unless explicitly stated otherwise.

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::borrowSampleReferenceIDs(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::dump(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::load(), finley::FinleyDomain::printElementInfo(), and finley::FinleyDomain::writeElementInfo().

## jacobians

ElementFile_Jacobians* finley::ElementFile::jacobians

jacobians of the shape function used for solution approximation

## jacobians_reducedQ

ElementFile_Jacobians* finley::ElementFile::jacobians_reducedQ

jacobians of the shape function used for solution approximation for reduced integration order

## jacobians_reducedS

ElementFile_Jacobians* finley::ElementFile::jacobians_reducedS

jacobians of the shape function used for solution approximation for reduced order of shape function

## jacobians_reducedS_reducedQ

ElementFile_Jacobians* finley::ElementFile::jacobians_reducedS_reducedQ

jacobians of the shape function used for solution approximation for reduced integration order and reduced order of shape function

## maxColor

index_t finley::ElementFile::maxColor

maximum color value

Referenced by finley::FinleyDomain::addDiracPoints(), and finley::FinleyDomain::load().

## minColor

index_t finley::ElementFile::minColor

minimum color value

Referenced by finley::FinleyDomain::addDiracPoints(), and finley::FinleyDomain::load().

## MPIInfo

escript::JMPI finley::ElementFile::MPIInfo

## Nodes

index_t* finley::ElementFile::Nodes

Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element. Note that in the way the nodes are ordered Nodes[INDEX(k, i, numNodes) is the k-th node of element i when referring to the linear version of the mesh.

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::dump(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::load(), finley::FinleyDomain::printElementInfo(), and finley::FinleyDomain::writeElementInfo().

## numElements

dim_t finley::ElementFile::numElements

number of elements

Referenced by finley::FinleyDomain::addDiracPoints(), finley::AssembleParameters::AssembleParameters(), finley::FinleyDomain::dump(), finley::FinleyDomain::getDataShape(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::printElementInfo(), finley::FinleyDomain::setOrders(), and finley::FinleyDomain::writeElementInfo().

## numNodes

int finley::ElementFile::numNodes

number of nodes per element

Referenced by finley::AssembleParameters::AssembleParameters(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::dump(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::printElementInfo(), and finley::FinleyDomain::writeElementInfo().

## Owner

int* finley::ElementFile::Owner

Owner[i] contains the rank that owns element i.

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::dump(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::load(), and finley::FinleyDomain::printElementInfo().

## referenceElementSet

const_ReferenceElementSet_ptr finley::ElementFile::referenceElementSet

the reference element to be used

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::dump(), finley::FinleyDomain::getDataShape(), finley::FinleyDomain::getVTKElementType(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::printElementInfo(), finley::FinleyDomain::setOrders(), and finley::FinleyDomain::writeElementInfo().

## Tag

int* finley::ElementFile::Tag

Tag[i] is the tag of element i.

Referenced by finley::FinleyDomain::addDiracPoints(), finley::FinleyDomain::createHex20(), finley::FinleyDomain::createHex8(), finley::FinleyDomain::createRec4(), finley::FinleyDomain::createRec8(), finley::FinleyDomain::dump(), finley::FinleyDomain::getTagFromSampleNo(), weipa::FinleyElements::initFromFinley(), finley::FinleyDomain::load(), finley::FinleyDomain::printElementInfo(), and finley::FinleyDomain::writeElementInfo().

## tagsInUse

std::vector<int> finley::ElementFile::tagsInUse

array of tags which are actually used

Referenced by finley::FinleyDomain::borrowListOfTagsInUse(), and finley::FinleyDomain::getNumberOfTagsInUse().

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

- finley/src/ElementFile.h
- finley/src/ElementFile.cpp
- finley/src/ElementFile_jacobians.cpp