Branch data Line data Source code
1 : : #ifndef RELAXATION_SMOOTHER_HPP
2 : : #define RELAXATION_SMOOTHER_HPP
3 : :
4 : : #include "Mesquite.hpp"
5 : : #include "VertexPatches.hpp"
6 : : #include "VertexMover.hpp"
7 : :
8 : : namespace MBMesquite
9 : : {
10 : : /**\brief Base class for LaPlacian and other relaxation smoothers */
11 : : class RelaxationSmoother : public VertexMover
12 : : {
13 : : public:
14 : : /**
15 : : * \param OF For many relaxation solvers (e.g. Laplacian)
16 : : * this ObjectiveFunction is used only to evaluate user-specified
17 : : * termination criteria that require an objective function.
18 : : */
19 : : MESQUITE_EXPORT
20 [ + - ]: 7 : RelaxationSmoother( ObjectiveFunction* OF = NULL ) : VertexMover( OF ) {}
21 : :
22 : : MESQUITE_EXPORT
23 : : virtual ~RelaxationSmoother();
24 : :
25 : : MESQUITE_EXPORT
26 : 7 : PatchSet* get_patch_set()
27 : : {
28 : 7 : return &patchSet;
29 : : }
30 : :
31 : : protected:
32 : : MESQUITE_EXPORT
33 : : virtual void initialize( PatchData& pd, MsqError& err );
34 : :
35 : : MESQUITE_EXPORT
36 : : virtual void optimize_vertex_positions( PatchData& pd, MsqError& err ) = 0;
37 : :
38 : : MESQUITE_EXPORT
39 : : virtual void initialize_mesh_iteration( PatchData& pd, MsqError& err );
40 : :
41 : : MESQUITE_EXPORT
42 : : virtual void terminate_mesh_iteration( PatchData& pd, MsqError& err );
43 : :
44 : : MESQUITE_EXPORT
45 : : virtual void cleanup();
46 : :
47 : : private:
48 : : VertexPatches patchSet;
49 : : };
50 : :
51 : : } // namespace MBMesquite
52 : :
53 : : #endif
|