OOFEM 3.0
Loading...
Searching...
No Matches
rcsd.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// ************************************************************************************
36// *** CLASS ROTATING SMEARED CRACK MODEL WITH TRANSITION TO SCALAR DAMAGE ************
37// ************************************************************************************
38
39#ifndef rcsd_h
40#define rcsd_h
41
42#include "rcm2.h"
43
45
46#define _IFT_RCSDMaterial_Name "rcsd"
47#define _IFT_RCSDMaterial_sdtransitioncoeff "sdtransitioncoeff"
49
50namespace oofem {
51#define rcsd_Omega 300
52#define pscm_SDTransitionCoeff 306
53#define RCSD_DAMAGE_EPS 1.e-4
54
55class GaussPoint;
56
61{
62public:
64
65protected:
67 double damageCoeff = 1., tempDamageCoeff = 1.;
69 double damageStiffCoeff = 0., depsf = 0., depsp = 0.;
71
72public:
74
75 void printOutputAt(FILE *file, TimeStep *tStep) const override;
76
77 double giveTempMaxEquivStrain() const { return tempMaxEquivStrain; }
78 void setTempMaxEquivStrain(double val) { tempMaxEquivStrain = val; }
79 double giveDamageStiffCoeff() const { return damageStiffCoeff; }
80 void setDamageStiffCoeff(double val) { damageStiffCoeff = val; }
81 double giveTempDamageCoeff() const { return tempDamageCoeff; }
82 void setTempDamageCoeff(double val) { tempDamageCoeff = val; }
83 const FloatMatrix *giveDs0Matrix() { return & Ds0; }
84 void setDs0Matrix(FloatMatrix &mtrx) { Ds0 = mtrx; }
85 double giveDamageEpsfCoeff() const { return depsf; }
86 void setDamageEpsfCoeff(double val) { depsf = val; }
87 double giveDamageEpspCoeff() const { return depsp; }
88 void setDamageEpspCoeff(double val) { depsp = val; }
89
90 rcsdMode giveTempMode() const { return tempMode; }
92
93 // query for non-tem variables (usefull for postprocessing)
94 double giveMaxEquivStrain() const { return maxEquivStrain; }
95 double giveDamageCoeff() const { return damageCoeff; }
96
97 rcsdMode giveMode() const { return mode; }
98
99 const char *giveClassName() const override { return "RCSDMaterialStatus"; }
100
101 void initTempStatus() override;
102 void updateYourself(TimeStep *tStep) override;
103
104 void saveContext(DataStream &stream, ContextMode mode) override;
105 void restoreContext(DataStream &stream, ContextMode mode) override;
106};
107
108
117{
118protected:
119 double SDTransitionCoeff = 0.;
120
121public:
122 RCSDMaterial(int n, Domain * d);
123 virtual ~RCSDMaterial();
124
125 const char *giveInputRecordName() const override { return _IFT_RCSDMaterial_Name; }
126 const char *giveClassName() const override { return "RCSDMaterial"; }
127
128 void initializeFrom(InputRecord &ir) override;
129
130 double give(int aProperty, GaussPoint *gp) const override;
131
133 const FloatArray &, TimeStep *tStep) const override;
134
135 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<RCSDMaterialStatus>(gp); }
136
137protected:
138 double computeCurrEquivStrain(GaussPoint *, const FloatArray &, double, TimeStep *) const;
139 // two functions used to initialize and updating temporary variables in
140 // gp's status. These variables are used to control process, when
141 // we try to find equilibrium state.
142
144 MatResponseMode rMode,
145 GaussPoint *gp, TimeStep *tStep) const override;
146
147 double computeDamageCoeff(double, double, double, double) const;
148 double giveCrackingModulus(MatResponseMode rMode, GaussPoint *gp,
149 double crackStrain, int i) const override;
150 //double giveShearRetentionFactor(GaussPoint* gp, double eps_cr, int i) override;
151 double giveNormalCrackingStress(GaussPoint *gp, double eps_cr, int i) const override;
152 double giveMinCrackStrainsForFullyOpenCrack(GaussPoint *gp, int i) const override;
153 //void updateStatusForNewCrack( GaussPoint*, int, double) override;
154 double computeStrength(GaussPoint *gp, double) const override;
155 int checkSizeLimit(GaussPoint *gp, double) const override;
156};
157} // end namespace oofem
158#endif // rcsd_h
RCM2MaterialStatus(GaussPoint *g)
Definition rcm2.C:977
RCM2Material(int n, Domain *d)
Definition rcm2.C:48
void setTempDamageCoeff(double val)
Definition rcsd.h:82
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition rcsd.C:470
double giveDamageEpspCoeff() const
Definition rcsd.h:87
rcsdMode giveTempMode() const
Definition rcsd.h:90
void setTempMode(rcsdMode mode)
Definition rcsd.h:91
void saveContext(DataStream &stream, ContextMode mode) override
Definition rcsd.C:547
double giveTempDamageCoeff() const
Definition rcsd.h:81
RCSDMaterialStatus(GaussPoint *g)
Definition rcsd.C:464
void initTempStatus() override
Definition rcsd.C:516
void setDamageStiffCoeff(double val)
Definition rcsd.h:80
double giveDamageCoeff() const
Definition rcsd.h:95
double giveMaxEquivStrain() const
Definition rcsd.h:94
const FloatMatrix * giveDs0Matrix()
Definition rcsd.h:83
void setDs0Matrix(FloatMatrix &mtrx)
Definition rcsd.h:84
void updateYourself(TimeStep *tStep) override
Definition rcsd.C:531
double giveTempMaxEquivStrain() const
Definition rcsd.h:77
void restoreContext(DataStream &stream, ContextMode mode) override
Definition rcsd.C:571
const char * giveClassName() const override
Definition rcsd.h:99
double tempMaxEquivStrain
Definition rcsd.h:66
double giveDamageStiffCoeff() const
Definition rcsd.h:79
FloatMatrix Ds0
Definition rcsd.h:68
void setDamageEpsfCoeff(double val)
Definition rcsd.h:86
rcsdMode giveMode() const
Definition rcsd.h:97
void setDamageEpspCoeff(double val)
Definition rcsd.h:88
double giveDamageEpsfCoeff() const
Definition rcsd.h:85
void setTempMaxEquivStrain(double val)
Definition rcsd.h:78
const char * giveInputRecordName() const override
Definition rcsd.h:125
void initializeFrom(InputRecord &ir) override
Definition rcsd.C:250
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &, TimeStep *tStep) const override
Definition rcsd.C:63
double computeStrength(GaussPoint *gp, double) const override
Definition rcsd.C:290
double giveMinCrackStrainsForFullyOpenCrack(GaussPoint *gp, int i) const override
Definition rcsd.C:316
double SDTransitionCoeff
Definition rcsd.h:119
double giveNormalCrackingStress(GaussPoint *gp, double eps_cr, int i) const override
Definition rcsd.C:423
RCSDMaterial(int n, Domain *d)
Definition rcsd.C:50
const char * giveClassName() const override
Definition rcsd.h:126
double computeCurrEquivStrain(GaussPoint *, const FloatArray &, double, TimeStep *) const
Definition rcsd.C:230
int checkSizeLimit(GaussPoint *gp, double) const override
Definition rcsd.C:271
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition rcsd.h:135
double give(int aProperty, GaussPoint *gp) const override
Definition rcsd.C:258
double giveCrackingModulus(MatResponseMode rMode, GaussPoint *gp, double crackStrain, int i) const override
Definition rcsd.C:356
double computeDamageCoeff(double, double, double, double) const
Definition rcsd.C:218
void giveEffectiveMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
Definition rcsd.C:176
virtual ~RCSDMaterial()
Definition rcsd.C:56
long ContextMode
Definition contextmode.h:43
#define _IFT_RCSDMaterial_Name
Definition rcsd.h:46

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