PPL Logo

FEM_Entity Class Reference
[ParFUM Unstructured Mesh Framework]

Describes an entire class of "entities"--nodes, elements, or sparse data records. More...

#include <fem_mesh.h>

Inheritance diagram for FEM_Entity:

Inheritance graph
[legend]
Collaboration diagram for FEM_Entity:

Collaboration graph
[legend]

Public Member Functions

 FEM_Entity (FEM_Entity *ghost_)
void pup (PUP::er &p)
virtual ~FEM_Entity ()
bool isGhost (void) const
 Return true if we're a ghost.
FEM_EntitygetGhost (void)
 Switch from this, a real entity, to the ghosts:.
const FEM_EntitygetGhost (void) const
int size (void) const
 Return the number of entities of this type.
int realsize (void) const
int getMax ()
virtual const char * getName (void) const =0
 Return the human-readable name of this entity type, like "node".
void copyShape (const FEM_Entity &src)
 Copy all our attributes' widths and data types from this entity.
void setLength (int newlen)
 The user is setting this many entities.
void setMaxLength (int newLen, int newMaxLen, void *args, FEM_Mesh_alloc_fn fn)
 Support for registration API Set the current length and maximum length for this entity.
void copyEntity (int dstEntity, const FEM_Entity &src, int srcEntity)
 Copy everything associated with src[srcEntity] into our dstEntity.
int push_back (const FEM_Entity &src, int srcEntity)
 Add room for one more entity, with initial values from src[srcEntity], and return the new entity's index.
FEM_Attributelookup (int attr, const char *caller)
 Find this attribute (from an FEM_ATTR code) of this entity, or create the entity (using the create method below) or abort if it's not found.
int getAttrs (int *attrs) const
 Get a list of the attribute numbers for this entity.
void allocateValid ()
 Allocate or Modify the FEM_IS_VALID attribute data.
void set_valid (unsigned int idx, bool isNode)
void set_invalid (unsigned int idx, bool isNode)
int is_valid (unsigned int idx)
unsigned int count_valid ()
 Linear scan to count valid entities.
unsigned int get_next_invalid (FEM_Mesh *m, bool isNode, bool isGhost)
 Get an entry(entity index) that corresponds to an invalid entity The invalid slot in the tables can then be reused when "creating" a new element or node We either return an empty slot, or resize the array and return a value at the end If someone has a better name for this function, please change it.
virtual bool hasConn (unsigned int idx)=0
void set_coord (int idx, double x, double y)
 Set the coordinates for a single item.
void set_coord (int idx, double x, double y, double z)
CkVec< FEM_Attribute * > * getAttrVec ()
 expose the attribute vector for refining
FEM_DataAttribute * getCoord (void)
const FEM_DataAttribute * getCoord (void) const
const FEM_Symmetries_tgetSymmetries (void) const
FEM_Symmetries_t getSymmetries (int r) const
void setSymmetries (int r, FEM_Symmetries_t s)
bool hasGlobalno (void) const
int getGlobalno (int r) const
void setGlobalno (int r, int g)
void setAscendingGlobalno (void)
void setAscendingGlobalno (int base)
void copyOldGlobalno (const FEM_Entity &e)
bool hasMeshSizing (void) const
double getMeshSizing (int r)
void setMeshSizing (int r, double s)
void setMeshSizing (double *sf)
FEM_CommsetGhostSend (void)
const FEM_CommgetGhostSend (void) const
FEM_CommsetGhostRecv (void)
const FEM_CommgetGhostRecv (void) const
void addVarIndexAttribute (int code)
void print (const char *type, const IDXL_Print_Map &map)
 FEM_Entity (FEM_Entity *ghost_)
void pup (PUP::er &p)
virtual ~FEM_Entity ()
bool isGhost (void) const
 Return true if we're a ghost.
FEM_EntitygetGhost (void)
 Switch from this, a real entity, to the ghosts:.
const FEM_EntitygetGhost (void) const
void clearGhost ()
int size (void) const
 Return the number of entities of this type.
int realsize (void) const
int getMax ()
virtual const char * getName (void) const =0
 Return the human-readable name of this entity type, like "node".
void copyShape (const FEM_Entity &src)
 Copy all our attributes' widths and data types from this entity.
void setLength (int newlen, bool f=false)
 The user is setting this many entities.
void reserveLength (int newlen)
 Attempt to set max and resize all associated attributes.
void setMaxLength (int newLen, int newMaxLen, void *args, FEM_Mesh_alloc_fn fn)
 Support for registration API Set the current length and maximum length for this entity.
void copyEntity (int dstEntity, const FEM_Entity &src, int srcEntity)
 Copy everything associated with src[srcEntity] into our dstEntity.
int push_back (const FEM_Entity &src, int srcEntity)
 Add room for one more entity, with initial values from src[srcEntity], and return the new entity's index.
FEM_Attributelookup (int attr, const char *caller)
 Find this attribute (from an FEM_ATTR code) of this entity, or create the entity (using the create method below) or abort if it's not found.
int getAttrs (int *attrs) const
 Get a list of the attribute numbers for this entity.
void allocateValid ()
 Allocate or Modify the FEM_IS_VALID attribute data.
void set_valid (int idx, bool isNode=false)
void set_invalid (int idx, bool isNode=false)
int is_valid (int idx)
 Determine if an index refers to a valid non-ghost entity.
int is_valid_any_idx (int idx)
 Determine if an index refers to a valid entity, with negatives corresponding to a valid ghost.
int is_valid_nonghost_idx (int idx)
 Determine if an index refers to a valid non-ghost entity.
