00001 00005 class MxMapping : public HandleId 00006 00007 { 00008 protected: 00009 int elm_no; 00010 int nsd; 00011 int nbf; 00012 bool external_mxelm; 00013 int scalar_field; 00014 Handle(MxFiniteElement) mfe; 00015 VecSimple(bool) map_element; 00016 MatSimple(real) nv_mat; 00017 VecSimple(int) dir; 00018 int current_side; 00019 const Mat(real)* geom; 00020 Handle(FieldsFE) fields; 00021 static bool use_special_mapping; 00022 Ptv(real) nv; 00023 Ptv(real) tv; 00024 bool dabla; 00025 Ptv(real)& getNormalVector2D (int side); 00026 Ptv(real)& getNormalVector3D (int side); 00027 00028 public: 00029 MxMapping (const MxFiniteElement& mfe_); 00030 MxMapping (const FiniteElement& fe_); 00031 ~MxMapping () { } 00032 00033 real N (int field_no, int basis_no); 00034 real N (const FiniteElement& fe, int basis_no); 00035 real dN (int field_no, int basis_no, int deriv_field); 00036 real dN (const FiniteElement& fe, int basis_no, int deriv_field); 00037 Ptv(real)& getNormalVector (int side); 00038 Ptv(real)& getTangentVector (int side); 00039 int determineSide (Ptv(real)& loc_pt); 00040 int determineSide3D (Ptv(real)& loc_pt); 00041 int determineSide2D (Ptv(real)& loc_pt); 00042 void refill (); 00043 bool ok (); 00044 void print (); 00045 static void useSpecialMapping (bool mapping); 00046 }; 00047 00048