00001
00002
00003
00004
00005
00006
00007
00008 #ifndef U2D_ISOELEMENT2DP13POINTS_H
00009 #define U2D_ISOELEMENT2DP13POINTS_H
00010
00011 #include "u2d_mesh.h"
00012 #include "boost/numeric/mtl/mtl.hpp"
00013 #include "u2d_GaussPoints.h"
00014
00015 #define P1_2D_DEGREE_FREEDOM DOMAIN_ELEMENT_SIZE
00016
00017 using namespace mtl;
00018
00019 class u2d_IsoElement2DP13Points {
00020 public:
00021 u2d_IsoElement2DP13Points();
00022 u2d_IsoElement2DP13Points(const u2d_IsoElement2DP13Points& orig);
00023 virtual ~u2d_IsoElement2DP13Points();
00024
00025 int gauss_points_n;
00026
00027
00028 dense2D<double> gauss_points;
00029 dense2D<double> w;
00030 dense2D<double> dx;
00031 dense2D<double> dy;
00032 dense_vector<double> p;
00033 u2d_DomainGaussPoints *applyTo(u2d_Mesh *mesh);
00034
00035 private:
00036
00037 double shapeP1Node1(double x, double y);
00038 double shapeP1Node2(double x, double y);
00039 double shapeP1Node3(double x, double y);
00040
00041
00042 };
00043
00044
00045
00046
00047
00048
00049 inline double u2d_IsoElement2DP13Points::shapeP1Node1(double x, double y) {
00050 return 1 - x - y;
00051 }
00052
00053 inline double u2d_IsoElement2DP13Points::shapeP1Node2(double x, double y) {
00054 return x;
00055 }
00056
00057 inline double u2d_IsoElement2DP13Points::shapeP1Node3(double x, double y) {
00058 return y;
00059 }
00060
00061 #endif
00062