/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2016-2022 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . \*---------------------------------------------------------------------------*/ #include "SprayParcel.H" #include "IOstreams.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // template Foam::string Foam::SprayParcel::propertyList_ = Foam::SprayParcel::propertyList(); template const std::size_t Foam::SprayParcel::sizeofFields ( sizeof(SprayParcel) - sizeof(ParcelType) ); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template Foam::SprayParcel::SprayParcel ( const polyMesh& mesh, Istream& is, bool readFields, bool newFormat ) : ParcelType(mesh, is, readFields, newFormat), d0_(0.0), position0_(Zero), sigma_(0.0), mu_(0.0), liquidCore_(0.0), KHindex_(0.0), y_(0.0), yDot_(0.0), tc_(0.0), ms_(0.0), injector_(1.0), tMom_(GREAT), user_(0.0) { if (readFields) { if (is.format() == IOstreamOption::ASCII) { is >> d0_ >> position0_ >> sigma_ >> mu_ >> liquidCore_ >> KHindex_ >> y_ >> yDot_ >> tc_ >> ms_ >> injector_ >> tMom_ >> user_; } else if (!is.checkLabelSize<>() || !is.checkScalarSize<>()) { // Non-native label or scalar size is.beginRawRead(); readRawScalar(is, &d0_); readRawScalar(is, position0_.data(), vector::nComponents); readRawScalar(is, &sigma_); readRawScalar(is, &mu_); readRawScalar(is, &liquidCore_); readRawScalar(is, &KHindex_); readRawScalar(is, &y_); readRawScalar(is, &yDot_); readRawScalar(is, &tc_); readRawScalar(is, &ms_); readRawScalar(is, &injector_); readRawScalar(is, &tMom_); readRawScalar(is, &user_); is.endRawRead(); } else { is.read(reinterpret_cast(&d0_), sizeofFields); } } is.check(FUNCTION_NAME); } template template void Foam::SprayParcel::readFields(CloudType& c) { ParcelType::readFields(c); } template template void Foam::SprayParcel::readFields ( CloudType& c, const CompositionType& compModel ) { const bool readOnProc = c.size(); ParcelType::readFields(c, compModel); IOField d0(c.newIOobject("d0", IOobject::MUST_READ), readOnProc); c.checkFieldIOobject(c, d0); IOField position0 ( c.newIOobject("position0", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, position0); IOField sigma ( c.newIOobject("sigma", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, sigma); IOField mu(c.newIOobject("mu", IOobject::MUST_READ), readOnProc); c.checkFieldIOobject(c, mu); IOField liquidCore ( c.newIOobject("liquidCore", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, liquidCore); IOField KHindex ( c.newIOobject("KHindex", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, KHindex); IOField y ( c.newIOobject("y", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, y); IOField yDot ( c.newIOobject("yDot", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, yDot); IOField tc ( c.newIOobject("tc", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, tc); IOField ms ( c.newIOobject("ms", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, ms); IOField injector ( c.newIOobject("injector", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, injector); IOField tMom ( c.newIOobject("tMom", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, tMom); IOField user ( c.newIOobject("user", IOobject::MUST_READ), readOnProc ); c.checkFieldIOobject(c, user); label i = 0; for (SprayParcel& p : c) { p.d0_ = d0[i]; p.position0_ = position0[i]; p.sigma_ = sigma[i]; p.mu_ = mu[i]; p.liquidCore_ = liquidCore[i]; p.KHindex_ = KHindex[i]; p.y_ = y[i]; p.yDot_ = yDot[i]; p.tc_ = tc[i]; p.ms_ = ms[i]; p.injector_ = injector[i]; p.tMom_ = tMom[i]; p.user_ = user[i]; ++i; } } template template void Foam::SprayParcel::writeFields(const CloudType& c) { ParcelType::writeFields(c); } template template void Foam::SprayParcel::writeFields ( const CloudType& c, const CompositionType& compModel ) { ParcelType::writeFields(c, compModel); const label np = c.size(); const bool writeOnProc = c.size(); IOField d0(c.newIOobject("d0", IOobject::NO_READ), np); IOField position0 ( c.newIOobject("position0", IOobject::NO_READ), np ); IOField sigma(c.newIOobject("sigma", IOobject::NO_READ), np); IOField mu(c.newIOobject("mu", IOobject::NO_READ), np); IOField liquidCore ( c.newIOobject("liquidCore", IOobject::NO_READ), np ); IOField KHindex(c.newIOobject("KHindex", IOobject::NO_READ), np); IOField y(c.newIOobject("y", IOobject::NO_READ), np); IOField yDot(c.newIOobject("yDot", IOobject::NO_READ), np); IOField tc(c.newIOobject("tc", IOobject::NO_READ), np); IOField ms(c.newIOobject("ms", IOobject::NO_READ), np); IOField injector ( c.newIOobject("injector", IOobject::NO_READ), np ); IOField tMom(c.newIOobject("tMom", IOobject::NO_READ), np); IOField user(c.newIOobject("user", IOobject::NO_READ), np); label i = 0; for (const SprayParcel& p : c) { d0[i] = p.d0_; position0[i] = p.position0_; sigma[i] = p.sigma_; mu[i] = p.mu_; liquidCore[i] = p.liquidCore_; KHindex[i] = p.KHindex_; y[i] = p.y_; yDot[i] = p.yDot_; tc[i] = p.tc_; ms[i] = p.ms_; injector[i] = p.injector_; tMom[i] = p.tMom_; user[i] = p.user_; ++i; } d0.write(writeOnProc); position0.write(writeOnProc); sigma.write(writeOnProc); mu.write(writeOnProc); liquidCore.write(writeOnProc); KHindex.write(writeOnProc); y.write(writeOnProc); yDot.write(writeOnProc); tc.write(writeOnProc); ms.write(writeOnProc); injector.write(writeOnProc); tMom.write(writeOnProc); user.write(writeOnProc); } template void Foam::SprayParcel::writeProperties ( Ostream& os, const wordRes& filters, const word& delim, const bool namesOnly ) const { ParcelType::writeProperties(os, filters, delim, namesOnly); #undef writeProp #define writeProp(Name, Value) \ ParcelType::writeProperty(os, Name, Value, namesOnly, delim, filters) writeProp("d0", d0_); writeProp("position0", position0_); writeProp("sigma", sigma_); writeProp("mu", mu_); writeProp("liquidCore", liquidCore_); writeProp("KHindex", KHindex_); writeProp("y", y_); writeProp("yDot", yDot_); writeProp("tc", tc_); writeProp("ms", ms_); writeProp("injector", injector_); writeProp("tMom", tMom_); writeProp("user", user_); #undef writeProp } template template void Foam::SprayParcel::readObjects ( CloudType& c, const objectRegistry& obr ) { ParcelType::readObjects(c, obr); } template template void Foam::SprayParcel::writeObjects ( const CloudType& c, objectRegistry& obr ) { ParcelType::writeObjects(c, obr); } template template void Foam::SprayParcel::readObjects ( CloudType& c, const CompositionType& compModel, const objectRegistry& obr ) { ParcelType::readObjects(c, compModel, obr); if (!c.size()) return; const auto& d0 = cloud::lookupIOField("d0", obr); const auto& position0 = cloud::lookupIOField("position0", obr); const auto& sigma = cloud::lookupIOField("sigma", obr); const auto& mu = cloud::lookupIOField("mu", obr); const auto& liquidCore = cloud::lookupIOField("liquidCore", obr); const auto& KHindex = cloud::lookupIOField("KHindex", obr); const auto& y = cloud::lookupIOField("y", obr); const auto& yDot = cloud::lookupIOField("yDot", obr); const auto& tc = cloud::lookupIOField("tc", obr); const auto& ms = cloud::lookupIOField("ms", obr); const auto& injector = cloud::lookupIOField("injector", obr); const auto& tMom = cloud::lookupIOField("tMom", obr); const auto& user = cloud::lookupIOField("user", obr); label i = 0; for (SprayParcel& p : c) { p.d0_ = d0[i]; p.position0_ = position0[i]; p.sigma_ = sigma[i]; p.mu_ = mu[i]; p.liquidCore_ = liquidCore[i]; p.KHindex_ = KHindex[i]; p.y_ = y[i]; p.yDot_ = yDot[i]; p.tc_ = tc[i]; p.ms_ = ms[i]; p.injector_ = injector[i]; p.tMom_ = tMom[i]; p.user_ = user[i]; ++i; } } template template void Foam::SprayParcel::writeObjects ( const CloudType& c, const CompositionType& compModel, objectRegistry& obr ) { ParcelType::writeObjects(c, compModel, obr); const label np = c.size(); auto& d0 = cloud::createIOField("d0", np, obr); auto& position0 = cloud::createIOField("position0", np, obr); auto& sigma = cloud::createIOField("sigma", np, obr); auto& mu = cloud::createIOField("mu", np, obr); auto& liquidCore = cloud::createIOField("liquidCore", np, obr); auto& KHindex = cloud::createIOField("KHindex", np, obr); auto& y = cloud::createIOField("y", np, obr); auto& yDot= cloud::createIOField("yDot", np, obr); auto& tc = cloud::createIOField("tc", np, obr); auto& ms = cloud::createIOField("ms", np, obr); auto& injector = cloud::createIOField("injector", np, obr); auto& tMom = cloud::createIOField("tMom", np, obr); auto& user = cloud::createIOField("user", np, obr); label i = 0; for (const SprayParcel& p : c) { d0[i] = p.d0_; position0[i] = p.position0_; sigma[i] = p.sigma_; mu[i] = p.mu_; liquidCore[i] = p.liquidCore_; KHindex[i] = p.KHindex_; y[i] = p.y_; yDot[i] = p.yDot_; tc[i] = p.tc_; ms[i] = p.ms_; injector[i] = p.injector_; tMom[i] = p.tMom_; user[i] = p.user_; ++i; } } // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // template Foam::Ostream& Foam::operator<< ( Ostream& os, const SprayParcel& p ) { if (os.format() == IOstreamOption::ASCII) { os << static_cast(p) << token::SPACE << p.d0() << token::SPACE << p.position0() << token::SPACE << p.sigma() << token::SPACE << p.mu() << token::SPACE << p.liquidCore() << token::SPACE << p.KHindex() << token::SPACE << p.y() << token::SPACE << p.yDot() << token::SPACE << p.tc() << token::SPACE << p.ms() << token::SPACE << p.injector() << token::SPACE << p.tMom() << token::SPACE << p.user(); } else { os << static_cast(p); os.write ( reinterpret_cast(&p.d0_), SprayParcel::sizeofFields ); } os.check(FUNCTION_NAME); return os; } // ************************************************************************* //