#include <fem_mesh.h>
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_Entity * | getGhost (void) |
Switch from this, a real entity, to the ghosts:. | |
const FEM_Entity * | getGhost (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_Attribute * | 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 | 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_t * | getSymmetries (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_Comm & | setGhostSend (void) |
const FEM_Comm & | getGhostSend (void) const |
FEM_Comm & | setGhostRecv (void) |
const FEM_Comm & | getGhostRecv (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_Entity * | getGhost (void) |
Switch from this, a real entity, to the ghosts:. | |
const FEM_Entity * | getGhost (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_Attribute * | 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 | 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_t * | getSymmetries (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_Comm & | setGhostSend (void) |
const FEM_Comm & | getGhostSend (void) const |
FEM_Comm & | setGhostRecv (void) |
const FEM_Comm & | getGhostRecv (void) const |
void | addVarIndexAttribute (int code) |
void | print (const char *type, const IDXL_Print_Map &map) |
Data Fields | |
FEM_Entity * | ghost |
FEM_Comm | ghostSend |
FEM_Comm | ghostRecv |
FEM_Comm_Holder | ghostIDXL |
FEM_Entity * | ghost |
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_t > | sym_t |
typedef CkVec< FEM_Symmetries_t > | sym_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 |
int * | invalidList |
This is a list of invalid entities. | |
int | invalidListLen |
length of invalid list | |
int | invalidListAllLen |
length of allocated invalid list |
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.
typedef CkVec<FEM_Symmetries_t> FEM_Entity::sym_t [private] |
Definition at line 620 of file fem_mesh.h.
typedef CkVec<FEM_Symmetries_t> FEM_Entity::sym_t [private] |
FEM_Entity::FEM_Entity | ( | FEM_Entity * | ghost_ | ) |
FEM_Entity::~FEM_Entity | ( | ) | [virtual] |
FEM_Entity::FEM_Entity | ( | FEM_Entity * | ghost_ | ) |
virtual FEM_Entity::~FEM_Entity | ( | ) | [virtual] |
void FEM_Entity::allocateCoord | ( | void | ) | [private] |
Definition at line 1419 of file fem_mesh.C.
Referenced by create().
void FEM_Entity::allocateSym | ( | void | ) | [private] |
Definition at line 1426 of file fem_mesh.C.
References sym.
Referenced by create(), and setSymmetries().
void FEM_Entity::allocateGlobalno | ( | void | ) | [private] |
Definition at line 1480 of file fem_mesh.C.
References globalno.
Referenced by create(), setAscendingGlobalno(), and setGlobalno().
void FEM_Entity::allocateBoundary | ( | ) | [private] |
Definition at line 1521 of file fem_mesh.C.
Referenced by create().
void FEM_Entity::allocateMeshSizing | ( | void | ) | [private] |
Definition at line 1487 of file fem_mesh.C.
References meshSizing.
Referenced by create(), getMeshSizing(), and setMeshSizing().
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().
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().
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().
bool FEM_Entity::isGhost | ( | void | ) | const [inline] |
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().
const FEM_Entity* FEM_Entity::getGhost | ( | void | ) | const [inline] |
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().
int FEM_Entity::getMax | ( | void | ) | [inline] |
Definition at line 727 of file fem_mesh.h.
Referenced by FEM_Attribute::getMax(), and FEM_Adapt::printValidArray().
virtual const char* FEM_Entity::getName | ( | void | ) | const [pure virtual] |
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().
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().
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().
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().
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+=().
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().
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().
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().
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().
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().
Definition at line 1245 of file fem_mesh.C.
References first_invalid, last_invalid, size(), and valid.
Referenced by count_valid(), CreateAdaptAdjacencies(), FEM_AdaptL::edge_contraction(), FEM_remove_node(), fillLocalAdaptAdjacencies(), FEM_Adapt::findAdjData(), get_next_invalid(), FEM_lock::lock(), FEM_AdaptL::lockNodes(), makeAdjacencyRequests(), FEM_MUtil::residualLockTest(), set_invalid(), set_valid(), FEM_MUtil::StructureTest(), FEM_MUtil::unlockAll(), and FEM_AdaptL::unlockNodes().
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().
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().
Implemented in FEM_Node.
Referenced by get_next_invalid().
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().
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().
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().
FEM_DataAttribute* FEM_Entity::getCoord | ( | void | ) | [inline] |
Definition at line 798 of file fem_mesh.h.
Referenced by BulkAdapt::add_node(), CreateAdaptAdjacencies(), BulkAdapt::edge_bisect_3D(), Bulk_Adapt::findEdgeLengths(), findNodeSet(), Bulk_Adapt::getCoord(), BulkAdapt::handle_split_3D(), BulkAdapt::length(), BulkAdapt::one_side_split_2D(), BulkAdapt::remote_edge_bisect_2D(), and BulkAdapt::update_node_coord().
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().
FEM_Symmetries_t FEM_Entity::getSymmetries | ( | int | r | ) | const [inline] |
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().
bool FEM_Entity::hasGlobalno | ( | void | ) | const [inline] |
Definition at line 813 of file fem_mesh.h.
References globalno.
Referenced by copyOldGlobalno().
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().
Definition at line 1528 of file fem_mesh.C.
References allocateGlobalno(), and globalno.
Referenced by copyOldGlobalno().
void FEM_Entity::setAscendingGlobalno | ( | void | ) |
Definition at line 1532 of file fem_mesh.C.
References allocateGlobalno(), globalno, and size().
void FEM_Entity::setAscendingGlobalno | ( | int | base | ) |
Definition at line 1539 of file fem_mesh.C.
References allocateGlobalno(), globalno, and size().
void FEM_Entity::copyOldGlobalno | ( | const FEM_Entity & | e | ) |
Definition at line 1546 of file fem_mesh.C.
References getGlobalno(), hasGlobalno(), setGlobalno(), and size().
bool FEM_Entity::hasMeshSizing | ( | void | ) | const [inline] |
double FEM_Entity::getMeshSizing | ( | int | r | ) |
Definition at line 1496 of file fem_mesh.C.
References allocateMeshSizing(), ghost, and meshSizing.
void FEM_Entity::setMeshSizing | ( | int | r, | |
double | s | |||
) |
Definition at line 1505 of file fem_mesh.C.
References allocateMeshSizing(), ghost, and meshSizing.
void FEM_Entity::setMeshSizing | ( | double * | sf | ) |
Definition at line 1513 of file fem_mesh.C.
References allocateMeshSizing(), meshSizing, and size().
FEM_Comm& FEM_Entity::setGhostSend | ( | void | ) | [inline] |
Definition at line 830 of file fem_mesh.h.
References ghostSend.
Referenced by splitter::addGhostInner(), and makeGhost().
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().
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().
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().
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.
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.
bool FEM_Entity::isGhost | ( | void | ) | const [inline] |
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] |
void FEM_Entity::clearGhost | ( | ) |
Definition at line 1783 of file mesh.C.
References IDXL_Side::clear(), ghost, ghostRecv, ghostSend, and setLength().
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] |
int FEM_Entity::getMax | ( | void | ) | [inline] |
virtual const char* FEM_Entity::getName | ( | void | ) | const [pure virtual] |
void FEM_Entity::copyShape | ( | const FEM_Entity & | src | ) |
Copy all our attributes' widths and data types from this entity.
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.
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.
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().
void FEM_Entity::allocateValid | ( | ) |
Allocate or Modify the FEM_IS_VALID attribute data.
Definition at line 1264 of file mesh.C.
References first_invalid, invalidList, invalidListLen, is_valid(), last_invalid, size(), and valid.
Definition at line 1301 of file mesh.C.
References first_invalid, invalidList, invalidListAllLen, invalidListLen, is_valid(), last_invalid, size(), and valid.
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.
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().
int FEM_Entity::count_valid | ( | ) |
void FEM_Entity::set_all_invalid | ( | ) |
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.
Definition at line 1637 of file mesh.C.
References coord, ghost, and lookup().
Referenced by FEM_readMesh().
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.
Definition at line 1667 of file mesh.C.
References coord, ghost, and lookup().
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] |
FEM_Symmetries_t FEM_Entity::getSymmetries | ( | int | r | ) | const [inline] |
void FEM_Entity::setSymmetries | ( | int | r, | |
FEM_Symmetries_t | s | |||
) |
bool FEM_Entity::hasGlobalno | ( | void | ) | const [inline] |
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] |
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] |
const FEM_Comm& FEM_Entity::getGhostSend | ( | void | ) | const [inline] |
FEM_Comm& FEM_Entity::setGhostRecv | ( | void | ) | [inline] |
const FEM_Comm& FEM_Entity::getGhostRecv | ( | void | ) | const [inline] |
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 | |||
) |
int FEM_Entity::length [private] |
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().
FEM_Mesh_alloc_fn FEM_Entity::resize [private] |
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.
CkVec<FEM_Attribute *> FEM_Entity::attributes [private] |
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] |
Definition at line 680 of file fem_mesh.h.
Referenced by allocateValid(), is_valid(), is_valid_any_idx(), is_valid_nonghost_idx(), set_all_invalid(), set_invalid(), and set_valid().
unsigned int FEM_Entity::first_invalid [private] |
Definition at line 681 of file fem_mesh.h.
Referenced by allocateValid(), count_valid(), get_next_invalid(), is_valid(), set_invalid(), and set_valid().
unsigned int FEM_Entity::last_invalid [private] |
Definition at line 681 of file fem_mesh.h.
Referenced by allocateValid(), count_valid(), get_next_invalid(), is_valid(), set_invalid(), and set_valid().
Definition at line 706 of file fem_mesh.h.
Referenced by add(), FEM_MUtil::addGhostElementRemote(), femMeshModify::addghostsendl1(), femMeshModify::addghostsendr(), clearGhost(), copyShape(), FEM_MUtil::exists_in_IDXL(), FEM_add_element(), FEM_add_node(), FEM_Ghost_Essential_attributes(), FEM_remove_element(), FEM_remove_node(), FEM_remove_node_local(), ParFUMShadowArray::FindIdxlSide(), get_coord(), FEM_MUtil::getChunkNos(), getGhost(), getGhostRecv(), FEM_MUtil::getLockOwner(), getMeshSizing(), FEM_MUtil::IdxlListTest(), is_valid_any_idx(), isGhost(), FEM_MUtil::knowsAbtNode(), FEM_lock::lock(), FEM_AdaptL::lockNodes(), FEM_MUtil::lookup_in_IDXL(), meshNodeItr_Begin(), print(), pup(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), setGhostRecv(), setMeshSizing(), FEM_MUtil::StructureTest(), topNodeItr_Begin(), FEM_AdaptL::unlockNodes(), femMeshModify::updateIdxlList(), FEM_MUtil::verifyIdxlListRemote(), and ~FEM_Entity().
Definition at line 708 of file fem_mesh.h.
Referenced by FEM_MUtil::addElemRemote(), femMeshModify::addghostsendl(), femMeshModify::addghostsendr1(), femMeshModify::addNodeRemote(), FEM_MUtil::addToSharedList(), femMeshModify::addTransIDXLRemote(), clearGhost(), FEM_MUtil::exists_in_IDXL(), FEM_add_element(), FEM_remove_element(), FEM_remove_node_local(), ParFUMShadowArray::FindIdxlSide(), FEM_MUtil::getChunksSharingGhostNodeRemote(), getGhostSend(), femMeshModify::getIdxGhostSend(), FEM_MUtil::IdxlListTest(), FEM_MUtil::knowsAbtNode(), FEM_MUtil::lookup_in_IDXL(), pup(), FEM_MUtil::removeGhostElementRemote(), femMeshModify::removeIDXLRemote(), setGhostSend(), FEM_MUtil::UpdateGhostSend(), and FEM_MUtil::verifyIdxlListRemote().
Definition at line 709 of file fem_mesh.h.
Referenced by FEM_MUtil::addGhostElementRemote(), femMeshModify::addghostsendl1(), femMeshModify::addghostsendr(), clearGhost(), FEM_MUtil::exists_in_IDXL(), FEM_add_element(), FEM_add_node(), FEM_remove_element(), FEM_remove_node_local(), ParFUMShadowArray::FindIdxlSide(), FEM_MUtil::getChunkNos(), getGhostRecv(), FEM_MUtil::getLockOwner(), FEM_MUtil::IdxlListTest(), FEM_MUtil::knowsAbtNode(), FEM_MUtil::lookup_in_IDXL(), pup(), FEM_MUtil::removeGhostElementRemote(), FEM_MUtil::removeGhostNodeRemote(), setGhostRecv(), FEM_MUtil::StructureTest(), femMeshModify::updateIdxlList(), and FEM_MUtil::verifyIdxlListRemote().
void* FEM_Entity::args [private] |
CkVec<FEM_Attribute *> FEM_Entity::attributes [private] |
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.
int FEM_Entity::first_invalid [private] |
Definition at line 785 of file ParFUM_internals.h.
int FEM_Entity::last_invalid [private] |
Definition at line 785 of file ParFUM_internals.h.
int* FEM_Entity::invalidList [private] |
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().
int FEM_Entity::invalidListLen [private] |
length of invalid list
Definition at line 793 of file ParFUM_internals.h.
Referenced by set_invalid(), and set_valid().
int FEM_Entity::invalidListAllLen [private] |
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.