OOFEM 3.0
Loading...
Searching...
No Matches
intmatisodamage.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 intmatisodamage_h
36#define intmatisodamage_h
37
40
41
43
44#define _IFT_IntMatIsoDamage_Name "intmatisodamage"
45#define _IFT_IntMatIsoDamage_kn "kn"
46#define _IFT_IntMatIsoDamage_ks "ks"
47#define _IFT_IntMatIsoDamage_ft "ft"
48#define _IFT_IntMatIsoDamage_gf "gf"
49#define _IFT_IntMatIsoDamage_maxOmega "maxomega"
50
52
53namespace oofem {
54class GaussPoint;
55
60{
61protected:
63 double kappa = 0.;
65 double tempKappa = 0.;
67 double damage = 0.;
69 double tempDamage = 0.;
70public:
73
74 void printOutputAt(FILE *file, TimeStep *tStep) const override;
75
77 double giveKappa() const { return kappa; }
79 double giveTempKappa() const { return tempKappa; }
81 void setTempKappa(double newKappa) { tempKappa = newKappa; }
83 double giveDamage() const override { return damage; }
85 double giveTempDamage() const override { return tempDamage; }
87 void setTempDamage(double newDamage) { tempDamage = newDamage; }
88
89 const char *giveClassName() const override { return "IntMatIsoDamageStatus"; }
90
91 void initTempStatus() override;
92 void updateYourself(TimeStep *tStep) override;
93
94 void saveContext(DataStream &stream, ContextMode mode) override;
95 void restoreContext(DataStream &stream, ContextMode mode) override;
96};
97
98
111{
112protected:
114 double kn = 0.;
116 double ks = 0.;
118 double ft = 0.;
120 double gf = 0.;
122 double e0 = 0.;
124 double maxOmega = 0.999999;
125
126 bool semiExplicit = false; // If semi-explicit time integration should be used
127
128public:
129 IntMatIsoDamage(int n, Domain *d);
130
131 const char *giveInputRecordName() const override { return _IFT_IntMatIsoDamage_Name; }
132 const char *giveClassName() const override { return "IntMatIsoDamage"; }
133
134 bool hasAnalyticalTangentStiffness() const override { return true; }
135
136 FloatArrayF<3> giveEngTraction_3d(const FloatArrayF<3> &jump, GaussPoint *gp,TimeStep *tStep) const override;
137
138 FloatArrayF<3> giveFirstPKTraction_3d(const FloatArrayF<3> &jump, const FloatMatrixF<3,3> &F, GaussPoint *gp, TimeStep *tStep) const override;
139
140 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
141
149 virtual double computeEquivalentJump(const FloatArray &jump) const;
150
158 virtual double computeDamageParam(double kappa) const;
159
160 void initializeFrom(InputRecord &ir) override;
161 void giveInputRecord(DynamicInputRecord &input) override;
162
163 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<IntMatIsoDamageStatus>(gp); }
164
165 FloatMatrixF<2,2> give2dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
166 FloatMatrixF<3,3> give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
167};
168} // end namespace oofem
169#endif // isointerfacedamage01_h
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
double giveKappa() const
Returns the last equilibrated scalar measure of the largest jump level.
double giveTempKappa() const
Returns the temp. scalar measure of the largest jump level.
double kappa
Scalar measure of the largest equivalent displacement ever reached in material.
double giveTempDamage() const override
Returns the temp. damage level.
double giveDamage() const override
Returns the last equilibrated damage level.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
void restoreContext(DataStream &stream, ContextMode mode) override
IntMatIsoDamageStatus(GaussPoint *g)
Constructor.
const char * giveClassName() const override
double damage
Damage level of material.
double tempDamage
Non-equilibrated damage level of material.
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void updateYourself(TimeStep *tStep) override
void saveContext(DataStream &stream, ContextMode mode) override
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
FloatArrayF< 3 > giveFirstPKTraction_3d(const FloatArrayF< 3 > &jump, const FloatMatrixF< 3, 3 > &F, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 3, 3 > give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 3 > giveEngTraction_3d(const FloatArrayF< 3 > &jump, GaussPoint *gp, TimeStep *tStep) const override
void initializeFrom(InputRecord &ir) override
FloatMatrixF< 2, 2 > give2dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void giveInputRecord(DynamicInputRecord &input) override
const char * giveClassName() const override
IntMatIsoDamage(int n, Domain *d)
double kn
Elastic properties (normal moduli).
const char * giveInputRecordName() const override
virtual double computeEquivalentJump(const FloatArray &jump) const
double e0
Limit elastic deformation.
double ks
Shear moduli.
virtual double computeDamageParam(double kappa) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
bool hasAnalyticalTangentStiffness() const override
double ft
Tension strength.
double gf
Fracture energy.
StructuralInterfaceMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralInterfaceMaterialStatus with number n, belonging to domain d and I...
#define _IFT_IntMatIsoDamage_Name
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