From 79ad0f0613eb487cf8b042f9ca598691f5c451bf Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Thu, 19 Oct 2017 10:00:36 +0100 Subject: [PATCH] ENH: semiPermeableBaffle: Added two new boundary conditions and a tutorial Two boundary conditions for the modelling of semi-permeable baffles have been added. These baffles are permeable to a number of species within the flow, and are impermeable to others. The flux of a given species is calculated as a constant multipled by the drop in mass fraction across the baffle. The species mass-fraction condition requires the transfer constant and the name of the patch on the other side of the baffle: boundaryField { // ... membraneA { type semiPermeableBaffleMassFraction; samplePatch membranePipe; c 0.1; value uniform 0; } membraneB { type semiPermeableBaffleMassFraction; samplePatch membraneSleeve; c 0.1; value uniform 1; } } If the value of c is omitted, or set to zero, then the patch is considered impermeable to the species in question. The samplePatch entry can also be omitted in this case. The velocity condition does not require any special input: boundaryField { // ... membraneA { type semiPermeableBaffleVelocity; value uniform (0 0 0); } membraneB { type semiPermeableBaffleVelocity; value uniform (0 0 0); } } These two boundary conditions must be used in conjunction, and the mass-fraction condition must be applied to all species in the simulation. The calculation will fail with an error message if either is used in isolation. A tutorial, combustion/reactingFoam/RAS/membrane, has been added which demonstrates this transfer process. This work was done with support from Stefan Lipp, at BASF. --- src/Allwmake | 1 + src/semiPermeableBaffle/Make/files | 4 + src/semiPermeableBaffle/Make/options | 17 ++ ...ableBaffleMassFractionFvPatchScalarField.C | 190 ++++++++++++++++ ...ableBaffleMassFractionFvPatchScalarField.H | 202 ++++++++++++++++++ ...ermeableBaffleVelocityFvPatchVectorField.C | 187 ++++++++++++++++ ...ermeableBaffleVelocityFvPatchVectorField.H | 182 ++++++++++++++++ .../reactingFoam/RAS/membrane/0.orig/CH4 | 69 ++++++ .../reactingFoam/RAS/membrane/0.orig/N2 | 65 ++++++ .../reactingFoam/RAS/membrane/0.orig/O2 | 65 ++++++ .../reactingFoam/RAS/membrane/0.orig/T | 42 ++++ .../reactingFoam/RAS/membrane/0.orig/U | 56 +++++ .../reactingFoam/RAS/membrane/0.orig/Ydefault | 52 +++++ .../reactingFoam/RAS/membrane/0.orig/alphat | 42 ++++ .../reactingFoam/RAS/membrane/0.orig/epsilon | 44 ++++ .../reactingFoam/RAS/membrane/0.orig/include | 33 +++ .../reactingFoam/RAS/membrane/0.orig/k | 44 ++++ .../reactingFoam/RAS/membrane/0.orig/nut | 42 ++++ .../reactingFoam/RAS/membrane/0.orig/p | 40 ++++ .../reactingFoam/RAS/membrane/Allclean | 7 + .../reactingFoam/RAS/membrane/Allrun | 20 ++ .../RAS/membrane/constant/chemistryProperties | 35 +++ .../membrane/constant/combustionProperties | 21 ++ .../RAS/membrane/constant/reactions | 40 ++++ .../membrane/constant/thermo.compressibleGas | 124 +++++++++++ .../constant/thermophysicalProperties | 38 ++++ .../RAS/membrane/constant/triSurface/README | 4 + .../membrane/constant/turbulenceProperties | 28 +++ .../RAS/membrane/system/blockMeshDict | 49 +++++ .../RAS/membrane/system/controlDict | 55 +++++ .../RAS/membrane/system/createBafflesDict | 43 ++++ .../RAS/membrane/system/fvSchemes | 57 +++++ .../RAS/membrane/system/fvSolution | 69 ++++++ .../RAS/membrane/system/meshQualityDict | 20 ++ .../RAS/membrane/system/setFieldsDict | 42 ++++ .../RAS/membrane/system/snappyHexMeshDict | 168 +++++++++++++++ .../geometry/membrane-boundaries.stl.gz | Bin 0 -> 108923 bytes .../geometry/membrane-membrane.stl.gz | Bin 0 -> 1470 bytes 38 files changed, 2197 insertions(+) create mode 100644 src/semiPermeableBaffle/Make/files create mode 100644 src/semiPermeableBaffle/Make/options create mode 100644 src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.C create mode 100644 src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleMassFraction/semiPermeableBaffleMassFractionFvPatchScalarField.H create mode 100644 src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.C create mode 100644 src/semiPermeableBaffle/derivedFvPatchFields/semiPermeableBaffleVelocity/semiPermeableBaffleVelocityFvPatchVectorField.H create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/CH4 create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/N2 create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/O2 create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/T create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/U create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/Ydefault create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/alphat create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/epsilon create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/include create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/k create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/nut create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/0.orig/p create mode 100755 tutorials/combustion/reactingFoam/RAS/membrane/Allclean create mode 100755 tutorials/combustion/reactingFoam/RAS/membrane/Allrun create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/chemistryProperties create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/combustionProperties create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/reactions create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/thermo.compressibleGas create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/thermophysicalProperties create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/triSurface/README create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/constant/turbulenceProperties create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/blockMeshDict create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/controlDict create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/createBafflesDict create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/fvSchemes create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/fvSolution create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/meshQualityDict create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/setFieldsDict create mode 100644 tutorials/combustion/reactingFoam/RAS/membrane/system/snappyHexMeshDict create mode 100644 tutorials/resources/geometry/membrane-boundaries.stl.gz create mode 100644 tutorials/resources/geometry/membrane-membrane.stl.gz 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 0000000000000000000000000000000000000000..46f59660ca980641970601f94dd6a31a56a015c4 GIT binary patch literal 108923 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π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

v67ndVu3xjRqH^q4uG8ySf_f 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%0D_Vy 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 literal 0 HcmV?d00001 diff --git a/tutorials/resources/geometry/membrane-membrane.stl.gz b/tutorials/resources/geometry/membrane-membrane.stl.gz new file mode 100644 index 0000000000000000000000000000000000000000..af785470122f8b856e2588788d2d697a121c45a5 GIT binary patch literal 1470 zcmV;v1wr~BiwFq)W9V4`18rq(Vsc?_Wi4%GZDMj^Ze=cWbZh{!ChRf)7@9GPGicSjZIUk1EGfB?5?jrZugx(t!n=d)vz=MZ~2N;N=Yx3?(eht zlIuF&@Db8sbu8oV82}?KHLZi8jxL^JiOxp!%^pQ%{A&rN0C+*N~!ilN&w<-xiviRTDHLl zAQ+XwsOrZMrs8~E;xAuwP5^^TF^y&MH#sF=&b4{xOIezZ$wy}G-8a}D!Kw^K)viW$ zjK!}$+^1ZC*&L@>%A(AbILBqD(R(N^h53VzW69^s>E5opd{h^RxieFDfAPNL_4*u2 zFl;@}gq7&)GLM~)A*OTAon3eRs4kSVZDVpjhh=xnO}X!O%<955*Qj5VZIW0gIUjgHinSg zn3n6qxNfik1jw85(qPtJ45&1iwI!rjuXlNM>GPlnqa~_7kCu^%&xh%~5RA%TRP{(w z`ZW?9(Z&*rL5^DN4`G%D!)o2L^C^V-nM3#Ut$+vv&MDp?NQy-obEXysvosvmxK|)` zuuWnRcbnJ5X9f-$?2ceo2BWGs%{m{)dZdjR6lgTY85a4dE)bJ(std&2n`yhh#2EZ?eF~{~q*{%{*}N_gvyXgK7l_%k z(fRUZUyckY1!9o`UY~6WitY*2rEW_ef@@Fv2=>u6kg{Wf;o;sjNv@6w)-C$g8An4N zf@@B_HBioBA-%9QL>AElyGJmf(qPt>+6SpUnb2z+L%3YnS_RZIpweL0CWl7q8i;h7 zYHNvvbV72b7X&H|hiy8@N9shdkR{oUI^+-opU3HhU{waAs>hNtzz|N7Z4IH?34hkD z7lTzA4y)cMf1bG{{n1tu3$N#AE-gncEmAoJFvh*1v4l_R8aRm?bygdU+X(^}hvM$- ztTiao7oiA<);_Z^gw}BAFkjP+16GFv?=6iXHtAz*0-`oX9S+=$16GFv?=5Y+PEv0> zj}x^U!_Uxyq=Gt^O74VURR*IP58T0X8y!o+y2BdwM}VcFtj&}9Rv9FHX;7+g5L~=E zYO|R`%7(ScQy^P&0i;g`kdT}gmQUXB5gf2O9GH9aL35OZ^k+$=dH!GaKnMzt46R3E zR2;B69Jq1Oy(I=neah|FRed+)-pXMc?2ceo2BR8}tHN$WS{T1ua=w6Xu{(ra8VqZ! zgThfcy2!#?q}Cmh2?3UdvbK3Uy|cq#$pg1W?K>kq0xS)F{jl||LamcSGX{bKW)1rz zz|v6G=G2Y$pqm&uZ%yI1irZYo5eTxcu*<`dtuGpq{xv-*9U$!A_$He%fCpk%hXY$n zjij$NN)w&n#Q&k?Lr8FaICIm&ONQc$*nJz*(_cZMwx2;!>E%QySQ;xWq)%cJyuA@t z8NSJ83}893tHXiSgGsw9CHTi8gl^`WY{o#IhglsCtbQKa-}oR^QVdEc95vaD0Xz@8 YIviMd9`lEv+h6(m7mE&tH}y*Z0GlAqrT_o{ literal 0 HcmV?d00001