OOFEM 3.0
Loading...
Searching...
No Matches
cbs.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 cbs_h
36#define cbs_h
37
38#include "fluidmodel.h"
39#include "sparselinsystemnm.h"
40#include "sparsemtrx.h"
42//<RESTRICTED_SECTION>
43#include "materialinterface.h"
44//</RESTRICTED_SECTION>
45
47
49
50#define _IFT_CBS_Name "cbs"
51#define _IFT_CBS_deltat "deltat"
52#define _IFT_CBS_mindeltat "mindeltat"
53#define _IFT_CBS_cmflag "cmflag"
54#define _IFT_CBS_theta1 "theta1"
55#define _IFT_CBS_theta2 "theta2"
56#define _IFT_CBS_scaleflag "scaleflag"
57#define _IFT_CBS_lscale "lscale"
58#define _IFT_CBS_uscale "uscale"
59#define _IFT_CBS_dscale "dscale"
60#define _IFT_CBS_miflag "miflag"
62
63namespace oofem {
64
67{
68public:
69 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
70};
71
74{
75public:
76 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
77};
78
81{
82public:
83 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
84};
85
88{
89public:
90 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
91};
92
95{
96public:
97 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
98};
99
102{
103public:
104 void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override;
105};
106
109{
110public:
111 void matrixFromElement(FloatMatrix &mat, Element &element, TimeStep *tStep) const override;
112 void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds = nullptr) const override;
113};
114
115
120{
121protected:
124
125public:
127
128 bool isDefault() const override { return !prescribed; }
129 int giveDofEquationNumber(Dof *dof) const override {
130 DofIDItem id = dof->giveDofID();
131 if ( id == V_u || id == V_v || id == V_w ) {
133 }
134
135 return 0;
136 }
137 int giveRequiredNumberOfDomainEquation() const override { return numEqs; }
138
139 int askNewEquationNumber() { return ++numEqs; }
140};
141
146{
147protected:
150
151public:
153
154 bool isDefault() const override { return !prescribed; }
155 int giveDofEquationNumber(Dof *dof) const override {
156 DofIDItem id = dof->giveDofID();
157 if ( id == P_f ) {
159 }
160
161 return 0;
162 }
163 int giveRequiredNumberOfDomainEquation() const override { return numEqs; }
164
165 int askNewEquationNumber() { return ++numEqs; }
166};
167
171class CBS : public FluidModel
172{
173protected:
175 std :: unique_ptr< SparseLinearSystemNM > nMethod;
176
179
180 std :: unique_ptr< SparseMtrx > lhs;
182 DofDistributedPrimaryField pressureField;
184 DofDistributedPrimaryField velocityField;
188
192 std :: unique_ptr< SparseMtrx > mss;
193
197 double theta1, theta2;
198
202
207
210 double lscale;
212 double uscale;
214 double dscale;
216 double Re;
217
218 //<RESTRICTED_SECTION>
219 // material interface representation for multicomponent flows
220 std :: unique_ptr< MaterialInterface > materialInterface;
221 //</RESTRICTED_SECTION>
222public:
223 CBS(int i, EngngModel * _master = NULL);
224 virtual ~CBS();
225
226 void solveYourselfAt(TimeStep *tStep) override;
227
228 void updateYourself(TimeStep *tStep) override;
229
230 int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override;
231 double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override;
232 bool newDofHandling() override { return true; }
233 double giveReynoldsNumber() override;
234 double giveTheta1();
235 double giveTheta2();
236 double giveTractionPressure(Dof *dof);
237
238 void saveContext(DataStream &stream, ContextMode mode) override;
239 void restoreContext(DataStream &stream, ContextMode mode) override;
240
241 void updateDomainLinks() override;
242
243 TimeStep *giveNextStep() override;
244 TimeStep *giveSolutionStepWhenIcApply(bool force = false) override;
246
247 void initializeFrom(InputRecord &ir) override;
248
249 int checkConsistency() override;
250 // identification
251 const char *giveClassName() const override { return "CBS"; }
252 const char *giveInputRecordName() const { return _IFT_CBS_Name; }
253 fMode giveFormulation() override { return TL; }
254
255 void printDofOutputAt(FILE *stream, Dof *iDof, TimeStep *tStep) override;
256
257 int giveNumberOfDomainEquations(int, const UnknownNumberingScheme &num) override;
258
259 int giveNewEquationNumber(int domain, DofIDItem) override;
260 int giveNewPrescribedEquationNumber(int domain, DofIDItem) override;
261
263 double giveVariableScale(VarScaleType varId) override;
264
265protected:
269 void updateInternalState(TimeStep *tStep);
270 void applyIC(TimeStep *tStep);
271};
272} // end namespace oofem
273#endif // cbs_h
#define _IFT_CBS_Name
Definition cbs.h:50
void restoreContext(DataStream &stream, ContextMode mode) override
Definition cbs.C:487
const char * giveInputRecordName() const
Definition cbs.h:252
fMode giveFormulation() override
Definition cbs.h:253
void updateYourself(TimeStep *tStep) override
Definition cbs.C:450
double giveTractionPressure(Dof *dof)
Definition cbs.C:209
CBS(int i, EngngModel *_master=NULL)
Definition cbs.C:108
FloatArray nodalPrescribedTractionPressureConnectivity
Definition cbs.h:187
double giveReynoldsNumber() override
Definition cbs.C:198
double giveTheta1()
Definition cbs.C:204
PressureEquationNumbering pnum
Definition cbs.h:205
LinSystSolverType solverType
Definition cbs.h:177
void updateDomainLinks() override
Definition cbs.C:548
double dscale
Density scale.
Definition cbs.h:214
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
Definition cbs.C:123
std ::unique_ptr< MaterialInterface > materialInterface
Definition cbs.h:220
VelocityEquationNumbering vnumPrescribed
Definition cbs.h:204
int initFlag
Definition cbs.h:199
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
Definition cbs.C:224
int consistentMassFlag
Consistent mass flag.
Definition cbs.h:201
int giveNumberOfDomainEquations(int, const UnknownNumberingScheme &num) override
Definition cbs.C:619
double theta2
Definition cbs.h:197
void applyIC(TimeStep *tStep)
Definition cbs.C:572
const char * giveClassName() const override
Returns class name of the receiver.
Definition cbs.h:251
std ::unique_ptr< SparseMtrx > mss
Sparse consistent mass.
Definition cbs.h:192
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override
Definition cbs.C:443
double minDeltaT
Definition cbs.h:195
virtual ~CBS()
Definition cbs.C:119
void printDofOutputAt(FILE *stream, Dof *iDof, TimeStep *tStep) override
Definition cbs.C:556
FloatArray prescribedTractionPressure
Definition cbs.h:186
double lscale
Length scale.
Definition cbs.h:210
std ::unique_ptr< SparseLinearSystemNM > nMethod
Numerical method used to solve the problem.
Definition cbs.h:175
void solveYourselfAt(TimeStep *tStep) override
Definition cbs.C:267
int giveNewPrescribedEquationNumber(int domain, DofIDItem) override
Definition cbs.C:605
DofDistributedPrimaryField pressureField
Pressure field.
Definition cbs.h:182
bool giveEquationScalingFlag() override
Returns the Equation scaling flag, which is used to indicate that governing equation(s) are scaled,...
Definition cbs.h:262
SparseMtrxType sparseMtrxType
Definition cbs.h:178
bool newDofHandling() override
Definition cbs.h:232
double Re
Reynolds number.
Definition cbs.h:216
double giveTheta2()
Definition cbs.C:206
void saveContext(DataStream &stream, ContextMode mode) override
Definition cbs.C:475
double giveUnknownComponent(ValueModeType type, TimeStep *tStep, Domain *d, Dof *dof) override
Definition cbs.C:187
double deltaT
Time step and its minimal value.
Definition cbs.h:195
VelocityEquationNumbering vnum
Definition cbs.h:203
FloatArray deltaAuxVelocity
Definition cbs.h:185
FloatArray mm
Lumped mass matrix.
Definition cbs.h:190
DofDistributedPrimaryField velocityField
Velocity field.
Definition cbs.h:184
double uscale
Velocity scale.
Definition cbs.h:212
int giveNewEquationNumber(int domain, DofIDItem) override
Definition cbs.C:590
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
Definition cbs.C:238
void initializeFrom(InputRecord &ir) override
Definition cbs.C:135
int checkConsistency() override
Definition cbs.C:499
bool equationScalingFlag
Definition cbs.h:208
double giveVariableScale(VarScaleType varId) override
Returns the scale factor for given variable type.
Definition cbs.C:629
double theta1
Integration constants.
Definition cbs.h:197
PressureEquationNumbering pnumPrescribed
Definition cbs.h:206
void updateInternalState(TimeStep *tStep)
Definition cbs.C:464
std ::unique_ptr< SparseMtrx > lhs
Definition cbs.h:180
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:102
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:91
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:88
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:78
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:95
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:83
DofIDItem giveDofID() const
Definition dof.h:276
virtual int __giveEquationNumber() const =0
virtual int __givePrescribedEquationNumber()=0
FluidModel(int i, EngngModel *master)
Definition fluidmodel.h:49
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:74
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:65
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:67
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:60
Implementation for assembling external forces vectors in standard monolithic FE-problems.
Definition cbs.h:81
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
Definition cbs.C:73
PressureEquationNumbering(bool prescribed)
Definition cbs.h:152
int giveRequiredNumberOfDomainEquation() const override
Definition cbs.h:163
int giveDofEquationNumber(Dof *dof) const override
Definition cbs.h:155
bool isDefault() const override
Definition cbs.h:154
Callback class for assembling CBS pressure matrices.
Definition cbs.h:109
void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds=nullptr) const override
Definition cbs.C:101
void matrixFromElement(FloatMatrix &mat, Element &element, TimeStep *tStep) const override
Definition cbs.C:96
int giveDofEquationNumber(Dof *dof) const override
Definition cbs.h:129
int giveRequiredNumberOfDomainEquation() const override
Definition cbs.h:137
bool isDefault() const override
Definition cbs.h:128
VelocityEquationNumbering(bool prescribed)
Definition cbs.h:126
long ContextMode
Definition contextmode.h:43
VarScaleType
Type determining the scale corresponding to particular variable.
fMode
Definition fmode.h:42
@ TL
Total Lagrange.
Definition fmode.h:44

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