int count_valid ()
int get_next_invalid (FEM_Mesh *m=NULL, bool isNode=false, bool isGhost=false)
void set_all_invalid ()
int isBoundary (int idx)
virtual bool hasConn (int idx)=0
void set_coord (int idx, double x, double y)
 Set the coordinates for a single item.
void set_coord (int idx, double x, double y, double z)
void get_coord (int idx, double &x, double &y)
 Get coordinates for a given 2-D node, if idx<0 the corresponding ghost node is used.
void get_coord (int idx, double &x, double &y, double &z)
 Get coordinates for a given 3-D node, if idx<0 the corresponding ghost node is used.
CkVec< FEM_Attribute * > * getAttrVec ()
 Expose the attribute vector for refining.
FEM_DataAttribute * getCoord (void)
const FEM_DataAttribute * getCoord (void) const
const FEM_Symmetries_tgetSymmetries (void) const
FEM_Symmetries_t getSymmetries (int r) const
void setSymmetries (int r, FEM_Symmetries_t s)
bool hasGlobalno (void) const
int getGlobalno (int r) const
void setGlobalno (int r, int g)
void setAscendingGlobalno (void)
void setAscendingGlobalno (int base)
void copyOldGlobalno (const FEM_Entity &e)
bool hasMeshSizing (void) const
double getMeshSizing (int r)
void setMeshSizing (int r, double s)
void setMeshSizing (double *sf)
FEM_CommsetGhostSend (void)
const FEM_CommgetGhostSend (void) const
FEM_CommsetGhostRecv (void)
const FEM_CommgetGhostRecv (void) const
void addVarIndexAttribute (int code)
void print (const char *type, const IDXL_Print_Map &map)

Data Fields

FEM_Entityghost
FEM_Comm ghostSend
FEM_Comm ghostRecv
FEM_Comm_Holder ghostIDXL
FEM_Entityghost

Protected Member Functions

virtual void create (int attr, const char *caller)
 lookup of this attribute code has failed: check if it needs to be demand-created.
void add (FEM_Attribute *attribute)
 Add this attribute to this kind of Entity.
virtual void create (int attr, const char *caller)
 lookup of this attribute code has failed: check if it needs to be demand-created.
void add (FEM_Attribute *attribute)
 Add this attribute to this kind of Entity.

Private Types

typedef CkVec< FEM_Symmetries_tsym_t
typedef CkVec< FEM_Symmetries_tsym_t
 symmetries

Private Member Functions

void allocateCoord (void)
void allocateSym (void)
void allocateGlobalno (void)
void allocateBoundary ()
void allocateMeshSizing (void)
void allocateCoord (void)
void allocateSym (void)
void allocateGlobalno (void)
void allocateBoundary ()
void allocateMeshSizing (void)

Private Attributes

int length
 Number of entities of our type currently in the mesh.
int max
 Maximum number of entities of our type in the mesh that will be allowed.
FEM_Mesh_alloc_fn resize
 should be a function pointer to the actual resize function later
void * args
CkVec< FEM_Attribute * > attributes
 This is our main list of attributes-- everything about each of our entities is in this list of attributes.
FEM_DataAttribute * coord
 Coordinates of each entity, from FEM_COORD.
FEM_DataAttribute * sym
 Symmetries of each entity, from FEM_SYMMETRIES.
FEM_IndexAttribute * globalno
 Global numbers of each entity, from FEM_GLOBALNO.
FEM_DataAttribute * meshSizing
 Mesh sizing attribute for elements.
FEM_DataAttribute * valid
unsigned int first_invalid
unsigned int last_invalid
void * args
 arguments to the resize function
CkVec< FEM_Attribute * > attributes
 This is our main list of attributes-- everything about each of our entities is in this list of attributes.
FEM_DataAttribute * coord
 Coordinates of each entity, from FEM_COORD.
FEM_DataAttribute * sym
 Symmetries of each entity, from FEM_SYMMETRIES.
FEM_IndexAttribute * globalno
 Global numbers of each entity, from FEM_GLOBALNO.
FEM_DataAttribute * boundary
 used to allocate the integer array for storing the boundary values associated with an entity.
FEM_DataAttribute * meshSizing
 Mesh sizing attribute for elements.
FEM_DataAttribute * valid
 used to allocate the char array for storing whether each entity is valid When a node/element is deleted the flag in the valid table is set to 0.
int first_invalid
int last_invalid
intinvalidList
 This is a list of invalid entities.
int invalidListLen
 length of invalid list
int invalidListAllLen
 length of allocated invalid list

Detailed Description

Describes an entire class of "entities"--nodes, elements, or sparse data records.

FEM_Entity describes an entire entity (nodes/elements/sparse) which contains attributes.

Basically consists of a length and a set of FEM_Attributes.

Describes an entire class of "entities"--nodes, elements, or sparse data records. Basically consists of a length and a set of FEM_Attributes.

Definition at line 619 of file fem_mesh.h.


Member Typedef Documentation

Definition at line 620 of file fem_mesh.h.

symmetries

Definition at line 719 of file ParFUM_internals.h.


Constructor & Destructor Documentation

FEM_Entity::FEM_Entity ( FEM_Entity ghost_  ) 

Definition at line 1061 of file fem_mesh.C.

References femVersion.

FEM_Entity::~FEM_Entity (  )  [virtual]

Definition at line 1116 of file fem_mesh.C.

References ghost.

FEM_Entity::FEM_Entity ( FEM_Entity ghost_  ) 

virtual FEM_Entity::~FEM_Entity (  )  [virtual]


Member Function Documentation

void FEM_Entity::allocateCoord ( void   )  [private]

