MOAB: Mesh Oriented datABase  (version 5.2.1)
RelaxationSmoother.hpp
Go to the documentation of this file.
00001 #ifndef RELAXATION_SMOOTHER_HPP
00002 #define RELAXATION_SMOOTHER_HPP
00003 
00004 #include "Mesquite.hpp"
00005 #include "VertexPatches.hpp"
00006 #include "VertexMover.hpp"
00007 
00008 namespace MBMesquite
00009 {
00010 /**\brief Base class for LaPlacian and other relaxation smoothers */
00011 class RelaxationSmoother : public VertexMover
00012 {
00013   public:
00014     /**
00015      * \param OF  For many relaxation solvers (e.g. Laplacian)
00016      * this ObjectiveFunction is used only to evaluate user-specified
00017      * termination criteria that require an objective function.
00018      */
00019     MESQUITE_EXPORT
00020     RelaxationSmoother( ObjectiveFunction* OF = NULL ) : VertexMover( OF ) {}
00021 
00022     MESQUITE_EXPORT
00023     virtual ~RelaxationSmoother();
00024 
00025     MESQUITE_EXPORT
00026     PatchSet* get_patch_set()
00027     {
00028         return &patchSet;
00029     }
00030 
00031   protected:
00032     MESQUITE_EXPORT
00033     virtual void initialize( PatchData& pd, MsqError& err );
00034 
00035     MESQUITE_EXPORT
00036     virtual void optimize_vertex_positions( PatchData& pd, MsqError& err ) = 0;
00037 
00038     MESQUITE_EXPORT
00039     virtual void initialize_mesh_iteration( PatchData& pd, MsqError& err );
00040 
00041     MESQUITE_EXPORT
00042     virtual void terminate_mesh_iteration( PatchData& pd, MsqError& err );
00043 
00044     MESQUITE_EXPORT
00045     virtual void cleanup();
00046 
00047   private:
00048     VertexPatches patchSet;
00049 };
00050 
00051 }  // namespace MBMesquite
00052 
00053 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines