OOFEM 3.0
Loading...
Searching...
No Matches
binghamfluid2.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 binghamfluid2_h
36#define binghamfluid2_h
37
39#include "floatarray.h"
40#include "floatmatrix.h"
41#include "matconst.h"
42#include "matstatus.h"
43
45
46#define _IFT_BinghamFluidMaterial2_Name "binghamfluid"
47#define _IFT_BinghamFluidMaterial2_mu0 "mu0"
48#define _IFT_BinghamFluidMaterial2_tau0 "tau0"
49#define _IFT_BinghamFluidMaterial2_muinf "muinf"
50#define _IFT_BinghamFluidMaterial2_stressGrowthRate "stressgrowthrate"
52
53namespace oofem {
54
55#define BINGHAM_DEFAULT_STRESS_GROWTH_RATE 400.0
56
61{
62protected:
69
70public:
73
74 void printOutputAt(FILE *file, TimeStep *tStep) const override;
75
76 void initTempStatus() override;
77 void updateYourself(TimeStep *tStep) override;
78
79 void saveContext(DataStream &stream, ContextMode mode) override;
80 void restoreContext(DataStream &stream, ContextMode mode) override;
81
84 double giveDevStressMagnitude() const { return devStressMagnitude; }
85 double giveDevStrainMagnitude() const { return devStrainMagnitude; }
86
89
92
93 const char *giveClassName() const override { return "BinghamFluidMaterialStatus"; }
94};
95
96
102{
103protected:
105 double mu_0 = 0.;
107 double tau_0 = 0.;
108 double tau_c = 0.;
109 double mu_inf = 1.e6;
112
113public:
119 BinghamFluidMaterial2(int n, Domain * d);
120
121 FloatArrayF<6> computeDeviatoricStress3D(const FloatArrayF<6> &eps, GaussPoint *gp, TimeStep *tStep) const override;
122
123 FloatMatrixF<6,6> computeTangent3D(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override;
124
125 double giveEffectiveViscosity(GaussPoint *gp, TimeStep *tStep) const override;
126 double give(int aProperty, GaussPoint *gp) const override;
127 void initializeFrom(InputRecord &ir) override;
128 void giveInputRecord(DynamicInputRecord &input) override;
129 const char *giveClassName() const override { return "BinghamFluidMaterial2"; }
130 const char *giveInputRecordName() const override { return _IFT_BinghamFluidMaterial2_Name; }
131 int checkConsistency() override;
132 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
133
134protected:
135 double computeActualViscosity(double tau, double shearRate) const;
136 static double computeDevStrainMagnitude(const FloatArrayF<6> &epsd);
137 static double computeDevStressMagnitude(const FloatArrayF<6> &sigd);
139 static FloatArrayF<6> computeDeviatoricStress(const FloatArrayF<6> &deps, double nu);
140
141#if 0
142 void __debug(GaussPoint *gp, TimeStep *tStep);
143#endif
144};
145} // end namespace oofem
146#endif // binghamfluid2_h
#define BINGHAM_DEFAULT_STRESS_GROWTH_RATE
#define _IFT_BinghamFluidMaterial2_Name
double devStressMagnitude
Magnitude of deviatoric stresses.
void updateYourself(TimeStep *tStep) override
const FloatArrayF< 6 > & giveTempDeviatoricStrainVector() const
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
BinghamFluidMaterial2Status(GaussPoint *g)
Constructor - creates new BinghamFluidMaterial2Status with number n, belonging to domain d and Integr...
void letTempDevStressMagnitudeBe(double _val)
void restoreContext(DataStream &stream, ContextMode mode) override
void letTempDevStrainMagnitudeBe(double _val)
void saveContext(DataStream &stream, ContextMode mode) override
FloatArrayF< 6 > temp_deviatoricStrainVector
Deviatoric stresses and strains (reduced form).
void letTempDeviatoricStrainVectorBe(const FloatArrayF< 6 > &v)
const char * giveClassName() const override
double devStrainMagnitude
Magnitude of deviatoric strains.
BinghamFluidMaterial2(int n, Domain *d)
void initializeFrom(InputRecord &ir) override
static FloatArrayF< 6 > computeDeviatoricStrain(const FloatArrayF< 6 > &eps)
static double computeDevStrainMagnitude(const FloatArrayF< 6 > &epsd)
double giveEffectiveViscosity(GaussPoint *gp, TimeStep *tStep) const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
static FloatArrayF< 6 > computeDeviatoricStress(const FloatArrayF< 6 > &deps, double nu)
const char * giveClassName() const override
double computeActualViscosity(double tau, double shearRate) const
FloatMatrixF< 6, 6 > computeTangent3D(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
double give(int aProperty, GaussPoint *gp) const override
double tau_0
Yield stress.
const char * giveInputRecordName() const override
void giveInputRecord(DynamicInputRecord &input) override
static double computeDevStressMagnitude(const FloatArrayF< 6 > &sigd)
double stressGrowthRate
Stress growth rate - parameter controlling the shape of regularized model.
FloatArrayF< 6 > computeDeviatoricStress3D(const FloatArrayF< 6 > &eps, GaussPoint *gp, TimeStep *tStep) const override
FluidDynamicMaterialStatus(GaussPoint *g)
Constructor - creates new TransportMaterialStatus with number n, belonging to domain d and integratio...
long ContextMode
Definition contextmode.h:43

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