OOFEM 3.0
Loading...
Searching...
No Matches
oofem::NonlocalMaterialWTP Class Reference

#include <nonlocalmatwtp.h>

Inheritance diagram for oofem::NonlocalMaterialWTP:
Collaboration diagram for oofem::NonlocalMaterialWTP:

Public Member Functions

 NonlocalMaterialWTP (LoadBalancer *_lb)
void init (Domain *d) override
void migrate () override
void update () override

Protected Member Functions

void giveElementNonlocalDepArry (IntArray &answer, Domain *d, int num)
int packMigratingElementDependencies (Domain *d, ProcessCommunicator &pc)
int unpackMigratingElementDependencies (Domain *d, ProcessCommunicator &pc)
int packRemoteElements (Domain *d, ProcessCommunicator &pc)
int unpackRemoteElements (Domain *d, ProcessCommunicator &pc)
void giveNonlocalDepArryElementPlugin (GaussPoint *gp, std ::set< int > &s)
void fastRebuildNonlocalTables ()
void fastElementIPNonlocTableUpdater (GaussPoint *gp, IntArray &map)

Protected Attributes

std ::map< int, IntArraynonlocElementDependencyMap
std ::vector< std ::list< int > > toSendList

Detailed Description

Class implements Work Transfer Plugin that introduces extension to efficiently handle nonlocal dependency of nonlocal materials via remote elements.

Definition at line 63 of file nonlocalmatwtp.h.

Constructor & Destructor Documentation

◆ NonlocalMaterialWTP()

oofem::NonlocalMaterialWTP::NonlocalMaterialWTP ( LoadBalancer * _lb)
inline

Definition at line 71 of file nonlocalmatwtp.h.

Member Function Documentation

◆ fastElementIPNonlocTableUpdater()

void oofem::NonlocalMaterialWTP::fastElementIPNonlocTableUpdater ( GaussPoint * gp,
IntArray & map )
protected

Element plugin for ipEvaluator service to update nonlocal tables of its integration points from given map, containing element dependency.

Definition at line 510 of file nonlocalmatwtp.C.

References oofem::GaussPoint::giveElement(), oofem::Element::giveMaterial(), oofem::NonlocalMaterialExtensionInterfaceType, and oofem::NonlocalMaterialExtensionInterface::rebuildNonlocalPointTable().

◆ fastRebuildNonlocalTables()

void oofem::NonlocalMaterialWTP::fastRebuildNonlocalTables ( )
protected

Rebuilds nonlocal integration tables in element gauss points using information in nonlocElementDependencyMap, this should be significantly faster than rebuild the whole information from scratch.

Definition at line 482 of file nonlocalmatwtp.C.

References oofem::IntArray::at(), oofem::Element_local, oofem::Domain::elementGlobal2Local(), oofem::Domain::giveElement(), oofem::Element::giveGlobalNumber(), oofem::Domain::giveNumberOfElements(), oofem::Element::giveParallelMode(), oofem::Element::ipEvaluator(), nonlocElementDependencyMap, and oofem::IntArray::resize().

Referenced by update().

◆ giveElementNonlocalDepArry()

◆ giveNonlocalDepArryElementPlugin()

void oofem::NonlocalMaterialWTP::giveNonlocalDepArryElementPlugin ( GaussPoint * gp,
std ::set< int > & s )
protected

Plugin for Element::ipEvaluator service to compile nonlocal dependency array for given element (in case of nonlocal material)

Definition at line 84 of file nonlocalmatwtp.C.

References oofem::GaussPoint::giveMaterialStatus(), and oofem::NonlocalMaterialStatusExtensionInterfaceType.

◆ init()

◆ migrate()

void oofem::NonlocalMaterialWTP::migrate ( )
override

Migrates necessary local elements to remote processors, where they become remote elements needed to efficiently handle nonlocal dependencies.

This involves several steps:

  • send and receive nonlocElementDependencyArry of migrating regular elements to remote partition
  • build domain nonlocal element dependency list. Then exclude local elements - what remains are unsatisfied remote dependencies that have to be broadcasted and received from partitions owning relevant elements
  • transfer of local elements and nodes to remote partitions (remote elements and null dofmans)

Definition at line 143 of file nonlocalmatwtp.C.

References oofem::IntArray::at(), oofem::StaticCommunicationBuffer::bcast(), oofem::CBT_dynamic, oofem::Domain::commitTransactions(), oofem::CommMode_Dynamic, oofem::Element_local, oofem::Communicator::finishExchange(), oofem::Domain::giveElement(), oofem::Domain::giveEngngModel(), oofem::Element::giveGlobalNumber(), oofem::Domain::giveNumberOfElements(), oofem::EngngModel::giveNumberOfProcesses(), oofem::CommunicationBuffer::givePackSizeOfInt(), oofem::Element::giveParallelMode(), oofem::EngngModel::giveRank(), oofem::IntArray::giveSize(), oofem::Domain::giveTransactionManager(), oofem::StaticCommunicationBuffer::init(), oofem::Communicator::initExchange(), MIGRATE_REMOTE_ELEMENTS_TAG, nonlocElementDependencyMap, OOFEM_ERROR, oofem::Communicator::packAllData(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::resize(), toSendList, oofem::Communicator::unpackAllData(), VERBOSEPARALLEL_PRINT, and oofem::StaticCommunicationBuffer::write().

◆ packMigratingElementDependencies()

◆ packRemoteElements()

◆ unpackMigratingElementDependencies()

◆ unpackRemoteElements()

◆ update()

void oofem::NonlocalMaterialWTP::update ( )
override

Called after all wtps migrated their data. Intended to update local data structure. Current implementations rebuilds the nonlocal integration point tables.

Definition at line 288 of file nonlocalmatwtp.C.

References fastRebuildNonlocalTables(), and nonlocElementDependencyMap.

Member Data Documentation

◆ nonlocElementDependencyMap

std :: map< int, IntArray > oofem::NonlocalMaterialWTP::nonlocElementDependencyMap
protected

◆ toSendList

std :: vector< std :: list< int > > oofem::NonlocalMaterialWTP::toSendList
protected

Definition at line 68 of file nonlocalmatwtp.h.

Referenced by migrate(), and packRemoteElements().


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011