34 template<
class ParcelType>
39 template<
class ParcelType>
48 template<
class ParcelType>
72 YLiquid_.transfer(Yl);
80 template<
class ParcelType>
81 template<
class CloudType>
88 template<
class ParcelType>
89 template<
class CloudType,
class CompositionType>
93 const CompositionType& compModel
96 bool valid =
c.size();
101 const label idGas = compModel.idGas();
102 const wordList& gasNames = compModel.componentNames(idGas);
103 const label idLiquid = compModel.idLiquid();
104 const wordList& liquidNames = compModel.componentNames(idLiquid);
105 const label idSolid = compModel.idSolid();
107 const wordList& stateLabels = compModel.stateLabels();
112 p.YGas_.setSize(gasNames.size(), 0.0);
113 p.YLiquid_.setSize(liquidNames.size(), 0.0);
124 "Y" + gasNames[j] + stateLabels[idGas],
133 p.YGas_[j] = YGas[i]/(
max(
p.Y()[GAS], SMALL));
144 "Y" + liquidNames[j] + stateLabels[idLiquid],
153 p.YLiquid_[j] = YLiquid[i]/(
max(
p.Y()[LIQ], SMALL));
173 p.YSolid_[j] = YSolid[i]/(
max(
p.Y()[SLD], SMALL));
180 template<
class ParcelType>
181 template<
class CloudType>
188 template<
class ParcelType>
189 template<
class CloudType,
class CompositionType>
193 const CompositionType& compModel
202 const wordList& stateLabels = compModel.stateLabels();
204 const label idGas = compModel.idGas();
205 const wordList& gasNames = compModel.componentNames(idGas);
212 "Y" + gasNames[j] + stateLabels[idGas],
221 YGas[i] =
p0.YGas()[j]*
max(
p0.Y()[GAS], SMALL);
228 const label idLiquid = compModel.idLiquid();
229 const wordList& liquidNames = compModel.componentNames(idLiquid);
236 "Y" + liquidNames[j] + stateLabels[idLiquid],
245 YLiquid[i] =
p0.YLiquid()[j]*
max(
p0.Y()[LIQ], SMALL);
249 YLiquid.write(np > 0);
252 const label idSolid = compModel.idSolid();
269 YSolid[i] =
p0.YSolid()[j]*
max(
p0.Y()[SLD], SMALL);
273 YSolid.write(np > 0);
279 template<
class ParcelType>
288 ParcelType::writeProperties(
os, filters, delim, namesOnly);
291 #define writeProp(Name, Value) \
292 ParcelType::writeProperty(os, Name, Value, namesOnly, delim, filters)
303 template<
class ParcelType>
304 template<
class CloudType>
311 ParcelType::readObjects(
c, obr);
315 template<
class ParcelType>
316 template<
class CloudType>
323 ParcelType::writeObjects(
c, obr);
327 template<
class ParcelType>
328 template<
class CloudType,
class CompositionType>
332 const CompositionType& compModel,
336 ParcelType::readObjects(
c, obr);
338 const label np =
c.size();
343 const wordList& stateLabels = compModel.stateLabels();
345 const label idGas = compModel.idGas();
346 const wordList& gasNames = compModel.componentNames(idGas);
349 const word fieldName =
"Y" + gasNames[j] + stateLabels[idGas];
350 const auto& YGas = cloud::lookupIOField<scalar>(fieldName, obr);
355 p0.YGas()[j]*
max(
p0.Y()[GAS], SMALL) = YGas[i];
360 const label idLiquid = compModel.idLiquid();
361 const wordList& liquidNames = compModel.componentNames(idLiquid);
364 const word fieldName =
"Y" + liquidNames[j] + stateLabels[idLiquid];
365 const auto& YLiquid = cloud::lookupIOField<scalar>(fieldName, obr);
370 p0.YLiquid()[j]*
max(
p0.Y()[LIQ], SMALL) = YLiquid[i];
375 const label idSolid = compModel.idSolid();
379 const word fieldName =
"Y" +
solidNames[j] + stateLabels[idSolid];
380 const auto& YSolid = cloud::lookupIOField<scalar>(fieldName, obr);
385 p0.YSolid()[j]*
max(
p0.Y()[SLD], SMALL) = YSolid[i];
393 template<
class ParcelType>
394 template<
class CloudType,
class CompositionType>
398 const CompositionType& compModel,
402 ParcelType::writeObjects(
c, obr);
404 const label np =
c.size();
409 const wordList& stateLabels = compModel.stateLabels();
411 const label idGas = compModel.idGas();
412 const wordList& gasNames = compModel.componentNames(idGas);
415 const word fieldName =
"Y" + gasNames[j] + stateLabels[idGas];
416 auto& YGas = cloud::createIOField<scalar>(fieldName, np, obr);
421 YGas[i] =
p0.YGas()[j]*
max(
p0.Y()[GAS], SMALL);
426 const label idLiquid = compModel.idLiquid();
427 const wordList& liquidNames = compModel.componentNames(idLiquid);
430 const word fieldName =
"Y" + liquidNames[j] + stateLabels[idLiquid];
431 auto& YLiquid = cloud::createIOField<scalar>(fieldName, np, obr);
436 YLiquid[i] =
p0.YLiquid()[j]*
max(
p0.Y()[LIQ], SMALL);
441 const label idSolid = compModel.idSolid();
445 const word fieldName =
"Y" +
solidNames[j] + stateLabels[idSolid];
446 auto& YSolid = cloud::createIOField<scalar>(fieldName, np, obr);
451 YSolid[i] =
p0.YSolid()[j]*
max(
p0.Y()[SLD], SMALL);
461 template<
class ParcelType>
472 if (
os.format() == IOstream::ASCII)
474 os << static_cast<const ParcelType&>(
p)
475 << token::SPACE << YGasLoc
476 << token::SPACE << YLiquidLoc
477 << token::SPACE << YSolidLoc;
481 os << static_cast<const ParcelType&>(
p);
482 os << YGasLoc << YLiquidLoc << YSolidLoc;