OOFEM 3.0
Loading...
Searching...
No Matches
quad10_2d_supg.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 quad10_2d_supg_h
36#define quad10_2d_supg_h
37
38#include "supgelement2.h"
39#include "spatiallocalizer.h"
42#include "leplic.h"
43#include "levelsetpcs.h"
45
46#define _IFT_Quad10_2D_SUPG_Name "quad1supg"
47
48namespace oofem {
49class FEI2dQuadLin;
50class FEI2dQuadConst;
51
58{
59protected:
63
64public:
65 Quad10_2D_SUPG(int n, Domain * d);
66
67 FEInterpolation *giveInterpolation() const override;
69
70 // definition
71 const char *giveClassName() const override { return "Quad1_2D_SUPG"; }
72 const char *giveInputRecordName() const override { return _IFT_Quad10_2D_SUPG_Name; }
73 MaterialMode giveMaterialMode() override { return _2dFlow; }
74 Element_Geometry_Type giveGeometryType() const override {return EGT_quad_1;}
75
76
77 void giveInternalDofManDofIDMask(int i, IntArray &answer) const override;
78 void giveDofManDofIDMask(int inode, IntArray &answer) const override;
79 int computeNumberOfDofs() override;
80 void initializeFrom(InputRecord &ir, int priority) override;
81 void giveInputRecord(DynamicInputRecord &input) override;
82 void updateYourself(TimeStep *tStep) override;
83 int checkConsistency() override;
84
85 void saveContext(DataStream &stream, ContextMode mode) override;
86 void restoreContext(DataStream &stream, ContextMode mode) override;
87
88 double LS_PCS_computeF(LevelSetPCS *ls, TimeStep *tStep) override;
89 void LS_PCS_computedN(FloatMatrix &answer) override;
90 double LS_PCS_computeVolume() override { return 0.0; }
91 double LS_PCS_computeS(LevelSetPCS *ls, TimeStep *tStep) override;
92 void LS_PCS_computeVOFFractions(FloatArray &answer, FloatArray &fi) override;
93
95
97 InternalStateType type, TimeStep *tStep) override;
98
100
101 void computeIntersection(int iedge, FloatArray &intcoords, FloatArray &fi);
102
103 void computeMiddlePointOnParabolicArc(FloatArray &answer, int iedge, FloatArray borderpoints);
104
106
107 void computeQuadraticRoots(FloatArray Coeff, double &r1, double &r2);
108
109 void computeCoordsOfEdge(FloatArray &answer, int iedge);
110
111 void computeQuadraticFunct(FloatArray &answer, int iedge);
112
115
116 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
117
118#ifdef __OOFEG
120 int node, TimeStep *tStep) override;
121 // Graphics output
122 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
123 void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override;
124 //void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) override {}
125#endif
126
127 double computeCriticalTimeStep(TimeStep *tStep) override;
128
129 // three terms for computing their norms due to computing t_supg
130 void computeAdvectionTerm(FloatMatrix &answer, TimeStep *tStep);
131 void computeAdvectionDeltaTerm(FloatMatrix &answer, TimeStep *tStep);
132 void computeMassDeltaTerm(FloatMatrix &answer, TimeStep *tStep);
133 void computeLSICTerm(FloatMatrix &answer, TimeStep *tStep);
135 void computeMassEpsilonTerm(FloatMatrix &answer, TimeStep *tStep);
136
137 //int giveNumberOfDofs() override { return 1; }
138 int giveNumberOfInternalDofManagers() const override { return 1; }
139 DofManager *giveInternalDofManager(int i) const override;
140
141protected:
142 void giveLocalVelocityDofMap(IntArray &map) override;
143 void giveLocalPressureDofMap(IntArray &map) override;
144
145 void computeGaussPoints() override;
146 void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep) override;
147 void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
148 void computeNuMatrix(FloatMatrix &answer, GaussPoint *gp) override;
149 void computeUDotGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override;
150 void computeBMatrix(FloatMatrix &anwer, GaussPoint *gp) override;
151 void computeDivUMatrix(FloatMatrix &answer, GaussPoint *gp) override;
152 void computeNpMatrix(FloatMatrix &answer, GaussPoint *gp) override;
153 void computeGradPMatrix(FloatMatrix &answer, GaussPoint *gp) override;
154 void computeDivTauMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override;
155 void computeGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override;
156 int giveNumberOfSpatialDimensions() override;
157 double computeVolumeAround(GaussPoint *gp) override;
158
159 void updateStabilizationCoeffs(TimeStep *tStep) override;
160};
161} // end namespace oofem
162#endif // quad10_supg_h
void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep) override
int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep) override
double LS_PCS_computeS(LevelSetPCS *ls, TimeStep *tStep) override
void computeCenterOf(FloatArray &C, FloatArray c, int dim)
void computeMassDeltaTerm(FloatMatrix &answer, TimeStep *tStep)
void initializeFrom(InputRecord &ir, int priority) override
double computeVolumeAround(GaussPoint *gp) override
void computeAdvectionDeltaTerm(FloatMatrix &answer, TimeStep *tStep)
void computeGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override
void computeGradPMatrix(FloatMatrix &answer, GaussPoint *gp) override
void computeAdvectionEpsilonTerm(FloatMatrix &answer, TimeStep *tStep)
void computeAdvectionTerm(FloatMatrix &answer, TimeStep *tStep)
int giveNumberOfSpatialDimensions() override
void LS_PCS_computeVOFFractions(FloatArray &answer, FloatArray &fi) override
void restoreContext(DataStream &stream, ContextMode mode) override
FEInterpolation * giveInterpolation() const override
double LS_PCS_computeF(LevelSetPCS *ls, TimeStep *tStep) override
double computeCriticalTimeStep(TimeStep *tStep) override
Computes the critical time increment.
Element_Geometry_Type giveGeometryType() const override
Interface * giveInterface(InterfaceType t) override
ElementDofManager pressureNode
void giveLocalPressureDofMap(IntArray &map) override
void giveInternalDofManDofIDMask(int i, IntArray &answer) const override
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
static FEI2dQuadLin velocityInterpolation
void computeQuadraticRoots(FloatArray Coeff, double &r1, double &r2)
void computeNpMatrix(FloatMatrix &answer, GaussPoint *gp) override
void computeQuadraticFunct(FloatArray &answer, int iedge)
const char * giveInputRecordName() const override
void computeNuMatrix(FloatMatrix &answer, GaussPoint *gp) override
Quad10_2D_SUPG(int n, Domain *d)
void computeUDotGradUMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override
void saveContext(DataStream &stream, ContextMode mode) override
void computeMiddlePointOnParabolicArc(FloatArray &answer, int iedge, FloatArray borderpoints)
void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
void updateYourself(TimeStep *tStep) override
MaterialMode giveMaterialMode() override
int computeNumberOfDofs() override
double LS_PCS_computeVolume() override
Returns receiver's volume.
void giveLocalVelocityDofMap(IntArray &map) override
const char * giveClassName() const override
void computeLSICTerm(FloatMatrix &answer, TimeStep *tStep)
DofManager * giveInternalDofManager(int i) const override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void computeGaussPoints() override
void computeIntersection(int iedge, FloatArray &intcoords, FloatArray &fi)
void computeQuadraticFunct(FloatArray &answer, FloatArray line)
void updateStabilizationCoeffs(TimeStep *tStep) override
static FEI2dQuadConst pressureInterpolation
void computeMassEpsilonTerm(FloatMatrix &answer, TimeStep *tStep)
void computeDivUMatrix(FloatMatrix &answer, GaussPoint *gp) override
void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
void computeCoordsOfEdge(FloatArray &answer, int iedge)
void LS_PCS_computedN(FloatMatrix &answer) override
int giveNumberOfInternalDofManagers() const override
void computeDivTauMatrix(FloatMatrix &answer, GaussPoint *gp, TimeStep *tStep) override
int checkConsistency() override
void computeBMatrix(FloatMatrix &anwer, GaussPoint *gp) override
void giveDofManDofIDMask(int inode, IntArray &answer) const override
void giveInputRecord(DynamicInputRecord &input) override
SUPGElement2(int n, Domain *aDomain)
ZZNodalRecoveryModelInterface(Element *element)
Constructor.
long ContextMode
Definition contextmode.h:43
InternalStateMode
Determines the mode of internal variable.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define _IFT_Quad10_2D_SUPG_Name

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