|
OOFEM 3.0
|
#include <subdivision.h>
Classes | |
| class | RS_Node |
| class | RS_IrregularNode |
| class | RS_Element |
| class | RS_Triangle |
| class | RS_Tetra |
| class | RS_SharedEdge |
| class | RS_Mesh |
| class | RS_CompareNodePositions |
| struct | RS_packRemoteElemsStruct |
Public Member Functions | |
| Subdivision (Domain *d) | |
| Constructor. | |
| virtual | ~Subdivision () |
| returnCode | createMesh (TimeStep *tStep, int domainNumber, int domainSerNum, Domain **dNew) override |
| Runs the mesh generation, mesh will be written to corresponding domain din file. | |
| const char * | giveClassName () |
| Domain * | giveDomain () |
| Public Member Functions inherited from oofem::MesherInterface | |
| MesherInterface (Domain *d) | |
| Constructor. | |
| virtual | ~MesherInterface () |
| Destructor. | |
| virtual void | initializeFrom (InputRecord &ir) |
Protected Attributes | |
| RS_Mesh * | mesh |
| std ::queue< int > | subdivqueue |
| std ::list< int > | sharedIrregularsQueue |
| std ::list< int > | sharedEdgesQueue |
| bool | smoothingFlag |
| Protected Attributes inherited from oofem::MesherInterface | |
| Domain * | domain |
Additional Inherited Members | |
| Public Types inherited from oofem::MesherInterface | |
| enum | returnCode { MI_OK , MI_NEEDS_EXTERNAL_ACTION , MI_FAILED } |
This class represents the Rivara Subdivision algorithm for triangular meshes. based on M.C. Rivara. Local modification of meshes for adaptive and/or multigrid finite-element methods. J. Comput. Appl. Math., 36:79–89, 1991.
Definition at line 69 of file subdivision.h.
|
inline |
Constructor.
Definition at line 410 of file subdivision.h.
References mesh, oofem::MesherInterface::MesherInterface(), and smoothingFlag.
Referenced by oofem::Subdivision::RS_Mesh::giveSubdivision(), packIrregularSharedGlobnums(), packSharedEdges(), packSharedIrregulars(), oofem::Subdivision::RS_Mesh::RS_Mesh(), oofem::Subdivision::RS_Tetra::RS_Tetra(), oofem::Subdivision::RS_Triangle::RS_Triangle(), unpackIrregularSharedGlobnums(), unpackSharedEdges(), and unpackSharedIrregulars().
|
inlinevirtual |
Definition at line 414 of file subdivision.h.
References mesh.
|
protected |
Definition at line 4686 of file subdivision.C.
References oofem::Element_remote, oofem::Domain::giveElement(), oofem::Domain::giveElements(), oofem::Element::giveGlobalNumber(), oofem::Subdivision::RS_Element::giveGlobalNumber(), oofem::Domain::giveNumberOfElements(), giveNumberOfProcesses(), oofem::Element::giveParallelMode(), giveRank(), oofem::max(), OOFEM_ERROR, OOFEM_LOG_INFO, oofem::Element::setGlobalNumber(), and oofem::Subdivision::RS_Element::setGlobalNumber().
Referenced by createMesh().
|
protected |
Definition at line 5064 of file subdivision.C.
References oofem::CBT_dynamic, oofem::CommMode_Dynamic, oofem::MesherInterface::domain, oofem::Communicator::finishExchange(), giveNumberOfProcesses(), oofem::Communicator::initExchange(), oofem::Communicator::packAllData(), SHARED_IRREGULAR_DATA_TAG, and oofem::Communicator::unpackAllData().
Referenced by bisectMesh().
|
protected |
Definition at line 3997 of file subdivision.C.
References assignGlobalNumbersToSharedIrregulars(), oofem::Subdivision::RS_Element::bisect(), oofem::Element_local, oofem::Element_remote, oofem::Subdivision::RS_Element::evaluateLongestEdge(), exchangeSharedEdges(), exchangeSharedIrregulars(), oofem::Subdivision::RS_Element::generate(), oofem::Subdivision::RS_Element::giveDensity(), oofem::Subdivision::RS_Node::giveGlobalNumber(), oofem::Subdivision::RS_Element::giveNumber(), giveNumberOfProcesses(), oofem::Subdivision::RS_Element::giveParallelMode(), oofem::Subdivision::RS_Element::giveQueueFlag(), giveRank(), oofem::Subdivision::RS_Element::giveRequiredDensity(), isNodeLocalIrregular(), oofem::Subdivision::RS_Element::isTerminal(), oofem::max(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::Subdivision::RS_Node::setGlobalNumber(), oofem::Subdivision::RS_Element::setQueueFlag(), sharedEdgesQueue, sharedIrregularsQueue, subdivqueue, and oofem::Subdivision::RS_Element::update_neighbours().
Referenced by createMesh().
|
overridevirtual |
Runs the mesh generation, mesh will be written to corresponding domain din file.
Implements oofem::MesherInterface.
Definition at line 3384 of file subdivision.C.
References assignGlobalNumbersToElements(), oofem::FloatArray::at(), oofem::IntArray::at(), bisectMesh(), oofem::classFactory, oofem::DofManager_shared, oofem::MesherInterface::domain, oofem::Element_local, exchangeRemoteElements(), exchangeSharedEdges(), oofem::Timer::getUtime(), oofem::DofManager::giveInputRecordName(), oofem::DofManager::giveLoadArray(), oofem::SimpleSlaveDof::giveMasterDofManagerNum(), giveRank(), oofem::DynamicInputRecord::giveRecordAsString(), oofem::DynamicInputRecord::giveRecordKeywordField(), oofem::IntArray::giveSize(), oofem::Element::IPK_Element_nodes, mesh, oofem::MesherInterface::MI_OK, oofem::NonlocalMaterialExtensionInterfaceType, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::IntArray::resize(), oofem::Node::setCoordinates(), oofem::DynamicInputRecord::setField(), sharedEdgesQueue, smoothingFlag, smoothMesh(), oofem::Timer::startTimer(), and oofem::Timer::stopTimer().
Definition at line 5284 of file subdivision.C.
References oofem::DomainTransactionManager::addDofManTransaction(), oofem::DomainTransactionManager::addElementTransaction(), oofem::CBT_dynamic, oofem::CommMode_Dynamic, oofem::Subdivision::RS_packRemoteElemsStruct::d, oofem::DofManager_null, oofem::Element_remote, oofem::Communicator::finishExchange(), oofem::Domain::giveDofManager(), oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::DofManager::giveGlobalNumber(), oofem::Element::giveGlobalNumber(), oofem::Domain::giveNumberOfDofManagers(), oofem::Domain::giveNumberOfElements(), giveNumberOfProcesses(), oofem::DofManager::giveParallelMode(), oofem::Element::giveParallelMode(), giveRank(), oofem::Domain::giveTransactionManager(), oofem::Communicator::initExchange(), oofem::Communicator::packAllData(), oofem::Subdivision::RS_packRemoteElemsStruct::parentElemMap, SUBDIVISION_MIGRATE_REMOTE_ELEMENTS_TAG, and oofem::Communicator::unpackAllData().
Referenced by createMesh().
|
protected |
Definition at line 5490 of file subdivision.C.
References oofem::IntArray::at(), oofem::CBT_dynamic, oofem::CommMode_Dynamic, oofem::MesherInterface::domain, oofem::IntArray::findCommonValuesSorted(), oofem::Communicator::finishExchange(), giveNumberOfProcesses(), giveRank(), oofem::IntArray::giveSize(), oofem::Communicator::initExchange(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::Communicator::packAllData(), oofem::IntArray::preallocate(), SHARED_EDGE_DATA_TAG, sharedEdgesQueue, and oofem::Communicator::unpackAllData().
Referenced by bisectMesh(), and createMesh().
|
protected |
Exchanges the shared irregulars between partitions. Returns true if any shared irregular has been exchanged between any partitions.
Definition at line 4780 of file subdivision.C.
References oofem::CBT_dynamic, oofem::CommMode_Dynamic, oofem::MesherInterface::domain, oofem::Communicator::finishExchange(), giveNumberOfProcesses(), giveRank(), oofem::Communicator::initExchange(), OOFEM_LOG_INFO, oofem::Communicator::packAllData(), SHARED_IRREGULAR_DATA_TAG, sharedIrregularsQueue, and oofem::Communicator::unpackAllData().
Referenced by bisectMesh().
|
inline |
Definition at line 422 of file subdivision.h.
|
inline |
Definition at line 423 of file subdivision.h.
References oofem::MesherInterface::domain.
|
inlineprotected |
Definition at line 426 of file subdivision.h.
References mesh.
|
protected |
Definition at line 5250 of file subdivision.C.
References oofem::MesherInterface::domain.
Referenced by assignGlobalNumbersToElements(), assignGlobalNumbersToSharedIrregulars(), bisectMesh(), exchangeRemoteElements(), exchangeSharedEdges(), and exchangeSharedIrregulars().
|
protected |
Definition at line 5244 of file subdivision.C.
References oofem::MesherInterface::domain.
Referenced by assignGlobalNumbersToElements(), bisectMesh(), createMesh(), exchangeRemoteElements(), exchangeSharedEdges(), exchangeSharedIrregulars(), packIrregularSharedGlobnums(), packRemoteElements(), packSharedEdges(), packSharedIrregulars(), smoothMesh(), unpackIrregularSharedGlobnums(), unpackSharedEdges(), and unpackSharedIrregulars().
|
protected |
Definition at line 4654 of file subdivision.C.
References oofem::IntArray::at(), oofem::DofManager_local, oofem::DofManager_shared, oofem::IntArray::giveSize(), and oofem::min().
Referenced by bisectMesh().
|
protected |
Returns true if receiver is irregular, shared node locally maintatined.
Definition at line 5214 of file subdivision.C.
References oofem::IntArray::at(), oofem::DofManager_shared, oofem::IntArray::giveSize(), and oofem::min().
Referenced by packIrregularSharedGlobnums().
|
protected |
Definition at line 5078 of file subdivision.C.
References oofem::IntArray::at(), oofem::IntArray::contains(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), isNodeLocalSharedIrregular(), mesh, OOFEM_LOG_INFO, oofem::IntArray::storeYourself(), Subdivision(), SUBDIVISION_END_DATA, SUBDIVISION_SHARED_IRREGULAR_REC_TAG, and oofem::ProcessCommunicatorBuff::write().
|
protected |
Definition at line 5320 of file subdivision.C.
References oofem::IntArray::at(), CM_Definition, CM_DefinitionGlobal, oofem::IntArray::contains(), oofem::Subdivision::RS_packRemoteElemsStruct::d, oofem::DofManager_local, oofem::DofManager_shared, oofem::Element::drawRawGeometry(), gc, oofem::EngngModel::giveCurrentStep(), oofem::Domain::giveDofManager(), oofem::Element::giveDofManagerNumber(), oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::DofManager::giveGlobalNumber(), oofem::DofManager::giveInputRecordName(), oofem::FEMComponent::giveInputRecordName(), oofem::Domain::giveNumberOfElements(), oofem::Element::giveNumberOfNodes(), oofem::DofManager::giveParallelMode(), oofem::DofManager::givePartitionList(), oofem::EngngModel::giveProblemCommunicator(), oofem::Communicator::giveProcessCommunicator(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), oofem::ProcessCommunicator::giveToSendMap(), oofem::Subdivision::RS_packRemoteElemsStruct::parentElemMap, oofem::DofManager::saveContext(), oofem::Element::saveContext(), and oofem::ProcessCommunicatorBuff::write().
|
protected |
Definition at line 5583 of file subdivision.C.
References oofem::IntArray::at(), oofem::IntArray::contains(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), mesh, OOFEM_LOG_INFO, sharedEdgesQueue, oofem::IntArray::storeYourself(), Subdivision(), SUBDIVISION_END_DATA, SUBDIVISION_SHARED_EDGE_REC_TAG, and oofem::ProcessCommunicatorBuff::write().
|
protected |
Definition at line 4816 of file subdivision.C.
References oofem::IntArray::at(), oofem::IntArray::contains(), oofem::Subdivision::RS_IrregularNode::giveEdgeNodes(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), mesh, OOFEM_LOG_INFO, sharedIrregularsQueue, oofem::IntArray::storeYourself(), Subdivision(), SUBDIVISION_END_DATA, SUBDIVISION_SHARED_IRREGULAR_REC_TAG, and oofem::ProcessCommunicatorBuff::write().
|
protected |
Definition at line 4313 of file subdivision.C.
References oofem::FloatArray::add(), oofem::IntArray::at(), oofem::DofManager_null, oofem::DofManager_shared, oofem::MesherInterface::domain, oofem::Element_local, oofem::IntArray::findFirstIndexOf(), oofem::Subdivision::RS_Element::giveNeighbor(), oofem::Subdivision::RS_Element::giveNeighbors(), oofem::Subdivision::RS_Element::giveNode(), oofem::Subdivision::RS_Element::giveNodes(), oofem::Subdivision::RS_Element::giveParallelMode(), giveRank(), oofem::Subdivision::RS_Element::giveSideNodes(), oofem::Subdivision::RS_Element::giveTopParent(), oofem::Subdivision::RS_Element::isTerminal(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::IntArray::resize(), oofem::sort(), oofem::FloatArray::times(), oofem::FloatArray::zero(), and oofem::IntArray::zero().
Referenced by createMesh().
|
protected |
Definition at line 5120 of file subdivision.C.
References oofem::IntArray::at(), oofem::IntArray::findCommonValuesSorted(), oofem::Subdivision::RS_Element::giveEdgeIndex(), oofem::Subdivision::RS_Element::giveIrregular(), oofem::Subdivision::RS_Element::giveNumber(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), oofem::Subdivision::RS_Element::giveSharedEdge(), oofem::Subdivision::RS_Element::giveSharedEdges(), oofem::IntArray::giveSize(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::IntArray::preallocate(), oofem::ProcessCommunicatorBuff::read(), oofem::IntArray::restoreYourself(), oofem::Subdivision::RS_Node::setGlobalNumber(), Subdivision(), SUBDIVISION_END_DATA, and SUBDIVISION_SHARED_IRREGULAR_REC_TAG.
|
protected |
Definition at line 5417 of file subdivision.C.
References oofem::DomainTransactionManager::addDofManTransaction(), oofem::DomainTransactionManager::addElementTransaction(), oofem::IntArray::at(), oofem::classFactory, CM_Definition, CM_DefinitionGlobal, oofem::DofManager_null, oofem::Element_remote, oofem::DomainTransactionManager::giveDofManager(), oofem::Domain::giveEngngModel(), oofem::Element::giveGlobalNumber(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::EngngModel::giveRank(), oofem::ProcessCommunicator::giveRank(), oofem::Domain::giveTransactionManager(), oofem::ProcessCommunicatorBuff::read(), oofem::DofManager::restoreContext(), oofem::Element::restoreContext(), oofem::DofManager::setGlobalNumber(), oofem::DofManager::setParallelMode(), oofem::Element::setParallelMode(), and oofem::Element::setPartitionList().
|
protected |
Definition at line 5618 of file subdivision.C.
References oofem::IntArray::at(), oofem::IntArray::findCommonValuesSorted(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), oofem::IntArray::giveSize(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::IntArray::preallocate(), oofem::ProcessCommunicatorBuff::read(), oofem::IntArray::restoreYourself(), Subdivision(), SUBDIVISION_END_DATA, and SUBDIVISION_SHARED_EDGE_REC_TAG.
|
protected |
Definition at line 4853 of file subdivision.C.
References oofem::FloatArray::add(), oofem::FloatArray::at(), oofem::IntArray::at(), oofem::DofManager_shared, oofem::MesherInterface::domain, oofem::IntArray::findCommonValuesSorted(), oofem::ProcessCommunicator::giveProcessCommunicatorBuff(), oofem::ProcessCommunicator::giveRank(), giveRank(), oofem::IntArray::giveSize(), mesh, OOFEM_ERROR, OOFEM_LOG_INFO, oofem::IntArray::preallocate(), oofem::ProcessCommunicatorBuff::read(), oofem::IntArray::restoreYourself(), Subdivision(), SUBDIVISION_END_DATA, SUBDIVISION_SHARED_IRREGULAR_REC_TAG, subdivqueue, and oofem::FloatArray::times().
|
protected |
Definition at line 401 of file subdivision.h.
Referenced by oofem::Subdivision::RS_Tetra::bisect(), oofem::Subdivision::RS_Triangle::bisect(), bisectMesh(), createMesh(), oofem::Subdivision::RS_Tetra::drawGeometry(), oofem::Subdivision::RS_Triangle::drawGeometry(), oofem::Subdivision::RS_Tetra::evaluateLongestEdge(), oofem::Subdivision::RS_Triangle::evaluateLongestEdge(), exchangeSharedEdges(), oofem::Subdivision::RS_Tetra::generate(), oofem::Subdivision::RS_Triangle::generate(), oofem::Subdivision::RS_Tetra::giveDensity(), oofem::Subdivision::RS_Triangle::giveDensity(), giveMesh(), oofem::Subdivision::RS_Tetra::importConnectivity(), oofem::Subdivision::RS_Triangle::importConnectivity(), oofem::Subdivision::RS_Tetra::numberSharedEdges(), oofem::Subdivision::RS_Triangle::numberSharedEdges(), packIrregularSharedGlobnums(), packSharedEdges(), packSharedIrregulars(), oofem::Subdivision::RS_Tetra::RS_Tetra(), oofem::Subdivision::RS_Triangle::RS_Triangle(), smoothMesh(), Subdivision(), unpackIrregularSharedGlobnums(), unpackSharedEdges(), unpackSharedIrregulars(), oofem::Subdivision::RS_Tetra::update_neighbours(), oofem::Subdivision::RS_Triangle::update_neighbours(), and ~Subdivision().
|
protected |
Definition at line 404 of file subdivision.h.
Referenced by bisectMesh(), createMesh(), exchangeSharedEdges(), oofem::Subdivision::RS_Element::generate(), oofem::Subdivision::RS_Tetra::generate(), oofem::Subdivision::RS_Triangle::generate(), and packSharedEdges().
|
protected |
Definition at line 403 of file subdivision.h.
Referenced by oofem::Subdivision::RS_Element::bisect(), oofem::Subdivision::RS_Tetra::bisect(), oofem::Subdivision::RS_Triangle::bisect(), bisectMesh(), exchangeSharedIrregulars(), and packSharedIrregulars().
|
protected |
Definition at line 406 of file subdivision.h.
Referenced by createMesh(), and Subdivision().
|
protected |
Definition at line 402 of file subdivision.h.
Referenced by oofem::Subdivision::RS_Element::bisect(), oofem::Subdivision::RS_Tetra::bisect(), oofem::Subdivision::RS_Triangle::bisect(), bisectMesh(), and unpackSharedIrregulars().