OOFEM 3.0
Loading...
Searching...
No Matches
supgelement.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 supgelement_h
36#define supgelement_h
37
38#include "fmelement.h"
39#include "matresponsemode.h"
40
41namespace oofem {
42class TimeStep;
43class GaussPoint;
44class FloatMatrix;
45class FloatArray;
46class IntArray;
47class Load;
48class ParamKey;
49
53class SUPGElement : public FMElement
54{
55protected:
60
65 double t_supg = 0., t_pspg = 0., t_lsic = 0.;
66
69
70public:
71 SUPGElement(int n, Domain * aDomain);
72
73 void initializeFrom(InputRecord &ir, int priority) override;
74 void giveInputRecord(DynamicInputRecord &input) override;
75
76 void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep) override;
77 void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override;
78 void updateStabilizationCoeffs(TimeStep *tStep) override { }
80
84 virtual void computeAccelerationTerm_MB(FloatMatrix &answer, TimeStep *tStep) = 0;
88 virtual void computeAdvectionTerm_MB(FloatArray &answer, TimeStep *tStep) = 0;
93 virtual void computeAdvectionDerivativeTerm_MB(FloatMatrix &answer, TimeStep *tStep) = 0;
97 virtual void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep) = 0;
102 virtual void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep) = 0;
106 virtual void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep) = 0;
110 virtual void computeBCLhsPressureTerm_MC(FloatMatrix &answer, TimeStep *tStep);
114 virtual void computeLSICStabilizationTerm_MB(FloatMatrix &answer, TimeStep *tStep) = 0;
118 virtual void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep) = 0;
122 virtual void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep) = 0;
127 virtual void computeAdvectionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) = 0;
131 virtual void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) = 0;
135 virtual void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep) = 0;
139 virtual void computeAccelerationTerm_MC(FloatMatrix &answer, TimeStep *tStep) = 0;
143 virtual void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep) = 0;
147 virtual void computeBCLhsTerm_MB(FloatMatrix &answer, TimeStep *tStep);
151 virtual void computeBCLhsPressureTerm_MB(FloatMatrix &answer, TimeStep *tStep);
155 virtual void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep) = 0;
159 virtual void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep) = 0;
163 virtual void computeSlipWithFrictionBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep) {
164 OOFEM_WARNING("computeSlipWithFrictionBCTerm_MB not implemented");
165 answer.clear();
166 }
167
170 virtual void computePenetrationWithResistanceBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep) {
171 OOFEM_WARNING("computePenetrationWithResistanceBCTerm_MB not implemented");
172 answer.clear();
173 }
174
177 virtual void computeOutFlowBCTerm_MB(FloatMatrix &answer, int side, TimeStep *tStep) {
178 OOFEM_WARNING("computeOutFlowBCTerm_MB not implemented");
179 answer.clear();
180 }
181
182
183 virtual void computeHomogenizedReinforceTerm_MB(FloatMatrix &answer, Load *load, TimeStep *tStep) {
184 OOFEM_WARNING("computeHomogenizedReinforceTerm_MB");
185 answer.clear();
186 }
187 virtual void computeHomogenizedReinforceTerm_MC(FloatMatrix &answer, Load *load, TimeStep *tStep) {
188 OOFEM_WARNING("computeHomogenizedReinforceTerm_MB");
189 answer.clear();
190 }
191
192
194 virtual double computeCriticalTimeStep(TimeStep *tStep) = 0;
195
196 // time step termination
197 void updateInternalState(TimeStep *tStep) override;
198 int checkConsistency() override;
199
200#ifdef __OOFEG
202 int node, TimeStep *tStep) override;
203#endif
204
205 virtual void giveLocalVelocityDofMap(IntArray &map) { }
206 virtual void giveLocalPressureDofMap(IntArray &map) { }
207
208protected:
209 virtual void computeDeviatoricStrain(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) = 0;
210 virtual void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep) = 0;
211 virtual void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) = 0;
212};
213} // end namespace oofem
214#endif // supgelement_h
FMElement(int n, Domain *aDomain)
Definition fmelement.C:38
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
virtual void computeAdvectionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
static ParamKey IPK_SUPGElement_bsides
Definition supgelement.h:67
virtual void computeLSICStabilizationTerm_MB(FloatMatrix &answer, TimeStep *tStep)=0
virtual void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep)=0
virtual void giveLocalPressureDofMap(IntArray &map)
virtual void computeBCLhsPressureTerm_MB(FloatMatrix &answer, TimeStep *tStep)
virtual void computeDeviatoricStrain(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)=0
void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override
virtual void computeAdvectionTerm_MB(FloatArray &answer, TimeStep *tStep)=0
virtual void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep)=0
void giveInputRecord(DynamicInputRecord &input) override
Definition supgelement.C:84
virtual void updateElementForNewInterfacePosition(TimeStep *tStep)
Definition supgelement.h:79
virtual void computeHomogenizedReinforceTerm_MC(FloatMatrix &answer, Load *load, TimeStep *tStep)
virtual void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep)=0
virtual void computeAdvectionDerivativeTerm_MB(FloatMatrix &answer, TimeStep *tStep)=0
SUPGElement(int n, Domain *aDomain)
Definition supgelement.C:61
virtual void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
virtual void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
virtual void computeBCLhsTerm_MB(FloatMatrix &answer, TimeStep *tStep)
virtual void computeBCLhsPressureTerm_MC(FloatMatrix &answer, TimeStep *tStep)
IntArray boundaryCodes
Boundary sides codes.
Definition supgelement.h:59
virtual void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep)=0
virtual void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep)=0
virtual void computeAccelerationTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
static ParamKey IPK_SUPGElement_bcodes
Definition supgelement.h:68
void initializeFrom(InputRecord &ir, int priority) override
Definition supgelement.C:67
virtual void giveLocalVelocityDofMap(IntArray &map)
virtual double computeCriticalTimeStep(TimeStep *tStep)=0
Computes the critical time increment.
virtual void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep)=0
virtual void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
virtual void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep)=0
virtual void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep)=0
void updateStabilizationCoeffs(TimeStep *tStep) override
Definition supgelement.h:78
virtual void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep)=0
int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep) override
IntArray boundarySides
Array of boundary sides.
Definition supgelement.h:57
virtual void computeAccelerationTerm_MB(FloatMatrix &answer, TimeStep *tStep)=0
virtual void computeSlipWithFrictionBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep)
virtual void computeHomogenizedReinforceTerm_MB(FloatMatrix &answer, Load *load, TimeStep *tStep)
int checkConsistency() override
virtual void computePenetrationWithResistanceBCTerm_MB(FloatMatrix &answer, Load *load, int side, TimeStep *tStep)
void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep) override
Definition supgelement.C:95
virtual void computeOutFlowBCTerm_MB(FloatMatrix &answer, int side, TimeStep *tStep)
void updateInternalState(TimeStep *tStep) override
#define OOFEM_WARNING(...)
Definition error.h:80
InternalStateMode
Determines the mode of internal variable.

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