Class documentation of Concepts

Loading...
Searching...
No Matches
Eddy2D_E.hh
Go to the documentation of this file.
1
7#ifndef Eddy2D_E_hh
8#define Eddy2D_E_hh
9
10#include "formula/boundary.hh"
11#include "operator/sparseMatrix.hh"
15#include "models/maxwell.hh"
18#include "adaptiveModels.hh"
19
20namespace hp2D {
21
22 using concepts::Real;
23 using concepts::Cmplx;
24
25 class InputEddy2D_E;
26
27 // ************************************************************** Eddy2D_E **
28
34 class Eddy2D_E : public AdaptiveModel<Cmplx>,
37 friend class concepts::ModelControl<Eddy2D_E>;
38 public:
48 const Real omega = OMEGA50, const Real mu = MU0,
49 const uint geomRefAttrib = 100);
51 enum boundaryType bType = PEC, const uint geomRefAttrib = 100);
52 virtual ~Eddy2D_E() {}
54 virtual hpAdaptiveSpaceHCurl_H1& space() const { return *spc_; }
56 virtual Real dissipation();
58 virtual Real magnEnergy();
59 protected:
60 virtual std::ostream& info(std::ostream& os) const;
62 virtual hpFull& prebuild_() { return spc_->spcE().prebuild(); }
64 virtual const std::string mshAbbr_() { return geom_.meshAbbreviation(); }
65 private:
67 void constructor_();
68
72 std::unique_ptr<hpAdaptiveSpaceHCurl_H1> spc_;
73 std::unique_ptr<hpAdaptiveSpaceHCurl> spcE_;
74 std::unique_ptr<hpAdaptiveSpaceH1> spcN_;
76 std::unique_ptr<concepts::BoundaryConditions> bcE_, bcN_;
77 std::unique_ptr<concepts::CellConditions> cc_;
78
80 std::unique_ptr<concepts::Vector<Cmplx> > residual_;
82 std::unique_ptr<Real> residualNorm_;
83
84
86 std::unique_ptr<concepts::SparseMatrix<Cmplx> > S_;
88 std::unique_ptr<concepts::SparseMatrix<Real> > A_, M_eddy_;
89 // load vector
90 std::unique_ptr<concepts::Vector<Cmplx> > rhs_;
91
93 const Real omega_;
95 const Real mu_;
96
98 void constructSpace_();
100 virtual void solve_();
102 void matrices_();
104 void rotrotMatrix_();
106 void identityMatrix_();
108 void regMatrix_();
110 void linearform_();
111
113 std::unique_ptr<Real> dissipation_;
115 std::unique_ptr<Real> magnEnergy_;
117 double solvetime_, matrixtime_, spacetime_;
118 };
119
120 // ********************************************************* InputEddy2D_E **
121
127 public:
133 virtual std::ostream& letters(std::ostream& os) const;
135 virtual std::ostream& arguments(std::ostream& os) const;
137 virtual std::ostream& description(std::ostream& os) const;
142 virtual int input(int opt, const char* optarg);
144 bool solving() const { return solving_; }
145 protected:
146 virtual std::ostream& info(std::ostream& os) const;
147 private:
149 bool solving_;
150 };
151
152} // namespace hp2D
153
154namespace concepts {
155
156 // ****************************************** ModelControl<hp2D::Eddy2D_E> **
157
158 template<>
159 class ModelControl<hp2D::Eddy2D_E> :
160 public ModelControlBase<Model<Cmplx> > {
161 public:
163 ModelControl(hp2D::Eddy2D_E& model);
164 virtual ~ModelControl() {}
165
166 virtual hp2D::Eddy2D_E& model() {
167 return static_cast<hp2D::Eddy2D_E&>(model_);
168 }
169 virtual const hp2D::Eddy2D_E& model() const {
170 return static_cast<const hp2D::Eddy2D_E&>(model_);
171 }
173 virtual void matrices();
175 virtual Real solve();
177 void storeMatricesToMatlab(const std::string matrixFile) const;
178 void storeMatricesToOctave(const std::string matrixFile) const;
180 void checkRanks() const;
182 hp2D::hpFull& prebuild() { return model().prebuild_(); }
183 protected:
184 virtual std::ostream& info(std::ostream& os) const;
185 };
186
187} // namespace concepts
188
189#endif // Eddy2D_E_hh
190
const boundaryType bType() const
Returns boundary type.
Definition maxwell.hh:33
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual F & model()
Returns the model.
Definition models.hh:102
virtual Real dissipation()
Return dissipation power loss.
virtual hpAdaptiveSpaceHCurl_H1 & space() const
Returns the space.
Definition Eddy2D_E.hh:54
virtual hpFull & prebuild_()
Space Prebuilder.
Definition Eddy2D_E.hh:62
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual Real magnEnergy()
Return magnetic energy.
virtual const std::string mshAbbr_()
Mesh abbreviation string.
Definition Eddy2D_E.hh:64
Eddy2D_E(concepts::EddyGeometry2D &geom, enum concepts::MaxwellBoundary::boundaryType bType=PEC, const Real omega=OMEGA50, const Real mu=MU0, const uint geomRefAttrib=100)
virtual std::ostream & description(std::ostream &os) const
Returns description for help.
virtual std::ostream & letters(std::ostream &os) const
virtual int input(int opt, const char *optarg)
InputEddy2D_E(concepts::InOutParameters &input)
Constructor.
bool solving() const
Returns true, if model should be solved.
Definition Eddy2D_E.hh:144
virtual std::ostream & arguments(std::ostream &os) const
Returns argument list as string.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
double Real
Definition typedefs.hh:39
Set< F > makeSet(uint n, const F &first,...)
Definition set.hh:320
std::complex< Real > Cmplx
Type for a complex number. It also depends on the setting of Real.
Definition typedefs.hh:42