Plugins
refinement_tools.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2017: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG__refinement_tools__
34 #define __H__UG__refinement_tools__
35 
36 #include "../mesh.h"
43 
44 #define TOOLTIP_REFINE "Refines selected elements and builds a regular closure."
45 #define TOOLTIP_REFINE_WITH_SNAP_POINTS "Refines selected elements so that new edges are built between midpoints of selected edges and selected vertices, if possible."
46 #define TOOLTIP_REFINE_WITH_SNAP_POINTS_ORTHO "Refines selected elements so that new edges are built between midpoints of selected edges and selected vertices, if possible. New vertices are placed so that their connecting edge to the snap point is orthogonal to their parent edge."
47 #define TOOLTIP_HANGING_NODE_REFINE "Refines selected elements using hanging nodes"
48 #define TOOLTIP_REFINE_SMOOTH "Refines selected elements using piecewise smooth refinement."
49 #define TOOLTIP_REFINE_SMOOTH_BOUNDARY_2D "Refines selected elements using smooth subdivision rules on the boundary edges."
50 #define TOOLTIP_FRACTURED_MEDIA_REFINE "Refines selected elements using hanging nodes. Fractures are refined anisotropic."
51 #define TOOLTIP_CREATE_FRACTAL "Refines the whole geometry using a fractal-refinement scheme-"
52 #define TOOLTIP_INSERT_CENTER "Inserts a central vertex in all selected elements."
53 #define TOOLTIP_REGULARIZING_REFINEMENT "Marks and refines elements with small aspect ratios, trying to improves said aspect ratios."
54 
55 namespace ug{
56 namespace promesh{
57 
60 
61 void Refine(Mesh* obj);
62 void RefineWithSnapPoints(Mesh* obj);
63 void RefineWithSnapPointsOrtho(Mesh* obj);
64 void Refine(Mesh* obj, bool strictSubsetInheritance, bool useSnapPoints);
65 
66 void HangingNodeRefine(Mesh* obj, bool anisotropic);
67 void HangingNodeRefine(Mesh* obj, bool strictSubsetInheritance, bool anisotropic);
68 
69 void RefineSmooth(Mesh* obj);
70 void RefineSmooth(Mesh* obj, bool strictSubsetInheritance);
71 
72 void InsertCenter(Mesh* obj);
73 void InsertCenter(Mesh* obj, bool strictSubsetInheritance);
74 
75 void RegularizingRefinement(Mesh* obj, const number aspectRatio);
76 
78 
79 }}// end of namespace
80 
81 #endif
void InsertCenter(Mesh *obj, bool strictSubsetInheritance)
Definition: refinement_tools.cpp:240
void RegularizingRefinement(Mesh *obj, const number aspectRatio)
Definition: refinement_tools.cpp:402
void Refine(Mesh *obj, bool strictSubsetInheritance, bool useSnapPoints)
Definition: refinement_tools.cpp:73
void RefineWithSnapPointsOrtho(Mesh *obj)
Definition: refinement_tools.cpp:100
void HangingNodeRefine(Mesh *obj, bool strictSubsetInheritance, bool anisotropic)
Definition: refinement_tools.cpp:166
void RefineWithSnapPoints(Mesh *obj)
Definition: refinement_tools.cpp:95
void RefineSmooth(Mesh *obj, bool strictSubsetInheritance)
Definition: refinement_tools.cpp:210
double number