escript  Revision_
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
dudley::NodeFile Class Reference

#include <NodeFile.h>

Public Member Functions

 NodeFile (int nDim, escript::JMPI MPIInfo)
 
 ~NodeFile ()
 destructor More...
 
void allocTable (dim_t numNodes)
 allocates the node table within this node file to hold numNodes nodes. More...
 
void freeTable ()
 empties the node table and frees all memory More...
 
void print () const
 
index_t getFirstNode () const
 
index_t getLastNode () const
 
dim_t getGlobalNumNodes () const
 
const index_t * borrowGlobalNodesIndex () const
 
dim_t getNumNodes () const
 returns the number of FEM nodes (on this rank) More...
 
dim_t getNumDegreesOfFreedom () const
 returns the number of degrees of freedom (on this rank) More...
 
dim_t getNumDegreesOfFreedomTargets () const
 returns the number of degrees of freedom targets (own and shared) More...
 
const index_t * borrowNodesTarget () const
 returns the mapping from target to the local nodes More...
 
const index_t * borrowDegreesOfFreedomTarget () const
 returns the mapping from target to the local degrees of freedom More...
 
const index_t * borrowTargetDegreesOfFreedom () const
 returns the mapping from local degrees of freedom to a target More...
 
const index_t * borrowTargetNodes () const
 returns the mapping from local nodes to a target More...
 
void updateTagList ()
 
dim_t createDenseDOFLabeling ()
 
dim_t createDenseNodeLabeling (IndexVector &nodeDistribution, const IndexVector &dofDistribution)
 
void createNodeMappings (const IndexVector &dofDistribution, const IndexVector &nodeDistribution)
 
void assignMPIRankToDOFs (int *mpiRankOfDOF, const IndexVector &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 setCoordinates (const escript::Data &newX)
 
void setTags (int newTag, const escript::Data &mask)
 set tags to newTag where mask > 0 More...
 
std::pair< index_t, index_t > getDOFRange () const
 

Public Attributes

escript::JMPI MPIInfo
 MPI information. More...
 
int numDim
 number of spatial dimensions More...
 
index_t * Id
 Id[i] is the unique ID number of FEM node i. More...
 
int * Tag
 Tag[i] is the tag of node i. More...
 
std::vector< int > tagsInUse
 vector of tags which are actually used More...
 
index_t * globalDegreesOfFreedom
 
double * Coordinates
 Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i. More...
 
index_t * globalNodesIndex
 assigns each local node a global unique ID in a dense labeling More...
 
escript::Distribution_ptr nodesDistribution
 MPI distribution of nodes. More...
 
escript::Distribution_ptr dofDistribution
 MPI distribution of degrees of freedom. More...
 
index_t * degreesOfFreedomId
 
int status
 

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, IndexVector &buffer, IndexVector &distribution, bool useNodes)
 
void createDOFMappingAndCoupling ()
 

Private Attributes

NodeMapping nodesMapping
 
NodeMapping degreesOfFreedomMapping
 
dim_t numNodes
 number of nodes More...
 

Constructor & Destructor Documentation

◆ NodeFile()

dudley::NodeFile::NodeFile ( int  nDim,
escript::JMPI  MPIInfo 
)

constructor - creates empty node file. Use allocTable() to allocate the node table (Id,Coordinates).

◆ ~NodeFile()

dudley::NodeFile::~NodeFile ( )

destructor

References freeTable().

Member Function Documentation

◆ allocTable()

void dudley::NodeFile::allocTable ( dim_t  numNodes)

◆ assignMPIRankToDOFs()

void dudley::NodeFile::assignMPIRankToDOFs ( int *  mpiRankOfDOF,
const IndexVector &  distribution 
)

◆ borrowDegreesOfFreedomTarget()

const index_t * dudley::NodeFile::borrowDegreesOfFreedomTarget ( ) const
inline

returns the mapping from target to the local degrees of freedom

Referenced by dudley::Assemble_CopyNodalData().

◆ borrowGlobalNodesIndex()

const index_t * dudley::NodeFile::borrowGlobalNodesIndex ( ) const
inline

◆ borrowNodesTarget()

const index_t * dudley::NodeFile::borrowNodesTarget ( ) const
inline

returns the mapping from target to the local nodes

◆ borrowTargetDegreesOfFreedom()

const index_t * dudley::NodeFile::borrowTargetDegreesOfFreedom ( ) const
inline

◆ borrowTargetNodes()

const index_t * dudley::NodeFile::borrowTargetNodes ( ) const
inline

returns the mapping from local nodes to a target

Referenced by dudley::Assemble_interpolate().

◆ copyTable()

void dudley::NodeFile::copyTable ( index_t  offset,
index_t  idOffset,
index_t  dofOffset,
const NodeFile in 
)

◆ createDenseDOFLabeling()

dim_t dudley::NodeFile::createDenseDOFLabeling ( )

creates a dense labeling of the global degrees of freedom and returns the new number of global degrees of freedom

