OOFEM 3.0
Loading...
Searching...
No Matches
transportelement.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 transportelement_h
36#define transportelement_h
37
38#include "element.h"
39#include "floatmatrix.h"
40#include "primaryfield.h"
41#include "matresponsemode.h"
42
43#define _IFT_TransportElement_vof_function "voffunction"
44
45namespace oofem {
46class TransportCrossSection;
47class ParamKey;
48
55{
56public:
58
59protected:
62 static const double stefanBoltzmann;
64 int vofFunction = 0;
65
67
68public:
70
71 void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep) override;
72 void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override;
73
74 void giveDofManDofIDMask(int inode, IntArray &answer) const override;
75
76 virtual void computeInternalForcesVector(FloatArray &answer, TimeStep *tStep);
77 virtual void computeExternalForcesVector(FloatArray &answer, TimeStep *tStep, ValueModeType mode);
78 virtual void computeInertiaForcesVector(FloatArray &answer, TimeStep *tStep);
79 virtual void computeLumpedCapacityVector(FloatArray &answer, TimeStep *tStep);
80
81 //Compute volumetric load from element
82 void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep) override;
83 //Boundary load by prescribed flux, convection, or radiation over surface
84 void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override;
85 //Contribution to conductivity matrix from convection
86 void computeTangentFromSurfaceLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) override;
87 void computeTangentFromEdgeLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) override;
88 //Boundary load by prescribed flux, convection, or radiation over length
89 void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int edge, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override;
90
91 void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer) override;
92
94 Material * giveMaterial() override;
95 void initializeFrom(InputRecord &ir, int priority) override;
96 void postInitialize() override;
97 const char *giveClassName() const override { return "TransportElement"; }
98
106 virtual double giveThicknessAt(const FloatArray &gcoords) { return 1.0; }
107
109 virtual void computeCapacityMatrix(FloatMatrix &answer, TimeStep *tStep);
111 virtual void computeConductivityMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep);
113 virtual void computeBCVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode);
115 virtual void computeBCMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode);
117 virtual void computeInternalSourceRhsVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode);
119 virtual void computeIntSourceLHSMatrix(FloatMatrix &answer, TimeStep *tStep);
121 virtual void computeIntSourceLHSSubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep);
128 virtual void computeFlow(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
134 virtual double computeVof(TimeStep *tStep);
135
136 // time step termination
137 void updateInternalState(TimeStep *tStep) override;
138 int checkConsistency() override;
139
141 const FloatArray &coords, IntArray &dofId, ValueModeType mode,
142 TimeStep *tStep) override;
143
144#ifdef __OOFEG
146 int node, TimeStep *tStep) override;
147 // Graphics output
148 //void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep) override {}
149 //void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType) override {}
150#endif
151
159 virtual void computeConstitutiveMatrixAt(FloatMatrix &answer,
160 MatResponseMode rMode, GaussPoint *gp,
161 TimeStep *tStep);
162
163protected:
172 virtual void computeCapacitySubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep);
182 virtual void computeConductivitySubMatrix(FloatMatrix &answer, int iri, MatResponseMode rmode, TimeStep *tStep);
191 void computeBCSubVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode, int indx);
200 void computeBCSubMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode, int indx);
201 void computeBodyBCSubVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode, int indx);
213 void computeEdgeBCSubVectorAt(FloatArray &answer, Load *load, int iEdge,
214 TimeStep *tStep, ValueModeType mode, int indx);
215
227 void computeSurfaceBCSubVectorAt(FloatArray &answer, Load *load, int iSurf,
228 TimeStep *tStep, ValueModeType mode, int indx);
229
235 virtual void computeNAt(FloatArray &answer, const FloatArray &lcoord);
240 virtual void computeNmatrixAt(FloatMatrix &answer, const FloatArray &lcoords);
241 virtual void computeBmatrixAt(FloatMatrix &answer, const FloatArray &lcoords);
245 virtual void computeGradientMatrixAt(FloatMatrix &answer, const FloatArray &lcoords);
249 virtual void computeInternalSourceRhsSubVectorAt(FloatArray &answer, TimeStep *, ValueModeType mode, int indx);
250
254 virtual void computeEgdeNAt(FloatArray &answer, int iEdge, const FloatArray &lcoord);
258 virtual void giveEdgeDofMapping(IntArray &mask, int iEdge);
262 virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge) { return 0.; }
263
264 virtual void computeSurfaceNAt(FloatArray &answer, int iSurf, const FloatArray &lcoord);
265 virtual double computeSurfaceVolumeAround(GaussPoint *gp, int iSurf) { return 0.; }
266 virtual void giveSurfaceDofMapping(IntArray &mask, int iSurf);
267
268 virtual int giveApproxOrder(int unknownIndx);
269
283 void assembleLocalContribution(FloatMatrix &answer, FloatMatrix &src, int ndofs, int rdof, int cdof);
296 void assembleLocalContribution(FloatArray &answer, FloatArray &src, int ndofs, int rdof);
297};
298} // end namespace oofem
299#endif // transportelement_h
Element(int n, Domain *aDomain)
Definition element.C:86
void computeTangentFromEdgeLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) override
static ParamKey IPK_TransportElement_vof_function
virtual void computeEgdeNAt(FloatArray &answer, int iEdge, const FloatArray &lcoord)
virtual void computeInertiaForcesVector(FloatArray &answer, TimeStep *tStep)
void computeSurfaceBCSubVectorAt(FloatArray &answer, Load *load, int iSurf, TimeStep *tStep, ValueModeType mode, int indx)
TransportElement(int n, Domain *d, ElementMode em=HeatTransferEM)
virtual void computeIntSourceLHSMatrix(FloatMatrix &answer, TimeStep *tStep)
void giveDofManDofIDMask(int inode, IntArray &answer) const override
virtual void computeFlow(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
void computeBCSubVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode, int indx)
static const double stefanBoltzmann
Stefan–Boltzmann constant W/m2/K4.
virtual void giveSurfaceDofMapping(IntArray &mask, int iSurf)
void computeBCSubMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode, int indx)
void computeBoundarySurfaceLoadVector(FloatArray &answer, BoundaryLoad *load, int boundary, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
virtual void computeConductivityMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
void computeEdgeBCSubVectorAt(FloatArray &answer, Load *load, int iEdge, TimeStep *tStep, ValueModeType mode, int indx)
virtual void computeSurfaceNAt(FloatArray &answer, int iSurf, const FloatArray &lcoord)
virtual double computeVof(TimeStep *tStep)
Material * giveMaterial() override
virtual int EIPrimaryFieldI_evaluateFieldVectorAt(FloatArray &answer, PrimaryField &pf, const FloatArray &coords, IntArray &dofId, ValueModeType mode, TimeStep *tStep) override
virtual void computeBmatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
virtual void computeExternalForcesVector(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
void updateInternalState(TimeStep *tStep) override
virtual double giveThicknessAt(const FloatArray &gcoords)
int vofFunction
Fuction determining the relative volume of reference material in element.
const char * giveClassName() const override
void postInitialize() override
Performs post initialization steps.
virtual void computeNmatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
virtual int giveApproxOrder(int unknownIndx)
void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep) override
virtual void computeIntSourceLHSSubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep)
void giveCharacteristicMatrix(FloatMatrix &answer, CharType type, TimeStep *tStep) override
virtual void computeInternalSourceRhsVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
virtual void computeConductivitySubMatrix(FloatMatrix &answer, int iri, MatResponseMode rmode, TimeStep *tStep)
void computeBodyBCSubVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode, int indx)
void initializeFrom(InputRecord &ir, int priority) override
virtual double computeSurfaceVolumeAround(GaussPoint *gp, int iSurf)
virtual void computeNAt(FloatArray &answer, const FloatArray &lcoord)
virtual void giveEdgeDofMapping(IntArray &mask, int iEdge)
virtual void computeCapacityMatrix(FloatMatrix &answer, TimeStep *tStep)
virtual void computeCapacitySubMatrix(FloatMatrix &answer, MatResponseMode rmode, int iri, TimeStep *tStep)
void computeField(ValueModeType mode, TimeStep *tStep, const FloatArray &lcoords, FloatArray &answer) override
int giveInternalStateAtNode(FloatArray &answer, InternalStateType type, InternalStateMode mode, int node, TimeStep *tStep) override
virtual void computeInternalSourceRhsSubVectorAt(FloatArray &answer, TimeStep *, ValueModeType mode, int indx)
virtual void computeGradientMatrixAt(FloatMatrix &answer, const FloatArray &lcoords)
void computeBoundaryEdgeLoadVector(FloatArray &answer, BoundaryLoad *load, int edge, CharType type, ValueModeType mode, TimeStep *tStep, bool global=true) override
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
void computeLoadVector(FloatArray &answer, BodyLoad *load, CharType type, ValueModeType mode, TimeStep *tStep) override
virtual void computeLumpedCapacityVector(FloatArray &answer, TimeStep *tStep)
virtual void computeBCMtrxAt(FloatMatrix &answer, TimeStep *tStep, ValueModeType mode)
TransportCrossSection * giveTransportCrossSection()
void assembleLocalContribution(FloatMatrix &answer, FloatMatrix &src, int ndofs, int rdof, int cdof)
int checkConsistency() override
virtual void computeBCVectorAt(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
virtual void computeInternalForcesVector(FloatArray &answer, TimeStep *tStep)
void computeTangentFromSurfaceLoad(FloatMatrix &answer, BoundaryLoad *load, int boundary, MatResponseMode rmode, TimeStep *tStep) override
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