Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
marking_utils.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2018: G-CSC, Goethe University Frankfurt
3 * Author: Markus Breit
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 UGBASE__LIB_GRID__REFINEMENT__MARKING_UTILS_H
34#define UGBASE__LIB_GRID__REFINEMENT__MARKING_UTILS_H
35
36
37#include "common/types.h" // for number
38#include "common/util/smart_pointer.h" // for SmartPtr, ConstSmartPtr
39
40#include <string>
41#include <vector>
42
43
44namespace ug {
45
46
47// forward declarations
48class IRefiner;
49template <typename TDomain> class ApproximationSpace;
50
51
52
53
55template <typename TDomain>
57
58
60template <typename TDomain>
61void MarkSubsets
62(
63 SmartPtr<IRefiner> refiner,
64 SmartPtr<TDomain> domain,
65 const std::vector<std::string>& vSubset
66);
67
68
75template <typename TDomain>
77(
78 SmartPtr<IRefiner> refiner,
79 SmartPtr<TDomain> domain,
80 const std::vector<std::string>& surfaceSubsets,
81 const std::vector<std::string>& volumeSubsets
82);
83
84
91template <typename TDomain>
93(
94 SmartPtr<IRefiner> refiner,
95 SmartPtr<TDomain> domain,
96 number thresholdRatio
97);
98
99
110template <typename TDomain>
112(
113 SmartPtr<IRefiner> refiner,
114 SmartPtr<TDomain> domain,
115 number thresholdRatio
116);
117
118
119
134template <typename TGridFunction>
136(
137 SmartPtr<IRefiner> refiner,
139 size_t cmp,
140 number lowerBnd,
141 number upperBnd
142);
143
144
145
146} // namespace ug
147
148
149#include "marking_utils_impl.h"
150
151
152#endif // UGBASE__LIB_GRID__REFINEMENT__MARKING_UTILS_H
Definition smart_pointer.h:296
Definition smart_pointer.h:108
double number
Definition types.h:124
the ug namespace
void MarkOutOfRangeElems(SmartPtr< IRefiner > refiner, ConstSmartPtr< TGridFunction > u, size_t cmp, number lowerBnd, number upperBnd)
Definition marking_utils_impl.h:99
void MarkAnisotropicOnlyX(SmartPtr< IRefiner > refiner, SmartPtr< TDomain > domain, number thresholdRatio)
Mark all elements that are anisotropic in direction of the x-axis for ansiotropic refinement.
Definition marking_utils.cpp:207
void MarkSubsets(SmartPtr< IRefiner > refiner, SmartPtr< TDomain > domain, const std::vector< std::string > &vSubset)
Mark all surface elements of specific subsets for refinement.
Definition marking_utils.cpp:66
void MarkAlongSurface(SmartPtr< IRefiner > refiner, SmartPtr< TDomain > domain, const std::vector< std::string > &surfaceSubsets, const std::vector< std::string > &volumeSubsets)
Mark elements neighboring a surface.
Definition marking_utils.cpp:104
void MarkAnisotropic(SmartPtr< IRefiner > refiner, SmartPtr< TDomain > domain, number thresholdRatio)
Mark all anisotropic elements of the surface grid for ansiotropic refinement.
Definition marking_utils.cpp:159
void MarkGlobal(SmartPtr< IRefiner > refiner, SmartPtr< TDomain > domain)
Mark all surface elements for refinement.
Definition marking_utils.cpp:48