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 __LINE2H_H
00036 #define __LINE2H_H
00037
00038 #include "OFELI_Config.h"
00039 #include "FEShape.h"
00040
00041 namespace OFELI {
00042
00043 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00044 struct ErrorInLine2H {
00045 void Message(const char *file, size_t line, int code, int p1) const;
00046 };
00047 #endif
00048
00065 class Line2H : public FEShape
00066 {
00067
00068 public :
00069
00071 Line2H();
00072
00074 Line2H(const Element *el);
00075
00077 Line2H(const Side *side);
00078
00080 ~Line2H()
00081 {
00082 #ifdef _OFELI_DEBUG
00083 std::clog << "An instance of class Line2H is destructed.\n";
00084 std::clog << "File: " << __FILE__ << ", Line: " << __LINE__ << endl;
00085 #endif
00086 }
00087
00091 Point<double> getLocalPoint(double s) const;
00092
00094 double Sh(size_t i, double s) const;
00095
00096 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00099 double Sh(size_t i, Point<double> s) const { return Sh(i,s.x); }
00100 #endif
00101
00103 double DSh(size_t i, double s) const;
00104
00106 double D2Sh(size_t i, double s) const;
00107
00109 double getDet() const { return _det; }
00110
00112 double getLength() { return (_length=2*_det); }
00113
00121 double check() const;
00122
00123 private :
00124
00125 double _length;
00126 const Element *_el;
00127 const Side *_sd;
00128 ErrorInLine2H _e;
00129 };
00130
00131 }
00132
00133 #endif