Mesh Oriented datABase  (version 5.4.1)
Array-based unstructured mesh datastructure
EdgeSizeEvaluator.hpp
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines