OOFEM 3.0
Loading...
Searching...
No Matches
fetisolver.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef fetisolver_h
36#define fetisolver_h
37
39#include "sparselinsystemnm.h"
40#include "convergedreason.h"
41#include "sparsemtrx.h"
42#include "floatarray.h"
43#include "floatmatrix.h"
44#include "processcomm.h"
45
47
48#define _IFT_FETISolver_Name "feti"
49#define _IFT_FETISolver_maxiter "maxiter"
50#define _IFT_FETISolver_maxerr "maxerr"
51#define _IFT_FETISolver_limit "limit"
52#define _IFT_FETISolver_energynormflag "energynormflag"
54
55namespace oofem {
56class Domain;
57class EngngModel;
58
59
60 #define FETISOLVER_MAX_RBM 6
62 #define FETISOLVER_ZERONUM 1.e-40
63
69{
70private:
71 int nse;
73 int ni;
75 double err;
77 double limit;
88 //
90 //
102public:
104 virtual ~FETISolver();
105
116
117 int estimateMaxPackSize(IntArray &, DataStream &, int &);
120
121 void initializeFrom(InputRecord &ir) override;
122
123 // identification
124 const char *giveClassName() const override { return "FETISolver"; }
126
128
129 int packRBM(ProcessCommunicator &processComm);
130 int masterUnpackRBM(ProcessCommunicator &processComm);
131 int packQQProducts(ProcessCommunicator &processComm);
133 int packSolution(ProcessCommunicator &processComm);
134 int unpackSolution(ProcessCommunicator &processComm);
135 int packResiduals(ProcessCommunicator &processComm);
136 int unpackResiduals(ProcessCommunicator &processComm);
139 int packPPVector(ProcessCommunicator &processComm);
140 int unpackPPVector(ProcessCommunicator &processComm);
141 int packGammas(ProcessCommunicator &processComm);
142 int unpackGammas(ProcessCommunicator &processComm);
143
144 int masterMapRBM();
145 int masterMapQQProduct();
146 int masterMapSolution();
147 int masterMapResiduals();
149 int masterMapPPVector();
150 int masterMapGammas();
151
153 virtual SparseMtrxType giveRecommendedMatrix(bool symmetric) const { return symmetric ? SMT_Skyline : SMT_SkylineU; }
154};
155} // end namespace oofem
156
157#endif // fetisolver_h
virtual ~FETISolver()
Definition fetisolver.C:59
int energyNorm_comput_flag
Flag indicating computation of energy norm.
Definition fetisolver.h:101
int packDirectionVector(ProcessCommunicator &processComm)
Definition fetisolver.C:703
int masterUnpackQQProduct(ProcessCommunicator &processComm)
Definition fetisolver.C:401
FloatArray w
Primary unknowns.
Definition fetisolver.h:87
FETICommunicator * masterCommunicator
Definition fetisolver.h:97
double limit
Linear dep./indep. trigger.
Definition fetisolver.h:77
FloatArray localGammas
Definition fetisolver.h:89
int masterMapDirectionVector()
Definition fetisolver.C:774
LinSystSolverType giveLinSystSolverType() const override
Definition fetisolver.h:125
IntArray se
Indices of singular equations.
Definition fetisolver.h:83
int packPPVector(ProcessCommunicator &processComm)
Definition fetisolver.C:832
int unpackGammas(ProcessCommunicator &processComm)
Definition fetisolver.C:980
FloatMatrix rbm
Rigid body motions.
Definition fetisolver.h:79
FloatArray gamma
Definition fetisolver.h:89
int unpackResiduals(ProcessCommunicator &processComm)
Definition fetisolver.C:596
int unpackSolution(ProcessCommunicator &processComm)
Definition fetisolver.C:480
ProcessCommunicatorBuff pcbuff
Definition fetisolver.h:93
FloatMatrix l
Rigid body motions of all partitions. On master only.
Definition fetisolver.h:81
double err
Max allowed error.
Definition fetisolver.h:75
int packQQProducts(ProcessCommunicator &processComm)
Definition fetisolver.C:386
int packGammas(ProcessCommunicator &processComm)
Definition fetisolver.C:963
ProcessCommunicator processCommunicator
Definition fetisolver.h:94
void projection(FloatArray &v, FloatMatrix &l, FloatMatrix &l1)
Definition fetisolver.C:219
IntArray masterCommMap
List of local nodes (at master) participating in communication (list of boundary dof managers).
Definition fetisolver.h:99
FETISolver(Domain *d, EngngModel *m)
Definition fetisolver.C:49
CommunicatorBuff * commBuff
Common Communicator buffer.
Definition fetisolver.h:96
int estimateMaxPackSize(IntArray &, DataStream &, int &)
Definition fetisolver.C:69
FloatArray dd
Definition fetisolver.h:89
int unpackDirectionVector(ProcessCommunicator &processComm)
Definition fetisolver.C:747
int packResiduals(ProcessCommunicator &processComm)
Definition fetisolver.C:570
int ni
Max number of iterations.
Definition fetisolver.h:73
FloatArray pp
Definition fetisolver.h:89
int packRBM(ProcessCommunicator &processComm)
Definition fetisolver.C:247
FloatArray qq
Definition fetisolver.h:89
void setUpCommunicationMaps()
Sets up the communication maps.
Definition fetisolver.C:116
int unpackPPVector(ProcessCommunicator &processComm)
Definition fetisolver.C:858
ConvergedReason solve(SparseMtrx &A, FloatArray &b, FloatArray &x) override
const char * giveClassName() const override
Definition fetisolver.h:124
int masterUnpackRBM(ProcessCommunicator &processComm)
Definition fetisolver.C:277
virtual SparseMtrxType giveRecommendedMatrix(bool symmetric) const
Definition fetisolver.h:153
int packSolution(ProcessCommunicator &processComm)
Definition fetisolver.C:436
IntArray rbmAddr
Addresses of initial partition contribution to rbm matrix.
Definition fetisolver.h:85
void initializeFrom(InputRecord &ir) override
Definition fetisolver.C:95
SparseLinearSystemNM(Domain *d, EngngModel *m)
Constructor.
@ SMT_Skyline
Symmetric skyline.
@ SMT_SkylineU
Unsymmetric skyline.

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