MOAB: Mesh Oriented datABase
(version 5.2.1)
|
00001 /* 00002 * MOAB, a Mesh-Oriented datABase, is a software component for creating, 00003 * storing and accessing finite element mesh data. 00004 * 00005 * Copyright 2004 Sandia Corporation. Under the terms of Contract 00006 * DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government 00007 * retains certain rights in this software. 00008 * 00009 * This library is free software; you can redistribute it and/or 00010 * modify it under the terms of the GNU Lesser General Public 00011 * License as published by the Free Software Foundation; either 00012 * version 2.1 of the License, or (at your option) any later version. 00013 * 00014 */ 00015 00016 /**\class moab::EdgeSizeEvaluator 00017 * 00018 * This is an abstract class that embodies the rule used during edge-based mesh 00019 * refinement to decide whether an edge should be subdivided or not. 00020 * Subclasses must implement the pure virtual evaluate_edge() function. 00021 * 00022 * \author David Thompson 00023 * 00024 * \date 19 November 2007 00025 */ 00026 #ifndef MOAB_EDGE_SIZE_EVALUATOR_HPP 00027 #define MOAB_EDGE_SIZE_EVALUATOR_HPP 00028 00029 #include "RefinerTagManager.hpp" 00030 00031 namespace moab 00032 { 00033 00034 class EdgeSizeEvaluator 00035 { 00036 public: 00037 EdgeSizeEvaluator(); 00038 virtual ~EdgeSizeEvaluator(); 00039 00040 virtual bool evaluate_edge( const double* p0, const void* t0, double* p1, void* t1, const double* p2, 00041 const void* t2 ) = 0; 00042 00043 void set_tag_manager( RefinerTagManager* tmgr ) 00044 { 00045 this->tag_manager = tmgr; 00046 } 00047 RefinerTagManager* get_tag_manager() 00048 { 00049 return this->tag_manager; 00050 } 00051 00052 protected: 00053 RefinerTagManager* tag_manager; 00054 }; 00055 00056 } // namespace moab 00057 00058 #endif // MOAB_EDGE_SIZE_EVALUATOR_HPP