34 template<
class ParcelType>
39 template<
class ParcelType>
48 template<
class ParcelType>
72 YLiquid_.transfer(Yl);
77 YGas_ /= YMix[GAS] + ROOTVSMALL;
78 YLiquid_ /= YMix[LIQ] + ROOTVSMALL;
79 YSolid_ /= YMix[SLD] + ROOTVSMALL;
86 template<
class ParcelType>
87 template<
class CloudType>
94 template<
class ParcelType>
95 template<
class CloudType,
class CompositionType>
99 const CompositionType& compModel
102 bool valid =
c.size();
107 const label idGas = compModel.idGas();
108 const wordList& gasNames = compModel.componentNames(idGas);
109 const label idLiquid = compModel.idLiquid();
110 const wordList& liquidNames = compModel.componentNames(idLiquid);
111 const label idSolid = compModel.idSolid();
113 const wordList& stateLabels = compModel.stateLabels();
118 p.YGas_.setSize(gasNames.size(), 0.0);
119 p.YLiquid_.setSize(liquidNames.size(), 0.0);
130 "Y" + gasNames[j] + stateLabels[idGas],
139 p.YGas_[j] = YGas[i]/(
p.Y()[GAS] + ROOTVSMALL);
150 "Y" + liquidNames[j] + stateLabels[idLiquid],
159 p.YLiquid_[j] = YLiquid[i]/(
p.Y()[LIQ] + ROOTVSMALL);
179 p.YSolid_[j] = YSolid[i]/(
p.Y()[SLD] + ROOTVSMALL);
186 template<
class ParcelType>
187 template<
class CloudType>
194 template<
class ParcelType>
195 template<
class CloudType,
class CompositionType>
199 const CompositionType& compModel
208 const wordList& stateLabels = compModel.stateLabels();
210 const label idGas = compModel.idGas();
211 const wordList& gasNames = compModel.componentNames(idGas);
218 "Y" + gasNames[j] + stateLabels[idGas],
227 YGas[i] =
p0.YGas()[j]*
p0.Y()[GAS];
234 const label idLiquid = compModel.idLiquid();
235 const wordList& liquidNames = compModel.componentNames(idLiquid);
242 "Y" + liquidNames[j] + stateLabels[idLiquid],
251 YLiquid[i] =
p0.YLiquid()[j]*
p0.Y()[LIQ];
255 YLiquid.write(np > 0);
258 const label idSolid = compModel.idSolid();
275 YSolid[i] =
p0.YSolid()[j]*
p0.Y()[SLD];
279 YSolid.write(np > 0);
285 template<
class ParcelType>
294 ParcelType::writeProperties(os, filters, delim, namesOnly);
297 #define writeProp(Name, Value) \
298 ParcelType::writeProperty(os, Name, Value, namesOnly, delim, filters)
309 template<
class ParcelType>
310 template<
class CloudType>
317 ParcelType::readObjects(
c, obr);
321 template<
class ParcelType>
322 template<
class CloudType>
329 ParcelType::writeObjects(
c, obr);
333 template<
class ParcelType>
334 template<
class CloudType,
class CompositionType>
338 const CompositionType& compModel,
342 ParcelType::readObjects(
c, obr);
344 const label np =
c.size();
349 const wordList& stateLabels = compModel.stateLabels();
351 const label idGas = compModel.idGas();
352 const wordList& gasNames = compModel.componentNames(idGas);
355 const word fieldName =
"Y" + gasNames[j] + stateLabels[idGas];
356 const auto& YGas = cloud::lookupIOField<scalar>(fieldName, obr);
361 p0.YGas()[j]*
p0.Y()[GAS] = YGas[i];
366 const label idLiquid = compModel.idLiquid();
367 const wordList& liquidNames = compModel.componentNames(idLiquid);
370 const word fieldName =
"Y" + liquidNames[j] + stateLabels[idLiquid];
371 const auto& YLiquid = cloud::lookupIOField<scalar>(fieldName, obr);
376 p0.YLiquid()[j]*
p0.Y()[LIQ] = YLiquid[i];
381 const label idSolid = compModel.idSolid();
385 const word fieldName =
"Y" +
solidNames[j] + stateLabels[idSolid];
386 const auto& YSolid = cloud::lookupIOField<scalar>(fieldName, obr);
391 p0.YSolid()[j]*
p0.Y()[SLD] = YSolid[i];
399 template<
class ParcelType>
400 template<
class CloudType,
class CompositionType>
404 const CompositionType& compModel,
408 ParcelType::writeObjects(
c, obr);
410 const label np =
c.size();
415 const wordList& stateLabels = compModel.stateLabels();
417 const label idGas = compModel.idGas();
418 const wordList& gasNames = compModel.componentNames(idGas);
421 const word fieldName =
"Y" + gasNames[j] + stateLabels[idGas];
422 auto& YGas = cloud::createIOField<scalar>(fieldName, np, obr);
427 YGas[i] =
p0.YGas()[j]*
p0.Y()[GAS];
432 const label idLiquid = compModel.idLiquid();
433 const wordList& liquidNames = compModel.componentNames(idLiquid);
436 const word fieldName =
"Y" + liquidNames[j] + stateLabels[idLiquid];
437 auto& YLiquid = cloud::createIOField<scalar>(fieldName, np, obr);
442 YLiquid[i] =
p0.YLiquid()[j]*
p0.Y()[LIQ];
447 const label idSolid = compModel.idSolid();
451 const word fieldName =
"Y" +
solidNames[j] + stateLabels[idSolid];
452 auto& YSolid = cloud::createIOField<scalar>(fieldName, np, obr);
457 YSolid[i] =
p0.YSolid()[j]*
p0.Y()[SLD];
467 template<
class ParcelType>
478 if (os.format() == IOstream::ASCII)
480 os << static_cast<const ParcelType&>(
p)
481 << token::SPACE << YGasLoc
482 << token::SPACE << YLiquidLoc
483 << token::SPACE << YSolidLoc;
487 os << static_cast<const ParcelType&>(
p);
488 os << YGasLoc << YLiquidLoc << YSolidLoc;