OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Represent the abstraction for DOF manager. More...
#include <fetiboundarydofman.h>
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... | |
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.
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 | ) |
Definition at line 58 of file fetiboundarydofman.C.
References codeNumbers, globalNumber, ndofs, numberOfPartitions, partitions, and referencePartition.
void oofem::FETIBoundaryDofManager::addPartition | ( | int | partitionNumber | ) |
Adds partition to list of partitions, sharing this dof manager.
The referencePartition is updated if necessary.
partitionNumber | New 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.
partition_num | Partition number for which code number is required. |
dof_num | Specifies the particular DOF. |
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.
rank | Partition number. |
locationArray | The location array of size ndof. |
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().
|
inline |
Returns corresponding global number of receiver.
Definition at line 89 of file fetiboundarydofman.h.
References globalNumber.
|
inline |
Returns number of DOFs (with associated equation) of receiver.
Definition at line 87 of file fetiboundarydofman.h.
References ndofs.
Referenced by oofem::FETISolver::estimateMaxPackSize(), 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().
|
inline |
Returns number of partitions sharing receiver.
Definition at line 85 of file fetiboundarydofman.h.
References numberOfPartitions.
Referenced by 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().
|
inline |
Returns reference partition number of receiver.
Definition at line 91 of file fetiboundarydofman.h.
References referencePartition.
Referenced by 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().
|
inline |
Returns number of i-th shared partition of receiver.
Definition at line 93 of file fetiboundarydofman.h.
References addPartition(), oofem::IntArray::at(), giveCodeNumber(), giveCompleteLocationArray(), and setCodeNumbers().
Referenced by 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::setCodeNumbers | ( | int & | equationCounter | ) |
Associates the equation numbers to particular DOFs.
equationCounter | Current equation counter, updated. |
Definition at line 88 of file fetiboundarydofman.C.
References oofem::IntArray::at(), codeNumbers, ndofs, numberOfPartitions, and oofem::IntArray::resize().
Referenced by giveSharedPartition().
|
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().
|
protected |
Associated global number of dofManager.
Definition at line 57 of file fetiboundarydofman.h.
Referenced by FETIBoundaryDofManager(), and giveGlobalNumber().
|
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().
|
protected |
Total number of partitions sharing receiver.
Definition at line 59 of file fetiboundarydofman.h.
Referenced by addPartition(), FETIBoundaryDofManager(), giveCodeNumber(), giveCompleteLocationArray(), giveNumberOfSharedPartitions(), and setCodeNumbers().
|
protected |
List of partitions sharing dof manager.
Definition at line 69 of file fetiboundarydofman.h.
Referenced by addPartition(), FETIBoundaryDofManager(), giveCodeNumber(), and giveCompleteLocationArray().
|
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().