OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::NonlocalMaterialWTP Class Reference

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

#include <nonlocalmatwtp.h>

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

Public Member Functions

 NonlocalMaterialWTP (LoadBalancer *_lb)
 
void init (Domain *d)
 Initializes receiver; should be called before any work transfer. More...
 
void migrate ()
 Migrates necessary local elements to remote processors, where they become remote elements needed to efficiently handle nonlocal dependencies. More...
 
void update ()
 Called after all wtps migrated their data. More...
 
- Public Member Functions inherited from oofem::LoadBalancer::WorkTransferPlugin
 WorkTransferPlugin (LoadBalancer *_lb)
 
virtual ~WorkTransferPlugin ()
 

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)
 Plugin for Element::ipEvaluator service to compile nonlocal dependency array for given element (in case of nonlocal material) More...
 
void fastRebuildNonlocalTables ()
 Rebuilds nonlocal integration tables in element gauss points using information in nonlocElementDependencyMap, this should be significantly faster than rebuild the whole information from scratch. More...
 
void fastElementIPNonlocTableUpdater (GaussPoint *gp, IntArray &map)
 Element plugin for ipEvaluator service to update nonlocal tables of its integration points from given map, containing element dependency. More...
 

Protected Attributes

std::map< int, IntArraynonlocElementDependencyMap
 
std::vector< std::list< int > > toSendList
 
- Protected Attributes inherited from oofem::LoadBalancer::WorkTransferPlugin
LoadBalancerlb
 

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

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

Definition at line 71 of file nonlocalmatwtp.h.

Member Function Documentation

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 513 of file nonlocalmatwtp.C.

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

Referenced by fastRebuildNonlocalTables().

void oofem::NonlocalMaterialWTP::fastRebuildNonlocalTables ( )
protected
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::NonlocalMaterialStatusExtensionInterface::giveIntegrationDomainList(), oofem::GaussPoint::giveMaterialStatus(), and oofem::NonlocalMaterialStatusExtensionInterfaceType.

Referenced by giveElementNonlocalDepArry().

void oofem::NonlocalMaterialWTP::migrate ( )
virtual

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)

Implements oofem::LoadBalancer::WorkTransferPlugin.

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::LoadBalancer::giveDomain(), 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(), oofem::LoadBalancer::WorkTransferPlugin::lb, MIGRATE_REMOTE_ELEMENTS_TAG, nonlocElementDependencyMap, OOFEM_ERROR, oofem::Communicator::packAllData(), packRemoteElements(), oofem::StaticCommunicationBuffer::read(), oofem::StaticCommunicationBuffer::resize(), toSendList, oofem::Communicator::unpackAllData(), unpackRemoteElements(), VERBOSEPARALLEL_PRINT, and oofem::StaticCommunicationBuffer::write().

void oofem::NonlocalMaterialWTP::update ( )
virtual

Called after all wtps migrated their data.

Intended to update local data structure. Current implementations rebuilds the nonlocal integration point tables.

Implements oofem::LoadBalancer::WorkTransferPlugin.

Definition at line 288 of file nonlocalmatwtp.C.

References fastRebuildNonlocalTables(), and nonlocElementDependencyMap.

Member Data Documentation

std :: map< int, IntArray > oofem::NonlocalMaterialWTP::nonlocElementDependencyMap
protected
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 documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:39 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011