Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
dof_position_util.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2015: G-CSC, Goethe University Frankfurt
3 * Author: Andreas Vogel
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__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__
34#define __H__UG__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__
35
36#include "common/common.h"
37#include "common/math/ugmath.h"
40
41namespace ug {
42
43
48template <int dim>
49bool InnerDoFPosition(std::vector<MathVector<dim> >& vPos, const ReferenceObjectID roid,
50 const std::vector<MathVector<dim> >& vCornerCoord, const LFEID& lfeID);
51
52
53template <typename TDomain>
54bool InnerDoFPosition(std::vector<MathVector<TDomain::dim> >& vPos,
55 GridObject* elem, const TDomain& domain, const LFEID& lfeID);
57
62template <int dim>
63bool DoFPosition(std::vector<MathVector<dim> >& vPos, const ReferenceObjectID roid,
64 const std::vector<MathVector<dim> >& vCornerCoord, const LFEID& lfeID);
65
66template <typename TDomain>
67bool DoFPosition(std::vector<MathVector<TDomain::dim> >& vPos,
68 GridObject* elem, const TDomain& domain, const LFEID& lfeID);
70
75template <int dim>
76void ShapesAtGlobalPosition(std::vector<std::vector<number> >& vvShape,
77 const std::vector<MathVector<dim> >& vGlobPos,
78 const ReferenceObjectID roid,
79 const std::vector<MathVector<dim> >& vCornerCoord,
80 const LFEID& lfeID);
81template <typename TDomain>
82void ShapesAtGlobalPosition(std::vector<std::vector<number> >& vvShape,
83 const std::vector<MathVector<TDomain::dim> >& vGlobPos,
84 GridObject* elem, const TDomain& domain, const LFEID& lfeID);
86
96template<typename TDomain>
98 std::vector<MathVector<TDomain::dim> >& vPos);
99
108template<typename TFunction>
109void ExtractPositions(const TFunction &u,
110 std::vector<MathVector<TFunction::domain_type::dim> >& vPos)
111{
112 ExtractPositions(u.domain(),u.dof_distribution(), vPos);
113}
114
124template <typename TDomain>
127 std::vector<std::pair<MathVector<TDomain::dim>, size_t> >& vPosPair);
128
140template <typename TDomain>
143 const size_t fct,
144 std::vector<std::pair<MathVector<TDomain::dim>, size_t> >& vPosPair);
145
151template<typename TDomain>
153
154template<typename TFunction>
155bool CheckDoFPositions(const TFunction &u)
156{
157 return CheckDoFPositions(u.domain(),u.dof_distribution());
158}
159
160template <typename TDomain>
163 std::vector<size_t> &fctIndex);
165} // end namespace ug
166
167#endif /* __H__UG__LIB_DISC__FUNCTION_SPACE__DOF_POSITION_UTIL__ */
Definition smart_pointer.h:296
a mathematical Vector with N entries.
Definition math_vector.h:97
the ug namespace
bool CheckDoFPositions(ConstSmartPtr< TDomain > domain, ConstSmartPtr< DoFDistribution > dd)
Definition dof_position_util.cpp:823
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition grid_base_objects.h:74
void ShapesAtGlobalPosition(std::vector< std::vector< number > > &vvShape, const std::vector< MathVector< dim > > &vGlobPos, const ReferenceObjectID roid, const std::vector< MathVector< dim > > &vCornerCoord, const LFEID &lfeID)
Definition dof_position_util.cpp:285
void ExtractPositions(ConstSmartPtr< TDomain > domain, ConstSmartPtr< DoFDistribution > dd, std::vector< MathVector< TDomain::dim > > &vPos)
Definition dof_position_util.cpp:424
bool DoFPosition(std::vector< MathVector< dim > > &vPos, const ReferenceObjectID roid, const std::vector< MathVector< dim > > &vCornerCoord, const LFEID &lfeID)
Definition dof_position_util.cpp:202
void ExtractAlgebraIndices(ConstSmartPtr< TDomain > domain, ConstSmartPtr< DoFDistribution > dd, std::vector< size_t > &fctIndex)
Definition dof_position_util.cpp:487
bool InnerDoFPosition(std::vector< MathVector< dim > > &vPos, const ReferenceObjectID roid, const std::vector< MathVector< dim > > &vCornerCoord, const LFEID &lfeID)
Definition dof_position_util.cpp:112