OOFEM 3.0
Loading...
Searching...
No Matches
trabbonematerial.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 trabbonematerial_h
36#define trabbonematerial_h
37
39#include "floatarrayf.h"
40#include "floatarray.h"
41#include "floatmatrix.h"
42#include "cltypes.h"
43#include "matconst.h"
44#include "matstatus.h"
46#include "cltypes.h"
47
49
50#define _IFT_TrabBoneMaterial_Name "trabbone"
51#define _IFT_TrabBoneMaterial_E0 "e0"
52#define _IFT_TrabBoneMaterial_Eil "eil"
53#define _IFT_TrabBoneMaterial_Eie "eie"
54#define _IFT_TrabBoneMaterial_kie "kie"
55#define _IFT_TrabBoneMaterial_Ek "ek"
56#define _IFT_TrabBoneMaterial_Cc "cc"
57#define _IFT_TrabBoneMaterial_Cc2 "cc2"
58#define _IFT_TrabBoneMaterial_EpsC "epsc"
59#define _IFT_TrabBoneMaterial_SigYp "sigyp"
60#define _IFT_TrabBoneMaterial_SigYn "sigyn"
61#define _IFT_TrabBoneMaterial_adam "adam"
63
64namespace oofem {
69{
70protected:
71 double tempAlpha = 0., alpha = 0.;
72 double tempDam = 0., dam = 0.;
73 double slope = 0.;
74 double sigC = 0., matConstC = 0.;
75
77
78public:
80
81 void printOutputAt(FILE *file, TimeStep *tStep) const override;
82
83 double giveAlpha() const { return alpha; }
84 double giveTempAlpha() const { return tempAlpha; }
85 double giveDam() const { return dam; }
86 double giveTempDam() const { return tempDam; }
87 double giveSlope() const { return slope; }
88 double giveSigC() const { return sigC; }
89 double giveMatConstC() const { return matConstC; }
90 const FloatArrayF<1> &givePlasStrainVector() const { return epsp; }
93
94 void setTempAlpha(double al) { tempAlpha = al; }
95 void setTempDam(double da) { tempDam = da; }
96 void setSlope(double slp) { slope = slp; }
97 void setSigC(double sc) { sigC = sc; }
98 void setMatConstC(double mcc) { matConstC = mcc; }
99 void setTempEpsp(double epsip) { tempEpsp.at(1) = epsip; }
100 void setTempDepsp(double depsip) { tempDepsp.at(1) = depsip; }
101
102 const char *giveClassName() const override { return "TrabBoneMaterialStatus"; }
103
104 void initTempStatus() override;
105 void updateYourself(TimeStep *tStep) override;
106
107 void saveContext(DataStream &stream, ContextMode mode) override;
108 void restoreContext(DataStream &stream, ContextMode mode) override;
109};
110
111
116{
117protected:
118 double E0 = 0., Eil = 0., Eie = 0.;
119 double kie = 0., Ek = 0.;
120 double Cc = 0., Cc2 = 0., EpsC = 0.;
121 double SigYp = 0., SigYn = 0.;
122 double adam = 0.;
123
124public:
125 TrabBoneMaterial(int n, Domain * d);
126
127 void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain) const;
128
129 void computeDensification(GaussPoint *gp, const FloatArray &totalStrain) const;
130
131 double computeDamageParam(double alpha, GaussPoint *gp) const;
132
133 double computeDamage(GaussPoint *gp, TimeStep *tStep) const;
134
135 virtual double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const;
136
137 FloatMatrixF<1,1> give1dStressStiffMtrx(MatResponseMode mode, GaussPoint *gp,
138 TimeStep *tStep) const override;
139
140 FloatArrayF<1> giveRealStressVector_1d(const FloatArrayF<1> &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override;
141
142 bool hasMaterialModeCapability(MaterialMode) const override;
143
144 const char *giveInputRecordName() const override { return _IFT_TrabBoneMaterial_Name; }
145 const char *giveClassName() const override { return "TrabBoneMaterial"; }
146
147 void initializeFrom(InputRecord &ir) override;
148
149 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
150};
151} // end namespace oofem
152#endif
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void restoreContext(DataStream &stream, ContextMode mode) override
void updateYourself(TimeStep *tStep) override
const FloatArrayF< 1 > & giveTempPlasStrainVector() const
const char * giveClassName() const override
const FloatArrayF< 1 > & giveTempIncPlasStrainVector() const
void saveContext(DataStream &stream, ContextMode mode) override
const FloatArrayF< 1 > & givePlasStrainVector() const
bool hasMaterialModeCapability(MaterialMode) const override
const char * giveInputRecordName() const override
double computeDamageParam(double alpha, GaussPoint *gp) const
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
TrabBoneMaterial(int n, Domain *d)
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &reducedStrain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
const char * giveClassName() const override
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain) const
void computeDensification(GaussPoint *gp, const FloatArray &totalStrain) const
double computeDamage(GaussPoint *gp, TimeStep *tStep) const
void initializeFrom(InputRecord &ir) override
virtual double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const
long ContextMode
Definition contextmode.h:43
#define _IFT_TrabBoneMaterial_Name

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