Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

app-kersten/Eddy2D_geometries.hh
Go to the documentation of this file.
00001 
00006 #ifndef Eddy2D_geometries_hh
00007 #define Eddy2D_geometries_hh
00008 
00009 #include <set>
00010 #include "toolbox/inputOutput.hh"
00011 #include "toolbox/inputParam.hh"
00012 #include "formula/formula.hh"
00013 #include "geometry/formula.hh"
00014 #include "geometry/mesh.hh"
00015 #include "geometry/circle.hh"
00016 #include "space/formula.hh"
00017 #include "maxwellConstants.hh"
00018 
00019 namespace concepts {
00020 
00021   // ******************************************************** EddyGeometry2D **
00022 
00028   class EddyGeometry2D : public OutputOperator {
00029   public:
00035     EddyGeometry2D(const std::string meshAbbr, const Real sigma0 = 0.0) 
00036       : sigma_(sigma0), meshAbbr_(meshAbbr) {}
00037     virtual ~EddyGeometry2D() {}
00039     virtual Mesh2& mesh() = 0;
00041     std::set<uint> outerBoundary() const { return outerBoundary_; }
00043     std::set<uint> innerBoundary() const { return innerBoundary_; }
00045     virtual const PiecewiseFormulaBase<Real>* J0x() const = 0;
00047     virtual const PiecewiseFormulaBase<Real>* J0y() const = 0;
00049     virtual const PiecewiseFormulaBase<Real2d>* J0() const = 0;
00051     PiecewiseConstFormula<Real>& sigma() { return sigma_;}
00052     const PiecewiseConstFormula<Real>& sigma() const { return sigma_;}
00053     void meshAbbreviation(const char* meshAbbr) { meshAbbr_ = meshAbbr; }
00054     const std::string meshAbbreviation() const { return meshAbbr_; }
00056     virtual void dataout(concepts::InOutParameters& output);
00057   protected:
00058     virtual std::ostream& info(std::ostream& os) const;
00060     std::set<uint> outerBoundary_, innerBoundary_;
00062     PiecewiseConstFormula<Real> sigma_;
00064     std::string meshAbbr_;
00065   };
00066 
00067   // ********************************************** EddyGeometry2DRotational **
00068 
00073   class EddyGeometry2DRotational : public EddyGeometry2D {
00074   public:
00084     EddyGeometry2DRotational(const Array<Real> r,
00085            const std::set<uint> conductive, 
00086            const std::set<uint> coil,
00087            const Real j0 = 1.0,
00088            const Real sigma = SIGMA_CU,
00089            const Real sigma0 = 0.0);
00100     EddyGeometry2DRotational(const Array<Real> r, const Real ri,
00101            const std::set<uint> conductive, 
00102            const std::set<uint> coil,
00103            const Real j0 = 1.0,
00104            const Real sigma = SIGMA_CU,
00105            const Real sigma0 = 0.0);
00106     virtual ~EddyGeometry2DRotational();
00107     virtual Mesh2& mesh() { return *msh_; }
00109     virtual const PiecewiseFormulaBase<Real>* J0x() const { return &J0x_; }
00111     virtual const PiecewiseFormulaBase<Real>* J0y() const { return &J0y_; }
00113     virtual const PiecewiseFormulaBase<Real2d>* J0() const { return 0; }
00115     virtual void dataout(concepts::InOutParameters& output);
00116   protected:
00117     virtual std::ostream& info(std::ostream& os) const;
00118   private:
00120     std::auto_ptr<Mesh2> msh_;
00122     concepts::PiecewiseFormula<Real> J0x_, J0y_;
00124     const Real j0_;
00126     Array<Real> r_;
00128     const std::set<uint> conductive_;
00130     const std::set<uint> coil_;
00131   };
00132   
00133   // ********************************************** EddyGeometry2DRectImport **
00134 
00139   class EddyGeometry2DRectImport : public EddyGeometry2D {
00140   public:
00159     EddyGeometry2DRectImport(const std::string coord, const std::string elms,
00160            const std::string attributes,
00161            const uint idxStart = 1,
00162            const std::string meshAbbr = "",
00163            const Real j0 = 1.0,
00164            const Real sigma = SIGMA_CU,
00165            const Real sigma0 = 0.0);
00184     EddyGeometry2DRectImport(const std::string path,
00185            const std::string meshAbbr,
00186            const Real j0 = 1.0,
00187            const Real sigma = SIGMA_CU,
00188            const Real sigma0 = 0.0);
00189     virtual Mesh2& mesh() { return *msh_; }
00191     virtual const PiecewiseFormulaBase<Real>* J0x() const { return 0; }
00193     virtual const PiecewiseFormulaBase<Real>* J0y() const { return 0; }
00195     virtual const PiecewiseFormulaBase<Real2d>* J0() const { return &J0_; }
00197     virtual void dataout(concepts::InOutParameters& output);
00198   protected:
00199     virtual std::ostream& info(std::ostream& os) const;
00200   private:
00202     std::auto_ptr<Mesh2> msh_;
00204     concepts::PiecewiseConstFormula<Real2d> J0_;
00206     const Real j0_;
00208     const std::string coord_, elms_, attr_;
00209   };
00210 
00211   // ******************************************** EddyGeometry2DRotateImport **
00212 
00217   class EddyGeometry2DRotateImport : public EddyGeometry2D {
00218   public:
00238     EddyGeometry2DRotateImport(const std::string coord, const std::string elms,
00239              const std::string attributes,
00240              const std::string edgRadia,
00241              const uint idxStart = 1,
00242              const std::string meshAbbr = "",
00243              const Real j0 = 1.0,
00244              const Real sigma = SIGMA_CU,
00245              const Real sigma0 = 0.0);
00246     virtual Mesh2& mesh() { return *msh_; }
00248     virtual const PiecewiseFormulaBase<Real>* J0x() const { return &J0x_; }
00250     virtual const PiecewiseFormulaBase<Real>* J0y() const { return &J0y_; }
00252     virtual const PiecewiseFormulaBase<Real2d>* J0() const { return 0; }
00254     virtual void dataout(concepts::InOutParameters& output);
00255   protected:
00256     virtual std::ostream& info(std::ostream& os) const;
00257   private:
00259     std::auto_ptr<Mesh2> msh_;
00261     concepts::PiecewiseFormula<Real> J0x_, J0y_;
00263     const Real j0_;
00265     const std::string coord_, elms_, attr_, edgRadia_;
00266   };
00267 
00268   // ************************************************* InputEddy2DGeometries **
00269 
00274   class InputEddy2DGeometries : public concepts::InputParameter {
00275   public:
00282     InputEddy2DGeometries(concepts::InOutParameters& input,
00283         const Real sigma = SIGMA_CU, const Real sigma0 = 0);
00287     virtual std::ostream& letters(std::ostream& os) const;
00289     virtual std::ostream& arguments(std::ostream& os) const;
00291     virtual std::ostream& description(std::ostream& os) const;
00296     virtual int input(int opt, const char* optarg);
00297   protected:
00298     virtual std::ostream& info(std::ostream& os) const;
00299   };
00300 
00301 } // namespace concepts
00302 
00303 #endif // Eddy2D_geometries_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)