Nektar++
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>
41 
42 namespace Nektar
43 {
44  namespace MultiRegions
45  {
46 
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
58  {
61  };
62 
63  // Orientation of adjacent face for use with boundary
64  // constraints
66  {
75  };
76 
78  {
79  eNoSolnType, ///< No Solution type specified
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.
115  {
119  };
120 
122  {
123  eNull, ///< No Solution type specified
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
149  {
151  };
152 
153  const char* const MatrixStorageTypeMap[] =
154  {
155  "SmvBSR"
156  };
157 
158 
159  typedef std::vector<SpatialDomains::BoundaryConditionType> BndTypesVector;
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
178  boost::shared_ptr<RobinBCInfo> next;
179  };
180 
181  typedef boost::shared_ptr<RobinBCInfo> RobinBCInfoSharedPtr;
182 
183  typedef struct _PeriodicEntity
184  {
186  const int id,
188  const bool isLocal) :
189  id(id), orient(orient), isLocal(isLocal) {}
190 
192 
193  /// Geometry ID of entity.
194  int id;
195  /// Orientation of entity within higher dimensional entity.
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
Local coefficients.
std::map< int, vector< PeriodicEntity > > PeriodicMap
bool isLocal
Flag specifying if this entity is local to this partition.
boost::shared_ptr< RobinBCInfo > RobinBCInfoSharedPtr
std::vector< SpatialDomains::BoundaryConditionType >::iterator BndTypesVectorIter
RobinBCInfo(const int id, const Array< OneD, const NekDouble > &primCoeffs)
Array< OneD, const NekDouble > m_robinPrimitiveCoeffs
id of which edge/face is robin condition
const char *const MatrixStorageTypeMap[]
ProjectionType
Type of Galerkin projection.
std::vector< SpatialDomains::BoundaryConditionType > BndTypesVector
Hybrid coefficients.
Global coefficients.
const char *const GlobalSysSolnTypeMap[]
int id
Geometry ID of entity.
static PeriodicMap NullPeriodicMap
StdRegions::Orientation orient
Orientation of entity within higher dimensional entity.
No Solution type specified.
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs typedef NekMatrix< LhsDataType, StandardMatrixTag >::iterator iterator
No Solution type specified.
_PeriodicEntity(const int id, const StdRegions::Orientation orient, const bool isLocal)
boost::shared_ptr< RobinBCInfo > next
struct Nektar::MultiRegions::_PeriodicEntity PeriodicEntity
const char *const PreconditionerTypeMap[]