OOFEM 3.0
Loading...
Searching...
No Matches
rankinematgrad.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 RankineMatGrad_h
36
37#include "rankinemat.h"
41#include "cltypes.h"
42
44
45#define _IFT_RankineMatGrad_Name "rankmatgrad"
46#define _IFT_RankineMatGrad_L "l"
47#define _IFT_RankineMatGrad_m "m"
48#define _IFT_RankineMatGrad_negligibleDamage "negligible_damage"
49#define _IFT_RankineMatGrad_formulationType "formtype"
51
52namespace oofem {
57{
58protected:
59
65
66 double kappa_nl = 0.;
67 double kappa_hat = 0.;
68
69public:
70
72
73 void printOutputAt(FILE *file, TimeStep *tStep) const override;
74
75 // definition
76 const char *giveClassName() const override { return "RankineMatGradStatus"; }
77
78 void initTempStatus() override;
79 void updateYourself(TimeStep *tStep) override;
80
81 void setKappa_nl(double kap) { kappa_nl = kap; }
82 void setKappa_hat(double kap) { kappa_hat = kap; }
83 double giveKappa_nl() { return kappa_nl; }
84 double giveKappa_hat() { return kappa_hat; }
86 virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain) { this->nonlocalDamageDrivingVariable = nonlocalCumulatedStrain; }
87};
88
89
94{
95protected:
96 double L = 0.;
97 double mParam = 0.;
98 double negligible_damage = 0.;
99
104
106
107
108public:
109 RankineMatGrad(int n, Domain *d);
110
111 const char *giveClassName() const override { return "RankineMatGrad"; }
112 const char *giveInputRecordName() const override { return _IFT_RankineMatGrad_Name; }
113
114 void initializeFrom(InputRecord &ir) override;
115 bool hasMaterialModeCapability(MaterialMode mode) const override;
118 return static_cast< GradientDamageMaterialExtensionInterface * >( this );
119 } else {
120 return nullptr;
121 }
122 }
123
124 void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override;
125
126 void giveGradientDamageStiffnessMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
127 void giveGradientDamageStiffnessMatrix_ud(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
128 void giveGradientDamageStiffnessMatrix_du(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
129 void giveGradientDamageStiffnessMatrix_du_NB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
130 void giveGradientDamageStiffnessMatrix_du_BB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
131 void giveGradientDamageStiffnessMatrix_dd_NN(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
132 void giveGradientDamageStiffnessMatrix_dd_BB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
133 void giveGradientDamageStiffnessMatrix_dd_BN(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override;
134
135 void computeLocalDamageDrivingVariable(double &answer, GaussPoint *gp, TimeStep *tStep) override;
136
137 void giveNonlocalInternalForces_N_factor(double &answer, double nlddv, GaussPoint *gp, TimeStep *tStep) override;
138 void giveNonlocalInternalForces_B_factor(FloatArray &answer, const FloatArray &nlddv, GaussPoint *gp, TimeStep *tStep) override;
139
140
141 void giveRealStressVectorGradientDamage(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep) override;
142
143 FloatMatrixF<3,3> givePlaneStressStiffMtrx(MatResponseMode, GaussPoint * gp, TimeStep * tStep) const override;
144 void givePlaneStressGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
145 void givePlaneStressKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
146 void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
147
148 double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const override;
150 void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain);
151
153
154 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
155
156protected:
158 int giveDimension(GaussPoint *gp);
159
164
165 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<RankineMatGradStatus>(gp); }
166};
167} // end namespace oofem
168#define RankineMatGrad_h
169#endif
RankineMatGradStatus(GaussPoint *g)
virtual double giveNonlocalCumulatedStrain()
void setKappa_hat(double kap)
const char * giveClassName() const override
virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain)
void updateYourself(TimeStep *tStep) override
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
void computeLocalDamageDrivingVariable(double &answer, GaussPoint *gp, TimeStep *tStep) override
double computeEikonalInternalLength_b(GaussPoint *gp)
void giveNonlocalInternalForces_N_factor(double &answer, double nlddv, GaussPoint *gp, TimeStep *tStep) override
double computeEikonalInternalLength_bPrime(GaussPoint *gp)
void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
double computeEikonalInternalLength_aPrime(GaussPoint *gp)
void initializeFrom(InputRecord &ir) override
const char * giveInputRecordName() const override
double giveNonlocalCumPlasticStrain(GaussPoint *gp)
void giveGradientDamageStiffnessMatrix_dd_BN(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
void giveNonlocalInternalForces_B_factor(FloatArray &answer, const FloatArray &nlddv, GaussPoint *gp, TimeStep *tStep) override
bool hasMaterialModeCapability(MaterialMode mode) const override
int giveDimension(GaussPoint *gp)
void givePlaneStressKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
void giveGradientDamageStiffnessMatrix_du(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
Left lower block.
RankineMatGrad(int n, Domain *d)
void giveGradientDamageStiffnessMatrix_du_NB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
void giveGradientDamageStiffnessMatrix_du_BB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
LinearElasticMaterial * giveLinearElasticMaterial()
double computeCumPlastStrain(GaussPoint *gp, TimeStep *tStep) const override
void giveGradientDamageStiffnessMatrix_dd_BB(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
GradientDamageFormulationType gradientDamageFormulationType
void givePlaneStressGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Interface * giveInterface(InterfaceType t) override
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void giveGradientDamageStiffnessMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
Left upper block.
void giveGradientDamageStiffnessMatrix_dd_NN(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
Right lower block.
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain)
const char * giveClassName() const override
void giveGradientDamageStiffnessMatrix_ud(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
Right upper block.
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
void giveRealStressVectorGradientDamage(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep) override
gradient - based giveRealStressVector
void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const override
double computeInternalLength(GaussPoint *gp)
double computeEikonalInternalLength_a(GaussPoint *gp)
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
RankineMatStatus(GaussPoint *g)
Definition rankinemat.C:676
LinearElasticMaterial * linearElasticMaterial
Reference to the basic elastic material.
Definition rankinemat.h:89
RankineMat(int n, Domain *d)
Definition rankinemat.C:52
@ GradientDamageMaterialExtensionInterfaceType
#define _IFT_RankineMatGrad_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