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

Represent the abstraction for DOF manager. More...

#include <fetiboundarydofman.h>

+ Collaboration diagram for oofem::FETIBoundaryDofManager:

Public Member Functions

 FETIBoundaryDofManager ()
 
 FETIBoundaryDofManager (int num, int part, int ndof)
 
 FETIBoundaryDofManager (const FETIBoundaryDofManager &)
 
int giveNumberOfSharedPartitions ()
 Returns number of partitions sharing receiver. More...
 
int giveNumberOfDofs ()
 Returns number of DOFs (with associated equation) of receiver. More...
 
int giveGlobalNumber ()
 Returns corresponding global number of receiver. More...
 
int giveReferencePratition ()
 Returns reference partition number of receiver. More...
 
int giveSharedPartition (int i)
 Returns number of i-th shared partition of receiver. More...
 
int giveCodeNumber (int partition_num, int dof_num)
 Returns code number corresponding to partition number partition_num and to dof_num-th DOF. More...
 
int giveCompleteLocationArray (int rank, IntArray &locationArray)
 Returns code numbers for all DOFs associated with shared partition. More...
 
void addPartition (int partitionNumber)
 Adds partition to list of partitions, sharing this dof manager. More...
 
int setCodeNumbers (int &equationCounter)
 Associates the equation numbers to particular DOFs. More...
 

Protected Attributes

int globalNumber
 Associated global number of dofManager. More...
 
int numberOfPartitions
 Total number of partitions sharing receiver. More...
 
int ndofs
 Number of nonprescribed dofs, i.e, those, for which equation is necessary. More...
 
int referencePartition
 Reference partition is partition to which other partitions sharing the dof manager are linked using lagrange multipliers. More...
 
IntArray partitions
 List of partitions sharing dof manager. More...
 
IntArray codeNumbers
 Contains code numbers for each linked partition for each DOF (ndofs*(numberOfPartitions-1) DOFs). More...
 

Detailed Description

Represent the abstraction for DOF manager.

This DOF manager is on partition boundary and influences to master equations. It is typically shared by two or more partitions. It keeps its associated global number, number of partitions sharing it, and corresponding number of DOFs (only those with associate equation are taken into account). If n partitions share the DOF manager, then on master level n-1 different code numbers for each DOF must be maintained. The compatibility is then enforced using Lagrange multipliers. It is necessary to select one partition (reference one), to which other partitions DOFs are "linked" through Lagrange multipliers. Such partition contributes to all sharing partitions DOFs. Such partition contribute to all allocated cod numbers. The partition with lowest rank is selected as reference one.

Definition at line 53 of file fetiboundarydofman.h.

Constructor & Destructor Documentation

oofem::FETIBoundaryDofManager::FETIBoundaryDofManager ( )

Definition at line 42 of file fetiboundarydofman.C.

References globalNumber, ndofs, and numberOfPartitions.

oofem::FETIBoundaryDofManager::FETIBoundaryDofManager ( int  num,
int  part,
int  ndof 
)

Definition at line 49 of file fetiboundarydofman.C.

References globalNumber, ndofs, and numberOfPartitions.

oofem::FETIBoundaryDofManager::FETIBoundaryDofManager ( const FETIBoundaryDofManager src)

Member Function Documentation

void oofem::FETIBoundaryDofManager::addPartition ( int  partitionNumber)

Adds partition to list of partitions, sharing this dof manager.

The referencePartition is updated if necessary.

Parameters
partitionNumberNew partition number (0..size-1)

Definition at line 70 of file fetiboundarydofman.C.

References oofem::IntArray::at(), oofem::IntArray::followedBy(), numberOfPartitions, partitions, and referencePartition.

Referenced by giveSharedPartition().

int oofem::FETIBoundaryDofManager::giveCodeNumber ( int  partition_num,
int  dof_num 
)

Returns code number corresponding to partition number partition_num and to dof_num-th DOF.

Parameters
partition_numPartition number for which code number is required.
dof_numSpecifies the particular DOF.
Returns
Value of corresponding code number, zero if such partition does not share. the receiver or if code number for reference partition is requested.

Definition at line 102 of file fetiboundarydofman.C.

References oofem::IntArray::at(), codeNumbers, ndofs, numberOfPartitions, OOFEM_ERROR, partitions, and referencePartition.

