OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
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 - 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 #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 
50 
51 namespace oofem {
56 {
57 protected:
58  double kappa_nl;
59  double kappa_hat;
60 
61 public:
62  RankineMatGradStatus(int n, Domain * d, GaussPoint * g);
63  virtual ~RankineMatGradStatus() { }
64 
65  virtual void printOutputAt(FILE *file, TimeStep *tStep);
66 
67  // definition
68  virtual const char *giveClassName() const { return "RankineMatGradStatus"; }
69 
70  virtual void initTempStatus();
71  virtual void updateYourself(TimeStep *tStep);
72 
73  void setKappa_nl(double kap) { kappa_nl = kap; }
74  void setKappa_hat(double kap) { kappa_hat = kap; }
75  double giveKappa_nl() { return kappa_nl; }
76  double giveKappa_hat() { return kappa_hat; }
78  virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain) { this->nonlocalCumulatedStrain = nonlocalCumulatedStrain; }
79 };
80 
81 
86 {
87 protected:
88  double L;
89  double mParam;
91 
92 public:
93  RankineMatGrad(int n, Domain * d);
94  virtual ~RankineMatGrad() { }
95 
96  virtual const char *giveClassName() const { return "RankineMatGrad"; }
97  virtual const char *giveInputRecordName() const { return _IFT_RankineMatGrad_Name; }
98 
100  virtual int hasMaterialModeCapability(MaterialMode mode);
103  return static_cast< GradDpMaterialExtensionInterface * >(this);
104  } else {
105  return NULL;
106  }
107  }
108 
109  virtual void giveStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
110 
111  virtual void givePDGradMatrix_uu(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
112  virtual void givePDGradMatrix_uk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
113  virtual void givePDGradMatrix_ku(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
114  virtual void givePDGradMatrix_kk(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
115  virtual void givePDGradMatrix_LD(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
116  virtual void giveRealStressVectorGrad(FloatArray &answer1, double &answer2, GaussPoint *gp, const FloatArray &totalStrain, double nonlocalCumulatedStrain, TimeStep *tStep);
117 
118  virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep);
119  void givePlaneStressGprime(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
120  void givePlaneStressKappaMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
121  void giveInternalLength(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep);
122 
123  virtual void computeCumPlastStrain(double &kappa, GaussPoint *gp, TimeStep *tStep);
124  double giveNonlocalCumPlasticStrain(GaussPoint *gp);
125  void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain);
126 
127  LinearElasticMaterial *giveLinearElasticMaterial() { return linearElasticMaterial; }
128 
129  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
130 
131 protected:
133 };
134 } // end namespace oofem
135 #define RankineMatGrad_h
136 #endif
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
This class implements an isotropic elastoplastic material with Rankine yield condition, associated flow rule and linear isotropic softening, and with isotropic damage that leads to softening.
Definition: rankinemat.h:85
virtual const char * giveInputRecordName() const
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
#define _IFT_RankineMatGrad_Name
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
void setKappa_hat(double kap)
RankineMatGradStatus(int n, Domain *d, GaussPoint *g)
Gradient rankine material status.
LinearElasticMaterial * giveLinearElasticMaterial()
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
MatResponseMode
Describes the character of characteristic material matrix.
void setKappa_nl(double kap)
This class is a abstract base class for all linear elastic material models in a finite element proble...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
Gradient Rankine material.
Material interface for gradient material models.
virtual const char * giveClassName() const
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
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
Class Interface.
Definition: interface.h:82
virtual void setNonlocalCumulatedStrain(double nonlocalCumulatedStrain)
double kappa
Cumulative plastic strain (initial).
Definition: rankinemat.h:212
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
virtual double giveNonlocalCumulatedStrain()
virtual const char * giveClassName() const
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
the oofem namespace is to define a context or scope in which all oofem names are defined.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80

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