Definition at line 1419 of file fem_mesh.C.

Referenced by create().

Here is the caller graph for this function:

void FEM_Entity::allocateSym ( void   )  [private]

Definition at line 1426 of file fem_mesh.C.

References sym.

Referenced by create(), and setSymmetries().

Here is the caller graph for this function:

void FEM_Entity::allocateGlobalno ( void   )  [private]

Definition at line 1480 of file fem_mesh.C.

References globalno.

Referenced by create(), setAscendingGlobalno(), and setGlobalno().

Here is the caller graph for this function:

void FEM_Entity::allocateBoundary (  )  [private]

Definition at line 1521 of file fem_mesh.C.

Referenced by create().

Here is the caller graph for this function:

void FEM_Entity::allocateMeshSizing ( void   )  [private]

Definition at line 1487 of file fem_mesh.C.

References meshSizing.

Referenced by create(), getMeshSizing(), and setMeshSizing().

Here is the caller graph for this function:

void FEM_Entity::create ( int  attr,
const char *  caller 
) [protected, virtual]

lookup of this attribute code has failed: check if it needs to be demand-created.

Create a new attribute from an FEM_ATTR code.

Subclasses should override this method to recognize a request for, and add their own attributes; otherwise call the default implementation.

Every call to create must result in either a call to add() or a call to the superclass; but not both.

Any entity with optional fields, that are created on demand, will have to override this method. Entities with fixed fields that are known beforehand should just call add() from their constructor.

The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.

The default implementation handles FEM_DATA tags; entity-specific attributes (like FEM_CONN) need to be overridden and created by subclasses.

Reimplemented in FEM_Node, and FEM_Node.

Definition at line 1390 of file fem_mesh.C.

References allocateBoundary(), allocateCoord(), allocateGlobalno(), allocateMeshSizing(), allocateSym(), allocateValid(), FEM_Abort(), FEM_Get_attr_name(), getName(), and msg.

Referenced by FEM_Node::create(), and lookup().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::add ( FEM_Attribute attribute  )  [protected]

Add this attribute to this kind of Entity.

This superclass is responsible for eventually deleting the attribute. This class also attaches the ghost attribute, so be sure to call add before manipulating the attribute.

This method is normally called by the default lookup method.

Definition at line 1357 of file fem_mesh.C.

References FEM_Attribute::getAttr(), ghost, lookup(), and FEM_Attribute::setGhost().

Here is the call graph for this function:

void FEM_Entity::pup ( PUP::er p  ) 

Reimplemented in FEM_Node, and FEM_Node.

Definition at line 1071 of file fem_mesh.C.

References PUP::er::comment(), FEM_Get_attr_name(), femVersion, FEM_Attribute::getAttr(), ghost, ghostIDXL, ghostRecv, ghostSend, PUP::er::isUnpacking(), lookup(), pup(), FEM_Attribute::pup(), FEM_Comm_Holder::pup(), IDXL_Side::pup(), and r.

Referenced by pup().

Here is the call graph for this function:

Here is the caller graph for this function:

bool FEM_Entity::isGhost ( void   )  const [inline]

Return true if we're a ghost.

Definition at line 716 of file fem_mesh.h.

References ghost.

FEM_Entity* FEM_Entity::getGhost ( void   )  [inline]

Switch from this, a real entity, to the ghosts:.

Definition at line 719 of file fem_mesh.h.

References ghost.

Referenced by splitter::addGhostNode(), FEM_add_node_local(), FEM_Print_Mesh_Summary(), FEM_Sym_coordinates(), FEM_Mesh::lookup(), makeGhost(), FEM_Node::setElemAdjacency(), and FEM_Node::setNodeAdjacency().

Here is the caller graph for this function:

const FEM_Entity* FEM_Entity::getGhost ( void   )  const [inline]

Definition at line 720 of file fem_mesh.h.

References ghost.

int FEM_Entity::size ( void   )  const [inline]

Return the number of entities of this type.

Definition at line 723 of file fem_mesh.h.

References length.

Referenced by splitter::addGhosts(), addIDXLists(), allocateValid(), splitter::buildCommLists(), check(), FEM_Adapt_Algs::Coarsen(), splitter::consistencyCheck(), copyOldGlobalno(), count_valid(), CreateAdaptAdjacencies(), FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), FEM_break_mesh(), FEM_Make_node_globalno(), FEM_master_parallel_part(), FEM_Mesh_partition(), FEM_Print_Mesh_Summary(), FEM_readMesh(), FEM_REFINE2D_Coarsen(), FEM_REFINE2D_Split(), FEM_Refine_Operation(), FEM_Set_sym_nodes(), FEM_slave_parallel_part(), FEM_Sym_coordinates(), FEM_write_part2mesh(), FTN_NAME(), get_next_invalid(), FEM_Adapt_Algs::GradateMesh(), is_valid(), is_valid_any_idx(), is_valid_nonghost_idx(), BulkAdapt::local_split_3D(), makeGhost(), makeGhosts(), FEM_Entity_numberer::mark(), mesh2graph(), meshNodeItr_Begin(), meshNodeItr_Next(), FEM_Adapt::newElement(), FEM_Adapt::newNode(), MeshElem::operator+=(), ParFUM_generateGlobalNodeNumbers(), Bulk_Adapt::ParFUM_GradateMesh(), FEM_Node::print(), print(), push_back(), FEM_Adapt_Algs::Refine(), Bulk_Adapt::Refine_h(), FEM_MUtil::Replace_node_local(), FEM_MUtil::residualLockTest(), set_all_invalid(), set_invalid(), set_valid(), setAscendingGlobalno(), FEM_Node::setElemAdjacency(), femMeshModify::setFemMesh(), setLength(), Bulk_Adapt::SetMeshSize(), FEM_Adapt_Algs::SetMeshSize(), setMeshSizing(), FEM_Node::setNodeAdjacency(), splitter::splitter(), FEM_MUtil::StructureTest(), topNodeItr_Begin(), topNodeItr_Next(), and FEM_MUtil::unlockAll().

