OOFEM 3.0
Loading...
Searching...
No Matches
tr1_2d_supg2_axi.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 tr1_2d_supg2_axi_h
36#define tr1_2d_supg2_axi_h
37
38#include "tr1_2d_supg.h"
39
40#define _IFT_TR1_2D_SUPG2_AXI_Name "tr1supg2axi"
41
42namespace oofem {
54{
55protected:
61 std::vector< FloatArray > vcoords [ 2 ];
62
68 int mat [ 2 ];
69
70public:
71 TR1_2D_SUPG2_AXI(int n, Domain * d);
72
73 void computeAccelerationTerm_MB(FloatMatrix &answer, TimeStep *tStep) override;
74 void computeAdvectionTerm_MB(FloatArray &answer, TimeStep *tStep) override;
75 void computeAdvectionDerivativeTerm_MB(FloatMatrix &answer, TimeStep *tStep) override;
76 void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep) override;
77 void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep) override;
78 void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep) override;
79 void computeLSICStabilizationTerm_MB(FloatMatrix &answer, TimeStep *tStep) override;
80 void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep) override;
81 void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep) override;
82 void computeAdvectionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override;
83 void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override;
84 void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep) override;
85 void computeAccelerationTerm_MC(FloatMatrix &answer, TimeStep *tStep) override;
86 void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep) override;
87 void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep) override;
88 void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep) override;
89
90 void updateStabilizationCoeffs(TimeStep *tStep) override;
92 double computeCriticalTimeStep(TimeStep *tStep) override;
93
94 // definition
95 const char *giveClassName() const override { return "TR1_2D_SUPG2_AXI"; }
96 const char *giveInputRecordName() const override { return _IFT_TR1_2D_SUPG2_AXI_Name; }
97 MaterialMode giveMaterialMode() override { return _2dAxiFlow; }
98 void initializeFrom(InputRecord &ir, int priority) override;
99 void giveInputRecord(DynamicInputRecord &input) override;
100
101 void printOutputAt(FILE *file, TimeStep *tStep) override;
102
103#ifdef __OOFEG
105 int node, TimeStep *tStep) override;
106 // Graphics output
107 void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override;
108 void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override;
109 //virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) {}
110#endif
111
112protected:
113 void computeGaussPoints() override;
114 void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep) override;
115 void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
116 void updateVolumePolygons(Polygon &referenceFluidPoly, Polygon &secondFluidPoly, int &rfPoints, int &sfPoints,
117 const FloatArray &normal, const double p, bool updFlag);
118 double computeVolumeAroundID(GaussPoint *gp, integrationDomain id, const std::vector< FloatArray > &idpoly);
119 double computeRadiusAt(GaussPoint *gp);
120 void computeBMtrx(FloatMatrix &answer, GaussPoint *gp);
121 void computeNVector(FloatArray &answer, GaussPoint *gp);
123 Material *_giveMaterial(int indx) { return domain->giveMaterial(mat [ indx ]); }
124
126 InternalStateType type, TimeStep *tStep) override;
127
129 void SPRNodalRecoveryMI_giveDofMansDeterminedByPatch(IntArray &answer, int pap) override;
132
133 double computeLEPLICVolumeFraction(const FloatArray &n, const double p, LEPlic *matInterface, bool updFlag) override;
134 void formMaterialVolumePoly(Polygon &matvolpoly, LEPlic *matInterface,
135 const FloatArray &normal, const double p, bool updFlag) override;
136 void formVolumeInterfacePoly(Polygon &matvolpoly, LEPlic *matInterface,
137 const FloatArray &normal, const double p, bool updFlag) override;
138 double truncateMatVolume(const Polygon &matvolpoly, double &volume) override;
139 void giveElementCenter(LEPlic *mat_interface, FloatArray &center, bool updFlag) override;
140 void formMyVolumePoly(Polygon &myPoly, LEPlic *mat_interface, bool updFlag) override;
141 Element *giveElement() override { return this; }
142 double computeMyVolume(LEPlic *matInterface, bool updFlag) override;
143};
144} // end namespace oofem
145#endif // tr1_2d_supg2_axi_h
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition femcmpnn.h:79
FloatArray normal
Interface segment normal.
Definition leplic.h:67
double p
Line constant of line segment representing interface.
Definition leplic.h:65
void updateElementForNewInterfacePosition(TimeStep *tStep) override
void computeLSICStabilizationTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override
void computePressureTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
void computeDiffusionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
std::vector< FloatArray > vcoords[2]
void computeAdvectionDerivativeTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
void giveElementCenter(LEPlic *mat_interface, FloatArray &center, bool updFlag) override
Computes the receiver center (in updated Lagrangian configuration).
TR1_2D_SUPG2_AXI(int n, Domain *d)
void computeDiffusionDerivativeTerm_MB(FloatMatrix &answer, MatResponseMode mode, TimeStep *tStep) override
void SPRNodalRecoveryMI_giveDofMansDeterminedByPatch(IntArray &answer, int pap) override
double computeVolumeAroundID(GaussPoint *gp, integrationDomain id, const std::vector< FloatArray > &idpoly)
const char * giveClassName() const override
double computeLEPLICVolumeFraction(const FloatArray &n, const double p, LEPlic *matInterface, bool updFlag) override
Computes corresponding volume fraction to given interface position.
void formVolumeInterfacePoly(Polygon &matvolpoly, LEPlic *matInterface, const FloatArray &normal, const double p, bool updFlag) override
Assembles receiver material polygon based solely on given interface line.
void SPRNodalRecoveryMI_giveSPRAssemblyPoints(IntArray &pap) override
void computeDiffusionTerm_MB(FloatArray &answer, TimeStep *tStep) override
void computeAdvectionDerivativeTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
MaterialMode giveMaterialMode() override
Material * _giveMaterial(int indx)
void computeBMtrx(FloatMatrix &answer, GaussPoint *gp)
double truncateMatVolume(const Polygon &matvolpoly, double &volume) override
Truncates given material polygon to receiver.
void computeTangent(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
SPRPatchType SPRNodalRecoveryMI_givePatchType() override
void formMyVolumePoly(Polygon &myPoly, LEPlic *mat_interface, bool updFlag) override
Assembles receiver volume.
void computeBCRhsTerm_MC(FloatArray &answer, TimeStep *tStep) override
double computeCriticalTimeStep(TimeStep *tStep) override
Computes the critical time increment.
void giveInputRecord(DynamicInputRecord &input) override
void computeAccelerationTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
void computeGaussPoints() override
void computePressureTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
void drawScalar(oofegGraphicContext &gc, TimeStep *tStep) override
void computeAdvectionTerm_MB(FloatArray &answer, TimeStep *tStep) override
void computeBCRhsTerm_MB(FloatArray &answer, TimeStep *tStep) override
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
void computeDiffusionTerm_MC(FloatArray &answer, TimeStep *tStep) override
int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep) override
void printOutputAt(FILE *file, TimeStep *tStep) override
void computeAccelerationTerm_MB(FloatMatrix &answer, TimeStep *tStep) override
void computeDeviatoricStress(FloatArray &answer, const FloatArray &eps, GaussPoint *gp, TimeStep *tStep) override
Element * giveElement() override
Return number of receiver's element.
void updateVolumePolygons(Polygon &referenceFluidPoly, Polygon &secondFluidPoly, int &rfPoints, int &sfPoints, const FloatArray &normal, const double p, bool updFlag)
double computeRadiusAt(GaussPoint *gp)
const char * giveInputRecordName() const override
void computeAdvectionTerm_MC(FloatArray &answer, TimeStep *tStep) override
void formMaterialVolumePoly(Polygon &matvolpoly, LEPlic *matInterface, const FloatArray &normal, const double p, bool updFlag) override
Assembles the true element material polygon (takes receiver vof into accout).
int SPRNodalRecoveryMI_giveNumberOfIP() override
void computeLinearAdvectionTerm_MC(FloatMatrix &answer, TimeStep *tStep) override
void initializeFrom(InputRecord &ir, int priority) override
void computeNVector(FloatArray &answer, GaussPoint *gp)
double computeMyVolume(LEPlic *matInterface, bool updFlag) override
Computes the volume of receiver.
void updateStabilizationCoeffs(TimeStep *tStep) override
TR1_2D_SUPG(int n, Domain *d)
Definition tr1_2d_supg.C:79
InternalStateMode
Determines the mode of internal variable.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define _IFT_TR1_2D_SUPG2_AXI_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