AMDiS_fwd.h 5.29 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/******************************************************************************
 *
 * AMDiS - Adaptive multidimensional simulations
 *
 * Copyright (C) 2013 Dresden University of Technology. All Rights Reserved.
 * Web: https://fusionforge.zih.tu-dresden.de/projects/amdis
 *
 * Authors: 
 * Simon Vey, Thomas Witkowski, Andreas Naumann, Simon Praetorius, et al.
 *
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 *
 * This file is part of AMDiS
 *
 * See also license.opensource.txt in the distribution.
 * 
 ******************************************************************************/
20
21


22
23
24
25
26
27
28

/** \file AMDiS_fwd.h */


#ifndef AMDIS_AMDIS_FWD_INCLUDE
#define AMDIS_AMDIS_FWD_INCLUDE

29
#include <boost/numeric/mtl/mtl.hpp>
Thomas Witkowski's avatar
Blub    
Thomas Witkowski committed
30
#include "OpenMP.h"
31
#include "Config.h"
32

33
34
35
36
namespace AMDiS {

  class AdaptInfo;
  class AdaptStationary;
37
  class Assembler;
38
  class BasisFunction; 
39
  struct BlockMTLMatrix;
40
  class BoundaryManager;
41
//   class CGSolver;
42
  class CoarseningManager;
43
  class CouplingIterationInterface;
44
//   class DiagonalPreconditioner; 
45
  class DOFAdmin; 
46
47
  class DOFContainer;
  class DOFIndexedBase;
48
  class DOFMatrix;
Thomas Witkowski's avatar
Thomas Witkowski committed
49
  class DOFVectorDOF;
50
  class Element;
51
  class ElementDofIterator;
52
  class ElInfo; 
Thomas Witkowski's avatar
Thomas Witkowski committed
53
  class ElMatrixInfo;
54
55
56
57
58
  class Estimator;
  class FastQuadrature;
  class FillInfo; 
  class FileWriterInterface;
  class FiniteElemSpace; 
Thomas Witkowski's avatar
Thomas Witkowski committed
59
  class Flag;
60
61
//   class IdentityPreconditioner; 
//  class Parallel::InteriorBoundary;
62
63
  class LeafDataPeriodic;
  class LevelAdmin;
64
  class Line;
65
  class MacroElement;
Thomas Witkowski's avatar
Thomas Witkowski committed
66
  class MacroInfo;
67
68
  class Marker;
  class Mesh; 
69
  class MeshStructure;
70
  class LinearSolverInterface;
71
  class Operator;
72
  class OperatorTerm;
Thomas Witkowski's avatar
Thomas Witkowski committed
73
74
  class Parametric;
  class PeriodicBC;
75
  class ProblemInstat;
76
77
  class ProblemInstatScal;
  class ProblemInstatVec;
78
  class ProblemIterationInterface;
Thomas Witkowski's avatar
Thomas Witkowski committed
79
  class ProblemStatBase;
80
  class ProblemStatSeq;
81
  class ProblemTimeInterface;
82
  class Projection;
83
84
  class PreconditionerScal;
  class Quadrature; 
85
86
87
88
89
  class Q00PsiPhi;
  class Q0Psi;
  class Q10PsiPhi;
  class Q01PsiPhi;
  class Q1Psi;
90
91
  class RCNeighbourList;
  class RefinementManager;
92
93
  class RosenbrockAdaptInstationary;
  class RosenbrockStationary;
94
  class RobinBC;
95
96
  class SubElInfo;
  class SurfaceOperator;
97
  class SMIAdapter;
98
  class SystemVector;
99
  class Tetrahedron;
Thomas Witkowski's avatar
Thomas Witkowski committed
100
  class TraverseStack;
101
  class Triangle;
102
  class VertexInfo;
103
  class VertexVector;
104
105
106
107
108
  
  namespace io {
    class ElementFileWriter;
    class GNUPlotWriter;
    class MacroReader;
109
    struct MacroWriter;
110
111
112
113
    class PngWriter;
    class PovrayWriter;
    class Spreadsheet;
  }
114

Thomas Witkowski's avatar
Thomas Witkowski committed
115
#ifdef HAVE_PARALLEL_DOMAIN_AMDIS
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  namespace Parallel {
    class ElementObjectDatabase;
    class FeSpaceDofMap;
    class MatrixNnzStructure;
    class MeshLevelData;
    class PetscSolver;
    class PetscSolverFeti;
    class PetscSolverFetiDebug;
    class PetscSolverSchur;
    class PetscSolverGlobalMatrix;
    class PetscSolverGlobalBlockMatrix;
    class PetscSolverCahnHilliard;
    class PetscSolverNavierStokes;
    class ParallelDofMapping;
    class ParallelProblemStat;
    class ParallelSolver;
  }
Thomas Witkowski's avatar
Thomas Witkowski committed
133
134
#endif

135
136
  struct BoundaryObject;
  struct AtomicBoundary;
137
138
139
140
  
#if HAS_VARIADIC_TEMPLATES
  template<typename ReturnType, typename... Args >     class AbstractFunction;
#else
141
  template<typename ReturnType, typename ArgumentType> class AbstractFunction;
142
#endif
143
144
145
146
147
148
149
150
151
152
153
154
155
  template<typename ReturnType, 
	   typename ArgumentType1, 
	   typename ArgumentType2>                     class BinaryAbstractFunction;
  template<typename ReturnType, 
	   typename ArgumentType1, 
	   typename ArgumentType2,
	   typename ArgumentType3>                     class TertiaryAbstractFunction;
  template<typename ReturnType, 
	   typename ArgumentType1, 
	   typename ArgumentType2, 
	   typename ArgumentType3,
	   typename ArgumentType4>                     class QuartAbstractFunction;

156
  template<typename T>                                 class DOFIndexed;
157
158
  template<typename T>                                 class DOFVectorBase;
  template<typename T>                                 class DOFVector;
159
160
  template<typename T>                                 class DimVec;
  template<typename T>                                 class DimMat;
161
  template<typename T>                                 class DirichletBC;
162
//   template<typename ITLSolver>                         class ITL_LinearSolverInterface;
163
  template<typename T, typename MatT, typename VecT >  class ITL_Preconditioner;
164
  template<typename T>                                 class Matrix;
Thomas Witkowski's avatar
Thomas Witkowski committed
165
  template<typename T>                                 class MatrixOfFixVecs;
166
167
168
  template<typename T>                                 class MatVecMultiplier;
  template<typename T>                                 class SolverMatrix;
  template<typename T>                                 class Vector;
169
  template<typename T>                                 class WorldVector;
170
171
  template<typename T>                                 class WorldMatrix;
  template<typename T>                                 class VectorOfFixVecs;
172
173
174
175
  
  namespace detail {
    template <class P> class CouplingProblemStat;
  }
176
177
178
179
180


  typedef mtl::dense2D<double>              ElementMatrix;
  typedef mtl::dense_vector<double>         ElementVector;

181
182
183
} // namespace AMDiS

#endif // AMDIS_AMDIS_FWD_INCLUDE