00001 00005 class RefinementInd : public HandleId 00006 00007 { 00008 friend class GridRefAdm; 00009 protected: 00010 00011 FEM* simulator; 00012 Handle(FieldFE) solution; 00013 Handle(FieldFunc) some_func; 00014 00015 Handle(FieldFE) interpolated_solution; 00016 00017 Handle(RefinementInd_prm) parameters; 00018 00019 void check (Handle(FieldFE)& u, Handle(FieldFE)& u4current_grid, 00020 FieldPiWisConst& rf, const char* func); 00021 void check (Handle(FieldFunc)& f, const char* func); 00022 void check (FEM* sim, const char* func); 00023 00024 public: 00025 RefinementInd (const RefinementInd_prm& pm); 00026 ~RefinementInd () {} 00027 00028 void attach (FEM& users_class) { simulator = &users_class; } 00029 void attach (FieldFE& u) { solution. rebind (u); } 00030 void attach (FieldFunc& f) { some_func.rebind (f); } 00031 void detach (); 00032 00033 00034 00035 virtual void evalRefInd (FieldPiWisConst& refinement_field, 00036 bool init = true) =0; 00037 00038 00039 CLASS_INFO 00040 DEF_VIRTUAL_CAST(GeometricInd) 00041 DEF_VIRTUAL_CAST(ErrorEstimator) 00042 }; 00043 00044 00194 class GeometricInd : public RefinementInd 00195 00196 { 00197 friend class GridRefAdm; 00198 protected: 00199 void critUsrElmList (FieldPiWisConst& refinement_field); 00200 void critHypercubes (FieldPiWisConst& refinement_field); 00201 void critDisks (FieldPiWisConst& refinement_field); 00202 void critPoints (FieldPiWisConst& refinement_field); 00203 void critGradient (FieldPiWisConst& refinement_field); 00204 void critValue (FieldPiWisConst& refinement_field); 00205 void critContour (FieldPiWisConst& refinement_field); 00206 void critFunctor (FieldPiWisConst& refinement_field); 00207 00208 00209 public: 00210 GeometricInd (const RefinementInd_prm& pm); 00211 ~GeometricInd () {} 00212 00213 virtual void evalRefInd (FieldPiWisConst& refinement_field, 00214 bool init = true); 00215 00216 CLASS_INFO 00217 VIRTUAL_CAST(GeometricInd) 00218 }; 00219 00220