int FEM_Entity::realsize ( void   )  const [inline]

Definition at line 724 of file fem_mesh.h.

References length.

Referenced by FEM_Attribute::getRealLength().

Here is the caller graph for this function:

int FEM_Entity::getMax ( void   )  [inline]

Definition at line 727 of file fem_mesh.h.

References length, and max.

Referenced by FEM_Attribute::getMax(), and FEM_Adapt::printValidArray().

Here is the caller graph for this function:

virtual const char* FEM_Entity::getName ( void   )  const [pure virtual]

Return the human-readable name of this entity type, like "node".

Implemented in FEM_Node, and FEM_Node.

Referenced by create().

Here is the caller graph for this function:

void FEM_Entity::copyShape ( const FEM_Entity src  ) 

Copy all our attributes' widths and data types from this entity.

Copy our attributes' widths and data types from this entity.

Definition at line 1124 of file fem_mesh.C.

References attributes, copyShape(), FEM_Attribute::copyShape(), FEM_Attribute::getAttr(), ghost, lookup(), and CkVec< T >::size().

Referenced by copyShape(), and makeGhost().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::setLength ( int  newlen  ) 

The user is setting this many entities.

This reallocates all existing attributes to make room for the new entities.

Definition at line 1134 of file fem_mesh.C.

References resize, and size().

Referenced by clearGhost(), splitter::createMesh(), FEM_REFINE2D_Split(), FEM_Refine_Operation(), get_next_invalid(), FEM_Adapt::newSlot(), push_back(), FEM_MUtil::Replace_node_local(), FEM_Attribute::setLength(), and setMaxLength().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::setMaxLength ( int  newLen,
int  newMaxLen,
void *  args,
FEM_Mesh_alloc_fn  fn 
)

Support for registration API Set the current length and maximum length for this entity.

If the current length exceeds the maximum length a resize method is called .

Definition at line 1325 of file fem_mesh.C.

References resize, and setLength().

Here is the call graph for this function:

void FEM_Entity::copyEntity ( int  dstEntity,
const FEM_Entity src,
int  srcEntity 
)

Copy everything associated with src[srcEntity] into our dstEntity.

Copy src[srcEntity] into our dstEntity.

dstEntity must have already been allocated, e.g., with setLength.

Definition at line 1335 of file fem_mesh.C.

References attributes, FEM_Attribute::copyEntity(), FEM_Attribute::getAttr(), lookup(), and CkVec< T >::size().

Referenced by splitter::createMesh(), and push_back().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Entity::push_back ( const FEM_Entity src,
int  srcEntity 
)

Add room for one more entity, with initial values from src[srcEntity], and return the new entity's index.

Add room for one more entity, with initial values from src[srcEntity], and return the new entity's index.

Definition at line 1348 of file fem_mesh.C.

References copyEntity(), setLength(), and size().

Referenced by splitter::addGhostInner(), FEM_break_mesh(), makeGhost(), and MeshElem::operator+=().

Here is the call graph for this function:

Here is the caller graph for this function:

FEM_Attribute * FEM_Entity::lookup ( int  attr,
const char *  caller 
)

Find this attribute (from an FEM_ATTR code) of this entity, or create the entity (using the create method below) or abort if it's not found.

Find this attribute (from an FEM_ATTR code) of this entity.

The default implementation searches the list of userdata attributes; subclasses with other attributes should override this routine.

Definition at line 1370 of file fem_mesh.C.

References create().

Referenced by add(), BulkAdapt::add_node(), copyEntity(), copyShape(), FEM_Mesh_data_layoutP(), FEM_REFINE2D_Coarsen(), FEM_REFINE2D_Split(), get_coord(), ParFUMShadowArray::lockLocalNodes(), FEM_Mesh::lookup(), lookupAdaptAdjacencies(), lookupEdgeAdaptAdjacencies(), makeGhost(), makeGhosts(), ParFUM_generateGlobalNodeNumbers(), ParFUM_SA_Init(), pup(), set_coord(), ParFUMShadowArray::unlockLocalNodes(), chunk::validCheck(), and FEM_Adapt::validDataFor().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Entity::getAttrs ( int attrs  )  const [inline]

Get a list of the attribute numbers for this entity.

Definition at line 767 of file fem_mesh.h.

References attributes, len, and CkVec< T >::size().

Here is the call graph for this function:

void FEM_Entity::allocateValid ( void   ) 

Allocate or Modify the FEM_IS_VALID attribute data.

Definition at line 1168 of file fem_mesh.C.

References first_invalid, last_invalid, size(), and valid.

Referenced by create(), FEM_Mesh_allocate_valid_attr(), and FORTRAN_AS_C().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::set_valid ( unsigned int  idx,
bool  isNode 
)

Definition at line 1185 of file fem_mesh.C.

References first_invalid, is_valid(), last_invalid, size(), and valid.

Referenced by get_next_invalid(), and FEM_MUtil::Replace_node_local().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::set_invalid ( unsigned int  idx,
bool  isNode 
)

Definition at line 1210 of file fem_mesh.C.

References first_invalid, is_valid(), last_invalid, size(), and valid.

Referenced by FEM_remove_node_local(), and FEM_MUtil::removeGhostNodeRemote().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Entity::is_valid ( unsigned int  idx  ) 

