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

geometry/cellConditions.hh
Go to the documentation of this file.
00001 /* boundary conditions
00002  */
00003 
00004 #ifndef cellConditions_hh
00005 #define cellConditions_hh
00006 
00007 #include <map>
00008 #include "toolbox/set.hh"
00009 #include "semantics.hh"
00010 #include "connector.hh"
00011 #include "continuityData.hh"
00012 
00013 namespace concepts {
00014 
00015   // forward declarations
00016   //class Attribute;
00017 
00018   // ********************************************************* CellCondition **
00019 
00020   class CellCondition : public OutputOperator {
00021   public:
00072     enum inactivTypes { ACTIVE = 0, INACTIVE, INACTIVEPLUS, SWITCH_ON,
00073                         SWITCH_OFF, DIVIDE,
00074                         MAX_TYPE };
00078     CellCondition();
00081     CellCondition(const enum inactivTypes type, 
00082                   Set<Attribute> attributes = Set<Attribute>());
00083     
00085     CellCondition(const CellCondition& cnd);
00086 
00087     virtual ~CellCondition();
00088 
00090     enum inactivTypes type() const { return type_; }
00091     
00093     concepts::Set<Attribute> attributes() const { return attributes_; } 
00094 
00096     std::string typeStr() const;
00097 
00099     virtual CellCondition& operator=(const CellCondition& i);
00100 
00104     bool active(const Connector2& cell, const Connector0& vertex) const;
00105   protected:
00106     virtual std::ostream& info(std::ostream& os) const;
00107   private:
00109     enum inactivTypes type_;
00111     concepts::Set<Attribute> attributes_;
00112     
00116     const Attribute& getAttr_(const Connector0&, const Connector1&,
00117                               const Connector1&) const;
00118   };
00119 
00120 
00121   // ******************************************************** CellConditions **
00122 
00123   class CellConditions : public Semantics<CellCondition> {
00124   public:
00130     CellConditions(const bool emptyElements = true);
00131 
00134     CellConditions(const enum CellCondition::inactivTypes type);
00135 
00137     CellConditions(const CellConditions& cnd);
00138 
00144     virtual ~CellConditions();
00145 
00153     virtual CellCondition operator() (Attribute attrib) const;
00154 
00164     void add(const Attribute& attrib, const CellCondition& i);
00165 
00166     inline bool emptyElements() const { return emptyElements_; }
00167   protected:
00168     virtual std::ostream& info(std::ostream& os) const;
00169   private:
00173     mutable std::map<uint, CellCondition> inactiveCells_;
00175     bool emptyElements_;
00176 
00177     enum CellCondition::inactivTypes type_;
00178   };
00179 
00180 } // namespace concepts
00181 
00182 #endif // cellConditions_hh

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