OOFEM 3.0
Loading...
Searching...
No Matches
isointerfacedamage01.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 isointerfacedamage01_h
36#define isointerfacedamage01_h
37
40
42
43#define _IFT_IsoInterfaceDamageMaterial_Name "isointrfdm01"
44#define _IFT_IsoInterfaceDamageMaterial_kn "kn"
45#define _IFT_IsoInterfaceDamageMaterial_ks "ks"
46#define _IFT_IsoInterfaceDamageMaterial_ft "ft"
47#define _IFT_IsoInterfaceDamageMaterial_gf "gf"
48#define _IFT_IsoInterfaceDamageMaterial_maxOmega "maxomega"
49#define _IFT_IsoInterfaceDamageMaterial_beta "beta"
51
52namespace oofem {
53
58{
59protected:
61 double kappa = 0.;
63 double tempKappa = 0.;
65 double damage = 0.;
67 double tempDamage = 0.;
68
69public:
72
73 void printOutputAt(FILE *file, TimeStep *tStep) const override;
74
76 double giveKappa() const { return kappa; }
78 double giveTempKappa() const { return tempKappa; }
80 void setTempKappa(double newKappa) { tempKappa = newKappa; }
82 double giveDamage() const override { return damage; }
84 double giveTempDamage() const override { return tempDamage; }
86 void setTempDamage(double newDamage) { tempDamage = newDamage; }
87
88 const char *giveClassName() const override { return "IsoInterfaceDamageMaterialStatus"; }
89
90 void initTempStatus() override;
91 void updateYourself(TimeStep *tStep) override;
92
93 void saveContext(DataStream &stream, ContextMode mode) override;
94 void restoreContext(DataStream &stream, ContextMode mode) override;
95};
96
97
111{
112protected:
114 double tempDillatCoeff = 0.;
116 double kn = 0.;
118 double ks = 0.;
120 double ft = 0.;
122 double gf = 0.;
124 double e0 = 0.;
126 double maxOmega = 0.999999;
128 double beta = 0.;
129
130public:
133
134 bool hasAnalyticalTangentStiffness() const override { return true; }
135
136 const char *giveInputRecordName() const override { return _IFT_IsoInterfaceDamageMaterial_Name; }
137 const char *giveClassName() const override { return "IsoInterfaceDamageMaterial"; }
138
139 FloatArrayF<3> giveEngTraction_3d(const FloatArrayF<3> &jump, GaussPoint *gp, TimeStep *tStep) const override;
140 FloatMatrixF<3,3> give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
141
142 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
143
144 double computeEquivalentStrain(const FloatArrayF<3> &jump, GaussPoint *gp, TimeStep *tStep) const;
145
153 virtual double computeDamageParam(double kappa, const FloatArrayF<3> &strain, GaussPoint *gp) const;
154
155 void initializeFrom(InputRecord &ir) override;
156 void giveInputRecord(DynamicInputRecord &input) override;
157
158 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<IsoInterfaceDamageMaterialStatus>(gp); }
159};
160} // end namespace oofem
161#endif // isointerfacedamage01_h
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
double damage
Damage level of material.
void updateYourself(TimeStep *tStep) override
double giveTempKappa() const
Returns the temp. scalar measure of the largest strain level.
const char * giveClassName() const override
double giveDamage() const override
Returns the last equilibrated damage level.
void restoreContext(DataStream &stream, ContextMode mode) override
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
void saveContext(DataStream &stream, ContextMode mode) override
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
double tempDamage
Non-equilibrated damage level of material.
double giveTempDamage() const override
Returns the temp. damage level.
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
double giveKappa() const
Returns the last equilibrated scalar measure of the largest strain level.
IsoInterfaceDamageMaterialStatus(GaussPoint *g)
Constructor.
double kappa
Scalar measure of the largest equivalent displacement ever reached in material.
bool hasAnalyticalTangentStiffness() const override
double beta
Weight factor for the influence of shear component of displacement jump on equivalent strain.
void initializeFrom(InputRecord &ir) override
FloatMatrixF< 3, 3 > give3dStiffnessMatrix_Eng(MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
IsoInterfaceDamageMaterial(int n, Domain *d)
Constructor.
double kn
Elastic properties (normal moduli).
const char * giveInputRecordName() const override
double computeEquivalentStrain(const FloatArrayF< 3 > &jump, GaussPoint *gp, TimeStep *tStep) const
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
double tempDillatCoeff
Coefficient of thermal dilatation.
FloatArrayF< 3 > giveEngTraction_3d(const FloatArrayF< 3 > &jump, GaussPoint *gp, TimeStep *tStep) const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
const char * giveClassName() const override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void giveInputRecord(DynamicInputRecord &input) override
double e0
Limit elastic deformation.
virtual double computeDamageParam(double kappa, const FloatArrayF< 3 > &strain, GaussPoint *gp) const
StructuralInterfaceMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralInterfaceMaterialStatus with number n, belonging to domain d and I...
#define _IFT_IsoInterfaceDamageMaterial_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