OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
microplanematerial.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 microplanematerial_h
36 #define microplanematerial_h
37 
38 #include "../sm/Materials/structuralmaterial.h"
39 #include "matconst.h"
40 
42 
43 #define _IFT_MicroplaneMaterial_nmp "nmp"
44 #define _IFT_MicroplaneMaterial_e "e"
45 #define _IFT_MicroplaneMaterial_n "n"
46 
47 
48 namespace oofem {
49 class Microplane;
50 
51 #define MAX_NUMBER_OF_MICROPLANES 61
52 
63 {
64 protected:
67 
72 
74  double Kronecker [ 6 ];
75 
80  double N [ MAX_NUMBER_OF_MICROPLANES ] [ 6 ];
85  double M [ MAX_NUMBER_OF_MICROPLANES ] [ 6 ];
90  double L [ MAX_NUMBER_OF_MICROPLANES ] [ 6 ];
91 
93  double E;
94 
96  double nu;
97 
98 public:
99 
105  MicroplaneMaterial(int n, Domain *d) : StructuralMaterial(n, d), numberOfMicroplanes(0) { }
107  virtual ~MicroplaneMaterial() { }
108 
119  virtual void giveRealMicroplaneStressVector(FloatArray &answer, Microplane *mplane,
120  const FloatArray &strain, TimeStep *tStep) = 0;
121 
125  double computeNormalStrainComponent(Microplane *mplane, const FloatArray &macroStrain);
129  double computeNormalVolumetricStrainComponent(Microplane *mplane, const FloatArray &macroStrain);
133  double computeNormalDeviatoricStrainComponent(Microplane *mplane, const FloatArray &macroStrain);
137  double computeShearMStrainComponent(Microplane *mplane, const FloatArray &macroStrain);
141  double computeShearLStrainComponent(Microplane *mplane, const FloatArray &macroStrain);
147  const FloatArray &macroStrain);
148 
149 
155  virtual void giveMicroplaneNormal(FloatArray &answer, Microplane *mplane);
161  virtual double giveMicroplaneIntegrationWeight(Microplane *mplane);
162 
164  Microplane *giveMicroplane(int i, GaussPoint *masterGp);
165 
171  virtual void initializeData(int numberOfMicroplanes);
172 
177 
178  virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer,
179  MatResponseMode mode,
180  GaussPoint *gp,
181  TimeStep *tStep);
182 
185 
187  virtual void giveInputRecord(DynamicInputRecord &input);
188 
190 
191 protected:
193  virtual void initTempStatus(GaussPoint *gp);
194 };
195 } // end namespace oofem
196 #endif // microplanematerial_h
int numberOfMicroplanes
Number of microplanes.
double computeShearMStrainComponent(Microplane *mplane, const FloatArray &macroStrain)
Computes the shear component (in m direction) of macro strain on given microplane.
double L[MAX_NUMBER_OF_MICROPLANES][6]
Shear projection tensors (l direction) for all microplanes.
Class and object Domain.
Definition: domain.h:115
virtual MaterialMode giveCorrespondingSlaveMaterialMode(MaterialMode masterMode)
Returns corresponding material mode for microplane according to macro integration mode...
#define MAX_NUMBER_OF_MICROPLANES
virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
Computes full 3d material stiffness matrix at given integration point, time, respecting load history ...
double E
Young's modulus.
double M[MAX_NUMBER_OF_MICROPLANES][6]
Shear projection tensors (m direction) for all microplanes.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
Defines several material constant (respective their representative number).
virtual MaterialStatus * CreateMicroplaneStatus(GaussPoint *gp)=0
double computeNormalDeviatoricStrainComponent(Microplane *mplane, const FloatArray &macroStrain)
Computes the normal deviatoric component of macro strain on given microplane.
double microplaneNormals[MAX_NUMBER_OF_MICROPLANES][3]
Normals of microplanes.
virtual ~MicroplaneMaterial()
Destructor.
Microplane * giveMicroplane(int i, GaussPoint *masterGp)
Returns i-th microplane belonging to master-macro-integration point. )-based indexing.
virtual contextIOResultType saveIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Stores integration point state to output stream.
virtual void giveRealMicroplaneStressVector(FloatArray &answer, Microplane *mplane, const FloatArray &strain, TimeStep *tStep)=0
Computes real stress vector on given microplane (the meaning of values depends on particular implemen...
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
MatResponseMode
Describes the character of characteristic material matrix.
virtual void initializeData(int numberOfMicroplanes)
Initializes internal data (integration weights, microplane normals and computes projection tensors)...
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
Abstract base class for all microplane models.
virtual void giveMicroplaneNormal(FloatArray &answer, Microplane *mplane)
Computes normal of given microplane.
double nu
Poisson's ratio.
Class representing microplane integration point in finite element program.
Definition: microplane.h:74
virtual double giveMicroplaneIntegrationWeight(Microplane *mplane)
Returns microplane integration weight.
double computeNormalStrainComponent(Microplane *mplane, const FloatArray &macroStrain)
Computes the length of normal strain vector on given microplane.
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
double N[MAX_NUMBER_OF_MICROPLANES][6]
Normal projection tensors for all microplanes.
MicroplaneMaterial(int n, Domain *d)
Constructor.
double computeNormalVolumetricStrainComponent(Microplane *mplane, const FloatArray &macroStrain)
Computes the normal volumetric component of macro strain on given microplane.
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
double microplaneWeights[MAX_NUMBER_OF_MICROPLANES]
Integration weights of microplanes.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Class representing the general Input Record.
Definition: inputrecord.h:101
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
Abstract base class for all "structural" constitutive models.
virtual IntegrationPointStatus * giveMicroplaneStatus(GaussPoint *gp)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual contextIOResultType restoreIPContext(DataStream &stream, ContextMode mode, GaussPoint *gp)
Reads integration point state to output stream.
double computeShearLStrainComponent(Microplane *mplane, const FloatArray &macroStrain)
Computes the shear component (in l direction) of macro strain on given microplane.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
Abstract base class representing a integration status.
double Kronecker[6]
Kronecker's delta.
void computeStrainVectorComponents(FloatArray &answer, Microplane *mplane, const FloatArray &macroStrain)
Computes the vector of all micro stress components (Ev, En, Em, El) of macro strain vector on given m...

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:30 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011