Go to the documentation of this file.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 template<class equationOfState>
00029 inline Foam::hConstThermo<equationOfState>::hConstThermo
00030 (
00031 const equationOfState& st,
00032 const scalar cp,
00033 const scalar hf
00034 )
00035 :
00036 equationOfState(st),
00037 Cp_(cp),
00038 Hf_(hf)
00039 {}
00040
00041
00042
00043
00044 template<class equationOfState>
00045 inline Foam::hConstThermo<equationOfState>::hConstThermo
00046 (
00047 const word& name,
00048 const hConstThermo& ct
00049 )
00050 :
00051 equationOfState(name, ct),
00052 Cp_(ct.Cp_),
00053 Hf_(ct.Hf_)
00054 {}
00055
00056
00057 template<class equationOfState>
00058 inline Foam::autoPtr<Foam::hConstThermo<equationOfState> >
00059 Foam::hConstThermo<equationOfState>::clone() const
00060 {
00061 return autoPtr<hConstThermo<equationOfState> >
00062 (
00063 new hConstThermo<equationOfState>(*this)
00064 );
00065 }
00066
00067
00068 template<class equationOfState>
00069 inline Foam::autoPtr<Foam::hConstThermo<equationOfState> >
00070 Foam::hConstThermo<equationOfState>::New(Istream& is)
00071 {
00072 return autoPtr<hConstThermo<equationOfState> >
00073 (
00074 new hConstThermo<equationOfState>(is)
00075 );
00076 }
00077
00078
00079
00080
00081 template<class equationOfState>
00082 inline Foam::scalar Foam::hConstThermo<equationOfState>::cp
00083 (
00084 const scalar
00085 ) const
00086 {
00087 return Cp_*this->W();
00088 }
00089
00090
00091 template<class equationOfState>
00092 inline Foam::scalar Foam::hConstThermo<equationOfState>::h
00093 (
00094 const scalar T
00095 ) const
00096 {
00097 return (Cp_*T + Hf_)*this->W();
00098 }
00099
00100
00101 template<class equationOfState>
00102 inline Foam::scalar Foam::hConstThermo<equationOfState>::hs
00103 (
00104 const scalar T
00105 ) const
00106 {
00107 return Cp_*T*this->W();
00108 }
00109
00110
00111 template<class equationOfState>
00112 inline Foam::scalar Foam::hConstThermo<equationOfState>::hc() const
00113 {
00114 return Hf_*this->W();
00115 }
00116
00117
00118 template<class equationOfState>
00119 inline Foam::scalar Foam::hConstThermo<equationOfState>::s
00120 (
00121 const scalar T
00122 ) const
00123 {
00124 notImplemented
00125 (
00126 "scalar hConstThermo<equationOfState>::s(const scalar T) const"
00127 );
00128 return T;
00129 }
00130
00131
00132
00133
00134 template<class equationOfState>
00135 inline void Foam::hConstThermo<equationOfState>::operator+=
00136 (
00137 const hConstThermo<equationOfState>& ct
00138 )
00139 {
00140 scalar molr1 = this->nMoles();
00141
00142 equationOfState::operator+=(ct);
00143
00144 molr1 /= this->nMoles();
00145 scalar molr2 = ct.nMoles()/this->nMoles();
00146
00147 Cp_ = molr1*Cp_ + molr2*ct.Cp_;
00148 Hf_ = molr1*Hf_ + molr2*ct.Hf_;
00149 }
00150
00151
00152 template<class equationOfState>
00153 inline void Foam::hConstThermo<equationOfState>::operator-=
00154 (
00155 const hConstThermo<equationOfState>& ct
00156 )
00157 {
00158 scalar molr1 = this->nMoles();
00159
00160 equationOfState::operator-=(ct);
00161
00162 molr1 /= this->nMoles();
00163 scalar molr2 = ct.nMoles()/this->nMoles();
00164
00165 Cp_ = molr1*Cp_ - molr2*ct.Cp_;
00166 Hf_ = molr1*Hf_ - molr2*ct.Hf_;
00167 }
00168
00169
00170
00171
00172 template<class equationOfState>
00173 inline Foam::hConstThermo<equationOfState> Foam::operator+
00174 (
00175 const hConstThermo<equationOfState>& ct1,
00176 const hConstThermo<equationOfState>& ct2
00177 )
00178 {
00179 equationOfState eofs
00180 (
00181 static_cast<const equationOfState&>(ct1)
00182 + static_cast<const equationOfState&>(ct2)
00183 );
00184
00185 return hConstThermo<equationOfState>
00186 (
00187 eofs,
00188 ct1.nMoles()/eofs.nMoles()*ct1.Cp_
00189 + ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
00190 ct1.nMoles()/eofs.nMoles()*ct1.Hf_
00191 + ct2.nMoles()/eofs.nMoles()*ct2.Hf_
00192 );
00193 }
00194
00195
00196 template<class equationOfState>
00197 inline Foam::hConstThermo<equationOfState> Foam::operator-
00198 (
00199 const hConstThermo<equationOfState>& ct1,
00200 const hConstThermo<equationOfState>& ct2
00201 )
00202 {
00203 equationOfState eofs
00204 (
00205 static_cast<const equationOfState&>(ct1)
00206 - static_cast<const equationOfState&>(ct2)
00207 );
00208
00209 return hConstThermo<equationOfState>
00210 (
00211 eofs,
00212 ct1.nMoles()/eofs.nMoles()*ct1.Cp_
00213 - ct2.nMoles()/eofs.nMoles()*ct2.Cp_,
00214 ct1.nMoles()/eofs.nMoles()*ct1.Hf_
00215 - ct2.nMoles()/eofs.nMoles()*ct2.Hf_
00216 );
00217 }
00218
00219
00220 template<class equationOfState>
00221 inline Foam::hConstThermo<equationOfState> Foam::operator*
00222 (
00223 const scalar s,
00224 const hConstThermo<equationOfState>& ct
00225 )
00226 {
00227 return hConstThermo<equationOfState>
00228 (
00229 s*static_cast<const equationOfState&>(ct),
00230 ct.Cp_,
00231 ct.Hf_
00232 );
00233 }
00234
00235
00236 template<class equationOfState>
00237 inline Foam::hConstThermo<equationOfState> Foam::operator==
00238 (
00239 const hConstThermo<equationOfState>& ct1,
00240 const hConstThermo<equationOfState>& ct2
00241 )
00242 {
00243 return ct2 - ct1;
00244 }
00245
00246
00247