diff --git a/src/Allwmake b/src/Allwmake index faf5093944..92a389d77e 100755 --- a/src/Allwmake +++ b/src/Allwmake @@ -81,6 +81,7 @@ wmake $targetType sixDoFRigidBodyMotion wmake $targetType sixDoFRigidBodyState wmake $targetType rigidBodyDynamics wmake $targetType rigidBodyMeshMotion +wmake $targetType semiPermeableBaffle # Needs access to Turbulence diff --git a/src/semiPermeableBaffle/Make/files b/src/semiPermeableBaffle/Make/files new file mode 100644 index 0000000000..2556e5fb53 --- /dev/null +++ b/src/semiPermeableBaffle/Make/files @@ -0,0 +1,4 @@ +derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C +derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C + +LIB = $(FOAM_LIBBIN)/libsemiPermeableBaffle diff --git a/src/semiPermeableBaffle/Make/options b/src/semiPermeableBaffle/Make/options new file mode 100644 index 0000000000..10f6ee79d8 --- /dev/null +++ b/src/semiPermeableBaffle/Make/options @@ -0,0 +1,17 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude \ + -I$(LIB_SRC)/meshTools/lnInclude \ + -I$(LIB_SRC)/transportModels/compressible/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ + -I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \ + -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude + +LIB_LIBS = \ + -lfiniteVolume \ + -lmeshTools \ + -lcompressibleTransportModels \ + -lfluidThermophysicalModels \ + -lspecie \ + -lreactionThermophysicalModels \ + -lturbulenceModels diff --git a/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C new file mode 100644 index 0000000000..9c6d470dbc --- /dev/null +++ b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C @@ -0,0 +1,190 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 "semiPermeableBaffleMassFractionFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "turbulenceModel.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::semiPermeableBaffleMassFractionFvPatchScalarField:: +semiPermeableBaffleMassFractionFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF +) +: + mappedPatchBase(p.patch()), + mixedFvPatchScalarField(p, iF), + c_(0), + phiName_("phi") +{ + refValue() = Zero; + refGrad() = Zero; + valueFraction() = Zero; +} + + +Foam::semiPermeableBaffleMassFractionFvPatchScalarField:: +semiPermeableBaffleMassFractionFvPatchScalarField +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + mappedPatchBase(p.patch(), NEARESTPATCHFACE, dict), + mixedFvPatchScalarField(p, iF), + c_(dict.lookupOrDefault("c", scalar(0))), + phiName_(dict.lookupOrDefault("phi", "phi")) +{ + fvPatchScalarField::operator=(scalarField("value", dict, p.size())); + + refValue() = Zero; + refGrad() = Zero; + valueFraction() = Zero; +} + + +Foam::semiPermeableBaffleMassFractionFvPatchScalarField:: +semiPermeableBaffleMassFractionFvPatchScalarField +( + const semiPermeableBaffleMassFractionFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + mappedPatchBase(p.patch(), ptf), + mixedFvPatchScalarField(ptf, p, iF, mapper), + c_(ptf.c_), + phiName_(ptf.phiName_) +{} + + +Foam::semiPermeableBaffleMassFractionFvPatchScalarField:: +semiPermeableBaffleMassFractionFvPatchScalarField +( + const semiPermeableBaffleMassFractionFvPatchScalarField& ptf +) +: + mappedPatchBase(ptf.patch().patch(), ptf), + mixedFvPatchScalarField(ptf), + c_(ptf.c_), + phiName_(ptf.phiName_) +{} + + +Foam::semiPermeableBaffleMassFractionFvPatchScalarField:: +semiPermeableBaffleMassFractionFvPatchScalarField +( + const semiPermeableBaffleMassFractionFvPatchScalarField& ptf, + const DimensionedField& iF +) +: + mappedPatchBase(ptf.patch().patch(), ptf), + mixedFvPatchScalarField(ptf, iF), + c_(ptf.c_), + phiName_(ptf.phiName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +Foam::tmp +Foam::semiPermeableBaffleMassFractionFvPatchScalarField::phiY() const +{ + if (c_ == scalar(0)) + { + return tmp(new scalarField(patch().size(), Zero)); + } + + const word& YName = internalField().name(); + + const label nbrPatchi = samplePolyPatch().index(); + const fvPatch& nbrPatch = patch().boundaryMesh()[nbrPatchi]; + + const fvPatchScalarField& nbrYp = + nbrPatch.lookupPatchField(YName); + scalarField nbrYc(nbrYp.patchInternalField()); + mappedPatchBase::map().distribute(nbrYc); + + return c_*patch().magSf()*(patchInternalField() - nbrYc); +} + + +void Foam::semiPermeableBaffleMassFractionFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + const scalarField& phip = + patch().lookupPatchField(phiName_); + + const turbulenceModel& turbModel = + db().lookupObject + ( + turbulenceModel::propertiesName + ); + const scalarField muEffp(turbModel.muEff(patch().index())); + const scalarField AMuEffp(patch().magSf()*muEffp); + + valueFraction() = phip/(phip - patch().deltaCoeffs()*AMuEffp); + refGrad() = - phiY()/AMuEffp; + + mixedFvPatchScalarField::updateCoeffs(); +} + + +void Foam::semiPermeableBaffleMassFractionFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchScalarField::write(os); + mappedPatchBase::write(os); + writeEntryIfDifferent(os, "c", scalar(0), c_); + writeEntryIfDifferent(os, "phi", "phi", phiName_); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * Build Macro Function * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + semiPermeableBaffleMassFractionFvPatchScalarField + ); +} + +// ************************************************************************* // diff --git a/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.H b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.H new file mode 100644 index 0000000000..f4de0c69a2 --- /dev/null +++ b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.H @@ -0,0 +1,202 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 . + +Class + Foam::semiPermeableBaffleMassFractionFvPatchScalarField + +Group + grpGenericBoundaryConditions + +Description + This is a mass-fraction boundary condition for a semi-permeable baffle. + + This condition models a baffle which is permeable to a some species and + impermeable to others. It must be used in conjunction with the + corresponding velocity condition, + semiPermeableBaffleVelocityFvPatchVectorField. + + The mass flux of a species is calculated as a coefficient multiplied by the + difference in mass fraction across the baffle. + \f[ + \phi_{Yi} = c A (Y_i - Y_{i,n}) + \f] + where + \vartable + \phi_{Yi} | flux of the permeable species [kg/s] + c | transfer coefficient [kg/m2/s] + A | patch face area [m2] + Y_i | mass fraction on the patch [] + Y_{i,n} | mass fraction on the neighbour patch [] + \endvartable + + A species that the baffle is permable to will, therefore, have a + coefficient greater than zero, whilst a species that does not transfer will + have a coefficient equal to zero. + + This condition calculates the species flux. The fluxes are summed up by the + velocity consition to generate the net mass transfer across the baffle. + This mass-fraction condition then generates a corrective diffusive flux to + ensure that the correct amounts of the permeable species are transferred. + +Usage + \table + Property | Description | Req'd? | Default + c | Transfer coefficient | no | 0 + phi | Name of the flux field | no | phi + \endtable + +See also + Foam::semiPermeableBaffleVelocityFvPatchVectorField + +SourceFiles + semiPermeableBaffleMassFractionFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef semiPermeableBaffleMassFractionFvPatchScalarField_H +#define semiPermeableBaffleMassFractionFvPatchScalarField_H + +#include "mappedPatchBase.H" +#include "mixedFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class semiPermeableBaffleMassFractionFvPatchScalarField Declaration +\*---------------------------------------------------------------------------*/ + +class semiPermeableBaffleMassFractionFvPatchScalarField +: + public mappedPatchBase, + public mixedFvPatchScalarField +{ + // Private data + + //- Transfer coefficient + const scalar c_; + + //- Name of the flux field + const word phiName_; + + +public: + + //- Runtime type information + TypeName("semiPermeableBaffleMassFraction"); + + + // Constructors + + //- Construct from patch and internal field + semiPermeableBaffleMassFractionFvPatchScalarField + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + semiPermeableBaffleMassFractionFvPatchScalarField + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given fixedValueTypeFvPatchField + // onto a new patch + semiPermeableBaffleMassFractionFvPatchScalarField + ( + const semiPermeableBaffleMassFractionFvPatchScalarField&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + semiPermeableBaffleMassFractionFvPatchScalarField + ( + const semiPermeableBaffleMassFractionFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new semiPermeableBaffleMassFractionFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + semiPermeableBaffleMassFractionFvPatchScalarField + ( + const semiPermeableBaffleMassFractionFvPatchScalarField&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new semiPermeableBaffleMassFractionFvPatchScalarField + ( + *this, + iF + ) + ); + } + + + // Member functions + + // Evaluation functions + + //- Return the flux of this species through the baffle + tmp phiY() const; + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +#endif + +// ************************************************************************* // diff --git a/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C new file mode 100644 index 0000000000..2850f51686 --- /dev/null +++ b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C @@ -0,0 +1,187 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 "semiPermeableBaffleVelocityFvPatchVectorField.H" +#include "semiPermeableBaffleMassFractionFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "psiReactionThermo.H" +#include "rhoReactionThermo.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +const Foam::basicSpecieMixture& +Foam::semiPermeableBaffleVelocityFvPatchVectorField::composition() const +{ + const word& name = basicThermo::dictName; + + if (db().foundObject(name)) + { + return db().lookupObject(name).composition(); + } + else if (db().foundObject(name)) + { + return db().lookupObject(name).composition(); + } + else + { + FatalErrorInFunction + << "Could not find a multi-component thermodynamic model." + << exit(FatalError); + + return NullObjectRef(); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::semiPermeableBaffleVelocityFvPatchVectorField:: +semiPermeableBaffleVelocityFvPatchVectorField +( + const fvPatch& p, + const DimensionedField& iF +) +: + fixedValueFvPatchVectorField(p, iF), + rhoName_("rho") +{} + + +Foam::semiPermeableBaffleVelocityFvPatchVectorField:: +semiPermeableBaffleVelocityFvPatchVectorField +( + const fvPatch& p, + const DimensionedField& iF, + const dictionary& dict +) +: + fixedValueFvPatchVectorField(p, iF), + rhoName_(dict.lookupOrDefault("rho", "rho")) +{ + fvPatchVectorField::operator==(vectorField("value", dict, p.size())); +} + + +Foam::semiPermeableBaffleVelocityFvPatchVectorField:: +semiPermeableBaffleVelocityFvPatchVectorField +( + const semiPermeableBaffleVelocityFvPatchVectorField& ptf, + const fvPatch& p, + const DimensionedField& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchVectorField(ptf, p, iF, mapper), + rhoName_(ptf.rhoName_) +{} + + +Foam::semiPermeableBaffleVelocityFvPatchVectorField:: +semiPermeableBaffleVelocityFvPatchVectorField +( + const semiPermeableBaffleVelocityFvPatchVectorField& ptf +) +: + fixedValueFvPatchVectorField(ptf), + rhoName_(ptf.rhoName_) +{} + + +Foam::semiPermeableBaffleVelocityFvPatchVectorField:: +semiPermeableBaffleVelocityFvPatchVectorField +( + const semiPermeableBaffleVelocityFvPatchVectorField& ptf, + const DimensionedField& iF +) +: + fixedValueFvPatchVectorField(ptf, iF), + rhoName_(ptf.rhoName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::semiPermeableBaffleVelocityFvPatchVectorField::updateCoeffs() +{ + if (updated()) + { + return; + } + + typedef semiPermeableBaffleMassFractionFvPatchScalarField YBCType; + + const scalarField& rhop = + patch().lookupPatchField(rhoName_); + + const PtrList& Y = composition().Y(); + + scalarField phip(patch().size(), Zero); + forAll(Y, i) + { + const fvPatchScalarField& Yp = Y[i].boundaryField()[patch().index()]; + + if (!isA(Yp)) + { + FatalErrorInFunction + << "The mass-fraction condition on patch " << patch().name() + << " is not of type " << YBCType::typeName << "." + << exit(FatalError); + } + + phip += refCast(Yp).phiY(); + } + + this->operator==(patch().nf()*phip/(rhop*patch().magSf())); + + fixedValueFvPatchVectorField::updateCoeffs(); +} + + +void Foam::semiPermeableBaffleVelocityFvPatchVectorField::write +( + Ostream& os +) const +{ + fvPatchVectorField::write(os); + writeEntryIfDifferent(os, "rho", "rho", rhoName_); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * Build Macro Function * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + semiPermeableBaffleVelocityFvPatchVectorField + ); +} + +// ************************************************************************* // diff --git a/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.H b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.H new file mode 100644 index 0000000000..73fd60f933 --- /dev/null +++ b/src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.H @@ -0,0 +1,182 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +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 . + +Class + Foam::semiPermeableBaffleVelocityFvPatchVectorField + +Group + grpGenericBoundaryConditions + +Description + This is a velocity boundary condition for a semi-permeable baffle. + + This is a velocity boundary condition for baffles which are permeable to a + some species and impermeable to others. It must be used in conjunction + with the corresponding mass-fraction condition, + semiPermeableBaffleMassFractionFvPatchScalarField. + + This condition sums the species fluxes generated by the the mass-fraction + conditions, and uses this total to set the velocity. + +Usage + \table + Property | Description | Req'd? | Default + rho | Name of the density field | no | rho + \endtable + +See also + Foam::semiPermeableBaffleMassFractionFvPatchScalarField + +SourceFiles + semiPermeableBaffleVelocityFvPatchVectorField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef semiPermeableBaffleVelocityFvPatchVectorField_H +#define semiPermeableBaffleVelocityFvPatchVectorField_H + +#include "mappedPatchBase.H" +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +class basicSpecieMixture; + +/*---------------------------------------------------------------------------*\ + Class semiPermeableBaffleVelocityFvPatchVectorField Declaration +\*---------------------------------------------------------------------------*/ + +class semiPermeableBaffleVelocityFvPatchVectorField +: + public fixedValueFvPatchVectorField +{ + // Private data + + //- Name of the density field + const word rhoName_; + + + // Private Member Functions + + //- Return the composition + const basicSpecieMixture& composition() const; + + +public: + + //- Runtime type information + TypeName("semiPermeableBaffleVelocity"); + + + // Constructors + + //- Construct from patch and internal field + semiPermeableBaffleVelocityFvPatchVectorField + ( + const fvPatch&, + const DimensionedField& + ); + + //- Construct from patch, internal field and dictionary + semiPermeableBaffleVelocityFvPatchVectorField + ( + const fvPatch&, + const DimensionedField&, + const dictionary& + ); + + //- Construct by mapping given fixedValueTypeFvPatchField + // onto a new patch + semiPermeableBaffleVelocityFvPatchVectorField + ( + const semiPermeableBaffleVelocityFvPatchVectorField&, + const fvPatch&, + const DimensionedField&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + semiPermeableBaffleVelocityFvPatchVectorField + ( + const semiPermeableBaffleVelocityFvPatchVectorField& + ); + + //- Construct and return a clone + virtual tmp clone() const + { + return tmp + ( + new semiPermeableBaffleVelocityFvPatchVectorField(*this) + ); + } + + //- Construct as copy setting internal field reference + semiPermeableBaffleVelocityFvPatchVectorField + ( + const semiPermeableBaffleVelocityFvPatchVectorField&, + const DimensionedField& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp clone + ( + const DimensionedField& iF + ) const + { + return tmp + ( + new semiPermeableBaffleVelocityFvPatchVectorField + ( + *this, + iF + ) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +#endif + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/CH4 b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/CH4 new file mode 100644 index 0000000000..156fd27427 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/CH4 @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object CH4; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "include" + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletSleeve + { + type fixedValue; + value uniform $:sleeve.CH4; + } + inletPipe + { + type fixedValue; + value uniform $:pipe.CH4; + } + outletSleeve + { + type inletOutlet; + inletValue uniform $:sleeve.CH4; + value uniform $:sleeve.CH4; + } + outletPipe + { + type inletOutlet; + inletValue uniform $:pipe.CH4; + value uniform $:pipe.CH4; + } + wall + { + type zeroGradient; + } + membraneSleeve + { + type semiPermeableBaffleMassFraction; + samplePatch membranePipe; + c 0.1; + value uniform $:sleeve.CH4; + } + membranePipe + { + type semiPermeableBaffleMassFraction; + samplePatch membraneSleeve; + c 0.1; + value uniform $:pipe.CH4; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/N2 b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/N2 new file mode 100644 index 0000000000..46dfb13c9f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/N2 @@ -0,0 +1,65 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "include" + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 1; + +boundaryField +{ + inletSleeve + { + type fixedValue; + value uniform $:sleeve.N2; + } + inletPipe + { + type fixedValue; + value uniform $:pipe.N2; + } + outletSleeve + { + type inletOutlet; + inletValue uniform $:sleeve.N2; + value uniform $:sleeve.N2; + } + outletPipe + { + type inletOutlet; + inletValue uniform $:pipe.N2; + value uniform $:pipe.N2; + } + wall + { + type zeroGradient; + } + membraneSleeve + { + type semiPermeableBaffleMassFraction; + value uniform $:sleeve.N2; + } + membranePipe + { + type semiPermeableBaffleMassFraction; + value uniform $:pipe.N2; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/O2 b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/O2 new file mode 100644 index 0000000000..51990139d5 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/O2 @@ -0,0 +1,65 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "include" + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inletSleeve + { + type fixedValue; + value uniform $:sleeve.O2; + } + inletPipe + { + type fixedValue; + value uniform $:pipe.O2; + } + outletSleeve + { + type inletOutlet; + inletValue uniform $:sleeve.O2; + value uniform $:sleeve.O2; + } + outletPipe + { + type inletOutlet; + inletValue uniform $:pipe.O2; + value uniform $:pipe.O2; + } + wall + { + type zeroGradient; + } + membraneSleeve + { + type semiPermeableBaffleMassFraction; + value uniform $:sleeve.O2; + } + membranePipe + { + type semiPermeableBaffleMassFraction; + value uniform $:pipe.O2; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/T b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/T new file mode 100644 index 0000000000..d9f90a86bf --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/T @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 293; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + inletValue $internalField; + value $internalField; + } + "(wall|membrane).*" + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/U b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/U new file mode 100644 index 0000000000..919796ab3b --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/U @@ -0,0 +1,56 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inletSleeve + { + type fixedValue; + value uniform (1 0 0); + } + inletPipe + { + type fixedValue; + value uniform (0 0 1); + } + outlet + { + type pressureInletOutletVelocity; + value $internalField; + } + wall + { + type noSlip; + } + membraneSleeve + { + type semiPermeableBaffleVelocity; + value $internalField; + } + membranePipe + { + type semiPermeableBaffleVelocity; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/Ydefault b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/Ydefault new file mode 100644 index 0000000000..2a39102b06 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/Ydefault @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object Ydefault; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type inletOutlet; + inletValue $internalField; + value $internalField; + } + wall + { + type zeroGradient; + } + membraneSleeve + { + type semiPermeableBaffleMassFraction; + value $internalField; + } + membranePipe + { + type semiPermeableBaffleMassFraction; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/alphat b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/alphat new file mode 100644 index 0000000000..474f92af8c --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/alphat @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object alphat; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value $internalField; + } + outlet + { + type zeroGradient; + } + "(wall|membrane).*" + { + type compressible::alphatWallFunction; + Prt 0.85; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/epsilon b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/epsilon new file mode 100644 index 0000000000..ef0dea8fe8 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/epsilon @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 0.012; + +boundaryField +{ + inlet + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.1; + value $internalField; + } + outlet + { + type inletOutlet; + inletValue $internalField; + value $internalField; + } + "(wall|membrane).*" + { + type epsilonWallFunction; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/include b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/include new file mode 100644 index 0000000000..1bb0906fbb --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/include @@ -0,0 +1,33 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "0"; + object include; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +sleeve +{ + CH4 0; + N2 0.79; + O2 0.21; +} + +pipe +{ + CH4 0.5; + O2 0; + N2 0.5; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/k b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/k new file mode 100644 index 0000000000..cab8a3319f --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/k @@ -0,0 +1,44 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.00375; + +boundaryField +{ + inlet + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.05; + value $internalField; + } + outlet + { + type inletOutlet; + inletValue $internalField; + value $internalField; + } + "(wall|membrane).*" + { + type kqRWallFunction; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/nut b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/nut new file mode 100644 index 0000000000..246d519adc --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/nut @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value $internalField; + } + outlet + { + type calculated; + value $internalField; + } + "(wall|membrane).*" + { + type nutkWallFunction; + value $internalField; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/p b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/p new file mode 100644 index 0000000000..76392e0628 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/0.orig/p @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type fixedFluxPressure; + } + outlet + { + type totalPressure; + p0 $internalField; + } + "(wall|membrane).*" + { + type fixedFluxPressure; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/Allclean b/tutorials/combustion/reactingFoam/RAS/membrane/Allclean new file mode 100755 index 0000000000..19839c87a7 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/Allclean @@ -0,0 +1,7 @@ +#!/bin/sh + +cd ${0%/*} || exit 1 + +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -rf 0 constant/triSurface/membrane-*.stl.gz && cleanCase diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/Allrun b/tutorials/combustion/reactingFoam/RAS/membrane/Allrun new file mode 100755 index 0000000000..a1a4a3b4b4 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/Allrun @@ -0,0 +1,20 @@ +#!/bin/sh + +cd ${0%/*} || exit 1 cd ${0%/*} || exit 1 + +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +cp \ + $FOAM_TUTORIALS/resources/geometry/membrane-boundaries.stl.gz \ + $FOAM_TUTORIALS/resources/geometry/membrane-membrane.stl.gz \ + constant/triSurface + +runApplication blockMesh +runApplication snappyHexMesh -overwrite +runApplication createBaffles -overwrite + +cp -r 0.orig 0 + +runApplication setFields + +runApplication reactingFoam diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/chemistryProperties b/tutorials/combustion/reactingFoam/RAS/membrane/constant/chemistryProperties new file mode 100644 index 0000000000..bc57da4faa --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/chemistryProperties @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object chemistryProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +chemistryType +{ + chemistrySolver EulerImplicit; + chemistryThermo psi; +} + +chemistry off; + +initialChemicalTimeStep 1e-07; + +EulerImplicitCoeffs +{ + cTauChem 1; + equilibriumRateLimiter off; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/combustionProperties b/tutorials/combustion/reactingFoam/RAS/membrane/constant/combustionProperties new file mode 100644 index 0000000000..cc5d8b6953 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/combustionProperties @@ -0,0 +1,21 @@ +/*-----------------m---------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object combustionProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +combustionModel noCombustion; + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/reactions b/tutorials/combustion/reactingFoam/RAS/membrane/constant/reactions new file mode 100644 index 0000000000..a6785ffce5 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/reactions @@ -0,0 +1,40 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class IOobject; + location "constant"; + object reactions; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +species +( + O2 + H2O + CH4 + CO2 + N2 +); + +reactions +{ + methaneReaction + { + type irreversibleArrheniusReaction; + reaction "CH4 + 2O2 = CO2 + 2H2O"; + A 5.2e16; + beta 0; + Ta 14906; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermo.compressibleGas b/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermo.compressibleGas new file mode 100644 index 0000000000..1bacad52c3 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermo.compressibleGas @@ -0,0 +1,124 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermo.compressibleGas; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +O2 +{ + specie + { + molWeight 31.9988; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 3.69758 0.00061352 -1.25884e-07 1.77528e-11 -1.13644e-15 -1233.93 3.18917 ); + lowCpCoeffs ( 3.21294 0.00112749 -5.75615e-07 1.31388e-09 -8.76855e-13 -1005.25 6.03474 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +H2O +{ + specie + { + molWeight 18.0153; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.67215 0.00305629 -8.73026e-07 1.201e-10 -6.39162e-15 -29899.2 6.86282 ); + lowCpCoeffs ( 3.38684 0.00347498 -6.3547e-06 6.96858e-09 -2.50659e-12 -30208.1 2.59023 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CH4 +{ + specie + { + molWeight 16.0428; + } + thermodynamics + { + Tlow 200; + Thigh 6000; + Tcommon 1000; + highCpCoeffs ( 1.63543 0.0100844 -3.36924e-06 5.34973e-10 -3.15528e-14 -10005.6 9.9937 ); + lowCpCoeffs ( 5.14988 -0.013671 4.91801e-05 -4.84744e-08 1.66694e-11 -10246.6 -4.64132 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +CO2 +{ + specie + { + molWeight 44.01; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 4.45362 0.00314017 -1.27841e-06 2.394e-10 -1.66903e-14 -48967 -0.955396 ); + lowCpCoeffs ( 2.27572 0.00992207 -1.04091e-05 6.86669e-09 -2.11728e-12 -48373.1 10.1885 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + +N2 +{ + specie + { + molWeight 28.0134; + } + thermodynamics + { + Tlow 200; + Thigh 5000; + Tcommon 1000; + highCpCoeffs ( 2.92664 0.00148798 -5.68476e-07 1.0097e-10 -6.75335e-15 -922.798 5.98053 ); + lowCpCoeffs ( 3.29868 0.00140824 -3.96322e-06 5.64152e-09 -2.44486e-12 -1020.9 3.95037 ); + } + transport + { + As 1.67212e-06; + Ts 170.672; + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermophysicalProperties b/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermophysicalProperties new file mode 100644 index 0000000000..ae01272133 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/thermophysicalProperties @@ -0,0 +1,38 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type hePsiThermo; + mixture reactingMixture; + transport sutherland; + thermo janaf; + energy sensibleEnthalpy; + equationOfState perfectGas; + specie specie; +} + +inertSpecie N2; + +chemistryReader foamChemistryReader; + +foamChemistryFile "$FOAM_CASE/constant/reactions"; + +foamChemistryThermoFile "$FOAM_CASE/constant/thermo.compressibleGas"; + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/triSurface/README b/tutorials/combustion/reactingFoam/RAS/membrane/constant/triSurface/README new file mode 100644 index 0000000000..de3f29cc01 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/triSurface/README @@ -0,0 +1,4 @@ +Directory to house tri-surfaces + +The Allrun script copies the surface from the $FOAM_TUTORIALS/resources/geometry +directory diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/constant/turbulenceProperties b/tutorials/combustion/reactingFoam/RAS/membrane/constant/turbulenceProperties new file mode 100644 index 0000000000..1c29480655 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/constant/turbulenceProperties @@ -0,0 +1,28 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RAS; + +RAS +{ + RASModel kEpsilon; + turbulence on; + printCoeffs on; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/blockMeshDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/blockMeshDict new file mode 100644 index 0000000000..3f4debb577 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/blockMeshDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + (-2.5 -1.2 -3.0) + ( 2.5 -1.2 -3.0) + (-2.5 1.2 -3.0) + ( 2.5 1.2 -3.0) + + (-2.5 -1.2 3.0) + ( 2.5 -1.2 3.0) + (-2.5 1.2 3.0) + ( 2.5 1.2 3.0) +); + +blocks +( + hex (0 1 3 2 4 5 7 6) (50 24 60) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/controlDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/controlDict new file mode 100644 index 0000000000..054b700d3b --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/controlDict @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application reactingFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 10; + +deltaT 1e-3; + +writeControl adjustableRunTime; + +writeInterval 0.1; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +adjustTimeStep yes; + +maxCo 1; + +libs ( "libsemiPermeableBaffle.so" ); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/createBafflesDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/createBafflesDict new file mode 100644 index 0000000000..9034328160 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/createBafflesDict @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object createBafflesDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +internalFacesOnly true; + +baffles +{ + membrane + { + type faceZone; + zoneName membrane; + + patches + { + master + { + name membranePipe; + type wall; + } + slave + { + name membraneSleeve; + type wall; + } + } + } +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSchemes b/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSchemes new file mode 100644 index 0000000000..aa30ea080e --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSchemes @@ -0,0 +1,57 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + + div(phi,U) Gauss limitedLinearV 1; + div(phi,Yi_h) Gauss limitedLinear 1; + div(phi,K) Gauss limitedLinear 1; + div(phid,p) Gauss limitedLinear 1; + div(phi,epsilon) Gauss limitedLinear 1; + div(phi,k) Gauss limitedLinear 1; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear orthogonal; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default orthogonal; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSolution b/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSolution new file mode 100644 index 0000000000..742e7689da --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/fvSolution @@ -0,0 +1,69 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "rho.*" + { + solver diagonal; + } + + p + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.1; + } + + pFinal + { + $p; + tolerance 1e-6; + relTol 0.0; + } + + "(U|h|k|epsilon)" + { + solver PBiCGStab; + preconditioner DILU; + tolerance 1e-6; + relTol 0.1; + } + + "(U|h|k|epsilon)Final" + { + $U; + relTol 0; + } + + Yi + { + $hFinal; + } +} + +PIMPLE +{ + momentumPredictor yes; + nOuterCorrectors 1; + nCorrectors 2; + nNonOrthogonalCorrectors 0; +} + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/meshQualityDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/meshQualityDict new file mode 100644 index 0000000000..61a552d4ca --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/meshQualityDict @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object meshQualityDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#includeEtc "caseDicts/meshQualityDict" + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/setFieldsDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/setFieldsDict new file mode 100644 index 0000000000..2d48a1d7f6 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/setFieldsDict @@ -0,0 +1,42 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object setFieldsDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "../0.orig/include" + +defaultFieldValues +( + volScalarFieldValue CH4 $:sleeve.CH4 + volScalarFieldValue N2 $:sleeve.N2 + volScalarFieldValue O2 $:sleeve.O2 +); + +regions +( + zoneToCell + { + name pipe; + fieldValues + ( + volScalarFieldValue CH4 $:pipe.CH4 + volScalarFieldValue N2 $:pipe.N2 + volScalarFieldValue O2 $:pipe.O2 + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/combustion/reactingFoam/RAS/membrane/system/snappyHexMeshDict b/tutorials/combustion/reactingFoam/RAS/membrane/system/snappyHexMeshDict new file mode 100644 index 0000000000..c96c87bcb6 --- /dev/null +++ b/tutorials/combustion/reactingFoam/RAS/membrane/system/snappyHexMeshDict @@ -0,0 +1,168 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object snappyHexMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#includeEtc "caseDicts/mesh/generation/snappyHexMeshDict.cfg" + +castellatedMesh true; +snap true; +addLayers false; + +geometry +{ + boundaries + { + type triSurfaceMesh; + file "membrane-boundaries.stl"; + + regions + { + inletSleeve + { + name inletSleeve; + } + inletPipe + { + name inletPipe; + } + outletSleeve + { + name outletSleeve; + } + outletPipe + { + name outletPipe; + } + wallSleeve + { + name wallSleeve; + } + wallPipe + { + name wallPipe; + } + } + } + membrane + { + type triSurfaceMesh; + file "membrane-membrane.stl"; + } +}; + +castellatedMeshControls +{ + features (); + + refinementSurfaces + { + boundaries + { + level (0 0); + + regions + { + inletSleeve + { + level (0 0); + patchInfo + { + type patch; + inGroups (inlet); + } + } + inletPipe + { + level (0 0); + patchInfo + { + type patch; + inGroups (inlet); + } + } + outletSleeve + { + level (0 0); + patchInfo + { + type patch; + inGroups (outlet); + } + } + outletPipe + { + level (0 0); + patchInfo + { + type patch; + inGroups (outlet); + } + } + wallSleeve + { + level (0 0); + patchInfo + { + type wall; + inGroups (wall); + } + } + wallPipe + { + level (0 0); + patchInfo + { + type wall; + inGroups (wall); + } + } + } + } + membrane + { + level (0 0); + cellZone pipe; + faceZone membrane; + cellZoneInside insidePoint; + insidePoint (0 0 0); + } + } + + refinementRegions {} + + locationInMesh (0 0 0); +} + +snapControls +{ + implicitFeatureSnap true; +} + +addLayersControls +{ + relativeSizes true; + minThickness 0.25; + finalLayerThickness 0.3; + expansionRatio 1.0; + layers {} +} + +meshQualityControls +{ + #includeEtc "caseDicts/mesh/generation/meshQualityDict.cfg" +} + +// ************************************************************************* // diff --git a/tutorials/resources/geometry/membrane-boundaries.stl.gz b/tutorials/resources/geometry/membrane-boundaries.stl.gz new file mode 100644 index 0000000000..46f59660ca Binary files /dev/null and b/tutorials/resources/geometry/membrane-boundaries.stl.gz differ diff --git a/tutorials/resources/geometry/membrane-membrane.stl.gz b/tutorials/resources/geometry/membrane-membrane.stl.gz new file mode 100644 index 0000000000..af78547012 Binary files /dev/null and b/tutorials/resources/geometry/membrane-membrane.stl.gz differ