muMECH  1.0
homogenizationMethods.h
Go to the documentation of this file.
1 //********************************************************************************************************
2 // code: ### ### ##### #### ## ##
3 // ## ## ######## ## ## ## ## ##
4 // ## ## ## ## ## ### ## ######
5 // ## ## ## ## ## ## ## ## ##
6 // ##### ## ## ##### #### ## ##
7 // ##
8 // name: homogenization.h
9 // author(s): Jan Vorel, Ladislav Svoboda
10 // language: C, C++
11 // license: This program is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU Lesser General Public License as published by
13 // the Free Software Foundation; either version 2 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU Lesser General Public License for more details.
20 //
21 // You should have received a copy of the GNU Lesser General Public License
22 // along with this program; if not, write to the Free Software
23 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 //********************************************************************************************************
31 #ifndef MUMECH_HOMOGENIZATION_METHODS_H
32 #define MUMECH_HOMOGENIZATION_METHODS_H
33 
34 //included libraries
35 #include "homogenization.h"
36 
37 
38 namespace mumech {
39 
40 
42 class Dilute : public Homogenization
43 {
44  public:
46  Dilute(long i, Problem *p) : Homogenization(i,p) {}
48  virtual ~Dilute(){}
49 
51  virtual void giveHomogenizedStiffnessMatrix( double* answer );
53  virtual const char *giveClassName() { return "Dilute"; }
55  virtual const HomogenizationType giveClassID() { return HT_Dilute; }
56 
57  protected:
58  void giveDiluteReducedConcentrationFactorOfInclusionInLC( double* answer, double* matrix_inclStiffmat,
59  double* matrixStiffMat, double* matrixComplMat, const long inclusionNumber );
60  void giveFullDiluteConcentrationFactorOfInclusionInLC( double* answer, double* matrix_inclStiffmat,
61  double* matrixStiffMat, double* matrixComplMat, const long inclusionNumber );
62 
63 
64 }; // end of class Dilute
65 
66 
68 class MoriTanaka : public Dilute
69 {
70  public:
72  MoriTanaka(long i, Problem *p) : Dilute(i,p) {}
74  virtual ~MoriTanaka(){}
75 
77  virtual void giveHomogenizedStiffnessMatrix( double* answer );
79  virtual const char *giveClassName() { return "MoriTanaka"; }
81  virtual const HomogenizationType giveClassID() { return HT_MoriTanaka; }
82 
83 }; // end of class MoriTanaka
84 
85 
87 class ReussBound : public Homogenization
88 {
89  public:
91  ReussBound(long i, Problem *p) : Homogenization(i,p) {}
93  virtual ~ReussBound(){}
94 
96  virtual void giveHomogenizedStiffnessMatrix( double* answer );
98  virtual const char *giveClassName() { return "ReussBound"; }
100  virtual const HomogenizationType giveClassID() { return HT_ReussBound; }
101 
102 }; // end of class ReussBound
103 
104 
107 {
108  public:
110  VoightBound(long i, Problem *p) : Homogenization(i,p) {}
112  virtual ~VoightBound(){}
113 
115  virtual void giveHomogenizedStiffnessMatrix( double* answer );
117  virtual const char *giveClassName() { return "VoightBound"; }
119  virtual const HomogenizationType giveClassID() { return HT_VoightBound; }
120 
121 }; // end of class VoightBound
122 
123 
125 class RegGrid : public Homogenization
126 {
127  private:
128  const Mesh *mesh;
129 
130  public:
132  RegGrid (long i, Problem *p) : Homogenization (i,p) { mesh = NULL; }
134  virtual ~RegGrid () { mesh = NULL; }
135 
137  virtual void giveHomogenizedStiffnessMatrix( double* answer );
139  virtual const char *giveClassName() { return "RegularGrid"; }
141  virtual const HomogenizationType giveClassID() { return HT_RegGrid; }
142 
143  void set_mesh (const Mesh *val) { mesh = val; }
144 
145 }; // end of class RegGrid
146 
147 
150 {
151  public:
153  DifferentialScheme(long i, Problem *p) : Dilute(i,p) {}
156 
158  virtual void giveHomogenizedStiffnessMatrix( double* answer );
160  virtual const char *giveClassName() { return "DifferentialScheme"; }
163 
164 private:
165  static bool ascendingSort(Inclusion *first, Inclusion *second) { return first->give_volume() < second->give_volume(); }
166  static bool descendingSort(Inclusion *first, Inclusion *second) { return first->give_volume() > second->give_volume(); }
167 
168 }; // end of class DifferentialScheme
169 
170 } // end of namespace mumech
171 
172 #endif
173 
174 /*end of file*/
DifferentialScheme(long i, Problem *p)
Constructor.
virtual ~DifferentialScheme()
Destructor.
virtual const char * giveClassName()
Function returning class name.
static bool ascendingSort(Inclusion *first, Inclusion *second)
Class InclusionRecord contains and handles all inclusion data.
Definition: inclusion.h:60
Problem description.
Definition: problem.h:154
Class of function for Mori-Tanaka homogenization.
virtual ~RegGrid()
Destructor.
double give_volume(void)
Definition: inclusion.cpp:416
void giveDiluteReducedConcentrationFactorOfInclusionInLC(double *answer, double *matrix_inclStiffmat, double *matrixStiffMat, double *matrixComplMat, const long inclusionNumber)
!!! Everything is calculated in local coordinate system
Class of function for homogenization of stress fields.
virtual const HomogenizationType giveClassID()
Function returning class id.
virtual const char * giveClassName()
Function returning class name.
virtual ~ReussBound()
Destructor.
virtual const HomogenizationType giveClassID()
Function returning class id.
virtual ~Dilute()
Destructor.
virtual const char * giveClassName()
Function returning class name.
virtual const char * giveClassName()
Function returning class name.
virtual const HomogenizationType giveClassID()
Function returning class id.
MoriTanaka(long i, Problem *p)
Constructor.
virtual void giveHomogenizedStiffnessMatrix(double *answer)
Function returning the homogenized stiffness matrix according the defined method. ...
void set_mesh(const Mesh *val)
HomogenizationType
Definition: types.h:69
void giveFullDiluteConcentrationFactorOfInclusionInLC(double *answer, double *matrix_inclStiffmat, double *matrixStiffMat, double *matrixComplMat, const long inclusionNumber)
!!! Everything is calculated in local coordinate system
Class Homogenization.
virtual ~MoriTanaka()
Destructor.
VoightBound(long i, Problem *p)
Constructor.
Class of function for Mori-Tanaka homogenization.
RegGrid(long i, Problem *p)
Constructor.
virtual const HomogenizationType giveClassID()
Function returning class id.
Dilute(long i, Problem *p)
Constructor.
Class of function for ... homogenization.
Class of function for Voight bound.
Class Mesh contains and handles all mesh data.
Definition: mesh.h:52
Class of function for Mori-Tanaka homogenization.
static bool descendingSort(Inclusion *first, Inclusion *second)
virtual const char * giveClassName()
Function returning class name.
ReussBound(long i, Problem *p)
Constructor.
virtual const HomogenizationType giveClassID()
Function returning class id.
Class of function for Reuss bound.
virtual const char * giveClassName()
Function returning class name.
virtual const HomogenizationType giveClassID()
Function returning class id.
virtual ~VoightBound()
Destructor.