00001 00006 #ifndef Maxwell_hh 00007 #define Maxwell_hh 00008 00009 #include "basics/exceptions.hh" 00010 00011 namespace concepts { 00012 00013 // ******************************************************* MaxwellBoundary ** 00014 00017 class MaxwellBoundary { 00018 public: 00025 enum boundaryType { PMC = 0, PEC = 1, MAX_TYPE}; 00027 MaxwellBoundary(enum boundaryType bType) : bType_(bType) { 00028 conceptsAssert(bType < MAX_TYPE, Assertion()); 00029 } 00031 const boundaryType bType() const { return bType_; } 00032 boundaryType& bType() { return bType_; } 00034 const std::string bTypeStr() const { 00035 std::string typeStr; 00036 switch(bType_) { 00037 case PMC: typeStr = "PMC"; break; 00038 case PEC: typeStr = "PEC"; break; 00039 default: throw conceptsException 00040 (MissingFeature("boundary type not known")); 00041 } // switch 00042 return typeStr; 00043 } 00044 private: 00046 enum boundaryType bType_; 00047 }; 00048 00049 // ********************************************************** MaxwellModel ** 00050 00053 class MaxwellModel { 00054 public: 00056 virtual Real dissipation() = 0; 00058 virtual Real magnEnergy() = 0; 00059 }; 00060 00061 } // namespace concepts 00062 00063 #endif // Maxwell_hh 00064