int FEM_Entity::count_valid (  ) 

Linear scan to count valid entities.

Definition at line 1255 of file fem_mesh.C.

References count, first_invalid, is_valid(), last_invalid, and size().

Referenced by FEM_Print_Mesh_Summary().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Entity::get_next_invalid ( FEM_Mesh m,
bool  isNode,
bool  isGhost 
)

Get an entry(entity index) that corresponds to an invalid entity The invalid slot in the tables can then be reused when "creating" a new element or node We either return an empty slot, or resize the array and return a value at the end If someone has a better name for this function, please change it.

Definition at line 1267 of file fem_mesh.C.

References first_invalid, femMeshModify::fmLockN, FEM_Mesh::getfmMM(), hasConn(), is_valid(), last_invalid, set_valid(), setLength(), and size().

Referenced by BulkAdapt::add_node(), and FEM_add_node_local().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool FEM_Entity::hasConn ( unsigned int  idx  )  [pure virtual]

Implemented in FEM_Node.

Referenced by get_next_invalid().

Here is the caller graph for this function:

void FEM_Entity::set_coord ( int  idx,
double  x,
double  y 
) [inline]

Set the coordinates for a single item.

Definition at line 1453 of file fem_mesh.C.

References lookup().

Here is the call graph for this function:

void FEM_Entity::set_coord ( int  idx,
double  x,
double  y,
double  z 
) [inline]

Definition at line 1465 of file fem_mesh.C.

References lookup().

Here is the call graph for this function:

CkVec<FEM_Attribute *>* FEM_Entity::getAttrVec (  )  [inline]

expose the attribute vector for refining

breaks modularity but more efficient

Definition at line 793 of file fem_mesh.h.

References attributes.

Referenced by FEM_Ghost_Essential_attributes(), FEM_Interpolate::FEM_InterpolateCopyAttributes(), FEM_REFINE2D_Coarsen(), FEM_REFINE2D_Split(), and interpolateNode().

Here is the caller graph for this function:

FEM_DataAttribute* FEM_Entity::getCoord ( void   )  [inline]

const FEM_DataAttribute* FEM_Entity::getCoord ( void   )  const [inline]

Definition at line 799 of file fem_mesh.h.

const FEM_Symmetries_t* FEM_Entity::getSymmetries ( void   )  const [inline]

Definition at line 802 of file fem_mesh.h.

References sym.

Referenced by FEM_Sym_coordinates().

Here is the caller graph for this function:

FEM_Symmetries_t FEM_Entity::getSymmetries ( int  r  )  const [inline]

Definition at line 806 of file fem_mesh.h.

References sym.

void FEM_Entity::setSymmetries ( int  r,
FEM_Symmetries_t  s 
)

Definition at line 1434 of file fem_mesh.C.

References allocateSym(), and sym.

Referenced by splitter::addGhostInner(), and splitter::createMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

bool FEM_Entity::hasGlobalno ( void   )  const [inline]

Definition at line 813 of file fem_mesh.h.

References globalno.

Referenced by copyOldGlobalno().

Here is the caller graph for this function:

int FEM_Entity::getGlobalno ( int  r  )  const [inline]

Definition at line 814 of file fem_mesh.h.

References globalno.

Referenced by addIDXLists(), copyOldGlobalno(), FORTRAN_AS_C(), makeGhost(), makeGhosts(), FEM_Entity_numberer::mark(), and renumberConn().

Here is the caller graph for this function:

void FEM_Entity::setGlobalno ( int  r,
int  g 
)

Definition at line 1528 of file fem_mesh.C.

References allocateGlobalno(), and globalno.

Referenced by copyOldGlobalno().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::setAscendingGlobalno ( void   ) 

Definition at line 1532 of file fem_mesh.C.

References allocateGlobalno(), globalno, and size().

Here is the call graph for this function:

void FEM_Entity::setAscendingGlobalno ( int  base  ) 

Definition at line 1539 of file fem_mesh.C.

References allocateGlobalno(), globalno, and size().

Here is the call graph for this function:

void FEM_Entity::copyOldGlobalno ( const FEM_Entity e  ) 

Definition at line 1546 of file fem_mesh.C.

References getGlobalno(), hasGlobalno(), setGlobalno(), and size().

Here is the call graph for this function:

bool FEM_Entity::hasMeshSizing ( void   )  const [inline]

Definition at line 824 of file fem_mesh.h.

References meshSizing.

double FEM_Entity::getMeshSizing ( int  r  ) 

Definition at line 1496 of file fem_mesh.C.

References allocateMeshSizing(), ghost, and meshSizing.

Here is the call graph for this function:

void FEM_Entity::setMeshSizing ( int  r,
double  s 
)

Definition at line 1505 of file fem_mesh.C.

References allocateMeshSizing(), ghost, and meshSizing.

Here is the call graph for this function:

void FEM_Entity::setMeshSizing ( double *  sf  ) 

Definition at line 1513 of file fem_mesh.C.

References allocateMeshSizing(), meshSizing, and size().

Here is the call graph for this function:

FEM_Comm& FEM_Entity::setGhostSend ( void   )  [inline]

Definition at line 830 of file fem_mesh.h.

References ghostSend.

Referenced by splitter::addGhostInner(), and makeGhost().

Here is the caller graph for this function:

const FEM_Comm& FEM_Entity::getGhostSend ( void   )  const [inline]

Definition at line 831 of file fem_mesh.h.

References ghostSend.

Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), and makeGhost().

Here is the caller graph for this function:

FEM_Comm& FEM_Entity::setGhostRecv ( void   )  [inline]

