00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef ignitionSite_H
00038 #define ignitionSite_H
00039
00040 #include "vector.H"
00041 #include "labelList.H"
00042 #include "scalarList.H"
00043 #include "autoPtr.H"
00044 #include "dictionary.H"
00045
00046
00047
00048 namespace Foam
00049 {
00050
00051 class Time;
00052 class engineTime;
00053 class fvMesh;
00054
00055
00056
00057
00058
00059 class ignitionSite
00060 {
00061
00062
00063 const Time& db_;
00064 const fvMesh& mesh_;
00065
00066 dictionary ignitionSiteDict_;
00067
00068 vector location_;
00069 scalar diameter_;
00070 scalar time_;
00071 scalar duration_;
00072 scalar strength_;
00073
00074 labelList cells_;
00075 scalarList cellVolumes_;
00076
00077
00078
00079 mutable label timeIndex_;
00080
00081
00082
00083
00084 void findIgnitionCells(const fvMesh&);
00085
00086
00087 public:
00088
00089
00090
00091
00092
00093 class iNew
00094 {
00095 const Time& db_;
00096 const fvMesh& mesh_;
00097
00098 public:
00099
00100 iNew(const Time& db, const fvMesh& mesh)
00101 :
00102 db_(db),
00103 mesh_(mesh)
00104 {}
00105
00106 autoPtr<ignitionSite> operator()(Istream& is) const
00107 {
00108 return autoPtr<ignitionSite>(new ignitionSite(is, db_, mesh_));
00109 }
00110 };
00111
00112
00113
00114
00115
00116 ignitionSite(Istream&, const Time&, const fvMesh&);
00117
00118
00119 ignitionSite(Istream&, const engineTime&, const fvMesh&);
00120
00121
00122 autoPtr<ignitionSite> clone() const
00123 {
00124 return autoPtr<ignitionSite>(new ignitionSite(*this));
00125 }
00126
00127
00128
00129
00130
00131
00132 const vector& location() const
00133 {
00134 return location_;
00135 }
00136
00137 scalar diameter() const
00138 {
00139 return diameter_;
00140 }
00141
00142 scalar time() const
00143 {
00144 return time_;
00145 }
00146
00147 scalar duration() const
00148 {
00149 return duration_;
00150 }
00151
00152 scalar strength() const
00153 {
00154 return strength_;
00155 }
00156
00157
00158 const labelList& cells() const;
00159
00160 const scalarList& cellVolumes() const
00161 {
00162 return cellVolumes_;
00163 }
00164
00165
00166
00167
00168 bool igniting() const;
00169
00170 bool ignited() const;
00171
00172
00173
00174
00175 void operator=(const ignitionSite&);
00176 };
00177
00178
00179
00180
00181 }
00182
00183
00184
00185 #endif
00186
00187