OOFEM 3.0
Loading...
Searching...
No Matches
misesmatnl.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 misesmatnl_h
36
40#include "cltypes.h"
41
43
44#define _IFT_MisesMatNl_Name "misesmatnl"
45#define _IFT_MisesMatNl_averagingtype "averagingtype"
46#define _IFT_MisesMatNl_exp "exp"
47#define _IFT_MisesMatNl_rf "rf"
49
50namespace oofem {
56{
57protected:
58 // STATE VARIABLE DECLARATION
59 // Equivalent strain for avaraging
61
62public:
64
65 void printOutputAt(FILE *file, TimeStep *tStep) const override;
66
67 // STATE VARIABLE
68 // declare state variable access and modification methods
71
72 const char *giveClassName() const override { return "MisesMatNlStatus"; }
73
74 void initTempStatus() override;
75
76 void updateYourself(TimeStep *tStep) override;
77 void saveContext(DataStream &stream, ContextMode mode) override;
78 void restoreContext(DataStream &stream, ContextMode mode) override;
79
81};
82
83
90{
91protected:
92 double Rf = 0.;
93 double exponent = 1.;
94 int averType = 0;
95
96public:
97 MisesMatNl(int n, Domain * d);
98
99 const char *giveClassName() const override { return "MisesMatNl"; }
100 const char *giveInputRecordName() const override { return _IFT_MisesMatNl_Name; }
101
102 void initializeFrom(InputRecord &ir) override;
103 void giveInputRecord(DynamicInputRecord &input) override;
104
106
113 virtual double computeCumPlasticStrain(GaussPoint *gp, TimeStep *tStep) const;
114 double computeDamage(GaussPoint *gp, TimeStep *tStep) const;
116 double computeDistanceModifier(double damage) const;
118 {
119 return MisesMat :: computeCumPlastStrain(gp, tStep);
120 }
121
122 FloatMatrixF<1,1> give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override;
123 //void givePlaneStrainStiffMtrx(FloatMatrix& answer, MatResponseMode, GaussPoint *gp,TimeStep *tStep) override;
124 //void give3dMaterialStiffnessMatrix(FloatMatrix& answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) override;
125
127 GaussPoint *gp, TimeStep *tStep) override;
128
129 std :: vector< localIntegrationRecord > *NonlocalMaterialStiffnessInterface_giveIntegrationDomainList(GaussPoint *gp) override;
130
141 FloatArray &lcontrib, TimeStep *tStep);
142
152 FloatArray &rcontrib, TimeStep *tStep);
153
154 FloatArrayF<6> giveRealStressVector_3d(const FloatArrayF<6> &strain, GaussPoint *gp, TimeStep *tStep) const override;
155 FloatArrayF<1> giveRealStressVector_1d(const FloatArrayF<1> &strainVector, GaussPoint *gp, TimeStep *tStep) const override;
156
157 void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override;
158
159 int hasBoundedSupport() const override { return 1; }
160
161 int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override;
162 int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override;
163 int estimatePackSize(DataStream &buff, GaussPoint *ip) override;
164
165protected:
166 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<MisesMatNlStatus>(gp); }
167};
168} // end namespace oofem
169#define misesmatnl_h
170#endif
void saveContext(DataStream &stream, ContextMode mode) override
Definition misesmatnl.C:474
double giveLocalCumPlasticStrainForAverage()
Definition misesmatnl.h:69
double localCumPlasticStrainForAverage
Definition misesmatnl.h:60
void setLocalCumPlasticStrainForAverage(double ls)
Definition misesmatnl.h:70
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition misesmatnl.C:441
MisesMatNlStatus(GaussPoint *g)
Definition misesmatnl.C:435
void restoreContext(DataStream &stream, ContextMode mode) override
Definition misesmatnl.C:482
Interface * giveInterface(InterfaceType) override
Definition misesmatnl.C:490
const char * giveClassName() const override
Definition misesmatnl.h:72
void initTempStatus() override
Definition misesmatnl.C:451
void updateYourself(TimeStep *tStep) override
Definition misesmatnl.C:462
void modifyNonlocalWeightFunctionAround(GaussPoint *gp) const
Definition misesmatnl.C:135
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition misesmatnl.h:166
double computeDistanceModifier(double damage) const
Definition misesmatnl.C:213
Interface * giveInterface(InterfaceType) override
Definition misesmatnl.C:269
void NonlocalMaterialStiffnessInterface_addIPContribution(SparseMtrx &dest, const UnknownNumberingScheme &s, GaussPoint *gp, TimeStep *tStep) override
Computes and adds IP contributions to destination matrix.
Definition misesmatnl.C:341
int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition misesmatnl.C:513
MisesMatNl(int n, Domain *d)
Definition misesmatnl.C:51
void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override
Definition misesmatnl.C:110
double computeDamage(GaussPoint *gp, TimeStep *tStep) const
Definition misesmatnl.C:326
void initializeFrom(InputRecord &ir) override
Definition misesmatnl.C:282
void giveInputRecord(DynamicInputRecord &input) override
Definition misesmatnl.C:308
const char * giveClassName() const override
Definition misesmatnl.h:99
int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition misesmatnl.C:501
int estimatePackSize(DataStream &buff, GaussPoint *ip) override
Definition misesmatnl.C:526
virtual double computeCumPlasticStrain(GaussPoint *gp, TimeStep *tStep) const
Definition misesmatnl.C:233
int giveLocalNonlocalStiffnessContribution(GaussPoint *gp, IntArray &loc, const UnknownNumberingScheme &s, FloatArray &lcontrib, TimeStep *tStep)
Definition misesmatnl.C:381
int hasBoundedSupport() const override
Definition misesmatnl.h:159
void giveRemoteNonlocalStiffnessContribution(GaussPoint *gp, IntArray &rloc, const UnknownNumberingScheme &s, FloatArray &rcontrib, TimeStep *tStep)
Definition misesmatnl.C:405
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Definition misesmatnl.C:57
const char * giveInputRecordName() const override
Definition misesmatnl.h:100
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strainVector, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
Definition misesmatnl.C:64
std ::vector< localIntegrationRecord > * NonlocalMaterialStiffnessInterface_giveIntegrationDomainList(GaussPoint *gp) override
Definition misesmatnl.C:372
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
Definition misesmatnl.C:79
double computeLocalCumPlasticStrain(GaussPoint *gp, TimeStep *tStep) const
Definition misesmatnl.h:117
MisesMatStatus(GaussPoint *g)
Definition misesmat.C:672
MisesMat(int n, Domain *d)
Definition misesmat.C:54
#define _IFT_MisesMatNl_Name
Definition misesmatnl.h:44
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