H2 Combustion
|
00001 #ifndef zh2_combustionprocess 00002 #define zh2_combustionprocess 00003 00004 #include "integrable.h" 00005 00006 #include <vector> 00007 #include <unordered_map> 00008 00009 namespace h2comb { 00010 00011 class Reaction; 00012 class Compound; 00013 class Substance; 00014 00019 class CombustionProcess : public Integrable 00020 { 00021 public: 00022 CombustionProcess(Compound *c, std::ostream *o);// : compound(c), output(o) {} 00023 00024 virtual int getDim(); 00025 00026 void diffEq(const double *const x, const double t, double *const dx); 00027 00028 double getState(double *const x); 00029 void setState(const double *const x, const double t); 00030 virtual void peek(const double *const, const double); 00031 00032 void listSubstances(); 00033 00034 void setAdiabatic(){adiabatic = true;} 00035 00036 protected: 00037 std::unordered_map<Substance *, int> indices; 00038 int numberOfSubstances; 00039 00040 private: 00041 Compound *compound; 00042 00043 bool frozen = false; 00044 00045 std::vector<Substance *> substances; 00046 int* quantities; 00047 00048 std::ostream *output; 00049 double saytime; 00050 bool adiabatic; 00051 }; 00052 00053 } // namespace 00054 00055 #endif