00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef __HEXA8_H
00036 #define __HEXA8_H
00037
00038 #include "FEShape.h"
00039
00040 namespace OFELI {
00041
00046 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00047 struct ErrorInHexa8 { void Message(const char *file, size_t line, int code, int p1) const; };
00048 #endif
00049
00061 class Hexa8 : public FEShape
00062 {
00063
00064 public :
00065
00067 Hexa8();
00068
00070 Hexa8(const Element *el);
00071
00073 ~Hexa8()
00074 {
00075 #ifdef _OFELI_DEBUG
00076 std::clog << "An instance of class Hexa8 is destructed.\n";
00077 std::clog << "File : " << __FILE__ << ", Line : " << __LINE__ << endl;
00078 #endif
00079 }
00080
00086 void setLocal(const Point<double> &s);
00087
00090 Point<double> DSh(size_t i) { return _dsh[i-1]; }
00091
00094 void atGauss1(LocalVect<Point<double>,8> &dsh, double &w);
00095
00098 void atGauss2(LocalMatrix<Point<double>,8,8> &dsh, LocalVect<double,8> &w);
00099
00107 double check() const;
00108
00110 double getMaxEdgeLength() const;
00111
00113 double getMinEdgeLength() const;
00114
00115 private :
00116
00117 const Element *_el;
00118 ErrorInHexa8 _e;
00119 };
00120
00121 }
00122
00123 #endif