00001 00005 class FieldsFEatItgPt : public HandleId 00006 00007 { 00008 Handle(ArrayGen(NUMT)) itg_pt_values; 00009 Handle(FiniteElement) fe; 00010 Handle(ElmItgRules) rules; 00011 Handle(GridFE) mesh; 00012 NumItgPoints itg_pt_tp; 00013 int relative_order; 00014 int nel; 00015 int max_no_itg_pts; 00016 int nfields; 00017 Handle(ArrayGen(real)) coor; 00018 VecSort(int) no_itg_pt_in_elm; 00019 00020 bool redim (int nel, int max_no_itg_pts, int nfields, int nsd_coor = 0); 00021 00022 public: 00023 FieldsFEatItgPt (const char* fieldname = NULL); 00024 00025 void gradient 00026 ( 00027 const FieldFE& field, 00028 NumItgPoints pt_tp = GAUSS_POINTS, 00029 int relative_order = -1, 00030 Field* k = NULL, 00031 real c = 1.0, 00032 real t = DUMMY, 00033 bool store_coor = false 00034 ); 00035 00036 void derivedQuantitiesAtItgPt 00037 ( 00038 FEM& fesolver, 00039 GridFE& grid_, 00040 int nfields, 00041 NumItgPoints pt_tp = GAUSS_POINTS, 00042 int relative_order = -1, 00043 bool store_coor = false 00044 ); 00045 00046 void operator = (const FieldsFEatItgPt& f); 00047 00048 GridFE& grid (); 00049 const GridFE& grid () const; 00050 00051 00052 ArrayGen(NUMT) values () { return *itg_pt_values; } 00053 const ArrayGen(NUMT)& values () const { return *itg_pt_values; } 00054 00055 bool hasCoor () const { return coor.ok(); } 00056 00057 inline ArrayGen(real)& getCoor (); 00058 inline const ArrayGen(real)& getCoor () const; 00059 00060 inline NUMT& valueItgPt (int element, int itg_pt_no, int field_no) ; 00061 inline NUMT valueItgPt (int element, int itg_pt_no, int field_no) const; 00062 00063 Ptv(real) getItgPt (int element, int itg_pt_no) const; 00064 00065 int getRelativeOrder () const { return relative_order; } 00066 NumItgPoints getPointType () const { return itg_pt_tp; } 00067 00068 int getNoFields () const { return nfields; } 00069 int getNoElms () const { return nel; } 00070 int getNoItgPtsInElm (int e=1) const; 00071 void detach (); 00072 }; 00073 00074