Definition at line 832 of file fem_mesh.h.

References ghost, and ghostRecv.

Referenced by splitter::addGhostInner(), and makeGhost().

Here is the caller graph for this function:

const FEM_Comm& FEM_Entity::getGhostRecv ( void   )  const [inline]

Definition at line 836 of file fem_mesh.h.

References ghost, and ghostRecv.

Referenced by FEM_chunk::exchangeGhostLists(), FEMchunk::exchangeGhostLists(), and makeGhost().

Here is the caller graph for this function:

void FEM_Entity::addVarIndexAttribute ( int  code  )  [inline]

Definition at line 839 of file fem_mesh.h.

void FEM_Entity::allocateCoord ( void   )  [private]

void FEM_Entity::allocateSym ( void   )  [private]

void FEM_Entity::allocateGlobalno ( void   )  [private]

void FEM_Entity::allocateBoundary (  )  [private]

void FEM_Entity::allocateMeshSizing ( void   )  [private]

virtual void FEM_Entity::create ( int  attr,
const char *  caller 
) [protected, virtual]

lookup of this attribute code has failed: check if it needs to be demand-created.

Subclasses should override this method to recognize a request for, and add their own attributes; otherwise call the default implementation.

Every call to create must result in either a call to add() or a call to the superclass; but not both.

Any entity with optional fields, that are created on demand, will have to override this method. Entities with fixed fields that are known beforehand should just call add() from their constructor.

Reimplemented in FEM_Node, and FEM_Node.

void FEM_Entity::add ( FEM_Attribute attribute  )  [protected]

Add this attribute to this kind of Entity.

This superclass is responsible for eventually deleting the attribute. This class also attaches the ghost attribute, so be sure to call add before manipulating the attribute.

void FEM_Entity::pup ( PUP::er p  ) 

Reimplemented in FEM_Node, and FEM_Node.

bool FEM_Entity::isGhost ( void   )  const [inline]

Return true if we're a ghost.

Definition at line 832 of file ParFUM_internals.h.

References ghost.

FEM_Entity* FEM_Entity::getGhost ( void   )  [inline]

Switch from this, a real entity, to the ghosts:.

Definition at line 835 of file ParFUM_internals.h.

References ghost.

const FEM_Entity* FEM_Entity::getGhost ( void   )  const [inline]

Definition at line 836 of file ParFUM_internals.h.

References ghost.

void FEM_Entity::clearGhost (  ) 

Definition at line 1783 of file mesh.C.

References IDXL_Side::clear(), ghost, ghostRecv, ghostSend, and setLength().

Here is the call graph for this function:

int FEM_Entity::size ( void   )  const [inline]

Return the number of entities of this type.

Definition at line 843 of file ParFUM_internals.h.

References length.

int FEM_Entity::realsize ( void   )  const [inline]

Definition at line 844 of file ParFUM_internals.h.

References length.

int FEM_Entity::getMax ( void   )  [inline]

Definition at line 847 of file ParFUM_internals.h.

References length, and max.

virtual const char* FEM_Entity::getName ( void   )  const [pure virtual]

Return the human-readable name of this entity type, like "node".

Implemented in FEM_Node, and FEM_Node.

void FEM_Entity::copyShape ( const FEM_Entity src  ) 

Copy all our attributes' widths and data types from this entity.

void FEM_Entity::setLength ( int  newlen,
bool  f = false 
)

The user is setting this many entities.

This reallocates all existing attributes to make room for the new entities.

Definition at line 1183 of file mesh.C.

References resize, and size().

Here is the call graph for this function:

void FEM_Entity::reserveLength ( int  newlen  ) 

Attempt to set max and resize all associated attributes.

Attempt to resize all the attributes owned by ParFUM so they don't need to be resized later.

This function is not guaranteed to resize all buffers. The usual resize methods should be used later on, but they should be cheaper at that point.

Definition at line 1226 of file mesh.C.

void FEM_Entity::setMaxLength ( int  newLen,
int  newMaxLen,
void *  args,
FEM_Mesh_alloc_fn  fn 
)

Support for registration API Set the current length and maximum length for this entity.

If the current length exceeds the maximum length a resize method is called .

void FEM_Entity::copyEntity ( int  dstEntity,
const FEM_Entity src,
int  srcEntity 
)

Copy everything associated with src[srcEntity] into our dstEntity.

dstEntity must have already been allocated, e.g., with setLength.

int FEM_Entity::push_back ( const FEM_Entity src,
int  srcEntity 
)

Add room for one more entity, with initial values from src[srcEntity], and return the new entity's index.

FEM_Attribute* FEM_Entity::lookup ( int  attr,
const char *  caller 
)

Find this attribute (from an FEM_ATTR code) of this entity, or create the entity (using the create method below) or abort if it's not found.

int FEM_Entity::getAttrs ( int attrs  )  const [inline]

Get a list of the attribute numbers for this entity.

Definition at line 890 of file ParFUM_internals.h.

References attributes, len, and CkVec< T >::size().

Here is the call graph for this function:

void FEM_Entity::allocateValid (  ) 

Allocate or Modify the FEM_IS_VALID attribute data.

void FEM_Entity::set_valid ( int  idx,
bool  isNode = false 
)

Definition at line 1264 of file mesh.C.

References first_invalid, invalidList, invalidListLen, is_valid(), last_invalid, size(), and valid.

Here is the call graph for this function:

void FEM_Entity::set_invalid ( int  idx,
bool  isNode = false 
)

Definition at line 1301 of file mesh.C.

References first_invalid, invalidList, invalidListAllLen, invalidListLen, is_valid(), last_invalid, size(), and valid.