Referenced by giveSharedPartition(), oofem::FETISolver::masterMapDirectionVector(), oofem::FETISolver::masterMapPPVector(), oofem::FETISolver::masterMapRBM(), oofem::FETISolver::masterMapResiduals(), oofem::FETISolver::masterMapSolution(), oofem::FETISolver::masterUnpackRBM(), oofem::FETISolver::packDirectionVector(), oofem::FETISolver::packSolution(), oofem::FETISolver::unpackPPVector(), and oofem::FETISolver::unpackResiduals().

int oofem::FETIBoundaryDofManager::giveCompleteLocationArray ( int  rank,
IntArray locationArray 
)

Returns code numbers for all DOFs associated with shared partition.

Parameters
rankPartition number.
locationArrayThe location array of size ndof.
Returns
Nonzero if o.k, zero if no such partition shared or if code numbers for reference partition required.

Definition at line 127 of file fetiboundarydofman.C.

References oofem::IntArray::at(), codeNumbers, ndofs, numberOfPartitions, partitions, referencePartition, and oofem::IntArray::resize().

Referenced by giveSharedPartition(), oofem::FETISolver::packDirectionVector(), and oofem::FETISolver::packSolution().

int oofem::FETIBoundaryDofManager::giveGlobalNumber ( )
inline

Returns corresponding global number of receiver.

Definition at line 89 of file fetiboundarydofman.h.

References globalNumber.

int oofem::FETIBoundaryDofManager::setCodeNumbers ( int &  equationCounter)

Associates the equation numbers to particular DOFs.

Parameters
equationCounterCurrent equation counter, updated.
Returns
New value of equationCounter.

Definition at line 88 of file fetiboundarydofman.C.

References oofem::IntArray::at(), codeNumbers, ndofs, numberOfPartitions, and oofem::IntArray::resize().

Referenced by giveSharedPartition().

Member Data Documentation

IntArray oofem::FETIBoundaryDofManager::codeNumbers
protected

Contains code numbers for each linked partition for each DOF (ndofs*(numberOfPartitions-1) DOFs).

The reference partition contributes to all code numbers. The code numbers for n-th linked partition (its number is determined by index of corresponding entry in partitions array) are stored at ((n-1)*ndofs+1, ..., n*ndofs) positions in codeNumbers array.

Definition at line 77 of file fetiboundarydofman.h.

Referenced by FETIBoundaryDofManager(), giveCodeNumber(), giveCompleteLocationArray(), and setCodeNumbers().

int oofem::FETIBoundaryDofManager::globalNumber
protected

Associated global number of dofManager.

Definition at line 57 of file fetiboundarydofman.h.

Referenced by FETIBoundaryDofManager(), and giveGlobalNumber().

int oofem::FETIBoundaryDofManager::ndofs
protected

Number of nonprescribed dofs, i.e, those, for which equation is necessary.

Definition at line 61 of file fetiboundarydofman.h.

Referenced by FETIBoundaryDofManager(), giveCodeNumber(), giveCompleteLocationArray(), giveNumberOfDofs(), and setCodeNumbers().

int oofem::FETIBoundaryDofManager::numberOfPartitions
protected

Total number of partitions sharing receiver.

Definition at line 59 of file fetiboundarydofman.h.

Referenced by addPartition(), FETIBoundaryDofManager(), giveCodeNumber(), giveCompleteLocationArray(), giveNumberOfSharedPartitions(), and setCodeNumbers().

IntArray oofem::FETIBoundaryDofManager::partitions
protected

List of partitions sharing dof manager.

Definition at line 69 of file fetiboundarydofman.h.

Referenced by addPartition(), FETIBoundaryDofManager(), giveCodeNumber(), and giveCompleteLocationArray().

int oofem::FETIBoundaryDofManager::referencePartition
protected

Reference partition is partition to which other partitions sharing the dof manager are linked using lagrange multipliers.

We use the partition, which has its number the lowest from all sharing partitions.

Definition at line 67 of file fetiboundarydofman.h.

Referenced by addPartition(), FETIBoundaryDofManager(), giveCodeNumber(), giveCompleteLocationArray(), and giveReferencePratition().


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:35 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011