escript
Revision_
|
#include <NodeFile.h>
Public Member Functions | |
NodeFile (int nDim, esysUtils::JMPI &mpiInfo) | |
~NodeFile () | |
destructor More... | |
void | allocTable (dim_t numNodes) |
allocates the node table within this node file to hold NN nodes. More... | |
void | freeTable () |
frees the node table within this node file More... | |
void | print () const |
index_t | getFirstNode () const |
index_t | getLastNode () const |
index_t | getGlobalNumNodes () const |
index_t * | borrowGlobalNodesIndex () const |
index_t | getFirstReducedNode () const |
index_t | getLastReducedNode () const |
index_t | getGlobalNumReducedNodes () const |
index_t * | borrowGlobalReducedNodesIndex () const |
dim_t | getNumNodes () const |
returns the number of FEM nodes More... | |
dim_t | getNumReducedNodes () const |
dim_t | getNumDegreesOfFreedom () const |
dim_t | getNumReducedDegreesOfFreedom () const |
const std::vector< index_t > & | borrowReducedNodesTarget () const |
const std::vector< index_t > & | borrowDegreesOfFreedomTarget () const |
const std::vector< index_t > & | borrowNodesTarget () const |
const std::vector< index_t > & | borrowReducedDegreesOfFreedomTarget () const |
const index_t * | borrowTargetReducedNodes () const |
const index_t * | borrowTargetDegreesOfFreedom () const |
const index_t * | borrowTargetNodes () const |
const index_t * | borrowTargetReducedDegreesOfFreedom () const |
void | createNodeMappings (const std::vector< index_t > &indexReducedNodes, const std::vector< index_t > &dofDistribution, const std::vector< index_t > &nodeDistribution) |
dim_t | createDenseDOFLabeling () |
dim_t | createDenseNodeLabeling (std::vector< index_t > &nodeDistribution, const std::vector< index_t > &dofDistribution) |
dim_t | createDenseReducedLabeling (const std::vector< short > &reducedMask, bool useNodes) |
void | assignMPIRankToDOFs (std::vector< int > &mpiRankOfDOF, const std::vector< index_t > &distribution) |
void | copyTable (index_t offset, index_t idOffset, index_t dofOffset, const NodeFile *in) |
void | gather (const index_t *index, const NodeFile *in) |
void | gather_global (const index_t *index, const NodeFile *in) |
void | scatter (const index_t *index, const NodeFile *in) |
void | setCoordinates (const escript::Data &newX) |
copies the array newX into this->coordinates More... | |
void | setTags (const int newTag, const escript::Data &mask) |
sets tags to newTag where mask>0 More... | |
void | updateTagList () |
std::pair< index_t, index_t > | getDOFRange () const |
Private Member Functions | |
std::pair< index_t, index_t > | getGlobalIdRange () const |
std::pair< index_t, index_t > | getGlobalDOFRange () const |
std::pair< index_t, index_t > | getGlobalNodeIDIndexRange () const |
dim_t | prepareLabeling (const std::vector< short > &mask, std::vector< index_t > &buffer, std::vector< index_t > &distribution, bool useNodes) |
void | createDOFMappingAndCoupling (bool reduced) |
Private Attributes | |
NodeMapping | nodesMapping |
finley::NodeFile::NodeFile | ( | int | nDim, |
esysUtils::JMPI & | mpiInfo | ||
) |
constructor use NodeFile::allocTable to allocate the node table (Id,Coordinates)
References MPIInfo.
finley::NodeFile::~NodeFile | ( | ) |
destructor
References freeTable().
void finley::NodeFile::allocTable | ( | dim_t | numNodes | ) |
allocates the node table within this node file to hold NN nodes.
References Coordinates, degreesOfFreedomId, freeTable(), globalDegreesOfFreedom, globalNodesIndex, globalReducedDOFIndex, globalReducedNodesIndex, Id, INDEX2, numDim, numNodes, reducedDegreesOfFreedomId, reducedNodesId, and Tag.
Referenced by finley::getNodesMaster(), finley::getNodesSlave(), finley::Mesh::glueFaces(), finley::loadMesh(), finley::Mesh_merge(), finley::Mesh::read(), finley::RectangularMesh_Hex20(), finley::RectangularMesh_Hex8(), finley::RectangularMesh_Rec4(), finley::RectangularMesh_Rec8(), and finley::Mesh::resolveNodeIds().
void finley::NodeFile::assignMPIRankToDOFs | ( | std::vector< int > & | mpiRankOfDOF, |
const std::vector< index_t > & | distribution | ||
) |
References getDOFRange(), globalDegreesOfFreedom, MPIInfo, and numNodes.
Referenced by finley::Mesh::distributeByRankOfDOF().
|
inline |
References degreesOfFreedomMapping, and finley::NodeMapping::map.
Referenced by finley::Assemble_CopyNodalData().
|
inline |
References globalNodesIndex.
Referenced by finley::MeshAdapter::ownSample().
|
inline |
References globalReducedNodesIndex.
|
inline |
References finley::NodeMapping::map, and nodesMapping.
|
inline |
References finley::NodeMapping::map, and reducedDegreesOfFreedomMapping.
Referenced by finley::Assemble_CopyNodalData().
|
inline |
References finley::NodeMapping::map, and reducedNodesMapping.
Referenced by finley::Assemble_CopyNodalData().
|
inline |
|
inline |
References nodesMapping, and finley::NodeMapping::target.
Referenced by finley::Assemble_interpolate().
|
inline |
|
inline |
References reducedNodesMapping, and finley::NodeMapping::target.
Referenced by finley::Assemble_CopyNodalData(), finley::Assemble_gradient(), and finley::Assemble_interpolate().
void finley::NodeFile::copyTable | ( | index_t | offset, |
index_t | idOffset, | ||
index_t | dofOffset, | ||
const NodeFile * | in | ||
) |
References Coordinates, globalDegreesOfFreedom, Id, INDEX2, MEMORY_ERROR, numDim, numNodes, finley::setError(), Tag, and TYPE_ERROR.
Referenced by finley::Mesh_merge().
dim_t finley::NodeFile::createDenseDOFLabeling | ( | ) |
References ESYS_MPI_INC_COUNTER, globalDegreesOfFreedom, esysUtils::mod_rank(), MPI_SUM, MPIInfo, numNodes, prepareLabeling(), and status.
Referenced by finley::Mesh::prepare().
dim_t finley::NodeFile::createDenseNodeLabeling | ( | std::vector< index_t > & | nodeDistribution, |
const std::vector< index_t > & | dofDistribution | ||
) |
References ESYS_MPI_INC_COUNTER, globalDegreesOfFreedom, globalNodesIndex, Id, esysUtils::mod_rank(), MPI_MAX, MPIInfo, numNodes, and status.
Referenced by finley::Mesh::prepare().
dim_t finley::NodeFile::createDenseReducedLabeling | ( | const std::vector< short > & | reducedMask, |
bool | useNodes | ||
) |
References ESYS_MPI_INC_COUNTER, globalDegreesOfFreedom, globalNodesIndex, globalReducedDOFIndex, globalReducedNodesIndex, esysUtils::mod_rank(), MPI_SUM, MPIInfo, numNodes, prepareLabeling(), and status.
Referenced by finley::Mesh::prepare().
|
private |
References finley::NodeMapping::assign(), degreesOfFreedomConnector, degreesOfFreedomDistribution, degreesOfFreedomMapping, ESYS_MPI_INC_COUNTER, finley::util::getFlaggedMinMaxInt(), globalDegreesOfFreedom, globalReducedDOFIndex, MPIInfo, finley::noError(), numNodes, reducedDegreesOfFreedomConnector, reducedDegreesOfFreedomDistribution, reducedDegreesOfFreedomMapping, finley::setError(), SYSTEM_ERROR, and UNUSED.
Referenced by createNodeMappings().
void finley::NodeFile::createNodeMappings | ( | const std::vector< index_t > & | indexReducedNodes, |
const std::vector< index_t > & | dofDistribution, | ||
const std::vector< index_t > & | nodeDistribution | ||
) |
References finley::NodeMapping::assign(), createDOFMappingAndCoupling(), degreesOfFreedomConnector, degreesOfFreedomDistribution, degreesOfFreedomId, degreesOfFreedomMapping, finley::NodeMapping::getNumTargets(), globalDegreesOfFreedom, globalNodesIndex, Id, finley::NodeMapping::map, MPIInfo, nodesDistribution, nodesMapping, finley::noError(), numNodes, finley::util::packMask(), reducedDegreesOfFreedomConnector, reducedDegreesOfFreedomDistribution, reducedDegreesOfFreedomId, reducedDegreesOfFreedomMapping, reducedNodesDistribution, reducedNodesId, reducedNodesMapping, and UNUSED.
Referenced by finley::Mesh::createMappings(), and finley::Mesh::prepare().
void finley::NodeFile::freeTable | ( | ) |
frees the node table within this node file
References finley::NodeMapping::clear(), Coordinates, degreesOfFreedomConnector, degreesOfFreedomDistribution, degreesOfFreedomId, degreesOfFreedomMapping, globalDegreesOfFreedom, globalNodesIndex, globalReducedDOFIndex, globalReducedNodesIndex, Id, nodesDistribution, nodesMapping, numNodes, reducedDegreesOfFreedomConnector, reducedDegreesOfFreedomDistribution, reducedDegreesOfFreedomId, reducedDegreesOfFreedomMapping, reducedNodesDistribution, reducedNodesId, reducedNodesMapping, Tag, and tagsInUse.
Referenced by allocTable(), and ~NodeFile().
gathers this NodeFile from the NodeFile 'in' using the entries in index[0:out->numNodes-1] which are between min_index and max_index (exclusive)
References Coordinates, finley::gatherEntries(), getGlobalIdRange(), globalDegreesOfFreedom, Id, numDim, numNodes, and Tag.
Referenced by finley::Mesh::glueFaces().
References Coordinates, ESYS_MPI_INC_COUNTER, esysUtils::Esys_MPIInfo_noError(), finley::gatherEntries(), getGlobalIdRange(), globalDegreesOfFreedom, Id, esysUtils::mod_rank(), MPI_DOUBLE, MPI_INT, MPIInfo, numDim, numNodes, finley::scatterEntries(), finley::setError(), status, Tag, and VALUE_ERROR.
Referenced by finley::Mesh::resolveNodeIds().
References finley::util::getMinMaxInt(), globalDegreesOfFreedom, and numNodes.
Referenced by assignMPIRankToDOFs(), and finley::Mesh::distributeByRankOfDOF().
|
inline |
References nodesDistribution.
Referenced by finley::MeshAdapter::ownSample().
|
inline |
References reducedNodesDistribution.
References finley::util::getMinMaxInt(), globalDegreesOfFreedom, MPI_MAX, MPIInfo, and numNodes.
Referenced by prepareLabeling().
References finley::util::getMinMaxInt(), Id, MPI_MAX, MPIInfo, and numNodes.
Referenced by gather(), and gather_global().
References finley::util::getMinMaxInt(), globalNodesIndex, MPI_MAX, MPIInfo, and numNodes.
Referenced by prepareLabeling().
|
inline |
References nodesDistribution.
|
inline |
References reducedNodesDistribution.
|
inline |
References nodesDistribution.
Referenced by finley::MeshAdapter::ownSample().
|
inline |
References reducedNodesDistribution.
|
inline |
|
inline |
returns the number of FEM nodes
References numNodes.
Referenced by finley::Assemble_CopyNodalData(), finley::Assemble_gradient(), finley::Assemble_interpolate(), and finley::MeshAdapter::getDataShape().
|
inline |
|
inline |
|
private |
References getGlobalDOFRange(), getGlobalNodeIDIndexRange(), globalDegreesOfFreedom, globalNodesIndex, esysUtils::mod_rank(), MPIInfo, numNodes, and status.
Referenced by createDenseDOFLabeling(), and createDenseReducedLabeling().
void finley::NodeFile::print | ( | void | ) | const |
References Coordinates, degreesOfFreedomMapping, globalDegreesOfFreedom, Id, INDEX2, nodesMapping, numDim, numNodes, reducedDegreesOfFreedomMapping, reducedNodesMapping, Tag, and finley::NodeMapping::target.
Referenced by finley::Mesh::print().
scatters the NodeFile in into this NodeFile using index[0:in->numNodes-1]. index has to be between 0 and numNodes-1. colouring is chosen for the worst case
References Coordinates, globalDegreesOfFreedom, Id, numDim, numNodes, finley::scatterEntries(), and Tag.
void finley::NodeFile::setCoordinates | ( | const escript::Data & | newX | ) |
copies the array newX into this->coordinates
References Coordinates, escript::Data::getDataPointSize(), escript::Data::getNumDataPointsPerSample(), escript::Data::getNumSamples(), escript::Data::getSampleDataRO(), INDEX2, numDim, numNodes, finley::setError(), status, and VALUE_ERROR.
Referenced by finley::Mesh::setCoordinates().
void finley::NodeFile::setTags | ( | const int | newTag, |
const escript::Data & | mask | ||
) |
sets tags to newTag where mask>0
References escript::Data::getDataPointSize(), escript::Data::getNumDataPointsPerSample(), escript::Data::getNumSamples(), escript::Data::getSampleDataRO(), numNodes, finley::resetError(), finley::setError(), Tag, TYPE_ERROR, and updateTagList().
Referenced by finley::MeshAdapter::setTags().
|
inline |
References MPIInfo, numNodes, finley::util::setValuesInUse(), Tag, and tagsInUse.
Referenced by finley::loadMesh(), setTags(), and finley::Mesh::updateTagList().
double* finley::NodeFile::Coordinates |
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Referenced by finley::Mesh::addPoints(), allocTable(), finley::Assemble_getNormal(), finley::Assemble_getSize(), finley::Assemble_NodeCoordinates(), finley::ElementFile::borrowJacobians(), copyTable(), finley::MeshAdapter::dump(), finley::Mesh::findMatchingFaces(), freeTable(), gather(), gather_global(), finley::getNodesMaster(), finley::getNodesSlave(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), finley::Mesh::optimizeDOFDistribution(), print(), finley::Mesh::printInfo(), finley::Mesh::read(), finley::RectangularMesh_Hex20(), finley::RectangularMesh_Hex8(), finley::RectangularMesh_Rec4(), finley::RectangularMesh_Rec8(), scatter(), setCoordinates(), and finley::Mesh::write().
paso::Connector_ptr finley::NodeFile::degreesOfFreedomConnector |
paso::Distribution_ptr finley::NodeFile::degreesOfFreedomDistribution |
index_t* finley::NodeFile::degreesOfFreedomId |
Referenced by allocTable(), finley::MeshAdapter::borrowSampleReferenceIDs(), createNodeMappings(), and freeTable().
NodeMapping finley::NodeFile::degreesOfFreedomMapping |
index_t* finley::NodeFile::globalDegreesOfFreedom |
globalDegreesOfFreedom[i] is the global degree of freedom assigned to node i. This index is used to consider periodic boundary conditions by assigning the same degreesOfFreedom to the same node.
Referenced by finley::Mesh::addPoints(), allocTable(), assignMPIRankToDOFs(), copyTable(), createDenseDOFLabeling(), createDenseNodeLabeling(), createDenseReducedLabeling(), createDOFMappingAndCoupling(), createNodeMappings(), finley::Mesh::distributeByRankOfDOF(), finley::MeshAdapter::dump(), freeTable(), gather(), gather_global(), getDOFRange(), getGlobalDOFRange(), finley::getNodesMaster(), finley::getNodesSlave(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), finley::Mesh::markDOFsConnectedToRange(), finley::Mesh::optimizeDOFDistribution(), finley::Mesh::optimizeDOFLabeling(), prepareLabeling(), print(), finley::Mesh::printInfo(), finley::Mesh::read(), finley::RectangularMesh_Hex20(), finley::RectangularMesh_Hex8(), finley::RectangularMesh_Rec4(), finley::RectangularMesh_Rec8(), scatter(), and finley::Mesh::write().
index_t* finley::NodeFile::globalNodesIndex |
assigns each local reduced node a global unique Id in a dense labeling
Referenced by allocTable(), borrowGlobalNodesIndex(), createDenseNodeLabeling(), createDenseReducedLabeling(), createNodeMappings(), finley::MeshAdapter::dump(), freeTable(), getGlobalNodeIDIndexRange(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), prepareLabeling(), and finley::Mesh::printInfo().
index_t* finley::NodeFile::globalReducedDOFIndex |
assigns each local node a global unique Id in a dense labeling of reduced DOF. Value <0 indicates that the DOF is not used.
Referenced by finley::Mesh::addPoints(), allocTable(), createDenseReducedLabeling(), createDOFMappingAndCoupling(), finley::MeshAdapter::dump(), freeTable(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), finley::Mesh::markDOFsConnectedToRange(), and finley::Mesh::printInfo().
index_t* finley::NodeFile::globalReducedNodesIndex |
assigns each local node a global unique Id in a dense labeling. Value <0 indicates that the DOF is not used
Referenced by allocTable(), borrowGlobalReducedNodesIndex(), createDenseReducedLabeling(), finley::MeshAdapter::dump(), freeTable(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), and finley::Mesh::printInfo().
index_t* finley::NodeFile::Id |
Id[i] is the id number of node i. It needs to be unique.
Referenced by finley::Mesh::addPoints(), allocTable(), finley::MeshAdapter::borrowSampleReferenceIDs(), copyTable(), createDenseNodeLabeling(), createNodeMappings(), finley::Mesh::distributeByRankOfDOF(), finley::MeshAdapter::dump(), freeTable(), gather(), gather_global(), getGlobalIdRange(), finley::getNodesMaster(), finley::getNodesSlave(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), print(), finley::Mesh::print(), finley::Mesh::printElementInfo(), finley::Mesh::printInfo(), finley::Mesh::read(), finley::RectangularMesh_Hex20(), finley::RectangularMesh_Hex8(), finley::RectangularMesh_Rec4(), finley::RectangularMesh_Rec8(), scatter(), finley::Mesh::write(), and finley::Mesh::writeElementInfo().
esysUtils::JMPI finley::NodeFile::MPIInfo |
MPI information.
Referenced by finley::Assemble_CopyNodalData(), finley::Assemble_integrate(), assignMPIRankToDOFs(), createDenseDOFLabeling(), createDenseNodeLabeling(), createDenseReducedLabeling(), createDOFMappingAndCoupling(), createNodeMappings(), gather_global(), getGlobalDOFRange(), getGlobalIdRange(), getGlobalNodeIDIndexRange(), weipa::FinleyNodes::initFromFinley(), NodeFile(), prepareLabeling(), and updateTagList().
paso::Distribution_ptr finley::NodeFile::nodesDistribution |
|
private |
Referenced by borrowNodesTarget(), borrowTargetNodes(), createNodeMappings(), freeTable(), and print().
int finley::NodeFile::numDim |
number of spatial dimensions
Referenced by allocTable(), finley::Assemble_getNormal(), finley::Assemble_getSize(), finley::Assemble_NodeCoordinates(), finley::ElementFile::borrowJacobians(), copyTable(), finley::MeshAdapter::dump(), finley::Mesh::findMatchingFaces(), gather(), gather_global(), finley::Mesh::glueFaces(), weipa::FinleyNodes::initFromFinley(), finley::Mesh::optimizeDOFDistribution(), print(), scatter(), and setCoordinates().
dim_t finley::NodeFile::numNodes |
number of nodes
Referenced by finley::Mesh::addPoints(), allocTable(), finley::Assemble_CopyNodalData(), finley::Assemble_NodeCoordinates(), assignMPIRankToDOFs(), copyTable(), createDenseDOFLabeling(), createDenseNodeLabeling(), createDenseReducedLabeling(), createDOFMappingAndCoupling(), finley::Mesh::createMappings(), createNodeMappings(), finley::Mesh::distributeByRankOfDOF(), finley::MeshAdapter::dump(), freeTable(), gather(), gather_global(), getDOFRange(), getGlobalDOFRange(), getGlobalIdRange(), getGlobalNodeIDIndexRange(), getNumNodes(), finley::Mesh::glueFaces(), weipa::FinleyNodes::initFromFinley(), finley::Mesh::optimizeDOFDistribution(), finley::Mesh::optimizeDOFLabeling(), finley::Mesh::prepare(), prepareLabeling(), print(), finley::Mesh::printInfo(), scatter(), setCoordinates(), setTags(), updateTagList(), and finley::Mesh::write().
paso::Connector_ptr finley::NodeFile::reducedDegreesOfFreedomConnector |
paso::Distribution_ptr finley::NodeFile::reducedDegreesOfFreedomDistribution |
index_t* finley::NodeFile::reducedDegreesOfFreedomId |
Referenced by allocTable(), finley::MeshAdapter::borrowSampleReferenceIDs(), createNodeMappings(), and freeTable().
NodeMapping finley::NodeFile::reducedDegreesOfFreedomMapping |
paso::Distribution_ptr finley::NodeFile::reducedNodesDistribution |
Referenced by createNodeMappings(), freeTable(), getFirstReducedNode(), getGlobalNumReducedNodes(), and getLastReducedNode().
index_t* finley::NodeFile::reducedNodesId |
these are the packed versions of Id
Referenced by allocTable(), finley::MeshAdapter::borrowSampleReferenceIDs(), createNodeMappings(), and freeTable().
NodeMapping finley::NodeFile::reducedNodesMapping |
Referenced by borrowReducedNodesTarget(), borrowTargetReducedNodes(), createNodeMappings(), freeTable(), getNumReducedNodes(), and print().
int finley::NodeFile::status |
the status counts the updates done on the node coordinates. The value is increased by 1 when the node coordinates are updated.
Referenced by finley::ElementFile::borrowJacobians(), createDenseDOFLabeling(), createDenseNodeLabeling(), createDenseReducedLabeling(), gather_global(), prepareLabeling(), and setCoordinates().
int* finley::NodeFile::Tag |
Tag[i] is the tag of node i.
Referenced by allocTable(), copyTable(), finley::MeshAdapter::dump(), freeTable(), gather(), gather_global(), finley::getNodesMaster(), finley::getNodesSlave(), finley::MeshAdapter::getTagFromSampleNo(), weipa::FinleyNodes::initFromFinley(), finley::loadMesh(), print(), finley::Mesh::printInfo(), finley::Mesh::read(), finley::RectangularMesh_Hex20(), finley::RectangularMesh_Hex8(), finley::RectangularMesh_Rec4(), finley::RectangularMesh_Rec8(), scatter(), setTags(), updateTagList(), and finley::Mesh::write().
std::vector<int> finley::NodeFile::tagsInUse |
vector of tags which are actually used
Referenced by finley::MeshAdapter::borrowListOfTagsInUse(), freeTable(), finley::MeshAdapter::getNumberOfTagsInUse(), and updateTagList().