Here is the call graph for this function:

int FEM_Entity::is_valid ( int  idx  ) 

Determine if an index refers to a valid non-ghost entity.

Index must be between 0 and size(). Changing this assumption will break things. If required use the other functions is_valid_any_idx() or is_valid_nonghost_idx()

Definition at line 1343 of file mesh.C.

References size(), and valid.

Here is the call graph for this function:

int FEM_Entity::is_valid_any_idx ( int  idx  ) 

Determine if an index refers to a valid entity, with negatives corresponding to a valid ghost.

Definition at line 1349 of file mesh.C.

References ghost, is_valid_any_idx(), size(), and valid.

Referenced by is_valid_any_idx(), meshModel_CreateNodeElemItr(), meshNodeItr_Begin(), meshNodeItr_IsValid(), meshNodeItr_Next(), topModel_CreateNodeElemItr(), topNodeItr_Begin(), topNodeItr_IsValid(), and topNodeItr_Next().

Here is the call graph for this function:

Here is the caller graph for this function:

int FEM_Entity::is_valid_nonghost_idx ( int  idx  ) 

Determine if an index refers to a valid non-ghost entity.

Definition at line 1359 of file mesh.C.

References size(), and valid.

Here is the call graph for this function:

int FEM_Entity::count_valid (  ) 

int FEM_Entity::get_next_invalid ( FEM_Mesh m = NULL,
bool  isNode = false,
bool  isGhost = false 
)

void FEM_Entity::set_all_invalid (  ) 

Definition at line 1374 of file mesh.C.

References size(), and valid.

Here is the call graph for this function:

int FEM_Entity::isBoundary ( int  idx  ) 

Definition at line 1750 of file mesh.C.

References boundary.

virtual bool FEM_Entity::hasConn ( int  idx  )  [pure virtual]

Implemented in FEM_Node.

void FEM_Entity::set_coord ( int  idx,
double  x,
double  y 
)

Set the coordinates for a single item.

void FEM_Entity::set_coord ( int  idx,
double  x,
double  y,
double  z 
)

void FEM_Entity::get_coord ( int  idx,
double &  x,
double &  y 
)

Get coordinates for a given 2-D node, if idx<0 the corresponding ghost node is used.

Note:
there are a couple places coordinates have been historically stored. We can find either of them here.

Definition at line 1637 of file mesh.C.

References coord, ghost, and lookup().

Referenced by FEM_readMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

void FEM_Entity::get_coord ( int  idx,
double &  x,
double &  y,
double &  z 
)

Get coordinates for a given 3-D node, if idx<0 the corresponding ghost node is used.

Note:
there are a couple places coordinates have been historically stored. We can find either of them here.

Definition at line 1667 of file mesh.C.

References coord, ghost, and lookup().

Here is the call graph for this function:

CkVec<FEM_Attribute *>* FEM_Entity::getAttrVec (  )  [inline]

Expose the attribute vector for refining.

breaks modularity but more efficient

Definition at line 925 of file ParFUM_internals.h.

References attributes.

FEM_DataAttribute* FEM_Entity::getCoord ( void   )  [inline]

Definition at line 930 of file ParFUM_internals.h.

const FEM_DataAttribute* FEM_Entity::getCoord ( void   )  const [inline]

Definition at line 931 of file ParFUM_internals.h.

const FEM_Symmetries_t* FEM_Entity::getSymmetries ( void   )  const [inline]

Definition at line 934 of file ParFUM_internals.h.

References sym.

FEM_Symmetries_t FEM_Entity::getSymmetries ( int  r  )  const [inline]

Definition at line 938 of file ParFUM_internals.h.

References sym.

void FEM_Entity::setSymmetries ( int  r,
FEM_Symmetries_t  s 
)

bool FEM_Entity::hasGlobalno ( void   )  const [inline]

Definition at line 945 of file ParFUM_internals.h.

References globalno.

int FEM_Entity::getGlobalno ( int  r  )  const [inline]

Definition at line 946 of file ParFUM_internals.h.

References globalno.

void FEM_Entity::setGlobalno ( int  r,
int  g 
)

void FEM_Entity::setAscendingGlobalno ( void   ) 

void FEM_Entity::setAscendingGlobalno ( int  base  ) 

void FEM_Entity::copyOldGlobalno ( const FEM_Entity e  ) 

bool FEM_Entity::hasMeshSizing ( void   )  const [inline]

Definition at line 956 of file ParFUM_internals.h.

References meshSizing.

double FEM_Entity::getMeshSizing ( int  r  ) 

void FEM_Entity::setMeshSizing ( int  r,
double  s 
)

void FEM_Entity::setMeshSizing ( double *  sf  ) 

FEM_Comm& FEM_Entity::setGhostSend ( void   )  [inline]

Definition at line 962 of file ParFUM_internals.h.

References ghostSend.

const FEM_Comm& FEM_Entity::getGhostSend ( void   )  const [inline]

Definition at line 963 of file ParFUM_internals.h.

References ghostSend.

FEM_Comm& FEM_Entity::setGhostRecv ( void   )  [inline]

Definition at line 964 of file ParFUM_internals.h.

References ghost, and ghostRecv.

const FEM_Comm& FEM_Entity::getGhostRecv ( void   )  const [inline]

Definition at line 968 of file ParFUM_internals.h.

References ghost, and ghostRecv.

void FEM_Entity::addVarIndexAttribute ( int  code  )  [inline]

Definition at line 970 of file ParFUM_internals.h.

void FEM_Entity::print ( const char *  type,
const IDXL_Print_Map map 
)

