OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
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 - 2013 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 
41 namespace oofem {
42 REGISTER_Material(RankinePlasticMaterial);
43 
45 {
46  //
47  // constructor
48  //
50  this->nsurf = 3;
51  this->rmType = mpm_CuttingPlane;
52 }
53 
55 { }
56 
57 
60 {
61  IRResultType result; // Required by IR_GIVE_FIELD macro
62 
64  if ( result != IRRT_OK ) return result;
66  if ( result != IRRT_OK ) return result;
67 
69  return IRRT_OK;
70 }
71 
72 
73 double
75  const FloatArray &stressSpaceHardeningVars)
76 {
77  FloatArray princStress(3);
78  this->computePrincipalValues(princStress, stressVector, principal_stress);
79 
80  return princStress.at(isurf) - this->k;
81 }
82 
83 void
85  const FloatArray &stressSpaceHardeningVars)
86 {
87  FloatArray princStress(3);
88  FloatMatrix t(3, 3);
89 
90  // compute principal stresses and their directions
91  this->computePrincipalValDir(princStress, t, stressVector, principal_stress);
92 
93  //derivation through stress transformation. The transformation matrix is stored in t.
94  answer.resize(6);
95  answer.at(1) = t.at(1, isurf) * t.at(1, isurf); //xx = 11
96  answer.at(2) = t.at(2, isurf) * t.at(2, isurf); //yy = 22
97  answer.at(3) = t.at(3, isurf) * t.at(3, isurf); //zz = 33
98  answer.at(4) = t.at(2, isurf) * t.at(3, isurf); //yz = 23
99  answer.at(5) = t.at(1, isurf) * t.at(3, isurf); //xz = 13
100  answer.at(6) = t.at(1, isurf) * t.at(2, isurf); //xy = 12
101 
102  //crossSection->giveReducedCharacteristicVector(answer, gp, fullAnswer);
103 }
104 
105 void
107  GaussPoint *gp,
108  const FloatArray &strainSpaceHardeningVariables,
109  TimeStep *tStep)
110 {
111  answer.clear();
112 }
113 
114 void
116  const FloatArray &stressVector,
117  const FloatArray &stressSpaceHardeningVars)
118 {
119  answer.clear();
120 }
121 
122 
123 void
125  GaussPoint *gp,
126  const FloatArray &stressVector,
127  const FloatArray &stressSpaceHardeningVars)
128 {
129  answer.clear();
130 }
131 
132 
133 void
135  const FloatArray &strainSpaceHardeningVariables)
136 {
137  answer.clear();
138 }
139 
140 
143 {
144  return new MPlasticMaterialStatus(1, this->giveDomain(), gp, this->giveSizeOfReducedHardeningVarsVector(gp));
145 }
146 } // end namespace oofem
static void computePrincipalValues(FloatArray &answer, const FloatArray &s, stressStrainPrincMode mode)
Common functions for convenience.
Class and object Domain.
Definition: domain.h:115
For computing principal stresses.
functType
Type that allows to distinguish between yield function and loading function.
double & at(int i)
Coefficient access function.
Definition: floatarray.h:131
#define _IFT_RankinePlasticMaterial_ry
Definition: rankinepm.h:43
void clear()
Clears receiver (zero size).
Definition: floatarray.h:206
void computeStressGradientVector(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars)
Definition: rankinepm.C:84
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: rankinepm.C:59
LinearElasticMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void computeHardeningReducedModuli(FloatMatrix &answer, GaussPoint *gp, const FloatArray &strainSpaceHardeningVariables, TimeStep *tStep)
Definition: rankinepm.C:106
This class implements a general plastic material.
static void computePrincipalValDir(FloatArray &answer, FloatMatrix &dir, const FloatArray &s, stressStrainPrincMode mode)
Computes principal values and directions of stress or strain vector.
void computeStressSpaceHardeningVars(FloatArray &answer, GaussPoint *gp, const FloatArray &strainSpaceHardeningVariables)
Definition: rankinepm.C:134
int nsurf
Number of yield surfaces.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void computeReducedGradientMatrix(FloatMatrix &answer, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars)
Definition: rankinepm.C:124
This class implements an isotropic linear elastic material in a finite element problem.
virtual int giveSizeOfReducedHardeningVarsVector(GaussPoint *) const
RankinePlasticMaterial(int n, Domain *d)
Definition: rankinepm.C:44
double at(int i, int j) const
Coefficient access function.
Definition: floatmatrix.h:176
enum oofem::MPlasticMaterial::ReturnMappingAlgoType rmType
This class implements associated Material Status to MPlasticMaterial.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Definition: rankinepm.C:142
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
Class representing the general Input Record.
Definition: inputrecord.h:101
void computeStressSpaceHardeningVarsReducedGradient(FloatArray &answer, functType ftype, int isurf, GaussPoint *gp, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars)
Definition: rankinepm.C:115
double k
Yield value.
Definition: rankinepm.h:57
Domain * giveDomain() const
Definition: femcmpnn.h:100
REGISTER_Material(DummyMaterial)
the oofem namespace is to define a context or scope in which all oofem names are defined.
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Definition: floatmatrix.h:516
#define IR_GIVE_FIELD(__ir, __value, __id)
Macro facilitating the use of input record reading methods.
Definition: inputrecord.h:69
double computeYieldValueAt(GaussPoint *gp, int isurf, const FloatArray &stressVector, const FloatArray &stressSpaceHardeningVars)
Definition: rankinepm.C:74
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
void resize(int s)
Resizes receiver towards requested size.
Definition: floatarray.C:631

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:31 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011