Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
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, 00041 const void* t0, 00042 double* p1, 00043 void* t1, 00044 const double* p2, 00045 const void* t2 ) = 0; 00046 00047 void set_tag_manager( RefinerTagManager* tmgr ) 00048 { 00049 this->tag_manager = tmgr; 00050 } 00051 RefinerTagManager* get_tag_manager() 00052 { 00053 return this->tag_manager; 00054 } 00055 00056 protected: 00057 RefinerTagManager* tag_manager; 00058 }; 00059 00060 } // namespace moab 00061 00062 #endif // MOAB_EDGE_SIZE_EVALUATOR_HPP