muMECH  1.0
esuf.h
Go to the documentation of this file.
1 //********************************************************************************************************
2 // code: ### ### ##### #### ## ##
3 // ## ## ######## ## ## ## ## ##
4 // ## ## ## ## ## ### ## ######
5 // ## ## ## ## ## ## ## ## ##
6 // ##### ## ## ##### #### ## ##
7 // ##
8 //
9 // name: eshelbySoluUniformField.h
10 // author(s): Jan Novak
11 // language: C, C++
12 // license: This program is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU Lesser General Public License as published by
14 // the Free Software Foundation; either version 2 of the License, or
15 // (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU Lesser General Public License for more details.
21 //
22 // You should have received a copy of the GNU Lesser General Public License
23 // along with this program; if not, write to the Free Software
24 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 //********************************************************************************************************
31 #ifndef MUMECH_ESHELBY_SOLU_UNIFORM_FIELD_H
32 #define MUMECH_ESHELBY_SOLU_UNIFORM_FIELD_H
33 
34 #include "types.h"
35 #include "matrix.h"
36 
37 namespace mumech {
38 
39 class MatrixRecord;
40 class Inclusion;
41 class InclusionRecord3D;
42 class Problem;
43 
47 {
48  protected:
50 
51  double nu;
52  double _2nu;
53  double _1Plus2nu;
54  double _1MinNu;
55  double mult;
56  double MULT;
57  double multTRN;
58  double _1Min2nu;
59  double _2nuMin1;
60  double _3Min4nu;
61 
62  public:
67 
68 
77  void giveEshelbyStrainOfOnePoint (Point *point);
78 
89  void giveEshelbyFieldsOfOnePoint (Point *point, int lc, int nlc, bool disp, bool strn);
90 
99  void giveEshelbyDisplacementOfOnePoint (double **globPert_displc, const double *coords, int lc, int nlc);
100 
107  void giveEshelbyTensor (double S[12], const double eInt[13]);
108 
115  virtual void giveEshelbyTensorInverse (double SInv[12], const double S[12]);
116 
117  virtual void giveSijkl( double S[36], const double sort_a[3], const double stiffMat[36], int M_partition, int N_partition );
118 
119 
120  protected:
121 
130  void giveEshelbyDisplacementUniformField (double displacement[3], const double pertDispTens[18],
131  const double unifStrain[6]);
132 
139 
146  void giveDisplacementPerturbTensor_INTpoint (double L[18], const double x[3]);
147 
156  void giveEshelbyStrainUniformField (double strain[6], const double pertTens[36],
157  const double unifStrain[6]);
158 
165  void giveStrainPerturbTensor (Point *point);
166 
167  //********************************************************************************************************
168  // description: Function gives a component of the Eshelby tensor
169  // last edit: 16. 10. 2009
170  //-------------------------------------------------------------------------------------------------------
171  // note: Solution adopted from Toshio Mura's book (1982) and Eshelby article (1957)
172  // @sort_a[3] - sorted ellipsoidal semiaxes (a1>a2>a3)
173  // @eSInt[13] - values of elliptical integrals (potentials)
174  // always for lambda = 0. Even for external fields !!!
175  // @flag - Eshelby tensor component S_ijkl
176  //********************************************************************************************************
177  virtual double eshelbyTensCompUniformField( const double sort_a[3], const double eSInt[13],
178  double nu, EshelbyTensComponent flag );
179 
180  //********************************************************************************************************
181  // description: Function initialize an 1D array by Eshelby tensor components
182  // last edit: 15. 02. 2010
183  //-------------------------------------------------------------------------------------------------------
184  // note: Solution adopted from Toshio Mura's book (1982) and Eshelby article (1957)
185  // @eshTens - pointer to array of Eshelby tensor components S_ijkl
186  // @sort_a[3] - sorted ellipsoidal semiaxes (a1>a2>a3)
187  // @eInt[13] - values of elliptical integrals (potentials)
188  // @nu - Poisson's ratio
189  //********************************************************************************************************
190  virtual void eshelbyTensUniformField (double eshTens[12], const double sort_a[3], const double eInt[13]);
191 
192  //********************************************************************************************************
193  // description: Function gives D_ijkl(x) generalized Eshelby's tensor.
194  // Function requiers "constructor2"
195  // D_ijkl is adjusted to mandel notation. The resulting D tensor thus differs from the values in Mura book.
196  // last edit: 12. 07. 2010
197  //-------------------------------------------------------------------------------------------------------
198  // note: @D[36] - Perturbation (generalized Eshelby's) tensor to be evaluated and saved
199  // @S[12] - Eshelby's tensor for internal fields (uniform fields)
200  // @J[13] - Ferers-Dysons' elliptic integrals
201  // @dJi[9] - first derivatives of Ferers-Dysons' elliptic integrals Ii
202  // @dJij[27] - first derivatives of Ferers-Dysons' elliptic integrals Iij
203  // @ddJi[27] - second derivatives of Ferers-Dysons' elliptic integrals Ii
204  // @ddJij[81] - second derivatives of Ferers-Dysons' elliptic integrals Ii
205  // @sort_a[3] - sorted semiaxes' dimensions
206  // @x[3] - coordinates of a point
207  // @pos - position of the pint (_INT_POINT_/_EXT_POINT_)
208  //********************************************************************************************************
209  virtual void giveDijkl ( double D[36], const double S[12], const double J[13], const double dJi[9],
210  const double dJij[27], const double ddJi[27], const double ddJij[81],
211  const double sort_a[3], const double x[3]);
212 
213  //********************************************************************************************************
214  // description: Function gives S_ijkl(x) position dependent Eshelby's tensor. (This is not
215  // the strain perturbation tensor! Just its part ). The returned members of the
216  // S_ijkl matrix are in tensorial (theoretical) notation!
217  // Function requiers "constructor2"
218  // last edit: 12. 07. 2010
219  //-------------------------------------------------------------------------------------------------------
220  // note: @S[36] - Eshelby position dependent tensor
221  // @J[13] - Ferers-Dysons' elliptic integrals
222  // @sort_a[3] - sorted semiaxes' dimensions
223  // @nu - Poisson's ratio of the matrix material
224  //********************************************************************************************************
225  virtual void giveSijkl( double S[36], const double J[13], const double sort_a[3],
226  double nu, bool newFormulation );
227 
238  void giveLijkEXT (double Lext[18], const double Lint[18], const double dJi[9],
239  const double dJij[27], const double sort_a[3], const double x[3]);
240 
248  void giveLijkINT (double Lint[18], const double J[13], const double sort_a[3], const double x[3]);
249 
250 };//end of class declaration
251 
252 } // end of namespace mumech
253 
254 #endif
255 
256 /*end of file*/
void giveDisplacementPerturbTensor_INTpoint(double L[18], const double x[3])
Function gives the Displacement perturbation tensor of a INTERNAL point with respect to owner inclusi...
Definition: esuf.cpp:922
virtual void eshelbyTensUniformField(double eshTens[12], const double sort_a[3], const double eInt[13])
Definition: esuf.cpp:317
file of various types and symbolic constant definitions
virtual void giveSijkl(double S[36], const double sort_a[3], const double stiffMat[36], int M_partition, int N_partition)
Definition: esuf.cpp:473
void giveEshelbyStrainOfOnePoint(Point *point)
Function gives the 'Eshelby' STRAIN field in an arbitrary EXTERNAL point.
Definition: esuf.cpp:134
virtual ~eshelbySoluUniformField()
Destructor.
Definition: esuf.h:66
void giveStrainPerturbTensor(Point *point)
Function gives the strain perturbation tensor of a point with respect to an inclusion of arbitrary sh...
Definition: esuf.cpp:366
void giveLijkINT(double Lint[18], const double J[13], const double sort_a[3], const double x[3])
Function gives the displacement perturbation tensor of internal fields.
Definition: esuf.cpp:982
double nu
nu of matrix
Definition: esuf.h:51
void giveEshelbyStrainUniformField(double strain[6], const double pertTens[36], const double unifStrain[6])
Function gives the 'Eshelby' perturbation strain tensor of an arbitrary point of an ellipsoidal inclu...
Definition: esuf.cpp:107
void giveEshelbyTensor(double S[12], const double eInt[13])
Function gives the Eshelby tensor of an inclusion of arbitrary shape.
Definition: esuf.cpp:225
void giveEshelbyDisplacementOfOnePoint(double **globPert_displc, const double *coords, int lc, int nlc)
Function gives the 'Eshelby' DISPLACEMENT field in an arbitrary INTERNAL point for given load cases...
Definition: esuf.cpp:209
3D inclusion record.
Definition: inclusion.h:278
virtual void giveDijkl(double D[36], const double S[12], const double J[13], const double dJi[9], const double dJij[27], const double ddJi[27], const double ddJij[81], const double sort_a[3], const double x[3])
Definition: esuf.cpp:648
void giveLijkEXT(double Lext[18], const double Lint[18], const double dJi[9], const double dJij[27], const double sort_a[3], const double x[3])
Function gives the displacement perturbation tensor of external fields.
Definition: esuf.cpp:938
void giveEshelbyDisplacementUniformField(double displacement[3], const double pertDispTens[18], const double unifStrain[6])
Function gives the 'Eshelby' perturbation displacement vector of an arbitrary point of an ellipsoidal...
Definition: esuf.cpp:79
Single Point data structure - contribution from Single inclusion.
Definition: matrix.h:133
Class MatrixRecord.
eshelbySoluUniformField(const InclusionRecord3D *i)
Constructor.
Definition: esuf.cpp:54
Class of the functions returning the Eshelby solution of an inclusion of an ellipsoidal shape loaded ...
Definition: esuf.h:46
EshelbyTensComponent
Definition: types.h:221
void giveEshelbyFieldsOfOnePoint(Point *point, int lc, int nlc, bool disp, bool strn)
Function gives the 'Eshelby' STRAIN and DISPLACEMENT field in an arbitrary EXTERNAL point for given l...
Definition: esuf.cpp:162
void giveDisplacementPerturbTensor_EXTpoint(Point *point)
Function gives the Displacement perturbation tensor of a EXTERNAL point with respect to owner inclusi...
Definition: esuf.cpp:910
double multTRN
1./mult
Definition: esuf.h:57
virtual double eshelbyTensCompUniformField(const double sort_a[3], const double eSInt[13], double nu, EshelbyTensComponent flag)
Definition: esuf.cpp:246
virtual void giveEshelbyTensorInverse(double SInv[12], const double S[12])
Function gives the inverse of the Eshelby tensor of an inclusion of arbitrary shape.
Definition: esuf.cpp:348
const InclusionRecord3D * I
Definition: esuf.h:49