Reimplemented in FEM_Node, and FEM_Node.


Field Documentation

Number of entities of our type currently in the mesh.

Definition at line 621 of file fem_mesh.h.

Referenced by getMax(), realsize(), and size().

int FEM_Entity::max [private]

Maximum number of entities of our type in the mesh that will be allowed.

Definition at line 622 of file fem_mesh.h.

Referenced by getMax().

should be a function pointer to the actual resize function later

Definition at line 623 of file fem_mesh.h.

Referenced by setLength(), and setMaxLength().

void* FEM_Entity::args [private]

Definition at line 624 of file fem_mesh.h.

This is our main list of attributes-- everything about each of our entities is in this list of attributes.

This list is searched by our "lookup" method and maintained by our subclasses "create" method and calls to our "add" method.

It's a little funky having the superclass keep pointers to subclass objects (like element connectivity), but very nice to be able to easily loop over everything associated with an entity.

Definition at line 636 of file fem_mesh.h.

Referenced by copyEntity(), copyShape(), getAttrs(), and getAttrVec().

FEM_DataAttribute* FEM_Entity::coord [private]

Coordinates of each entity, from FEM_COORD.

Datatype is always FEM_DOUBLE, width is always 2 or 3. If NULL, coordinates are unknown.

Definition at line 643 of file fem_mesh.h.

Referenced by get_coord().

FEM_DataAttribute* FEM_Entity::sym [private]

Symmetries of each entity, from FEM_SYMMETRIES.

This bitvector per entity indicates which symmetry conditions the entity belongs to. Datatype is always FEM_BYTE (same as FEM_Symmetries_t), width is always 1. If NULL, all the symmetries are 0.

Definition at line 652 of file fem_mesh.h.

Referenced by allocateSym(), getSymmetries(), and setSymmetries().

FEM_IndexAttribute* FEM_Entity::globalno [private]

Global numbers of each entity, from FEM_GLOBALNO.

If NULL, the global numbers are unknown.

Definition at line 659 of file fem_mesh.h.

Referenced by allocateGlobalno(), getGlobalno(), hasGlobalno(), setAscendingGlobalno(), and setGlobalno().

FEM_DataAttribute* FEM_Entity::meshSizing [private]

Mesh sizing attribute for elements.

Specifies a double edge length target for the mesh at each element; used in adaptivity algorithms

Definition at line 671 of file fem_mesh.h.

Referenced by allocateMeshSizing(), getMeshSizing(), hasMeshSizing(), and setMeshSizing().

FEM_DataAttribute* FEM_Entity::valid [private]

unsigned int FEM_Entity::first_invalid [private]

unsigned int FEM_Entity::last_invalid [private]

Definition at line 837 of file fem_mesh.h.

Referenced by pup().

void* FEM_Entity::args [private]

arguments to the resize function

Definition at line 727 of file ParFUM_internals.h.

This is our main list of attributes-- everything about each of our entities is in this list of attributes.

This list is searched by our "lookup" method and maintained by our subclasses "create" method and calls to our "add" method.

It's a little funky having the superclass keep pointers to subclass objects (like element connectivity), but very nice to be able to easily loop over everything associated with an entity.

Definition at line 739 of file ParFUM_internals.h.

FEM_DataAttribute* FEM_Entity::coord [private]

Coordinates of each entity, from FEM_COORD.

Datatype is always FEM_DOUBLE, width is always 2 or 3. If NULL, coordinates are unknown.

Definition at line 746 of file ParFUM_internals.h.

FEM_DataAttribute* FEM_Entity::sym [private]

Symmetries of each entity, from FEM_SYMMETRIES.

This bitvector per entity indicates which symmetry conditions the entity belongs to. Datatype is always FEM_BYTE (same as FEM_Symmetries_t), width is always 1. If NULL, all the symmetries are 0.

Definition at line 755 of file ParFUM_internals.h.

FEM_IndexAttribute* FEM_Entity::globalno [private]

Global numbers of each entity, from FEM_GLOBALNO.

If NULL, the global numbers are unknown.

Definition at line 762 of file ParFUM_internals.h.

FEM_DataAttribute* FEM_Entity::boundary [private]

used to allocate the integer array for storing the boundary values associated with an entity.

Definition at line 769 of file ParFUM_internals.h.

Referenced by isBoundary().

FEM_DataAttribute* FEM_Entity::meshSizing [private]

Mesh sizing attribute for elements.

Specifies a double edge length target for the mesh at each element; used in adaptivity algorithms

Definition at line 775 of file ParFUM_internals.h.

FEM_DataAttribute* FEM_Entity::valid [private]

used to allocate the char array for storing whether each entity is valid When a node/element is deleted the flag in the valid table is set to 0.

Additionally, we keep track of the first and last occurence in the array of invalid indices. This should make searching for slots to reuse quicker.

Definition at line 784 of file ParFUM_internals.h.

Definition at line 785 of file ParFUM_internals.h.

Definition at line 785 of file ParFUM_internals.h.

This is a list of invalid entities.

. its a last in first out queue, which can be implemented as simple array, where we add and remove from the last element, so that we always have a compact list, and we allocate only when we need to

Definition at line 791 of file ParFUM_internals.h.

Referenced by set_invalid(), and set_valid().

length of invalid list

Definition at line 793 of file ParFUM_internals.h.

Referenced by set_invalid(), and set_valid().

length of allocated invalid list

Definition at line 795 of file ParFUM_internals.h.

Referenced by set_invalid().

Definition at line 820 of file ParFUM_internals.h.


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

Generated on Mon Sep 21 08:24:10 2020 for Charm++ by  doxygen 1.5.5