OOFEM 3.0
Loading...
Searching...
No Matches
isolinearelasticmaterial.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 - 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#ifndef isolinearelasticmaterial_h
36#define isolinearelasticmaterial_h
37
39#include "dictionary.h"
40#include "floatarray.h"
41#include "floatmatrix.h"
42#include "floatmatrixf.h"
43#include "floatarrayf.h"
44
46
48
50
51#define _IFT_IsotropicLinearElasticMaterial_Name "isole"
52#define _IFT_IsotropicLinearElasticMaterial_e "e"
53#define _IFT_IsotropicLinearElasticMaterial_n "n"
54#define _IFT_IsotropicLinearElasticMaterial_talpha "talpha"
56
57namespace oofem {
58class GaussPoint;
59
75{
76protected:
78 double E = 0;
80 double nu = 0;
82 double G = 0;
84 double a = 0;
85
86public:
102 IsotropicLinearElasticMaterial(int n, Domain *d, double E, double nu);
103
104 const char *giveClassName() const override { return "IsotropicLinearElasticMaterial"; }
105 const char *giveInputRecordName() const override { return _IFT_IsotropicLinearElasticMaterial_Name; }
106
112 void initializeFrom(InputRecord &ir) override;
113 void giveInputRecord(DynamicInputRecord &input) override;
114
115 void saveContext(DataStream &stream, ContextMode mode) override;
116 void restoreContext(DataStream &stream, ContextMode mode) override;
117
119 void initTangents();
120
121 double give(int aProperty, GaussPoint *gp) const override;
122
124 double giveYoungsModulus() const { return E; }
125
127 double givePoissonsRatio() const { return nu; }
128
130 double giveShearModulus() const override { return G; }
131
133 double giveBulkModulus() const { return E / ( 3. * ( 1. - 2. * nu ) ); }
134
136 TimeStep * tStep) const override;
137
139 TimeStep * tStep) const override;
140
142 TimeStep * tStep) const override;
143
150 static double computeBulkModulusFromYoungAndPoisson(double young, double nu)
151 {
152 return young / ( 3. * ( 1. - 2. * nu ) );
153 }
154
161 static double computeShearModulusFromYoungAndPoisson(double young, double nu)
162 {
163 return young / ( 2. * ( 1. + nu ) );
164 }
165
166 double giveQcElasticParamneter() override { return E; }
167 double giveQcPlasticParamneter() override { return std :: numeric_limits< float > :: infinity(); }
168
171 return static_cast< QCMaterialExtensionInterface * >(this);
173 return static_cast< MixedPressureMaterialExtensionInterface * >( this );
174 } else {
175 return nullptr;
176 }
177 }
178
179
184 void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode type, GaussPoint* gp, TimeStep *tStep) const override;
185 void giveCharacteristicVector(FloatArray &answer, FloatArray& flux, MatResponseMode type, GaussPoint* gp, TimeStep *tStep) const override;
186
187
188
190 MatResponseMode,
191 GaussPoint * gp,
192 TimeStep * tStep) const override;
193
194
196 MatResponseMode, GaussPoint * gp,
197 TimeStep * tStep) const override;
198
199
200 void giveInverseOfBulkModulus(double &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override { answer = 3. * ( 1. - 2. * nu ) / E; }
201
202 void giveRealStressVectorUP_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, double pressure, TimeStep *tStep) const override;
203 void giveRealStressVectorUP_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, double pressure, TimeStep *tStep) const override;
204 double giveCharacteristicValue(MatResponseMode type, GaussPoint* gp, TimeStep *tStep) const override;
205};
206} // end namespace oofem
207#endif // isolinearelasticmaterial_h
double giveYoungsModulus() const
Returns Young's modulus.
Interface * giveInterface(InterfaceType t) override
static double computeShearModulusFromYoungAndPoisson(double young, double nu)
void giveDeviatoric3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
double givePoissonsRatio() const
Returns Poisson's ratio.
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
double giveCharacteristicValue(MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const override
Returns characteristic value of the receiver.
void giveDeviatoricPlaneStrainStiffMtrx(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
double giveShearModulus() const override
Returns the shear elastic modulus .
void giveCharacteristicMatrix(FloatMatrix &answer, MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const override
void initTangents()
Initialized fixed size tangents. Called by ctor and initializeFrom.
static double computeBulkModulusFromYoungAndPoisson(double young, double nu)
void giveInputRecord(DynamicInputRecord &input) override
double give(int aProperty, GaussPoint *gp) const override
double giveBulkModulus() const
Returns the bulk elastic modulus .
void giveRealStressVectorUP_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, double pressure, TimeStep *tStep) const override
void restoreContext(DataStream &stream, ContextMode mode) override
void initializeFrom(InputRecord &ir) override
void saveContext(DataStream &stream, ContextMode mode) override
void giveRealStressVectorUP_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, double pressure, TimeStep *tStep) const override
void giveCharacteristicVector(FloatArray &answer, FloatArray &flux, MatResponseMode type, GaussPoint *gp, TimeStep *tStep) const override
Returns characteristic vector of the receiver.
void giveInverseOfBulkModulus(double &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) override
const char * giveInputRecordName() const override
LinearElasticMaterial(int n, Domain *d)
Constructor.
#define _IFT_IsotropicLinearElasticMaterial_Name
long ContextMode
Definition contextmode.h:43
@ MixedPressureMaterialExtensionInterfaceType
@ QCMaterialExtensionInterfaceType

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