OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
rankinematnl.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 rankinematnl_h
36 #define rankinematnl_h
37 
38 #include "rankinemat.h"
41 #include "cltypes.h"
42 
43 #define _IFT_RankineMatNl_Name "rankmatnl"
44 
45 namespace oofem {
50 {
51 protected:
54 
56  double kappa_nl;
57  double kappa_hat;
58 
59 public:
60  RankineMatNlStatus(int n, Domain * d, GaussPoint * g);
61  virtual ~RankineMatNlStatus();
62 
63  virtual void printOutputAt(FILE *file, TimeStep *tStep);
64 
67  void setLocalCumPlasticStrainForAverage(double ls) { localCumPlasticStrainForAverage = ls; }
68 
69  virtual const char *giveClassName() const { return "RankineMatNlStatus"; }
70 
71  virtual void initTempStatus();
72 
73  virtual void updateYourself(TimeStep *tStep);
74 
75  void setKappa_nl(double kap) { kappa_nl = kap; }
76  void setKappa_hat(double kap) { kappa_hat = kap; }
77  double giveKappa_nl() { return kappa_nl; }
78  double giveKappa_hat() { return kappa_hat; }
79 
80  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
81  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
82 
84 };
85 
86 
92 {
93 public:
94  RankineMatNl(int n, Domain * d);
95  virtual ~RankineMatNl() {
96  ;
97  }
98 
99  virtual const char *giveClassName() const { return "RankineMatNl"; }
100  virtual const char *giveInputRecordName() const { return _IFT_RankineMatNl_Name; }
101 
103  virtual void giveInputRecord(DynamicInputRecord &input);
104 
106 
113  virtual void computeCumPlasticStrain(double &kappa, GaussPoint *gp, TimeStep *tStep);
114  double computeDamage(GaussPoint *gp, TimeStep *tStep);
115  void modifyNonlocalWeightFunctionAround(GaussPoint *gp);
116  double computeDistanceModifier(double damage);
117  void computeLocalCumPlasticStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
118  {
119  RankineMat :: computeCumPlastStrain(kappa, gp, tStep);
120  }
121 
122 
123  virtual void givePlaneStressStiffMtrx(FloatMatrix &answer, MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep);
124  //virtual void givePlaneStrainStiffMtrx(FloatMatrix& answer, MatResponseMode,GaussPoint * gp,TimeStep * tStep);
125  //virtual void give3dMaterialStiffnessMatrix(FloatMatrix& answer, MatResponseMode,GaussPoint* gp, TimeStep* tStep);
126 
127 #ifdef __OOFEG
128  // Plots the sparse structure of stiffness contribution.
129  //virtual void NonlocalMaterialStiffnessInterface_showSparseMtrxStructure(GaussPoint *gp, oofegGraphicContext &gc, TimeStep *tStep);
130 #endif
131 
132  virtual void NonlocalMaterialStiffnessInterface_addIPContribution(SparseMtrx &dest, const UnknownNumberingScheme &s,
133  GaussPoint *gp, TimeStep *tStep);
134 
135  virtual std :: vector< localIntegrationRecord > *NonlocalMaterialStiffnessInterface_giveIntegrationDomainList(GaussPoint *gp);
136 
146  int giveLocalNonlocalStiffnessContribution(GaussPoint *gp, IntArray &loc, const UnknownNumberingScheme &s,
147  FloatArray &lcontrib, TimeStep *tStep);
148 
157  void giveRemoteNonlocalStiffnessContribution(GaussPoint *gp, IntArray &rloc, const UnknownNumberingScheme &s,
158  FloatArray &rcontrib, TimeStep *tStep);
159 
160  // Computes elastic stiffness for normal stress components
161  // @param answer result of size (3,3)
162  // @param mode determines the MatResponseMode
163  // @param gp integration point
164  // @param tStep time step
165  // void giveNormalElasticStiffnessMatrix (FloatMatrix& answer, MatResponseMode rMode, GaussPoint*gp, TimeStep* tStep) ;
166 
167  virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector, TimeStep *tStep);
168 
169  // Computes 1D stress
170  virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector, TimeStep *tStep);
171 
172  virtual void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep);
173 
174  virtual int hasBoundedSupport() { return 1; }
175 
176  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
177 
178  virtual int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip);
179  virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip);
180  virtual int estimatePackSize(DataStream &buff, GaussPoint *ip);
181 
182 protected:
184 };
185 } // end namespace oofem
186 #endif
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
Abstract base class for all nonlocal structural materials.
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 * giveClassName() const
Definition: rankinematnl.h:69
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
void setLocalCumPlasticStrainForAverage(double ls)
Definition: rankinematnl.h:67
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
Base class for all matrices stored in sparse format.
Definition: sparsemtrx.h:60
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double damage
Damage (initial).
Definition: rankinemat.h:225
RankineMatNlStatus(int n, Domain *d, GaussPoint *g)
Definition: rankinematnl.C:397
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: rankinematnl.C:421
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Definition: rankinematnl.h:183
void setKappa_nl(double kap)
Definition: rankinematnl.h:75
virtual ~RankineMatNl()
Definition: rankinematnl.h:95
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
double kappa_nl
For printing only.
Definition: rankinematnl.h:56
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
virtual const char * giveInputRecordName() const
Definition: rankinematnl.h:100
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Definition: rankinematnl.C:461
Class Nonlocal Material Stiffness Interface.
Abstract base class allowing to control the way, how equations are assigned to individual DOFs...
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: rankinematnl.C:432
Abstract base class representing a material status information.
Definition: matstatus.h:84
double giveLocalCumPlasticStrainForAverage()
Definition: rankinematnl.h:65
Class representing vector of real numbers.
Definition: floatarray.h:82
Rankine nonlocal material.
Definition: rankinematnl.h:90
FloatArray strainVector
Equilibrated strain vector in reduced form.
Definition: structuralms.h:69
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
#define _IFT_RankineMatNl_Name
Definition: rankinematnl.h:43
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
Definition: rankinematnl.C:409
virtual const char * giveClassName() const
Definition: rankinematnl.h:99
Rankine nonlocal material status.
Definition: rankinematnl.h:49
Class representing the general Input Record.
Definition: inputrecord.h:101
Base class for all nonlocal structural material statuses.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Definition: rankinematnl.C:444
Class Interface.
Definition: interface.h:82
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
Definition: rankinematnl.C:479
Class representing the a dynamic Input Record.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
double kappa
Cumulative plastic strain (initial).
Definition: rankinemat.h:212
double localCumPlasticStrainForAverage
Equivalent strain for averaging.
Definition: rankinematnl.h:53
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
virtual void computeCumPlastStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
Definition: rankinemat.C:484
the oofem namespace is to define a context or scope in which all oofem names are defined.
const FloatArray * giveLTangentContrib()
void computeLocalCumPlasticStrain(double &kappa, GaussPoint *gp, TimeStep *tStep)
Definition: rankinematnl.h:117
Class representing integration point in finite element program.
Definition: gausspoint.h:93
virtual int hasBoundedSupport()
Determines, whether receiver has bounded weighting function (limited support).
Definition: rankinematnl.h:174
Class representing solution step.
Definition: timestep.h:80
void setKappa_hat(double kap)
Definition: rankinematnl.h:76

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