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
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
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
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
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
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 }
00302
00303 #endif // Eddy2D_geometries_hh