Nektar++
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
library
MultiRegions
MultiRegions.hpp
Go to the documentation of this file.
1
///////////////////////////////////////////////////////////////////////////////
2
//
3
// File MultiRegsions.hpp
4
//
5
// For more information, please see: http://www.nektar.info
6
//
7
// The MIT License
8
//
9
// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10
// Department of Aeronautics, Imperial College London (UK), and Scientific
11
// Computing and Imaging Institute, University of Utah (USA).
12
//
13
// License for the specific language governing rights and limitations under
14
// Permission is hereby granted, free of charge, to any person obtaining a
15
// copy of this software and associated documentation files (the "Software"),
16
// to deal in the Software without restriction, including without limitation
17
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
18
// and/or sell copies of the Software, and to permit persons to whom the
19
// Software is furnished to do so, subject to the following conditions:
20
//
21
// The above copyright notice and this permission notice shall be included
22
// in all copies or substantial portions of the Software.
23
//
24
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
25
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
27
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
30
// DEALINGS IN THE SOFTWARE.
31
//
32
// Description: Multiregion overall header
33
//
34
///////////////////////////////////////////////////////////////////////////////
35
36
#ifndef MULTIREGIONS_H
37
#define MULTIREGIONS_H
38
39
#include <vector>
40
#include <
SpatialDomains/Conditions.h
>
41
42
namespace
Nektar
43
{
44
namespace
MultiRegions
45
{
46
47
enum
CoeffState
48
{
49
eNotSet
,
///< No state set
50
eLocal
,
///< Local coefficients
51
eHybrid
,
///< Hybrid coefficients
52
eGlobal
,
///< Global coefficients
53
};
54
55
// Orientation of adjacent edge for use with boundary
56
// constraints
57
enum
AdjacentTraceOrientation
58
{
59
eAdjacentEdgeIsForwards
,
60
eAdjacentEdgeIsBackwards
61
};
62
63
// Orientation of adjacent face for use with boundary
64
// constraints
65
enum
AdjacentFaceOrientation
66
{
67
eAdjacentFaceDir1FwdDir1_Dir2FwdDir2
,
68
eAdjacentFaceDir1FwdDir1_Dir2BwdDir2
,
69
eAdjacentFaceDir1BwdDir1_Dir2FwdDir2
,
70
eAdjacentFaceDir1BwdDir1_Dir2BwdDir2
,
71
eAdjacentFaceDir1FwdDir2_Dir2FwdDir1
,
72
eAdjacentFaceDir1FwdDir2_Dir2BwdDir1
,
73
eAdjacentFaceDir1BwdDir2_Dir2FwdDir1
,
74
eAdjacentFaceDir1BwdDir2_Dir2BwdDir1
75
};
76
77
enum
GlobalSysSolnType
78
{
79
eNoSolnType
,
///< No Solution type specified
80
eDirectFullMatrix
,
81
eDirectStaticCond
,
82
eDirectMultiLevelStaticCond
,
83
eIterativeFull
,
84
eIterativeStaticCond
,
85
eIterativeMultiLevelStaticCond
,
86
eXxtFullMatrix
,
87
eXxtStaticCond
,
88
eXxtMultiLevelStaticCond
,
89
ePETScFullMatrix
,
90
ePETScStaticCond
,
91
ePETScMultiLevelStaticCond
,
92
eSIZE_GlobalSysSolnType
93
};
94
95
96
const
char
*
const
GlobalSysSolnTypeMap
[] =
97
{
98
"No Solution Type"
,
99
"DirectFull"
,
100
"DirectStaticCond"
,
101
"DirectMultiLevelStaticCond"
,
102
"IterativeFull"
,
103
"IterativeStaticCond"
,
104
"IterativeMultiLevelStaticCond"
,
105
"XxtFull"
,
106
"XxtStaticCond"
,
107
"XxtMultiLevelStaticCond"
,
108
"PETScFull"
,
109
"PETScStaticCond"
,
110
"PETScMultiLevelStaticCond"
111
};
112
113
/// Type of Galerkin projection.
114
enum
ProjectionType
115
{
116
eGalerkin
,
117
eDiscontinuous
,
118
eMixed_CG_Discontinuous
119
};
120
121
enum
PreconditionerType
122
{
123
eNull
,
///< No Solution type specified
124
eDiagonal
,
125
eLinearWithDiagonal
,
126
eLinear
,
127
eLowEnergy
,
128
eLinearWithLowEnergy
,
129
eBlock
,
130
eLinearWithBlock
131
};
132
133
const
char
*
const
PreconditionerTypeMap
[] =
134
{
135
"Null"
,
136
"Diagonal"
,
137
"FullLinearSpaceWithDiagonal"
,
138
"FullLinearSpace"
,
139
"LowEnergyBlock"
,
140
"FullLinearSpaceWithLowEnergyBlock"
,
141
"Block"
,
142
"FullLinearSpaceWithBlock"
143
};
144
145
146
// let's keep this for linking to external
147
// sparse libraries
148
enum
MatrixStorageType
149
{
150
eSmvBSR
151
};
152
153
const
char
*
const
MatrixStorageTypeMap
[] =
154
{
155
"SmvBSR"
156
};
157
158
159
typedef
std::vector<SpatialDomains::BoundaryConditionType>
BndTypesVector
;
160
typedef
std::vector<SpatialDomains::BoundaryConditionType>::iterator
BndTypesVectorIter
;
161
162
163
// structure to hold information about robin boundary conditions
164
165
struct
RobinBCInfo
166
{
167
RobinBCInfo
(
const
int
id
,
const
Array<OneD, const NekDouble > &primCoeffs):
168
m_robinID
(id),
169
m_robinPrimitiveCoeffs
(primCoeffs)
170
{
171
}
172
173
virtual
~RobinBCInfo
()
174
{};
175
176
int
m_robinID
;
/// id of which edge/face is robin condition
177
Array< OneD, const NekDouble >
m_robinPrimitiveCoeffs
;
178
boost::shared_ptr<RobinBCInfo>
next
;
179
};
180
181
typedef
boost::shared_ptr<RobinBCInfo>
RobinBCInfoSharedPtr
;
182
183
typedef
struct
_PeriodicEntity
184
{
185
_PeriodicEntity
(
186
const
int
id
,
187
const
StdRegions::Orientation
orient
,
188
const
bool
isLocal
) :
189
id(id), orient(orient), isLocal(isLocal) {}
190
191
_PeriodicEntity
() {}
192
193
/// Geometry ID of entity.
194
int
id
;
195
/// Orientation of entity within higher dimensional entity.
196
StdRegions::Orientation
orient
;
197
/// Flag specifying if this entity is local to this partition.
198
bool
isLocal
;
199
}
PeriodicEntity
;
200
201
typedef
std::map<int, vector<PeriodicEntity> >
PeriodicMap
;
202
static
PeriodicMap
NullPeriodicMap
;
203
}
// end of namespace
204
}
// end of namespace
205
206
#endif
Generated on Wed Mar 4 2015 16:33:16 for Nektar++ by
1.8.1.2