Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
elem_modifier.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2014-2015: G-CSC, Goethe University Frankfurt
3 * Author: Susanne Höllbacher
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 ELEM_MODIFIER_H_
34#define ELEM_MODIFIER_H_
35
36#include "elem_disc_interface.h"
37
38namespace ug{
39
40template <typename TDomain>
41class IElemDisc;
42
43
44template <typename TDomain>
46{
47
48 protected:
51
52 public:
54 static const int dim = TDomain::dim;
55
56 public:
60 IElemDiscModifier(IElemDisc<TDomain>* myElemDisc) : m_pElemDisc(myElemDisc) {};
62
65
66
68 virtual void preprocess(LocalVector& u, LocalVector& d, LocalVector& tmpD, GridObject* elem,
69 MathVector<dim> vCornerCoords[], LocalIndices& ind);
70
72 virtual void preprocess(LocalVector& u, LocalMatrix& J, GridObject* elem,
73 MathVector<dim> vCornerCoords[], LocalIndices& ind);
74
76 virtual void postprocess(const LocalVector& u, LocalVector& d, LocalIndices& ind);
77
79 virtual void postprocess(const LocalVector& u, LocalMatrix& J, LocalIndices& ind);
80
81 void set_elem_disc(IElemDisc<TDomain>* myElemDisc){ m_pElemDisc = myElemDisc; }
82
83
84 protected:
86};
87
88/*
89 IElemDiscModifier_Local : IElemDiscModifier
90
91 u.acces_by_map(...);
92*/
93} // end name space ug
94
95#include "elem_modifier_impl.h"
96
97
98#endif /* ELEM_MODIFIER_H_ */
The base class for all geometric objects, such as vertices, edges, faces, volumes,...
Definition grid_base_objects.h:157
Definition elem_disc_interface.h:800
Definition elem_modifier.h:46
void set_elem_disc(IElemDisc< TDomain > *myElemDisc)
Definition elem_modifier.h:81
virtual void postprocess(const LocalVector &u, LocalVector &d, LocalIndices &ind)
virtual initiates post-computations after the standard element assembling
Definition elem_modifier_impl.h:57
IElemDiscModifier< TDomain > this_type
own type
Definition elem_modifier.h:50
IElemDiscModifier(IElemDisc< TDomain > *myElemDisc)
Definition elem_modifier.h:60
virtual ~IElemDiscModifier()
Virtual destructor.
Definition elem_modifier.h:64
IElemDisc< TDomain > * m_pElemDisc
Definition elem_modifier.h:85
static const int dim
World dimension.
Definition elem_modifier.h:54
virtual void preprocess(LocalVector &u, LocalVector &d, LocalVector &tmpD, GridObject *elem, MathVector< dim > vCornerCoords[], LocalIndices &ind)
virtual initiates pre-computations before the standard element assembling
Definition elem_modifier_impl.h:40
IElemDiscModifier()
Definition elem_modifier.h:59
Definition local_algebra.h:50
Definition local_algebra.h:422
Definition local_algebra.h:198
a mathematical Vector with N entries.
Definition math_vector.h:97
the ug namespace