References createDenseNodeLabeling(), dofDistribution, getGlobalDOFRange(), globalDegreesOfFreedom, globalNodesIndex, Id, escript::DataTypes::index_t_max(), escript::DataTypes::index_t_min(), MPI_MAX, MPI_SUM, MPIInfo, numNodes, and status.

Referenced by dudley::DudleyDomain::prepare().

◆ createDenseNodeLabeling()

dim_t dudley::NodeFile::createDenseNodeLabeling ( IndexVector &  nodeDistribution,
const IndexVector &  dofDistribution 
)

◆ createDOFMappingAndCoupling()

void dudley::NodeFile::createDOFMappingAndCoupling ( )
private

◆ createNodeMappings()

void dudley::NodeFile::createNodeMappings ( const IndexVector &  dofDistribution,
const IndexVector &  nodeDistribution 
)

◆ freeTable()

void dudley::NodeFile::freeTable ( )

◆ gather()

void dudley::NodeFile::gather ( const index_t *  index,
const NodeFile in 
)

gathers nodes from the NodeFile in using the entries in index[0:numNodes-1] which are between min_index and max_index (exclusive)

References Coordinates, dudley::gatherEntries(), getGlobalIdRange(), globalDegreesOfFreedom, Id, numDim, numNodes, and Tag.

◆ gather_global()

void dudley::NodeFile::gather_global ( const index_t *  index,
const NodeFile in 
)

◆ getDOFRange()

std::pair< index_t, index_t > dudley::NodeFile::getDOFRange ( ) const

◆ getFirstNode()

index_t dudley::NodeFile::getFirstNode ( ) const
inline

◆ getGlobalDOFRange()

std::pair< index_t, index_t > dudley::NodeFile::getGlobalDOFRange ( ) const
private

◆ getGlobalIdRange()

std::pair< index_t, index_t > dudley::NodeFile::getGlobalIdRange ( ) const
private

References dudley::getGlobalRange(), Id, MPIInfo, and numNodes.

Referenced by gather(), and gather_global().

◆ getGlobalNodeIDIndexRange()

std::pair< index_t, index_t > dudley::NodeFile::getGlobalNodeIDIndexRange ( ) const
private

◆ getGlobalNumNodes()

dim_t dudley::NodeFile::getGlobalNumNodes ( ) const
inline

◆ getLastNode()

index_t dudley::NodeFile::getLastNode ( ) const
inline

◆ getNumDegreesOfFreedom()

dim_t dudley::NodeFile::getNumDegreesOfFreedom ( ) const
inline

◆ getNumDegreesOfFreedomTargets()

dim_t dudley::NodeFile::getNumDegreesOfFreedomTargets ( ) const
inline

returns the number of degrees of freedom targets (own and shared)

Referenced by dudley::DudleyDomain::createMappings().

◆ getNumNodes()

dim_t dudley::NodeFile::getNumNodes ( ) const
inline

◆ prepareLabeling()

dim_t dudley::NodeFile::prepareLabeling ( const std::vector< short > &  mask,
IndexVector &  buffer,
IndexVector &  distribution,
bool  useNodes 
)
private

◆ print()

void dudley::NodeFile::print ( void  ) const

◆ setCoordinates()

void dudley::NodeFile::setCoordinates ( const escript::Data newX)

◆ setTags()

void dudley::NodeFile::setTags ( int  newTag,
const escript::Data mask 
)

◆ updateTagList()

void dudley::NodeFile::updateTagList ( )
inline

Member Data Documentation

◆ Coordinates

double* dudley::NodeFile::Coordinates

◆ degreesOfFreedomId

index_t* dudley::NodeFile::degreesOfFreedomId

◆ degreesOfFreedomMapping

NodeMapping dudley::NodeFile::degreesOfFreedomMapping
private

◆ dofDistribution

escript::Distribution_ptr dudley::NodeFile::dofDistribution

◆ globalDegreesOfFreedom

index_t* dudley::NodeFile::globalDegreesOfFreedom

◆ globalNodesIndex

index_t* dudley::NodeFile::globalNodesIndex

◆ Id

index_t* dudley::NodeFile::Id

◆ MPIInfo

escript::JMPI dudley::NodeFile::MPIInfo

◆ nodesDistribution

escript::Distribution_ptr dudley::NodeFile::nodesDistribution

◆ nodesMapping

NodeMapping dudley::NodeFile::nodesMapping
private

◆ numDim

int dudley::NodeFile::numDim

◆ numNodes

dim_t dudley::NodeFile::numNodes
private

◆ status

int dudley::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 dudley::ElementFile::borrowJacobians(), createDenseDOFLabeling(), gather_global(), dudley::DudleyDomain::getStatus(), and setCoordinates().

◆ Tag

int* dudley::NodeFile::Tag

◆ tagsInUse

std::vector<int> dudley::NodeFile::tagsInUse

vector of tags which are actually used

Referenced by dudley::DudleyDomain::borrowListOfTagsInUse(), and dudley::DudleyDomain::getNumberOfTagsInUse().


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