OOFEM 3.0
Loading...
Searching...
No Matches
rankinepm.C
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#include "rankinepm.h"
37#include "floatmatrix.h"
38#include "floatarray.h"
39#include "classfactory.h"
40
41namespace oofem {
43
44RankinePlasticMaterial :: RankinePlasticMaterial(int n, Domain *d) : MPlasticMaterial(n, d)
45{
47 this->nsurf = 3;
49}
50
51
52void
53RankinePlasticMaterial :: initializeFrom(InputRecord &ir)
54{
55 MPlasticMaterial :: initializeFrom(ir);
56 linearElasticMaterial->initializeFrom(ir);
57
59}
60
61
62double
63RankinePlasticMaterial :: computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector,
64 const FloatArray &stressSpaceHardeningVars) const
65{
66 FloatArray princStress(3);
67 this->computePrincipalValues(princStress, stressVector, principal_stress);
68
69 return princStress.at(isurf) - this->k;
70}
71
72void
73RankinePlasticMaterial :: computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector,
74 const FloatArray &stressSpaceHardeningVars) const
75{
76 FloatArray princStress(3);
77 FloatMatrix t(3, 3);
78
79 // compute principal stresses and their directions
80 this->computePrincipalValDir(princStress, t, stressVector, principal_stress);
81
82 //derivation through stress transformation. The transformation matrix is stored in t.
83 answer.resize(6);
84 answer.at(1) = t.at(1, isurf) * t.at(1, isurf); //xx = 11
85 answer.at(2) = t.at(2, isurf) * t.at(2, isurf); //yy = 22
86 answer.at(3) = t.at(3, isurf) * t.at(3, isurf); //zz = 33
87 answer.at(4) = t.at(2, isurf) * t.at(3, isurf); //yz = 23
88 answer.at(5) = t.at(1, isurf) * t.at(3, isurf); //xz = 13
89 answer.at(6) = t.at(1, isurf) * t.at(2, isurf); //xy = 12
90
91 //crossSection->giveReducedCharacteristicVector(answer, gp, fullAnswer);
92}
93
94void
95RankinePlasticMaterial :: computeHardeningReducedModuli(FloatMatrix &answer,
96 GaussPoint *gp,
97 const FloatArray &strainSpaceHardeningVariables,
98 TimeStep *tStep) const
99{
100 answer.clear();
101}
102
103void
104RankinePlasticMaterial :: computeStressSpaceHardeningVarsReducedGradient(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp,
105 const FloatArray &stressVector,
106 const FloatArray &stressSpaceHardeningVars) const
107{
108 answer.clear();
109}
110
111
112void
113RankinePlasticMaterial :: computeReducedGradientMatrix(FloatMatrix &answer, int isurf,
114 GaussPoint *gp,
115 const FloatArray &stressVector,
116 const FloatArray &stressSpaceHardeningVars) const
117{
118 answer.clear();
119}
120
121
122void
123RankinePlasticMaterial :: computeStressSpaceHardeningVars(FloatArray &answer, GaussPoint *gp,
124 const FloatArray &strainSpaceHardeningVariables) const
125{
126 answer.clear();
127}
128
129
130std::unique_ptr<MaterialStatus>
131RankinePlasticMaterial :: CreateStatus(GaussPoint *gp) const
132{
133 return std::make_unique<MPlasticMaterialStatus>(gp, this->giveSizeOfReducedHardeningVarsVector(gp));
134}
135} // end namespace oofem
#define REGISTER_Material(class)
void resize(Index s)
Definition floatarray.C:94
double & at(Index i)
Definition floatarray.h:202
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
double at(std::size_t i, std::size_t j) const
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
MPlasticMaterial(int n, Domain *d)
functType
Type that allows to distinguish between yield function and loading function.
int nsurf
Number of yield surfaces.
enum oofem::MPlasticMaterial::ReturnMappingAlgoType rmType
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
double k
Yield value.
Definition rankinepm.h:57
static void computePrincipalValues(FloatArray &answer, const FloatArray &s, stressStrainPrincMode mode)
Common functions for convenience.
static void computePrincipalValDir(FloatArray &answer, FloatMatrix &dir, const FloatArray &s, stressStrainPrincMode mode)
#define IR_GIVE_FIELD(__ir, __value, __id)
Definition inputrecord.h:67
@ principal_stress
For computing principal stresses.
#define _IFT_RankinePlasticMaterial_ry
Definition rankinepm.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