From 7e810605fe9277fb3f219a5092f8a1aef800711a Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 8 Apr 2011 10:03:02 +0100 Subject: [PATCH 001/141] ENH: Updated kinematic cloud theta field calculation --- .../KinematicCloud/KinematicCloudI.H | 26 +++---------------- 1 file changed, 3 insertions(+), 23 deletions(-) diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H index 5987192bfd..568d089030 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H @@ -370,42 +370,22 @@ Foam::KinematicCloud::theta() const false ), mesh_, - dimensionedScalar("zero", dimless, 0.0) + dimensionedScalar("zero", dimless, 0.0), + zeroGradientFvPatchScalarField::typeName ) ); volScalarField& theta = ttheta(); - theta.boundaryField() == 0; - forAllConstIter(typename KinematicCloud, *this, iter) { const parcelType& p = iter(); const label cellI = p.cell(); - if ((p.face() != -1)) - { - const label patchI = p.patch(p.face()); - if (patchI != -1) - { - scalarField& thetap = theta.boundaryField()[patchI]; - const label faceI = p.patchFace(patchI, p.face()); - thetap[faceI] += p.nParticle()*p.areaP(); - } - } - theta[cellI] += p.nParticle()*p.volume(); } theta.internalField() /= mesh_.V(); - - forAll(theta.boundaryField(), patchI) - { - scalarField& thetap = theta.boundaryField()[patchI]; - if (thetap.size() > 0) - { - thetap /= mesh_.magSf().boundaryField()[patchI]; - } - } + theta.correctBoundaryConditions(); return ttheta; } From d1fdcc2698c9a6c5e32428a270493f1b4a5a0e71 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 8 Apr 2011 10:05:07 +0100 Subject: [PATCH 002/141] STYLE: minor code changes --- src/OpenFOAM/db/IOstreams/token/token.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenFOAM/db/IOstreams/token/token.H b/src/OpenFOAM/db/IOstreams/token/token.H index c48c22b5c3..0497c75e8d 100644 --- a/src/OpenFOAM/db/IOstreams/token/token.H +++ b/src/OpenFOAM/db/IOstreams/token/token.H @@ -435,11 +435,11 @@ Ostream& operator<<(Ostream&, const token::compound&); #define defineCompoundTypeName(Type, Name) \ - typedef token::Compound tokenCompound##Name##_; \ + typedef token::Compound tokenCompound##Name##_; \ defineTemplateTypeNameAndDebugWithName(tokenCompound##Name##_, #Type, 0); #define addCompoundToRunTimeSelectionTable(Type, Name) \ - token::compound::addIstreamConstructorToTable > \ + token::compound::addIstreamConstructorToTable > \ add##Name##IstreamConstructorToTable_; From 9b764c1a3e3c19f10fd0c1c3964d69b537ab7d87 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 8 Apr 2011 15:14:16 +0100 Subject: [PATCH 003/141] ENH: Updated surface film functionality --- .../regionModel/regionModel1D/regionModel1D.C | 4 - .../regionModel/regionModel1D/regionModel1D.H | 6 - .../regionModel1D/regionModel1DI.H | 6 - .../singleLayerRegion/singleLayerRegion.C | 5 +- src/regionModels/surfaceFilmModels/Make/files | 5 +- ...ilmHeightInletVelocityFvPatchVectorField.C | 4 +- ...alphatFilmWallFunctionFvPatchScalarField.C | 9 +- .../mutkFilmWallFunctionFvPatchScalarField.C | 8 +- .../kinematicSingleLayer.C | 232 ++++++------ .../kinematicSingleLayer.H | 69 ++-- .../kinematicSingleLayerI.H | 22 +- .../surfaceFilmModels/noFilm/noFilm.C | 71 ++-- .../surfaceFilmModels/noFilm/noFilm.H | 59 +-- .../curvatureSeparation/curvatureSeparation.C | 352 ++++++++++++++++++ .../curvatureSeparation/curvatureSeparation.H | 158 ++++++++ .../drippingInjection.C} | 51 ++- .../drippingInjection.H} | 40 +- .../injectionModel/injectionModel.C | 2 +- .../injectionModel/injectionModel.H | 8 +- .../injectionModel/injectionModelNew.C | 7 +- .../injectionModelList/injectionModelList.C | 135 +++++++ .../injectionModelList.H} | 65 ++-- .../injectionModel/noInjection/noInjection.C | 81 ---- .../removeInjection/removeInjection.C | 8 +- .../removeInjection/removeInjection.H | 3 +- .../submodels/subModelBaseI.H | 2 - .../noPhaseChange/noPhaseChange.C | 3 +- .../noPhaseChange/noPhaseChange.H | 3 +- .../phaseChangeModel/phaseChangeModel.C | 46 ++- .../phaseChangeModel/phaseChangeModel.H | 27 ++ .../standardPhaseChange/standardPhaseChange.C | 28 +- .../standardPhaseChange/standardPhaseChange.H | 15 +- .../surfaceFilmModel/surfaceFilmModel.H | 61 +-- .../surfaceFilmModel/surfaceFilmModelI.H | 6 + .../thermoSingleLayer/thermoSingleLayer.C | 186 ++++++--- .../thermoSingleLayer/thermoSingleLayer.H | 24 +- 36 files changed, 1307 insertions(+), 504 deletions(-) create mode 100644 src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C create mode 100644 src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H rename src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/{cloudInjection/cloudInjection.C => drippingInjection/drippingInjection.C} (70%) rename src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/{cloudInjection/cloudInjection.H => drippingInjection/drippingInjection.H} (75%) create mode 100644 src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C rename src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/{noInjection/noInjection.H => injectionModelList/injectionModelList.H} (62%) delete mode 100644 src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C diff --git a/src/regionModels/regionModel/regionModel1D/regionModel1D.C b/src/regionModels/regionModel/regionModel1D/regionModel1D.C index 8997340266..19bf9f2ece 100644 --- a/src/regionModels/regionModel/regionModel1D/regionModel1D.C +++ b/src/regionModels/regionModel/regionModel1D/regionModel1D.C @@ -114,8 +114,6 @@ void Foam::regionModels::regionModel1D::initialise() boundaryFaceCells_[localPyrolysisFaceI].transfer(cellIDs); localPyrolysisFaceI++; - - nLayers_ = nCells; } } @@ -268,7 +266,6 @@ Foam::regionModels::regionModel1D::regionModel1D(const fvMesh& mesh) boundaryFaceFaces_(), boundaryFaceCells_(), boundaryFaceOppositeFace_(), - nLayers_(0), nMagSfPtr_(NULL), moveMesh_(false) {} @@ -286,7 +283,6 @@ Foam::regionModels::regionModel1D::regionModel1D boundaryFaceFaces_(regionMesh().nCells()), boundaryFaceCells_(regionMesh().nCells()), boundaryFaceOppositeFace_(regionMesh().nCells()), - nLayers_(0), nMagSfPtr_(NULL), moveMesh_(true) { diff --git a/src/regionModels/regionModel/regionModel1D/regionModel1D.H b/src/regionModels/regionModel/regionModel1D/regionModel1D.H index 35a6b75dfc..650dea510f 100644 --- a/src/regionModels/regionModel/regionModel1D/regionModel1D.H +++ b/src/regionModels/regionModel/regionModel1D/regionModel1D.H @@ -88,9 +88,6 @@ protected: //- Global boundary face IDs oppossite coupled patch labelList boundaryFaceOppositeFace_; - //- Number of layers in the region - label nLayers_; - // Geometry @@ -155,9 +152,6 @@ public: //- Return the global boundary face IDs oppossite coupled patch inline const labelList& boundaryFaceOppositeFace() const; - //- Return the number of layers in the region - inline label nLayers() const; - // Geometry diff --git a/src/regionModels/regionModel/regionModel1D/regionModel1DI.H b/src/regionModels/regionModel/regionModel1D/regionModel1DI.H index 7ab5cf08a5..55e61d3eef 100644 --- a/src/regionModels/regionModel/regionModel1D/regionModel1DI.H +++ b/src/regionModels/regionModel/regionModel1D/regionModel1DI.H @@ -49,12 +49,6 @@ Foam::regionModels::regionModel1D::boundaryFaceOppositeFace() const } -inline Foam::label Foam::regionModels::regionModel1D::nLayers() const -{ - return nLayers_; -} - - inline const Foam::surfaceScalarField& Foam::regionModels::regionModel1D::nMagSf() const { diff --git a/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.C b/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.C index adb3bf8a88..91dbaba9eb 100644 --- a/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.C +++ b/src/regionModels/regionModel/singleLayerRegion/singleLayerRegion.C @@ -111,14 +111,12 @@ void Foam::regionModels::singleLayerRegion::initialise() if (nBoundaryFaces != regionMesh().nCells()) { - /* FatalErrorIn("singleLayerRegion::initialise()") << "Number of primary region coupled boundary faces not equal to " << "the number of cells in the local region" << nl << nl << "Number of cells = " << regionMesh().nCells() << nl << "Boundary faces = " << nBoundaryFaces << nl << abort(FatalError); - */ } scalarField passiveMagSf(magSf.size(), 0.0); @@ -178,12 +176,11 @@ Foam::regionModels::singleLayerRegion::singleLayerRegion bool readFields ) : - regionModel(mesh, regionType, modelName, readFields), + regionModel(mesh, regionType, modelName, false), nHatPtr_(NULL), magSfPtr_(NULL), passivePatchIDs_() { - Info << "singleLayerRegion" << endl; if (active_) { constructMeshObjects(); diff --git a/src/regionModels/surfaceFilmModels/Make/files b/src/regionModels/surfaceFilmModels/Make/files index e13af06b6e..a0e33184d6 100644 --- a/src/regionModels/surfaceFilmModels/Make/files +++ b/src/regionModels/surfaceFilmModels/Make/files @@ -12,9 +12,10 @@ submodels/subModelBase.C KINEMATICMODELS=submodels/kinematic $(KINEMATICMODELS)/injectionModel/injectionModel/injectionModel.C $(KINEMATICMODELS)/injectionModel/injectionModel/injectionModelNew.C -$(KINEMATICMODELS)/injectionModel/noInjection/noInjection.C -$(KINEMATICMODELS)/injectionModel/cloudInjection/cloudInjection.C +$(KINEMATICMODELS)/injectionModel/injectionModelList/injectionModelList.C +$(KINEMATICMODELS)/injectionModel/drippingInjection/drippingInjection.C $(KINEMATICMODELS)/injectionModel/removeInjection/removeInjection.C +$(KINEMATICMODELS)/injectionModel/curvatureSeparation/curvatureSeparation.C THERMOMODELS=submodels/thermo $(THERMOMODELS)/phaseChangeModel/phaseChangeModel/phaseChangeModel.C diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C index 3ac7e91792..df4922f7ac 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.C @@ -123,10 +123,10 @@ void Foam::filmHeightInletVelocityFvPatchVectorField::updateCoeffs() const fvPatchField& deltafp = patch().lookupPatchField(deltafName_); - const vectorField& n = patch().nf(); + vectorField n(patch().nf()); const scalarField& magSf = patch().magSf(); - operator==(deltafp*n*phip/(rhop*magSf*sqr(deltafp) + ROOTVSMALL)); + operator==(n*phip/(rhop*magSf*deltafp + ROOTVSMALL)); fixedValueFvPatchVectorField::updateCoeffs(); } diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C index 68fd285da8..2dbbe9b4fb 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.C @@ -156,9 +156,9 @@ void alphatFilmWallFunctionFvPatchScalarField::updateCoeffs() const mapDistribute& distMap = filmModel.mappedPatches()[filmPatchI].map(); - scalarField mDotFilm = - filmModel.massPhaseChangeForPrimary().boundaryField()[filmPatchI]; - distMap.distribute(mDotFilm); + tmp mDotFilm(filmModel.primaryMassTrans()); + scalarField mDotFilmp = mDotFilm().boundaryField()[filmPatchI]; + distMap.distribute(mDotFilmp); // Retrieve RAS turbulence model const RASModel& rasModel = db().lookupObject("RASProperties"); @@ -185,7 +185,7 @@ void alphatFilmWallFunctionFvPatchScalarField::updateCoeffs() scalar Pr = muw[faceI]/alphaw[faceI]; scalar factor = 0.0; - scalar mStar = mDotFilm[faceI]/(y[faceI]*uTau); + scalar mStar = mDotFilmp[faceI]/(y[faceI]*uTau); if (yPlus > yPlusCrit_) { scalar expTerm = exp(min(50.0, yPlusCrit_*mStar*Pr)); @@ -209,6 +209,7 @@ void alphatFilmWallFunctionFvPatchScalarField::updateCoeffs() } + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void alphatFilmWallFunctionFvPatchScalarField::write(Ostream& os) const diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.C b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.C index 61bd0ddfb7..12c4426e94 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.C +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.C @@ -72,9 +72,9 @@ tmp mutkFilmWallFunctionFvPatchScalarField::calcUTau const mapDistribute& distMap = filmModel.mappedPatches()[filmPatchI].map(); - scalarField mDotFilm = - filmModel.massPhaseChangeForPrimary().boundaryField()[filmPatchI]; - distMap.distribute(mDotFilm); + tmp mDotFilm(filmModel.primaryMassTrans()); + scalarField mDotFilmp = mDotFilm().boundaryField()[filmPatchI]; + distMap.distribute(mDotFilmp); // Retrieve RAS turbulence model @@ -95,7 +95,7 @@ tmp mutkFilmWallFunctionFvPatchScalarField::calcUTau scalar yPlus = y[faceI]*ut/(muw[faceI]/rhow[faceI]); - scalar mStar = mDotFilm[faceI]/(y[faceI]*ut); + scalar mStar = mDotFilmp[faceI]/(y[faceI]*ut); scalar factor = 0.0; if (yPlus > yPlusCrit_) diff --git a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.C b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.C index c072c45789..ccf431720a 100644 --- a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.C +++ b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.C @@ -35,9 +35,6 @@ License #include "directMappedWallPolyPatch.H" #include "mapDistribute.H" -// Sub-models -#include "injectionModel.H" - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -66,7 +63,6 @@ bool kinematicSingleLayer::read() solution.lookup("nNonOrthCorr") >> nNonOrthCorr_; coeffs_.lookup("Cf") >> Cf_; - coeffs_.lookup("deltaStable") >> deltaStable_; return true; } @@ -99,6 +95,11 @@ void kinematicSingleLayer::correctThermoFields() void kinematicSingleLayer::resetPrimaryRegionSourceTerms() { + if (debug) + { + Info<< "kinematicSingleLayer::resetPrimaryRegionSourceTerms()" << endl; + } + rhoSpPrimary_ == dimensionedScalar("zero", rhoSp_.dimensions(), 0.0); USpPrimary_ == dimensionedVector("zero", USp_.dimensions(), vector::zero); pSpPrimary_ == dimensionedScalar("zero", pSp_.dimensions(), 0.0); @@ -107,6 +108,11 @@ void kinematicSingleLayer::resetPrimaryRegionSourceTerms() void kinematicSingleLayer::transferPrimaryRegionThermoFields() { + if (debug) + { + Info<< "kinematicSingleLayer::" + << "transferPrimaryRegionThermoFields()" << endl; + } // Update fields from primary region via direct mapped // (coupled) boundary conditions UPrimary_.correctBoundaryConditions(); @@ -118,6 +124,12 @@ void kinematicSingleLayer::transferPrimaryRegionThermoFields() void kinematicSingleLayer::transferPrimaryRegionSourceFields() { + if (debug) + { + Info<< "kinematicSingleLayer::" + << "transferPrimaryRegionSourceFields()" << endl; + } + // Retrieve the source fields from the primary region via direct mapped // (coupled) boundary conditions // - fields require transfer of values for both patch AND to push the @@ -132,10 +144,6 @@ void kinematicSingleLayer::transferPrimaryRegionSourceFields() rhoSp_.field() /= magSf()*deltaT; USp_.field() /= magSf()*deltaT; pSp_.field() /= magSf()*deltaT; - - // reset transfer to primary fields - massForPrimary_ == dimensionedScalar("zero", dimMass, 0.0); - diametersForPrimary_ == dimensionedScalar("zero", dimLength, -1.0); } @@ -154,7 +162,7 @@ tmp kinematicSingleLayer::pu() IOobject::NO_WRITE ), pPrimary_ // pressure (mapped from primary region) - + pSp_ // accumulated particle impingement + - pSp_ // accumulated particle impingement - fvc::laplacian(sigma_, delta_) // surface tension ) ); @@ -181,51 +189,25 @@ tmp kinematicSingleLayer::pp() } -void kinematicSingleLayer::correctDetachedFilm() -{ - tmp tgNorm(this->gNorm()); - const scalarField& gNorm = tgNorm(); - const scalarField& magSf = this->magSf(); - - forAll(gNorm, i) - { - if (gNorm[i] > SMALL) - { - const scalar ddelta = max(0.0, delta_[i] - deltaStable_.value()); - massForPrimary_[i] = - max - ( - 0.0, - ddelta*rho_[i]*magSf[i] - massPhaseChangeForPrimary_[i] - ); - } - } -} - - void kinematicSingleLayer::updateSubmodels() { - correctDetachedFilm(); + if (debug) + { + Info<< "kinematicSingleLayer::updateSubmodels()" << endl; + } - // Update injection model - mass returned is actual mass injected - injection_->correct(massForPrimary_, diametersForPrimary_); - - // Update cumulative detached mass counter - injectedMassTotal_ += sum(massForPrimary_.field()); - - // Push values to boundaries ready for transfer to the primary region - massForPrimary_.correctBoundaryConditions(); - diametersForPrimary_.correctBoundaryConditions(); + // Update injection model - mass returned is mass available for injection + injection_.correct(availableMass_, cloudMassTrans_, cloudDiameterTrans_); // Update source fields const dimensionedScalar deltaT = time().deltaT(); - rhoSp_ -= (massForPrimary_ + massPhaseChangeForPrimary_)/magSf()/deltaT; + rhoSp_ += cloudMassTrans_/magSf()/deltaT; } void kinematicSingleLayer::continuityCheck() { - const volScalarField deltaRho0 = deltaRho_; + const volScalarField deltaRho0(deltaRho_); solveContinuity(); @@ -241,7 +223,7 @@ void kinematicSingleLayer::continuityCheck() fvc::domainIntegrate(mag(mass - magSf()*deltaRho0))/totalMass ).value(); - const scalar globalContErr = + const scalar globalContErr = ( fvc::domainIntegrate(mass - magSf()*deltaRho0)/totalMass ).value(); @@ -268,7 +250,7 @@ void kinematicSingleLayer::solveContinuity() fvm::ddt(deltaRho_) + fvc::div(phi_) == - rhoSp_ + - rhoSp_ ); } @@ -305,8 +287,8 @@ tmp kinematicSingleLayer::tau(volVectorField& U) const return ( - - fvm::Sp(Cs, U) + Cs*Us_ - - fvm::Sp(Cw, U) + Cw*Uw_ + - fvm::Sp(Cs, U) + Cs*Us_ // surface contribution + - fvm::Sp(Cw, U) + Cw*Uw_ // wall contribution ); } @@ -330,15 +312,10 @@ tmp kinematicSingleLayer::solveMomentum fvm::ddt(deltaRho_, U_) + fvm::div(phi_, U_) == - USp_ + - USp_ + tau(U_) + fvc::grad(sigma_) - - fvm::Sp - ( - (massForPrimary_ + massPhaseChangeForPrimary_) - /magSf()/time().deltaT(), - U_ - ) + - fvm::SuSp(rhoSp_, U_) ); fvVectorMatrix& UEqn = tUEqn(); @@ -415,6 +392,7 @@ void kinematicSingleLayer::solveThickness surfaceScalarField ddrhorUAppf ( + "deltaCoeff", fvc::interpolate(delta_)*deltarUAf*rhof*fvc::interpolate(pp) ); // constrainFilmField(ddrhorUAppf, 0.0); @@ -428,7 +406,7 @@ void kinematicSingleLayer::solveThickness + fvm::div(phid, delta_) - fvm::laplacian(ddrhorUAppf, delta_) == - rhoSp_ + - rhoSp_ ); deltaEqn.solve(); @@ -475,15 +453,11 @@ kinematicSingleLayer::kinematicSingleLayer momentumPredictor_(solution().subDict("PISO").lookup("momentumPredictor")), nOuterCorr_(readLabel(solution().subDict("PISO").lookup("nOuterCorr"))), nCorr_(readLabel(solution().subDict("PISO").lookup("nCorr"))), - nNonOrthCorr_ - ( - readLabel(solution().subDict("PISO").lookup("nNonOrthCorr")) - ), + nNonOrthCorr_(readLabel(solution().subDict("PISO").lookup("nNonOrthCorr"))), cumulativeContErr_(0.0), Cf_(readScalar(coeffs().lookup("Cf"))), - deltaStable_(coeffs().lookup("deltaStable")), rho_ ( @@ -607,11 +581,11 @@ kinematicSingleLayer::kinematicSingleLayer dimLength*dimMass/dimTime ), - massForPrimary_ + primaryMassTrans_ ( IOobject ( - "massForPrimary", + "primaryMassTrans", time().timeName(), regionMesh(), IOobject::NO_READ, @@ -621,11 +595,25 @@ kinematicSingleLayer::kinematicSingleLayer dimensionedScalar("zero", dimMass, 0.0), zeroGradientFvPatchScalarField::typeName ), - diametersForPrimary_ + cloudMassTrans_ ( IOobject ( - "diametersForPrimary", + "cloudMassTrans", + time().timeName(), + regionMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + regionMesh(), + dimensionedScalar("zero", dimMass, 0.0), + zeroGradientFvPatchScalarField::typeName + ), + cloudDiameterTrans_ + ( + IOobject + ( + "cloudDiameterTrans", time().timeName(), regionMesh(), IOobject::NO_READ, @@ -635,20 +623,6 @@ kinematicSingleLayer::kinematicSingleLayer dimensionedScalar("zero", dimLength, -1.0), zeroGradientFvPatchScalarField::typeName ), - massPhaseChangeForPrimary_ - ( - IOobject - ( - "massPhaseChangeForPrimary", - time().timeName(), - regionMesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - regionMesh(), - dimensionedScalar("zero", dimMass, 0), - zeroGradientFvPatchScalarField::typeName - ), USp_ ( @@ -793,10 +767,11 @@ kinematicSingleLayer::kinematicSingleLayer this->mappedFieldAndInternalPatchTypes() ), - injection_(injectionModel::New(*this, coeffs_)), + availableMass_(regionMesh().nCells(), 0.0), - addedMassTotal_(0.0), - injectedMassTotal_(0.0) + injection_(*this, coeffs_), + + addedMassTotal_(0.0) { if (readFields) { @@ -836,9 +811,9 @@ void kinematicSingleLayer::addSources << " pressure = " << pressureSource << endl; } - rhoSpPrimary_.boundaryField()[patchI][faceI] += massSource; - USpPrimary_.boundaryField()[patchI][faceI] += momentumSource; - pSpPrimary_.boundaryField()[patchI][faceI] += pressureSource; + rhoSpPrimary_.boundaryField()[patchI][faceI] -= massSource; + USpPrimary_.boundaryField()[patchI][faceI] -= momentumSource; + pSpPrimary_.boundaryField()[patchI][faceI] -= pressureSource; addedMassTotal_ += massSource; } @@ -846,22 +821,38 @@ void kinematicSingleLayer::addSources void kinematicSingleLayer::preEvolveRegion() { + if (debug) + { + Info<< "kinematicSingleLayer::preEvolveRegion()" << endl; + } + transferPrimaryRegionThermoFields(); correctThermoFields(); transferPrimaryRegionSourceFields(); + + // Reset transfer fields +// availableMass_ = mass(); + availableMass_ = netMass(); + cloudMassTrans_ == dimensionedScalar("zero", dimMass, 0.0); + cloudDiameterTrans_ == dimensionedScalar("zero", dimLength, -1.0); } void kinematicSingleLayer::evolveRegion() { + if (debug) + { + Info<< "kinematicSingleLayer::evolveRegion()" << endl; + } + updateSubmodels(); // Solve continuity for deltaRho_ solveContinuity(); - // Implicit pressure source coefficient + // Implicit pressure source coefficient - constant tmp tpp(this->pp()); for (int oCorr=0; oCorr kinematicSingleLayer::primaryMassTrans() const { - return massForPrimary_; + return tmp + ( + new volScalarField + ( + IOobject + ( + "kinematicSingleLayer::primaryMassTrans", + time().timeName(), + primaryMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + primaryMesh(), + dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) + ) + ); } -const volScalarField& kinematicSingleLayer::diametersForPrimary() const +const volScalarField& kinematicSingleLayer::cloudMassTrans() const { - return diametersForPrimary_; + return cloudMassTrans_; } -const volScalarField& kinematicSingleLayer::massPhaseChangeForPrimary() const +const volScalarField& kinematicSingleLayer::cloudDiameterTrans() const { - return massPhaseChangeForPrimary_; + return cloudDiameterTrans_; } @@ -1028,18 +1041,18 @@ void kinematicSingleLayer::info() const << returnReduce(addedMassTotal_, sumOp()) << nl << indent << "current mass = " << gSum((deltaRho_*magSf())()) << nl - << indent << "injected mass = " - << returnReduce(injectedMassTotal_, sumOp()) << nl << indent << "min/max(mag(U)) = " << min(mag(U_)).value() << ", " << max(mag(U_)).value() << nl << indent << "min/max(delta) = " << min(delta_).value() << ", " << max(delta_).value() << nl; + + injection_.info(Info); } -tmp > kinematicSingleLayer::Srho() const +tmp > kinematicSingleLayer::Srho() const { - tmp > tSrho + return tmp > ( new DimensionedField ( @@ -1056,37 +1069,12 @@ tmp > kinematicSingleLayer::Srho() const dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) ) ); - - scalarField& Srho = tSrho(); - const scalarField& V = primaryMesh().V(); - const scalar dt = time_.deltaTValue(); - - forAll(intCoupledPatchIDs(), i) - { - const label filmPatchI = intCoupledPatchIDs()[i]; - const mapDistribute& distMap = mappedPatches_[filmPatchI].map(); - - scalarField patchMass = - massPhaseChangeForPrimary_.boundaryField()[filmPatchI]; - distMap.distribute(patchMass); - - const label primaryPatchI = primaryPatchIDs()[i]; - const unallocLabelList& cells = - primaryMesh().boundaryMesh()[primaryPatchI].faceCells(); - - forAll(patchMass, j) - { - Srho[cells[j]] = patchMass[j]/(V[cells[j]]*dt); - } - } - - return tSrho; } tmp > kinematicSingleLayer::Srho ( - const label + const label i ) const { return tmp > @@ -1095,7 +1083,7 @@ tmp > kinematicSingleLayer::Srho ( IOobject ( - "kinematicSingleLayer::Srho(i)", + "kinematicSingleLayer::Srho(" + Foam::name(i) + ")", time().timeName(), primaryMesh(), IOobject::NO_READ, diff --git a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H index 60d4587270..361593ed0d 100644 --- a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H +++ b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayer.H @@ -42,6 +42,8 @@ SourceFiles #include "surfaceFields.H" #include "fvMatrices.H" +#include "injectionModelList.H" + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -51,9 +53,6 @@ namespace regionModels namespace surfaceFilmModels { -// Forward declaration of classes -class injectionModel; - /*---------------------------------------------------------------------------*\ Class kinematicSingleLayer Declaration \*---------------------------------------------------------------------------*/ @@ -100,9 +99,6 @@ protected: //- Skin frition coefficient for film/primary region interface scalar Cf_; - //- Stable film thickness - dimensionedScalar deltaStable_; - // Thermo properties @@ -139,16 +135,16 @@ protected: surfaceScalarField phi_; - // Transfer fields - to the primary region + // Transfer fields - //- Film mass available for transfer - volScalarField massForPrimary_; + //- Film mass available for transfer to the primary region + volScalarField primaryMassTrans_; - //- Parcel diameters originating from film - volScalarField diametersForPrimary_; + //- Film mass available for transfer to cloud + volScalarField cloudMassTrans_; - //- Film mass evolved via phase change - volScalarField massPhaseChangeForPrimary_; + //- Parcel diameters originating from film to cloud + volScalarField cloudDiameterTrans_; // Source term fields @@ -198,8 +194,11 @@ protected: // Sub-models - //- Injection - autoPtr injection_; + //- Available mass for transfer via sub-models + scalarField availableMass_; + + //- Cloud injection + injectionModelList injection_; // Checks @@ -208,12 +207,6 @@ protected: scalar addedMassTotal_; - // Detached surface properties - - //- Cumulative mass detached [kg] - scalar injectedMassTotal_; - - // Protected member functions //- Read control parameters from dictionary @@ -231,9 +224,6 @@ protected: //- Transfer source fields from the primary region to the film region virtual void transferPrimaryRegionSourceFields(); - //- Correct the source terms for film that detaches from film region - virtual void correctDetachedFilm(); - // Explicit pressure source contribution virtual tmp pu(); @@ -354,6 +344,9 @@ public: //- Return the film wall velocity [m/s] virtual const volVectorField& Uw() const; + //- Return the film flux [kg.m/s] + virtual const surfaceScalarField& phi() const; + //- Return the film density [kg/m3] virtual const volScalarField& rho() const; @@ -373,16 +366,16 @@ public: virtual const volScalarField& kappa() const; - // Transfer fields - to the primary region + // Transfer fields - to the primary region - //- Return the film mass available for transfer - virtual const volScalarField& massForPrimary() const; + //- Return mass transfer source - Eulerian phase only + virtual tmp primaryMassTrans() const; - //- Return the parcel diameters originating from film - virtual const volScalarField& diametersForPrimary() const; + //- Return the film mass available for transfer to cloud + virtual const volScalarField& cloudMassTrans() const; - //- Return the film mass evolved via phase change - virtual const volScalarField& massPhaseChangeForPrimary() const; + //- Return the parcel diameters originating from film to cloud + virtual const volScalarField& cloudDiameterTrans() const; // External helper functions @@ -452,13 +445,16 @@ public: // Sub-models //- Injection - inline injectionModel& injection(); + inline injectionModelList& injection(); // Helper functions - //- Return the gravity tangential component contributions - inline tmp gTan() const; + //- Return the current film mass + inline tmp mass() const; + + //- Return the net film mass available over the next integration + inline tmp netMass() const; //- Return the gravity normal-to-patch component contribution inline tmp gNorm() const; @@ -467,6 +463,9 @@ public: // Clipped so that only non-zero if g & nHat_ < 0 inline tmp gNormClipped() const; + //- Return the gravity tangential component contributions + inline tmp gTan() const; + // Evolution @@ -494,7 +493,7 @@ public: virtual tmp > Sh() const; - // I-O + // I-O //- Provide some feedback virtual void info() const; diff --git a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayerI.H b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayerI.H index 483742ca77..d3b6a54178 100644 --- a/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayerI.H +++ b/src/regionModels/surfaceFilmModels/kinematicSingleLayer/kinematicSingleLayerI.H @@ -24,7 +24,8 @@ License \*---------------------------------------------------------------------------*/ -#include "kinematicSingleLayer.H" +#include "surfaceInterpolate.H" +#include "fvcSurfaceIntegrate.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -163,9 +164,24 @@ inline const volScalarField& kinematicSingleLayer::muPrimary() const } -inline injectionModel& kinematicSingleLayer::injection() +inline injectionModelList& kinematicSingleLayer::injection() { - return injection_(); + return injection_; +} + + +inline tmp kinematicSingleLayer::mass() const +{ + return rho_*delta_*magSf(); +} + + +inline tmp kinematicSingleLayer::netMass() const +{ + dimensionedScalar d0("SMALL", dimLength, ROOTVSMALL); + return + fvc::surfaceSum(phi_/(fvc::interpolate(delta_) + d0))*time().deltaT() + + rho_*delta_*magSf(); } diff --git a/src/regionModels/surfaceFilmModels/noFilm/noFilm.C b/src/regionModels/surfaceFilmModels/noFilm/noFilm.C index d79814354c..e1bde38bf1 100644 --- a/src/regionModels/surfaceFilmModels/noFilm/noFilm.C +++ b/src/regionModels/surfaceFilmModels/noFilm/noFilm.C @@ -103,6 +103,15 @@ const volScalarField& noFilm::delta() const } +const volScalarField& noFilm::sigma() const +{ + FatalErrorIn("const volScalarField& noFilm::sigma() const") + << "sigma field not available for " << type() << abort(FatalError); + + return volScalarField::null(); +} + + const volVectorField& noFilm::U() const { FatalErrorIn("const volVectorField& noFilm::U() const") @@ -184,32 +193,42 @@ const volScalarField& noFilm::kappa() const } -const volScalarField& noFilm::massForPrimary() const +tmp noFilm::primaryMassTrans() const { - FatalErrorIn("const volScalarField& noFilm::massForPrimary() const") - << "massForPrimary field not available for " << type() - << abort(FatalError); - - return volScalarField::null(); -} - - -const volScalarField& noFilm::diametersForPrimary() const -{ - FatalErrorIn("const volScalarField& noFilm::diametersForPrimary() const") - << "diametersForPrimary field not available for " << type() - << abort(FatalError); - - return volScalarField::null(); -} - - -const volScalarField& noFilm::massPhaseChangeForPrimary() const -{ - FatalErrorIn + return tmp ( - "const volScalarField& noFilm::massPhaseChangeForPrimary() const" - ) << "massPhaseChange field not available for " << type() + new volScalarField + ( + IOobject + ( + "noFilm::primaryMassTrans", + time().timeName(), + primaryMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + primaryMesh(), + dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) + ) + ); +} + + +const volScalarField& noFilm::cloudMassTrans() const +{ + FatalErrorIn("const volScalarField& noFilm::cloudMassTrans() const") + << "cloudMassTrans field not available for " << type() + << abort(FatalError); + + return volScalarField::null(); +} + + +const volScalarField& noFilm::cloudDiameterTrans() const +{ + FatalErrorIn("const volScalarField& noFilm::cloudDiameterTrans() const") + << "cloudDiameterTrans field not available for " << type() << abort(FatalError); return volScalarField::null(); @@ -238,7 +257,7 @@ tmp > noFilm::Srho() const } -tmp > noFilm::Srho(const label) const +tmp > noFilm::Srho(const label i) const { return tmp > ( @@ -246,7 +265,7 @@ tmp > noFilm::Srho(const label) const ( IOobject ( - "noFilm::Srho(i)", + "noFilm::Srho(" + Foam::name(i) + ")", time().timeName(), primaryMesh(), IOobject::NO_READ, diff --git a/src/regionModels/surfaceFilmModels/noFilm/noFilm.H b/src/regionModels/surfaceFilmModels/noFilm/noFilm.H index 0d6d398509..0c3627beb4 100644 --- a/src/regionModels/surfaceFilmModels/noFilm/noFilm.H +++ b/src/regionModels/surfaceFilmModels/noFilm/noFilm.H @@ -111,49 +111,52 @@ public: ); - // Fields + // Fields - //- Return the film thickness [m] - virtual const volScalarField& delta() const; + //- Return the film thickness [m] + virtual const volScalarField& delta() const; - //- Return the film velocity [m/s] - virtual const volVectorField& U() const; + //- Return const access to the surface tension / [m/s2] + inline const volScalarField& sigma() const; - //- Return the film density [kg/m3] - virtual const volScalarField& rho() const; + //- Return the film velocity [m/s] + virtual const volVectorField& U() const; - //- Return the film surface velocity [m/s] - virtual const volVectorField& Us() const; + //- Return the film density [kg/m3] + virtual const volScalarField& rho() const; - //- Return the film wall velocity [m/s] - virtual const volVectorField& Uw() const; + //- Return the film surface velocity [m/s] + virtual const volVectorField& Us() const; - //- Return the film mean temperature [K] - virtual const volScalarField& T() const; + //- Return the film wall velocity [m/s] + virtual const volVectorField& Uw() const; - //- Return the film surface temperature [K] - virtual const volScalarField& Ts() const; + //- Return the film mean temperature [K] + virtual const volScalarField& T() const; - //- Return the film wall temperature [K] - virtual const volScalarField& Tw() const; + //- Return the film surface temperature [K] + virtual const volScalarField& Ts() const; - //- Return the film specific heat capacity [J/kg/K] - virtual const volScalarField& Cp() const; + //- Return the film wall temperature [K] + virtual const volScalarField& Tw() const; - //- Return the film thermal conductivity [W/m/K] - virtual const volScalarField& kappa() const; + //- Return the film specific heat capacity [J/kg/K] + virtual const volScalarField& Cp() const; + + //- Return the film thermal conductivity [W/m/K] + virtual const volScalarField& kappa() const; - // Transfer fields - to the primary region + // Transfer fields - to the primary region - //- Return the film mass available for transfer - virtual const volScalarField& massForPrimary() const; + //- Return mass transfer source - Eulerian phase only + virtual tmp primaryMassTrans() const; - //- Return the parcel diameters originating from film - virtual const volScalarField& diametersForPrimary() const; + //- Return the film mass available for transfer + virtual const volScalarField& cloudMassTrans() const; - //- Return the film mass evolved via phase change - virtual const volScalarField& massPhaseChangeForPrimary() const; + //- Return the parcel diameters originating from film + virtual const volScalarField& cloudDiameterTrans() const; // Source fields diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C new file mode 100644 index 0000000000..812f09bc33 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.C @@ -0,0 +1,352 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "curvatureSeparation.H" +#include "addToRunTimeSelectionTable.H" +#include "fvMesh.H" +#include "Time.H" +#include "volFields.H" +#include "kinematicSingleLayer.H" +#include "surfaceInterpolate.H" +#include "fvcDiv.H" +#include "fvcGrad.H" +#include "stringListOps.H" +#include "cyclicPolyPatch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(curvatureSeparation, 0); +addToRunTimeSelectionTable +( + injectionModel, + curvatureSeparation, + dictionary +); + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +tmp curvatureSeparation::calcInvR1(const volVectorField& U) const +{ + // method 1 +/* + tmp tinvR1 + ( + new volScalarField("invR1", fvc::div(owner().nHat())) + ); +*/ + + // method 2 + dimensionedScalar smallU("smallU", dimVelocity, ROOTVSMALL); + volVectorField UHat(U/(mag(U) + smallU)); + tmp tinvR1 + ( + new volScalarField("invR1", UHat & (UHat & gradNHat_)) + ); + + + scalarField& invR1 = tinvR1().internalField(); + + // apply defined patch radii + const scalar rMin = 1e-6; + const fvMesh& mesh = owner().regionMesh(); + const polyBoundaryMesh& pbm = mesh.boundaryMesh(); + forAll(definedPatchRadii_, i) + { + label patchI = definedPatchRadii_[i].first(); + scalar definedInvR1 = 1.0/max(rMin, definedPatchRadii_[i].second()); + UIndirectList(invR1, pbm[patchI].faceCells()) = definedInvR1; + } + + // filter out large radii + const scalar rMax = 1e6; + forAll(invR1, i) + { + if (mag(invR1[i]) < 1/rMax) + { + invR1[i] = -1.0; + } + } + + if (debug && mesh.time().outputTime()) + { + tinvR1().write(); + } + + return tinvR1; +} + + +tmp curvatureSeparation::calcCosAngle +( + const surfaceScalarField& phi +) const +{ + const fvMesh& mesh = owner().regionMesh(); + const vectorField nf(mesh.Sf()/mesh.magSf()); + const unallocLabelList& own = mesh.owner(); + const unallocLabelList& nbr = mesh.neighbour(); + + scalarField phiMax(mesh.nCells(), -GREAT); + scalarField cosAngle(mesh.nCells(), 0.0); + forAll(nbr, faceI) + { + label cellO = own[faceI]; + label cellN = nbr[faceI]; + + if (phi[faceI] > phiMax[cellO]) + { + phiMax[cellO] = phi[faceI]; + cosAngle[cellO] = -gHat_ & nf[faceI]; + } + if (-phi[faceI] > phiMax[cellN]) + { + phiMax[cellN] = -phi[faceI]; + cosAngle[cellN] = -gHat_ & -nf[faceI]; + } + } + + forAll(phi.boundaryField(), patchI) + { + const fvsPatchScalarField& phip = phi.boundaryField()[patchI]; + const fvPatch& pp = phip.patch(); + const labelList& faceCells = pp.faceCells(); + const vectorField nf(pp.nf()); + forAll(phip, i) + { + label cellI = faceCells[i]; + if (phip[i] > phiMax[cellI]) + { + phiMax[cellI] = phip[i]; + cosAngle[cellI] = -gHat_ & nf[i]; + } + } + } +/* + // correction for cyclics - use cyclic pairs' face normal instead of + // local face normal + const fvBoundaryMesh& pbm = mesh.boundary(); + forAll(phi.boundaryField(), patchI) + { + if (isA(pbm[patchI])) + { + const scalarField& phip = phi.boundaryField()[patchI]; + const vectorField nf(pbm[patchI].nf()); + const labelList& faceCells = pbm[patchI].faceCells(); + const label sizeBy2 = pbm[patchI].size()/2; + + for (label face0=0; face0 phiMax[cell0]) + { + phiMax[cell0] = phip[face0]; + cosAngle[cell0] = -gHat_ & -nf[face1]; + } + + // flux leaving half 1, entering half 0 + if (-phip[face1] > phiMax[cell1]) + { + phiMax[cell1] = -phip[face1]; + cosAngle[cell1] = -gHat_ & nf[face0]; + } + } + } + } +*/ + // checks + if (debug && mesh.time().outputTime()) + { + volScalarField volCosAngle + ( + IOobject + ( + "cosAngle", + mesh.time().timeName(), + mesh, + IOobject::NO_READ + ), + mesh, + dimensionedScalar("zero", dimless, 0.0), + zeroGradientFvPatchScalarField::typeName + ); + volCosAngle.internalField() = cosAngle; + volCosAngle.correctBoundaryConditions(); + volCosAngle.write(); + } + + return max(min(cosAngle, 1.0), -1.0); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +curvatureSeparation::curvatureSeparation +( + const surfaceFilmModel& owner, + const dictionary& dict +) +: + injectionModel(type(), owner, dict), + gradNHat_(fvc::grad(owner.nHat())), + deltaByR1Min_(coeffs().lookupOrDefault("deltaByR1Min", 0.0)), + definedPatchRadii_(), + magG_(mag(owner.g().value())), + gHat_(owner.g().value()/magG_) +{ + List > prIn(coeffs().lookup("definedPatchRadii")); + const wordList& allPatchNames = owner.regionMesh().boundaryMesh().names(); + + DynamicList > prData(allPatchNames.size()); + + labelHashSet uniquePatchIDs; + + forAllReverse(prIn, i) + { + labelList patchIDs = findStrings(prIn[i].first(), allPatchNames); + forAll(patchIDs, j) + { + const label patchI = patchIDs[j]; + + if (!uniquePatchIDs.found(patchI)) + { + const scalar radius = prIn[i].second(); + prData.append(Tuple2(patchI, radius)); + + uniquePatchIDs.insert(patchI); + } + } + } + + definedPatchRadii_.transfer(prData); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +curvatureSeparation::~curvatureSeparation() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void curvatureSeparation::correct +( + scalarField& availableMass, + scalarField& massToInject, + scalarField& diameterToInject +) +{ + const kinematicSingleLayer& film = + refCast(this->owner()); + const fvMesh& mesh = film.regionMesh(); + + const volScalarField& delta = film.delta(); + const volVectorField& U = film.U(); + const surfaceScalarField& phi = film.phi(); + const volScalarField& rho = film.rho(); + const scalarField magSqrU(magSqr(film.U())); + const volScalarField& sigma = film.sigma(); + + const scalarField invR1(calcInvR1(U)); + const scalarField cosAngle(calcCosAngle(phi)); + + // calculate force balance + const scalar Fthreshold = 1e-10; + scalarField Fnet(mesh.nCells(), 0.0); + scalarField separated(mesh.nCells(), 0.0); + forAll(invR1, i) + { + if ((invR1[i] > 0) && (delta[i]*invR1[i] > deltaByR1Min_)) + { + scalar R1 = 1.0/(invR1[i] + ROOTVSMALL); + scalar R2 = R1 + delta[i]; + + // inertial force + scalar Fi = -delta[i]*rho[i]*magSqrU[i]*72.0/60.0*invR1[i]; + + // body force + scalar Fb = + - 0.5*rho[i]*magG_*invR1[i]*(sqr(R1) - sqr(R2))*cosAngle[i]; + + // surface force + scalar Fs = sigma[i]/R2; + + Fnet[i] = Fi + Fb + Fs; + + if (Fnet[i] + Fthreshold < 0) + { + separated[i] = 1.0; + } + } + } + + // inject all available mass + massToInject = separated*availableMass; + diameterToInject = separated*delta; + availableMass -= separated*availableMass; + + if (debug && mesh.time().outputTime()) + { + volScalarField volFnet + ( + IOobject + ( + "Fnet", + mesh.time().timeName(), + mesh, + IOobject::NO_READ + ), + mesh, + dimensionedScalar("zero", dimForce, 0.0), + zeroGradientFvPatchScalarField::typeName + ); + volFnet.internalField() = Fnet; + volFnet.correctBoundaryConditions(); + volFnet.write(); + } +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H new file mode 100644 index 0000000000..02e7f7ccdd --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/curvatureSeparation/curvatureSeparation.H @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::curvatureSeparation + +Description + Curvature film separation model + + Assesses film curvature via the mesh geometry and calculates a force + balance of the form: + + F_sum = F_inertial + F_body + F_surface + + If F_sum < 0, the film separates. Similarly, if F_sum > 0 the film will + remain attached. + + Based on description given by + Owen and D. J. Ryley. The flow of thin liquid films around corners. + International Journal of Multiphase Flow, 11(1):51-62, 1985. + + +SourceFiles + curvatureSeparation.C + +\*---------------------------------------------------------------------------*/ + +#ifndef curvatureSeparation_H +#define curvatureSeparation_H + +#include "injectionModel.H" +#include "surfaceFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +/*---------------------------------------------------------------------------*\ + Class curvatureSeparation Declaration +\*---------------------------------------------------------------------------*/ + +class curvatureSeparation +: + public injectionModel +{ +private: + + // Private member functions + + //- Disallow default bitwise copy construct + curvatureSeparation(const curvatureSeparation&); + + //- Disallow default bitwise assignment + void operator=(const curvatureSeparation&); + + +protected: + + // Protected data + + //- Gradient of surface normals + volTensorField gradNHat_; + + //- Minimum gravity driven film thickness (non-dimensionalised delta/R1) + scalar deltaByR1Min_; + + //- List of radii for patches - if patch not defined, radius + // calculated based on mesh geometry + List > definedPatchRadii_; + + //- Magnitude of gravity vector + scalar magG_; + + //- Direction of gravity vector + vector gHat_; + + + // Protected Member Functions + + //- Calculate local (inverse) radius of curvature + tmp calcInvR1(const volVectorField& U) const; + + //- Calculate the cosine of the angle between gravity vector and + // cell out flow direction + tmp calcCosAngle(const surfaceScalarField& phi) const; + + +public: + + //- Runtime type information + TypeName("curvatureSeparation"); + + + // Constructors + + //- Construct from surface film model + curvatureSeparation + ( + const surfaceFilmModel& owner, + const dictionary& dict + ); + + + //- Destructor + virtual ~curvatureSeparation(); + + + // Member Functions + + // Evolution + + //- Correct + virtual void correct + ( + scalarField& availableMass, + scalarField& massToInject, + scalarField& diameterToInject + ); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C similarity index 70% rename from src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C rename to src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C index d9d62b8086..f904af56c6 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.C @@ -24,13 +24,14 @@ License \*---------------------------------------------------------------------------*/ -#include "cloudInjection.H" +#include "drippingInjection.H" #include "addToRunTimeSelectionTable.H" #include "fvMesh.H" #include "Time.H" #include "mathematicalConstants.H" #include "Random.H" #include "volFields.H" +#include "kinematicSingleLayer.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -43,18 +44,19 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -defineTypeNameAndDebug(cloudInjection, 0); -addToRunTimeSelectionTable(injectionModel, cloudInjection, dictionary); +defineTypeNameAndDebug(drippingInjection, 0); +addToRunTimeSelectionTable(injectionModel, drippingInjection, dictionary); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -cloudInjection::cloudInjection +drippingInjection::drippingInjection ( const surfaceFilmModel& owner, const dictionary& dict ) : injectionModel(type(), owner, dict), + deltaStable_(readScalar(coeffs_.lookup("deltaStable"))), particlesPerParcel_(readScalar(coeffs_.lookup("particlesPerParcel"))), rndGen_(label(0), -1), parcelDistribution_ @@ -76,31 +78,58 @@ cloudInjection::cloudInjection // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // -cloudInjection::~cloudInjection() +drippingInjection::~drippingInjection() {} // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void cloudInjection::correct +void drippingInjection::correct ( + scalarField& availableMass, scalarField& massToInject, scalarField& diameterToInject ) { + const kinematicSingleLayer& film = + refCast(this->owner()); + const scalar pi = constant::mathematical::pi; - const scalarField& rhoFilm = owner().rho(); + + // calculate available dripping mass + tmp tgNorm(film.gNorm()); + const scalarField& gNorm = tgNorm(); + const scalarField& magSf = film.magSf(); + + const scalarField& delta = film.delta(); + const scalarField& rho = film.rho(); + + scalarField massDrip(film.regionMesh().nCells(), 0.0); + + forAll(gNorm, i) + { + if (gNorm[i] > SMALL) + { + const scalar ddelta = max(0.0, delta[i] - deltaStable_); + massDrip[i] += min(availableMass[i], max(0.0, ddelta*rho[i]*magSf[i])); + } + } + // Collect the data to be transferred forAll(massToInject, cellI) { - scalar rho = rhoFilm[cellI]; + scalar rhoc = rho[cellI]; scalar diam = diameter_[cellI]; - scalar minMass = particlesPerParcel_*rho*pi/6*pow3(diam); + scalar minMass = particlesPerParcel_*rhoc*pi/6*pow3(diam); - if (massToInject[cellI] > minMass) + if (massDrip[cellI] > minMass) { - // All mass can be injected - set particle diameter + // All drip mass can be injected + massToInject[cellI] += massDrip[cellI]; + availableMass[cellI] -= massDrip[cellI]; + + // Set particle diameter diameterToInject[cellI] = diameter_[cellI]; // Retrieve new particle diameter sample diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H similarity index 75% rename from src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H rename to src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H index 017af83d49..2181c121aa 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/cloudInjection/cloudInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/drippingInjection/drippingInjection.H @@ -23,18 +23,23 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::cloudInjection + Foam::drippingInjection Description - Cloud injection model + Film Dripping mass transfer model. + + If the film mass exceeds that needed to generate a valid parcel, the + equivalent mass is removed from the film. + + New parcel diameters are sampled from a PDF. SourceFiles - cloudInjection.C + drippingInjection.C \*---------------------------------------------------------------------------*/ -#ifndef cloudInjection_H -#define cloudInjection_H +#ifndef drippingInjection_H +#define drippingInjection_H #include "injectionModel.H" #include "distributionModel.H" @@ -50,10 +55,10 @@ namespace surfaceFilmModels { /*---------------------------------------------------------------------------*\ - Class cloudInjection Declaration + Class drippingInjection Declaration \*---------------------------------------------------------------------------*/ -class cloudInjection +class drippingInjection : public injectionModel { @@ -62,16 +67,20 @@ private: // Private member functions //- Disallow default bitwise copy construct - cloudInjection(const cloudInjection&); + drippingInjection(const drippingInjection&); //- Disallow default bitwise assignment - void operator=(const cloudInjection&); + void operator=(const drippingInjection&); protected: // Protected data + //- Stable film thickness - drips only formed if thickness + // execeeds this threhold value + scalar deltaStable_; + //- Number of particles per parcel scalar particlesPerParcel_; @@ -82,24 +91,28 @@ protected: const autoPtr parcelDistribution_; - //- Diameters of particles to inject into the cloud + //- Diameters of particles to inject into the dripping scalarList diameter_; public: //- Runtime type information - TypeName("cloudInjection"); + TypeName("drippingInjection"); // Constructors //- Construct from surface film model - cloudInjection(const surfaceFilmModel& owner, const dictionary& dict); + drippingInjection + ( + const surfaceFilmModel& owner, + const dictionary& dict + ); //- Destructor - virtual ~cloudInjection(); + virtual ~drippingInjection(); // Member Functions @@ -109,6 +122,7 @@ public: //- Correct virtual void correct ( + scalarField& availableMass, scalarField& massToInject, scalarField& diameterToInject ); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C index d167131d6e..203c50f29c 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H index 02fed58af3..401a3dee0f 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModel.H @@ -26,12 +26,12 @@ Class Foam::injectionModel Description - Base class for film injection models + Base class for film injection models, handling mass transfer from the + film. SourceFiles injectionModel.C injectionModelNew.C - \*---------------------------------------------------------------------------*/ #ifndef injectionModel_H @@ -109,7 +109,8 @@ public: static autoPtr New ( const surfaceFilmModel& owner, - const dictionary& dict + const dictionary& dict, + const word& mdoelType ); @@ -124,6 +125,7 @@ public: //- Correct virtual void correct ( + scalarField& availableMass, scalarField& massToInject, scalarField& diameterToInject ) = 0; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelNew.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelNew.C index 51ef515f87..79c908b3db 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelNew.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModel/injectionModelNew.C @@ -40,12 +40,11 @@ namespace surfaceFilmModels autoPtr injectionModel::New ( const surfaceFilmModel& model, - const dictionary& dict + const dictionary& dict, + const word& modelType ) { - word modelType(dict.lookup("injectionModel")); - - Info<< " Selecting injectionModel " << modelType << endl; + Info<< " " << modelType << endl; dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(modelType); diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C new file mode 100644 index 0000000000..57f7ae0686 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.C @@ -0,0 +1,135 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ 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 2 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, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "injectionModelList.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace regionModels +{ +namespace surfaceFilmModels +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +injectionModelList::injectionModelList(const surfaceFilmModel& owner) +: + PtrList(), + owner_(owner), + dict_(dictionary::null), + injectedMassTotal_(0.0) +{} + + +injectionModelList::injectionModelList +( + const surfaceFilmModel& owner, + const dictionary& dict +) +: + PtrList(), + owner_(owner), + dict_(dict), + injectedMassTotal_(0.0) +{ + const wordList activeModels(dict.lookup("injectionModels")); + + wordHashSet models; + forAll(activeModels, i) + { + models.insert(activeModels[i]); + } + + Info<< " Selecting film injection models" << endl; + if (models.size() > 0) + { + this->setSize(models.size()); + + label i = 0; + forAllConstIter(wordHashSet, models, iter) + { + const word& model = iter.key(); + set + ( + i, + injectionModel::New(owner, dict, model) + ); + i++; + } + } + else + { + Info<< " none" << endl; + } +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +injectionModelList::~injectionModelList() +{} + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void injectionModelList::correct +( + scalarField& availableMass, + volScalarField& massToInject, + volScalarField& diameterToInject +) +{ + // Correct models that accumulate mass and diameter transfers + forAll(*this, i) + { + injectionModel& im = operator[](i); + im.correct(availableMass, massToInject, diameterToInject); + } + + injectedMassTotal_ += sum(massToInject.internalField()); + + + // Push values to boundaries ready for transfer to the primary region + massToInject.correctBoundaryConditions(); + diameterToInject.correctBoundaryConditions(); +} + + +void injectionModelList::info(Ostream& os) const +{ + os << indent << "injected mass = " + << returnReduce(injectedMassTotal_, sumOp()) << nl; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace surfaceFilmModels +} // End namespace regionModels +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H similarity index 62% rename from src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H rename to src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H index 2d26dff4fc..3aaac5f28a 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/injectionModelList/injectionModelList.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,19 +23,20 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Class - Foam::noInjection + Foam::injectionModelList Description - Dummy injection model for 'none' + List container for film injection models SourceFiles - noInjection.C + injectionModelList.C \*---------------------------------------------------------------------------*/ -#ifndef noInjection_H -#define noInjection_H +#ifndef injectionModelList_H +#define injectionModelList_H +#include "PtrList.H" #include "injectionModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -48,38 +49,53 @@ namespace surfaceFilmModels { /*---------------------------------------------------------------------------*\ - Class noInjection Declaration + Class injectionModelList Declaration \*---------------------------------------------------------------------------*/ -class noInjection +class injectionModelList : - public injectionModel + public PtrList { private: - // Private member functions + // Private data + + //- Reference to the owner surface film model + const surfaceFilmModel& owner_; + + //- Dictionary + dictionary dict_; + + //- Cumulative mass injected total + scalar injectedMassTotal_; + + + // Private Member Functions //- Disallow default bitwise copy construct - noInjection(const noInjection&); + injectionModelList(const injectionModelList&); //- Disallow default bitwise assignment - void operator=(const noInjection&); + void operator=(const injectionModelList&); public: - //- Runtime type information - TypeName("none"); - - // Constructors - //- Construct from surface film model - noInjection(const surfaceFilmModel& owner, const dictionary& dict); + //- Construct null + injectionModelList(const surfaceFilmModel& owner); + + //- Construct from type name, dictionary and surface film model + injectionModelList + ( + const surfaceFilmModel& owner, + const dictionary& dict + ); //- Destructor - virtual ~noInjection(); + virtual ~injectionModelList(); // Member Functions @@ -89,9 +105,16 @@ public: //- Correct virtual void correct ( - scalarField& massToInject, - scalarField& diameterToInject + scalarField& availableMass, + volScalarField& massToInject, + volScalarField& diameterToInject ); + + + // I-O + + //- Provide some info + void info(Ostream& os) const; }; diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C deleted file mode 100644 index 442e68ce9c..0000000000 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/noInjection/noInjection.C +++ /dev/null @@ -1,81 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd. - \\/ 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 2 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, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -\*---------------------------------------------------------------------------*/ - -#include "noInjection.H" -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace regionModels -{ -namespace surfaceFilmModels -{ - -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(noInjection, 0); -addToRunTimeSelectionTable(injectionModel, noInjection, dictionary); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -noInjection::noInjection -( - const surfaceFilmModel& owner, - const dictionary& -) -: - injectionModel(owner) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -noInjection::~noInjection() -{} - - -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // - -void noInjection::correct -( - scalarField& massToInject, - scalarField& diameterToInject -) -{ - // no mass injected - massToInject = 0.0; -} - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace surfaceFilmModels -} // End namespace regionModels -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C index bffa600add..e0d18d5077 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,11 +63,13 @@ removeInjection::~removeInjection() void removeInjection::correct ( - scalarField&, + scalarField& availableMass, + scalarField& massToInject, scalarField& ) { - // do nothing - all mass available to be removed + massToInject = availableMass; + availableMass = 0.0; } diff --git a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H index eae2c1da5f..ce189ac82e 100644 --- a/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H +++ b/src/regionModels/surfaceFilmModels/submodels/kinematic/injectionModel/removeInjection/removeInjection.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,6 +89,7 @@ public: //- Correct virtual void correct ( + scalarField& availableMass, scalarField& massToInject, scalarField& diameterToInject ); diff --git a/src/regionModels/surfaceFilmModels/submodels/subModelBaseI.H b/src/regionModels/surfaceFilmModels/submodels/subModelBaseI.H index 3c5a1933ea..67551e42f5 100644 --- a/src/regionModels/surfaceFilmModels/submodels/subModelBaseI.H +++ b/src/regionModels/surfaceFilmModels/submodels/subModelBaseI.H @@ -24,8 +24,6 @@ License \*---------------------------------------------------------------------------*/ -#include "subModelBase.H" - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C index be5ec46e15..b7736dec1d 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.C @@ -61,10 +61,11 @@ noPhaseChange::~noPhaseChange() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void noPhaseChange::correct +void noPhaseChange::correctModel ( const scalar, scalarField&, + scalarField&, scalarField& ) { diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H index 523955ee95..6108de35bb 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/noPhaseChange/noPhaseChange.H @@ -87,9 +87,10 @@ public: // Evolution //- Correct - virtual void correct + virtual void correctModel ( const scalar dt, + scalarField& availableMass, scalarField& dMass, scalarField& dEnergy ); diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C index 98b91c40fb..97365896cc 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.C @@ -47,7 +47,9 @@ phaseChangeModel::phaseChangeModel const surfaceFilmModel& owner ) : - subModelBase(owner) + subModelBase(owner), + latestMassPC_(0.0), + totalMassPC_(0.0) {} @@ -58,7 +60,9 @@ phaseChangeModel::phaseChangeModel const dictionary& dict ) : - subModelBase(type, owner, dict) + subModelBase(type, owner, dict), + latestMassPC_(0.0), + totalMassPC_(0.0) {} @@ -68,6 +72,44 @@ phaseChangeModel::~phaseChangeModel() {} +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void phaseChangeModel::correct +( + const scalar dt, + scalarField& availableMass, + volScalarField& dMass, + volScalarField& dEnergy +) +{ + correctModel + ( + dt, + availableMass, + dMass, + dEnergy + ); + + latestMassPC_ = sum(dMass.internalField()); + totalMassPC_ += latestMassPC_; + + availableMass -= dMass; + dMass.correctBoundaryConditions(); +} + + +void phaseChangeModel::info(Ostream& os) const +{ + const scalar massPCRate = + returnReduce(latestMassPC_, sumOp()) + /owner_.time().deltaTValue(); + + os << indent << "mass phase change = " + << returnReduce(totalMassPC_, sumOp()) << nl + << indent << "vapourisation rate = " << massPCRate << nl; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // end namespace surfaceFilmModels diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H index 909c71ec68..b537cf59d7 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/phaseChangeModel/phaseChangeModel.H @@ -69,6 +69,17 @@ private: void operator=(const phaseChangeModel&); +protected: + + // Protected Member Functions + + //- Latest mass transfer due to phase change + scalar latestMassPC_; + + //- Total mass transfer due to phase change + scalar totalMassPC_; + + public: //- Runtime type information @@ -125,9 +136,25 @@ public: virtual void correct ( const scalar dt, + scalarField& availableMass, + volScalarField& dMass, + volScalarField& dEnergy + ); + + //- Correct + virtual void correctModel + ( + const scalar dt, + scalarField& availableMass, scalarField& dMass, scalarField& dEnergy ) = 0; + + + // I-O + + //- Provide some feedback + virtual void info(Ostream& os) const; }; diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C index d5ebfa3a30..1a3a67062b 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.C @@ -81,9 +81,7 @@ standardPhaseChange::standardPhaseChange Tb_(readScalar(coeffs_.lookup("Tb"))), deltaMin_(readScalar(coeffs_.lookup("deltaMin"))), L_(readScalar(coeffs_.lookup("L"))), - TbFactor_(coeffs_.lookupOrDefault("TbFactor", 1.1)), - totalMass_(0.0), - vapourRate_(0.0) + TbFactor_(coeffs_.lookupOrDefault("TbFactor", 1.1)) {} @@ -95,9 +93,10 @@ standardPhaseChange::~standardPhaseChange() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // -void standardPhaseChange::correct +void standardPhaseChange::correctModel ( const scalar dt, + scalarField& availableMass, scalarField& dMass, scalarField& dEnergy ) @@ -124,8 +123,7 @@ void standardPhaseChange::correct const scalarField hInf(film.htcs().h()); const scalarField hFilm(film.htcw().h()); const vectorField dU(film.UPrimary() - film.Us()); - const scalarField availableMass((delta - deltaMin_)*rho*magSf); - + const scalarField limMass(max(0.0, availableMass - deltaMin_*rho*magSf)); forAll(dMass, cellI) { @@ -152,8 +150,7 @@ void standardPhaseChange::correct const scalar Cp = liq.Cp(pc, Tloc); const scalar Tcorr = max(0.0, T[cellI] - Tb_); - const scalar qCorr = availableMass[cellI]*Cp*(Tcorr); - + const scalar qCorr = limMass[cellI]*Cp*(Tcorr); dMass[cellI] = dt*magSf[cellI]/hVap*(qDotInf + qDotFilm) + qCorr/hVap; @@ -195,23 +192,10 @@ void standardPhaseChange::correct dt*magSf[cellI]*rhoInfc*hm*(Ys - YInf[cellI])/(1.0 - Ys); } - dMass[cellI] = min(availableMass[cellI], max(0.0, dMass[cellI])); + dMass[cellI] = min(limMass[cellI], max(0.0, dMass[cellI])); dEnergy[cellI] = dMass[cellI]*hVap; } } - - const scalar sumdMass = sum(dMass); - totalMass_ += sumdMass; - vapourRate_ = sumdMass/owner().time().deltaTValue(); -} - - -void standardPhaseChange::info() const -{ - Info<< indent << "mass phase change = " - << returnReduce(totalMass_, sumOp()) << nl - << indent << "vapourisation rate = " - << returnReduce(vapourRate_, sumOp()) << nl; } diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H index 29227f296b..3d0c07a548 100644 --- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H +++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/standardPhaseChange/standardPhaseChange.H @@ -83,12 +83,6 @@ protected: // Used to set max limit on temperature to Tb*TbFactor const scalar TbFactor_; - //- Total mass evolved / [kg] - scalar totalMass_; - - //- Vapouristaion rate / kg/s - scalar vapourRate_; - // Protected member functions @@ -121,18 +115,13 @@ public: // Evolution //- Correct - virtual void correct + virtual void correctModel ( const scalar dt, + scalarField& availableMass, scalarField& dMass, scalarField& dEnergy ); - - - // Input/output - - //- Output model statistics - virtual void info() const; }; diff --git a/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModel.H b/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModel.H index ba4663a755..8a0f01b6b6 100644 --- a/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModel.H +++ b/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModel.H @@ -161,6 +161,9 @@ public: // Access + //- Return the accleration due to gravity + inline const dimensionedVector& g() const; + //- Return the thermo type inline const thermoModelType& thermoModel() const; @@ -176,7 +179,7 @@ public: ) = 0; - // Solution parameters + // Solution parameters //- Courant number evaluation virtual scalar CourantNumber() const; @@ -184,48 +187,50 @@ public: // Fields - //- Return the film thickness [m] - virtual const volScalarField& delta() const = 0; + //- Return the film thickness [m] + virtual const volScalarField& delta() const = 0; - //- Return the film velocity [m/s] - virtual const volVectorField& U() const = 0; + //- Return the film velocity [m/s] + virtual const volVectorField& U() const = 0; - //- Return the film surface velocity [m/s] - virtual const volVectorField& Us() const = 0; + //- Return the film surface velocity [m/s] + virtual const volVectorField& Us() const = 0; - //- Return the film wall velocity [m/s] - virtual const volVectorField& Uw() const = 0; + //- Return the film wall velocity [m/s] + virtual const volVectorField& Uw() const = 0; - //- Return the film density [kg/m3] - virtual const volScalarField& rho() const = 0; + //- Return the film density [kg/m3] + virtual const volScalarField& rho() const = 0; - //- Return the film mean temperature [K] - virtual const volScalarField& T() const = 0; + //- Return the film mean temperature [K] + virtual const volScalarField& T() const = 0; - //- Return the film surface temperature [K] - virtual const volScalarField& Ts() const = 0; + //- Return the film surface temperature [K] + virtual const volScalarField& Ts() const = 0; - //- Return the film wall temperature [K] - virtual const volScalarField& Tw() const = 0; + //- Return the film wall temperature [K] + virtual const volScalarField& Tw() const = 0; //- Return the film specific heat capacity [J/kg/K] - virtual const volScalarField& Cp() const = 0; + virtual const volScalarField& Cp() const = 0; - //- Return the film thermal conductivity [W/m/K] - virtual const volScalarField& kappa() const = 0; + //- Return the film thermal conductivity [W/m/K] + virtual const volScalarField& kappa() const = 0; + + //- Return the film surface tension [N/m] + virtual const volScalarField& sigma() const = 0; - // Transfer fields - to the primary region + // Transfer fields - to the primary region - //- Return the film mass available for transfer - virtual const volScalarField& massForPrimary() const = 0; + //- Return mass transfer source - Eulerian phase only + virtual tmp primaryMassTrans() const = 0; - //- Return the parcel diameters originating from film - virtual const volScalarField& diametersForPrimary() const = 0; + //- Return the film mass available for transfer + virtual const volScalarField& cloudMassTrans() const = 0; - //- Return the film mass evolved via phase change - virtual const volScalarField& massPhaseChangeForPrimary() - const = 0; + //- Return the parcel diameters originating from film + virtual const volScalarField& cloudDiameterTrans() const = 0; // Source fields diff --git a/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModelI.H b/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModelI.H index 2c8829284e..3e5fdacdbe 100644 --- a/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModelI.H +++ b/src/regionModels/surfaceFilmModels/surfaceFilmModel/surfaceFilmModelI.H @@ -37,6 +37,12 @@ namespace surfaceFilmModels // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +inline const Foam::dimensionedVector& surfaceFilmModel::g() const +{ + return g_; +} + + inline const surfaceFilmModel::thermoModelType& surfaceFilmModel::thermoModel() const { diff --git a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C index 9aceadfc03..e6ce90d3af 100644 --- a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C +++ b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.C @@ -81,6 +81,11 @@ bool thermoSingleLayer::read() void thermoSingleLayer::resetPrimaryRegionSourceTerms() { + if (debug) + { + Info<< "thermoSingleLayer::resetPrimaryRegionSourceTerms()" << endl; + } + kinematicSingleLayer::resetPrimaryRegionSourceTerms(); hsSpPrimary_ == dimensionedScalar("zero", hsSp_.dimensions(), 0.0); @@ -105,6 +110,7 @@ void thermoSingleLayer::correctThermoFields() { const liquidProperties& liq = thermo_.liquids().properties()[liquidId_]; + forAll(rho_, cellI) { const scalar T = T_[cellI]; @@ -173,6 +179,11 @@ void thermoSingleLayer::updateSurfaceTemperatures() void thermoSingleLayer::transferPrimaryRegionThermoFields() { + if (debug) + { + Info<< "thermoSingleLayer::transferPrimaryRegionThermoFields()" << endl; + } + kinematicSingleLayer::transferPrimaryRegionThermoFields(); // Update primary region fields on local region via direct mapped (coupled) @@ -187,6 +198,11 @@ void thermoSingleLayer::transferPrimaryRegionThermoFields() void thermoSingleLayer::transferPrimaryRegionSourceFields() { + if (debug) + { + Info<< "thermoSingleLayer::transferPrimaryRegionSourceFields()" << endl; + } + kinematicSingleLayer::transferPrimaryRegionSourceFields(); // Retrieve the source fields from the primary region via direct mapped @@ -199,27 +215,30 @@ void thermoSingleLayer::transferPrimaryRegionSourceFields() // Note: boundary values will still have original (neat) values const scalar deltaT = time_.deltaTValue(); hsSp_.field() /= magSf()*deltaT; + + // Apply enthalpy source as difference between incoming and actual states + hsSp_ -= rhoSp_*hs_; } void thermoSingleLayer::updateSubmodels() { + if (debug) + { + Info<< "thermoSingleLayer::updateSubmodels()" << endl; + } + // Update heat transfer coefficient sub-models htcs_->correct(); htcw_->correct(); - // Update phase change - massPhaseChangeForPrimary_.internalField() = 0.0; - energyPhaseChangeForPrimary_.internalField() = 0.0; - phaseChange_->correct ( time_.deltaTValue(), - massPhaseChangeForPrimary_, - energyPhaseChangeForPrimary_ + availableMass_, + primaryMassPCTrans_, + primaryEnergyPCTrans_ ); - massPhaseChangeForPrimary_.correctBoundaryConditions(); - totalMassPhaseChange_ += sum(massPhaseChangeForPrimary_).value(); // Update radiation radiation_->correct(); @@ -228,14 +247,12 @@ void thermoSingleLayer::updateSubmodels() kinematicSingleLayer::updateSubmodels(); // Update source fields - hsSp_ -= energyPhaseChangeForPrimary_/magSf()/time().deltaT(); + hsSp_ += primaryEnergyPCTrans_/magSf()/time().deltaT(); + rhoSp_ += primaryMassPCTrans_/magSf()/time().deltaT(); } -tmp thermoSingleLayer::q -( - volScalarField& hs -) const +tmp thermoSingleLayer::q(volScalarField& hs) const { dimensionedScalar Tstd("Tstd", dimTemperature, 298.15); @@ -263,10 +280,11 @@ void thermoSingleLayer::solveEnergy() fvm::ddt(deltaRho_, hs_) + fvm::div(phi_, hs_) == - fvm::Sp(hsSp_/(hs_ + hs0), hs_) +// - hsSp_ + - fvm::Sp(hsSp_/(hs_ + hs0), hs_) + q(hs_) + radiation_->Shs() - - fvm::Sp(massForPrimary_/magSf()/time().deltaT(), hs_) + - fvm::SuSp(rhoSp_, hs_) ); correctThermoFields(); @@ -370,10 +388,38 @@ thermoSingleLayer::thermoSingleLayer ), regionMesh(), dimensionedScalar("zero", dimEnergy/dimMass, 0.0), -// T_.boundaryField().types() hsBoundaryTypes() ), + primaryMassPCTrans_ + ( + IOobject + ( + "primaryMassPCTrans", + time().timeName(), + regionMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + regionMesh(), + dimensionedScalar("zero", dimMass, 0), + zeroGradientFvPatchScalarField::typeName + ), + primaryEnergyPCTrans_ + ( + IOobject + ( + "primaryEnergyPCTrans", + time().timeName(), + regionMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE + ), + regionMesh(), + dimensionedScalar("zero", dimEnergy, 0), + zeroGradientFvPatchScalarField::typeName + ), + hsSp_ ( IOobject @@ -429,22 +475,7 @@ thermoSingleLayer::thermoSingleLayer heatTransferModel::New(*this, coeffs().subDict("lowerSurfaceModels")) ), phaseChange_(phaseChangeModel::New(*this, coeffs())), - radiation_(filmRadiationModel::New(*this, coeffs())), - totalMassPhaseChange_(0.0), - energyPhaseChangeForPrimary_ - ( - IOobject - ( - "energyPhaseChangeForPrimary", - time().timeName(), - regionMesh(), - IOobject::NO_READ, - IOobject::NO_WRITE - ), - regionMesh(), - dimensionedScalar("zero", dimEnergy, 0), - zeroGradientFvPatchScalarField::typeName - ) + radiation_(filmRadiationModel::New(*this, coeffs())) { if (thermo_.hasMultiComponentCarrier()) { @@ -519,24 +550,34 @@ void thermoSingleLayer::addSources Info<< " energy = " << energySource << nl << endl; } - hsSpPrimary_.boundaryField()[patchI][faceI] += energySource; + hsSpPrimary_.boundaryField()[patchI][faceI] -= energySource; } void thermoSingleLayer::preEvolveRegion() { - transferPrimaryRegionThermoFields(); + if (debug) + { + Info<< "thermoSingleLayer::preEvolveRegion()" << endl; + } // correctHsForMappedT(); - correctThermoFields(); + kinematicSingleLayer::preEvolveRegion(); - transferPrimaryRegionSourceFields(); + // Update phase change + primaryMassPCTrans_ == dimensionedScalar("zero", dimMass, 0.0); + primaryEnergyPCTrans_ == dimensionedScalar("zero", dimEnergy, 0.0); } void thermoSingleLayer::evolveRegion() { + if (debug) + { + Info<< "thermoSingleLayer::evolveRegion()" << endl; + } + updateSubmodels(); // Solve continuity for deltaRho_ @@ -617,16 +658,67 @@ const volScalarField& thermoSingleLayer::hs() const } +tmp thermoSingleLayer::primaryMassTrans() const +{ + return primaryMassPCTrans_; +} + + void thermoSingleLayer::info() const { kinematicSingleLayer::info(); Info<< indent << "min/max(T) = " << min(T_).value() << ", " - << max(T_).value() << nl - << indent << "mass phase change = " - << returnReduce(totalMassPhaseChange_, sumOp()) << nl - << indent << "vapourisation rate = " - << sum(massPhaseChangeForPrimary_).value()/time_.deltaTValue() << nl; + << max(T_).value() << nl; + + phaseChange_->info(Info); +} + + +tmp > thermoSingleLayer::Srho() const +{ + tmp > tSrho + ( + new DimensionedField + ( + IOobject + ( + "thermoSingleLayer::Srho", + time().timeName(), + primaryMesh(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + primaryMesh(), + dimensionedScalar("zero", dimMass/dimVolume/dimTime, 0.0) + ) + ); + + scalarField& Srho = tSrho(); + const scalarField& V = primaryMesh().V(); + const scalar dt = time_.deltaTValue(); + + forAll(intCoupledPatchIDs(), i) + { + const label filmPatchI = intCoupledPatchIDs()[i]; + const mapDistribute& distMap = mappedPatches_[filmPatchI].map(); + + scalarField patchMass = + primaryMassPCTrans_.boundaryField()[filmPatchI]; + distMap.distribute(patchMass); + + const label primaryPatchI = primaryPatchIDs()[i]; + const unallocLabelList& cells = + primaryMesh().boundaryMesh()[primaryPatchI].faceCells(); + + forAll(patchMass, j) + { + Srho[cells[j]] = patchMass[j]/(V[cells[j]]*dt); + } + } + + return tSrho; } @@ -644,7 +736,7 @@ tmp > thermoSingleLayer::Srho ( IOobject ( - "thermoSingleLayer::Srho(i)", + "thermoSingleLayer::Srho(" + Foam::name(i) + ")", time_.timeName(), primaryMesh(), IOobject::NO_READ, @@ -668,7 +760,7 @@ tmp > thermoSingleLayer::Srho const mapDistribute& distMap = mappedPatches_[filmPatchI].map(); scalarField patchMass = - massPhaseChangeForPrimary_.boundaryField()[filmPatchI]; + primaryMassPCTrans_.boundaryField()[filmPatchI]; distMap.distribute(patchMass); const label primaryPatchI = primaryPatchIDs()[i]; @@ -706,8 +798,10 @@ tmp > thermoSingleLayer::Sh() const ) ); /* + phase change energy fed back into the film... + scalarField& Sh = tSh(); - const scalarField& V = mesh_.V(); + const scalarField& V = primaryMesh().V(); const scalar dt = time_.deltaTValue(); forAll(intCoupledPatchIDs_, i) @@ -716,14 +810,14 @@ tmp > thermoSingleLayer::Sh() const const mapDistribute& distMap = mappedPatches_[filmPatchI].map(); scalarField patchEnergy = - energyPhaseChangeForPrimary_.boundaryField()[filmPatchI]; + primaryEnergyPCTrans_.boundaryField()[filmPatchI]; distMap.distribute(patchEnergy); const label primaryPatchI = primaryPatchIDs()[i]; const unallocLabelList& cells = primaryMesh().boundaryMesh()[primaryPatchI].faceCells(); - forAll(patchMass, j) + forAll(patchEnergy, j) { Sh[cells[j]] += patchEnergy[j]/(V[cells[j]]*dt); } diff --git a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H index ddd53f2d11..a2788f7128 100644 --- a/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H +++ b/src/regionModels/surfaceFilmModels/thermoSingleLayer/thermoSingleLayer.H @@ -115,6 +115,15 @@ protected: volScalarField hs_; + // Transfer fields - to the primary region + + //- Film mass evolved via phase change + volScalarField primaryMassPCTrans_; + + //- Film energy evolved via phase change + volScalarField primaryEnergyPCTrans_; + + // Source term fields // Film region - registered to the film region mesh @@ -157,11 +166,6 @@ protected: //- Radiation autoPtr radiation_; - //- Total mass transferred to primary region [kg] - scalar totalMassPhaseChange_; - - //- Film energy evolved via phase change - volScalarField energyPhaseChangeForPrimary_; // Protected member functions @@ -256,6 +260,13 @@ public: virtual const volScalarField& hs() const; + + // Transfer fields - to the primary region + + //- Return mass transfer source - Eulerian phase only + virtual tmp primaryMassTrans() const; + + // Helper functions //- Return sensible enthalpy as a function of temperature @@ -345,6 +356,9 @@ public: // Mapped into primary region + //- Return total mass source - Eulerian phase only + virtual tmp > Srho() const; + //- Return mass source for specie i - Eulerian phase only virtual tmp > Srho ( From ef283937bf2fe7bb918206510eff4f42e362ec12 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 8 Apr 2011 15:46:59 +0100 Subject: [PATCH 004/141] ENH: Updated reactingParcelFilmFoam.C solver --- .../lagrangian/reactingParcelFilmFoam/UEqn.H | 16 +++- .../lagrangian/reactingParcelFilmFoam/YEqn.H | 2 +- .../reactingParcelFilmFoam/chemistry.H | 1 + .../reactingParcelFilmFoam/createFields.H | 32 +++++-- .../lagrangian/reactingParcelFilmFoam/hsEqn.H | 2 + .../lagrangian/reactingParcelFilmFoam/pEqn.H | 90 ++++++++----------- .../reactingParcelFilmFoam.C | 16 ++-- .../setMultiRegionDeltaT.H | 60 +++++++++++++ 8 files changed, 151 insertions(+), 68 deletions(-) create mode 100644 applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H index 2e8f979be4..61d805e01d 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/UEqn.H @@ -4,13 +4,23 @@ + fvm::div(phi, U) + turbulence->divDevRhoReff(U) == - rho.dimensionedInternalField()*g - + parcels.SU(U) + parcels.SU(U) ); UEqn.relax(); if (momentumPredictor) { - solve(UEqn == -fvc::grad(p)); + solve + ( + UEqn + == + fvc::reconstruct + ( + ( + - ghf*fvc::snGrad(rho) + - fvc::snGrad(p_rgh) + )*mesh.magSf() + ) + ); } diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H index 8526b590a2..5eed16aef4 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -5,7 +5,7 @@ tmp > mvConvection mesh, fields, phi, - mesh.divScheme("div(phi,Yi_h)") + mesh.divScheme("div(phi,Yi_hs)") ) ); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/chemistry.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/chemistry.H index 5dd7ce9cb0..ce36fa0d1b 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/chemistry.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/chemistry.H @@ -1,3 +1,4 @@ +if (chemistry.chemistry()) { Info << "Solving chemistry" << endl; diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H index 2e3208b0ee..a5a87c73ef 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/createFields.H @@ -15,11 +15,6 @@ const word inertSpecie(thermo.lookup("inertSpecie")); - volScalarField& p = thermo.p(); - volScalarField& hs = thermo.hs(); - const volScalarField& T = thermo.T(); - const volScalarField& psi = thermo.psi(); - Info<< "Creating field rho\n" << endl; volScalarField rho ( @@ -34,6 +29,11 @@ thermo.rho() ); + volScalarField& p = thermo.p(); + volScalarField& hs = thermo.hs(); + const volScalarField& T = thermo.T(); + const volScalarField& psi = thermo.psi(); + Info<< "\nReading field U\n" << endl; volVectorField U ( @@ -84,6 +84,28 @@ fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p) ); + + Info<< "Calculating field g.h\n" << endl; + volScalarField gh("gh", g & mesh.C()); + + surfaceScalarField ghf("gh", g & mesh.Cf()); + + volScalarField p_rgh + ( + IOobject + ( + "p_rgh", + runTime.timeName(), + mesh, + IOobject::MUST_READ, + IOobject::AUTO_WRITE + ), + mesh + ); + + // Force p_rgh to be consistent with p + p_rgh = p - rho*gh; + multivariateSurfaceInterpolationScheme::fieldTable fields; forAll(Y, i) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/hsEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/hsEqn.H index 0cb2318252..feb112f652 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/hsEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/hsEqn.H @@ -19,4 +19,6 @@ thermo.correct(); radiation->correct(); + + Info<< "min/max(T) = " << min(T).value() << ", " << max(T).value() << endl; } diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H index 9d028d4502..ff7c716968 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/pEqn.H @@ -1,74 +1,58 @@ rho = thermo.rho(); volScalarField rAU(1.0/UEqn.A()); +surfaceScalarField rhorAUf(rAU.name(), fvc::interpolate(rho*rAU)); U = rAU*UEqn.H(); -if (transonic) +surfaceScalarField phiU +( + fvc::interpolate(rho) + *( + (fvc::interpolate(U) & mesh.Sf()) + + fvc::ddtPhiCorr(rAU, rho, U, phi) + ) +); + +phi = phiU - rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf(); + +for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) { - surfaceScalarField phid + fvScalarMatrix p_rghEqn ( - "phid", - fvc::interpolate(psi) - *( - (fvc::interpolate(U) & mesh.Sf()) - + fvc::ddtPhiCorr(rAU, rho, U, phi) + fvc::ddt(psi, rho)*gh + + fvc::div(phi) + + fvm::ddt(psi, p_rgh) + - fvm::laplacian(rhorAUf, p_rgh) + == + parcels.Srho() + + surfaceFilm.Srho() + ); + + p_rghEqn.solve + ( + mesh.solver + ( + p_rgh.select + ( + pimpleCorr.finalIter() + && corr == nCorr-1 + && nonOrth == nNonOrthCorr + ) ) ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) + if (nonOrth == nNonOrthCorr) { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvm::div(phid, p) - - fvm::laplacian(rho*rAU, p) - == - parcels.Srho() - + surfaceFilm.Srho() - ); - - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi == pEqn.flux(); - } + phi += p_rghEqn.flux(); } } -else -{ - phi = - fvc::interpolate(rho) - *( - (fvc::interpolate(U) & mesh.Sf()) - + fvc::ddtPhiCorr(rAU, rho, U, phi) - ); - for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) - { - fvScalarMatrix pEqn - ( - fvm::ddt(psi, p) - + fvc::div(phi) - - fvm::laplacian(rho*rAU, p) - == - parcels.Srho() - + surfaceFilm.Srho() - ); - - pEqn.solve(); - - if (nonOrth == nNonOrthCorr) - { - phi += pEqn.flux(); - } - } -} +p = p_rgh + rho*gh; #include "rhoEqn.H" #include "compressibleContinuityErrs.H" -U -= rAU*fvc::grad(p); +U += rAU*fvc::reconstruct((phi - phiU)/rhorAUf); U.correctBoundaryConditions(); DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C index f788da57e4..fdedebb785 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2009-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2009-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,6 +39,7 @@ Description #include "chemistrySolver.H" #include "radiationModel.H" #include "SLGThermo.H" +#include "pimpleLoop.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -68,6 +69,7 @@ int main(int argc, char *argv[]) #include "readTimeControls.H" #include "readPISOControls.H" #include "compressibleCourantNo.H" + #include "setMultiRegionDeltaT.H" #include "setDeltaT.H" runTime++; @@ -84,20 +86,22 @@ int main(int argc, char *argv[]) #include "rhoEqn.H" // --- PIMPLE loop - for (int ocorr=1; ocorr<=nOuterCorr; ocorr++) + for + ( + pimpleLoop pimpleCorr(mesh, nOuterCorr); + pimpleCorr.loop(); + pimpleCorr++ + ) { #include "UEqn.H" #include "YEqn.H" + #include "hsEqn.H" // --- PISO loop for (int corr=1; corr<=nCorr; corr++) { - #include "hsEqn.H" #include "pEqn.H" } - - Info<< "T gas min/max = " << min(T).value() << ", " - << max(T).value() << endl; } turbulence->correct(); diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H new file mode 100644 index 0000000000..ed3b584675 --- /dev/null +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H @@ -0,0 +1,60 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2010-2011 OpenCFD Ltd. + \\/ 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 . + +Global + setMultiRegionDeltaT + +Description + Reset the timestep to maintain a constant maximum Courant numbers. + Reduction of time-step is immediate, but increase is damped to avoid + unstable oscillations. + +\*---------------------------------------------------------------------------*/ + +if (adjustTimeStep) +{ + if (CoNum == -GREAT) + { + CoNum = SMALL; + } + + const scalar TFactorFluid = maxCo/(CoNum + SMALL); + const scalar TFactorFilm = maxCo/(surfaceFilm.CourantNumber() + SMALL); + + const scalar dt0 = runTime.deltaTValue(); + + const scalar TFactorFluidLim = + min(min(TFactorFluid, 1.0 + 0.1*TFactorFluid), 1.2); + + runTime.setDeltaT + ( + min + ( + dt0*min(TFactorFluidLim, TFactorFilm), + maxDeltaT + ) + ); +} + + +// ************************************************************************* // From c3043fc2657f3ac5391388883dbbdf861c8d8d32 Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 8 Apr 2011 18:10:29 +0100 Subject: [PATCH 005/141] ENH: Updated cloud film coupling model --- .../SurfaceFilmModel/SurfaceFilmModel.C | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C index 07ec7cc21e..cb0bc500a3 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C @@ -148,7 +148,8 @@ void Foam::SurfaceFilmModel::inject(TrackData& td) const labelList& filmPatches = filmModel.intCoupledPatchIDs(); const labelList& primaryPatches = filmModel.primaryPatchIDs(); - const polyBoundaryMesh& pbm = this->owner().mesh().boundaryMesh(); + const fvMesh& mesh = this->owner().mesh(); + const polyBoundaryMesh& pbm = mesh.boundaryMesh(); forAll(filmPatches, i) { @@ -163,6 +164,10 @@ void Foam::SurfaceFilmModel::inject(TrackData& td) cacheFilmFields(filmPatchI, primaryPatchI, distMap, filmModel); + const vectorField& Cf = mesh.C().boundaryField()[primaryPatchI]; + const vectorField& Sf = mesh.Sf().boundaryField()[primaryPatchI]; + const scalarField& magSf = mesh.magSf().boundaryField()[primaryPatchI]; + forAll(injectorCellsPatch, j) { if (diameterParcelPatch_[j] > 0) @@ -179,7 +184,15 @@ void Foam::SurfaceFilmModel::inject(TrackData& td) const label tetFaceI = this->owner().mesh().cells()[cellI][0]; const label tetPtI = 1; - const point& pos = this->owner().mesh().C()[cellI]; +// const point& pos = this->owner().mesh().C()[cellI]; + + const scalar offset = + max + ( + diameterParcelPatch_[j], + deltaFilmPatch_[primaryPatchI][j] + ); + const point pos = Cf[j] - 1.1*offset*Sf[j]/magSf[j]; // Create a new parcel parcelType* pPtr = @@ -217,11 +230,11 @@ void Foam::SurfaceFilmModel::cacheFilmFields const regionModels::surfaceFilmModels::surfaceFilmModel& filmModel ) { - massParcelPatch_ = filmModel.massForPrimary().boundaryField()[filmPatchI]; + massParcelPatch_ = filmModel.cloudMassTrans().boundaryField()[filmPatchI]; distMap.distribute(massParcelPatch_); diameterParcelPatch_ = - filmModel.diametersForPrimary().boundaryField()[filmPatchI]; + filmModel.cloudDiameterTrans().boundaryField()[filmPatchI]; distMap.distribute(diameterParcelPatch_); UFilmPatch_ = filmModel.Us().boundaryField()[filmPatchI]; From 64648e8b3e1b154750b7a2c21391bcd4254f20ba Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 12 Apr 2011 10:11:08 +0100 Subject: [PATCH 006/141] ENH: Updated motorbike tutorial (Chris' updates) --- .../simpleFoam/motorBike/system/controlDict | 61 ++----------------- .../simpleFoam/motorBike/system/cuttingPlane | 35 +++++++++++ .../simpleFoam/motorBike/system/forceCoeffs | 32 ++++++++++ .../simpleFoam/motorBike/system/readFields | 21 +++++++ .../simpleFoam/motorBike/system/streamLines | 53 ++++++++++++++++ 5 files changed, 147 insertions(+), 55 deletions(-) create mode 100644 tutorials/incompressible/simpleFoam/motorBike/system/cuttingPlane create mode 100644 tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs create mode 100644 tutorials/incompressible/simpleFoam/motorBike/system/readFields create mode 100644 tutorials/incompressible/simpleFoam/motorBike/system/streamLines diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/controlDict b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict index 376080efff..28cd589841 100644 --- a/tutorials/incompressible/simpleFoam/motorBike/system/controlDict +++ b/tutorials/incompressible/simpleFoam/motorBike/system/controlDict @@ -16,7 +16,7 @@ FoamFile application simpleFoam; -startFrom startTime; +startFrom latestTime; startTime 0; @@ -36,7 +36,7 @@ writeFormat ascii; writePrecision 6; -writeCompression off; +writeCompression compressed; timeFormat general; @@ -52,59 +52,10 @@ libs functions { - // Make sure all fields for functionObjects are loaded. Prevents any - // problems running with execFlowFunctionObjects. - readFields - { - // Where to load it from (if not already in solver) - functionObjectLibs ("libfieldFunctionObjects.so"); - - type readFields; - fields (p U k); - } - - streamLines - { - type streamLine; - - // Output every - outputControl outputTime; - // outputInterval 10; - - setFormat vtk; //gnuplot; //xmgr; //raw; //jplot; - - // Velocity field to use for tracking. - U U; - - // Tracked forwards (+U) or backwards (-U) - trackForward true; - - // Names of fields to sample. Should contain above velocity field! - fields (p U k); - - // Steps particles can travel before being removed - lifeTime 10000; - - // Number of steps per cell (estimate). Set to 1 to disable subcycling. - nSubCycle 5; - - // Cloud name to use - cloudName particleTracks; - - // Seeding method. See the sampleSets in sampleDict. - seedSampleSet uniform; //cloud;//triSurfaceMeshPointSet; - - uniformCoeffs - { - type uniform; - axis x; //distance; - - // Note: tracks slightly offset so as not to be on a face - start (-1.001 1e-7 0.0011); - end (-1.001 1e-7 1.0011); - nPoints 20; - } - } + #include "readFields" + #include "streamLines" + #include "cuttingPlane" + #include "forceCoeffs" } diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/cuttingPlane b/tutorials/incompressible/simpleFoam/motorBike/system/cuttingPlane new file mode 100644 index 0000000000..f7c54aa271 --- /dev/null +++ b/tutorials/incompressible/simpleFoam/motorBike/system/cuttingPlane @@ -0,0 +1,35 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +cuttingPlane +{ + type surfaces; + functionObjectLibs ("libsampling.so"); + outputControl outputTime; + + surfaceFormat vtk; + fields ( p U ); + + surfaces + ( + yNormal + { + type cuttingPlane; + planeType pointAndNormal; + pointAndNormalDict + { + basePoint (0 0 0); + normalVector (0 1 0); + } + interpolate true; + } + ); +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs b/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs new file mode 100644 index 0000000000..b8cb538cda --- /dev/null +++ b/tutorials/incompressible/simpleFoam/motorBike/system/forceCoeffs @@ -0,0 +1,32 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +forces +{ + type forceCoeffs; + functionObjectLibs ( "libforces.so" ); + outputControl timeStep; + outputInterval 1; + + patches ( "motorBike.*" ); + pName p; + UName U; + rhoName rhoInf; // Indicates incompressible + log true; + rhoInf 1; // Redundant for incompressible + liftDir (0 0 1); + dragDir (1 0 0); + CofR (0.72 0 0); // Axle midpoint on ground + pitchAxis (0 1 0); + magUInf 20; + lRef 1.42; // Wheelbase length + Aref 0.75; // Estimated +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/readFields b/tutorials/incompressible/simpleFoam/motorBike/system/readFields new file mode 100644 index 0000000000..aef5410ebf --- /dev/null +++ b/tutorials/incompressible/simpleFoam/motorBike/system/readFields @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +// Make sure all fields for functionObjects are loaded. Prevents any +// problems running with execFlowFunctionObjects. +readFields +{ + // Where to load it from (if not already in solver) + functionObjectLibs ("libfieldFunctionObjects.so"); + + type readFields; + fields (p U k); +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/streamLines b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines new file mode 100644 index 0000000000..4155012ab1 --- /dev/null +++ b/tutorials/incompressible/simpleFoam/motorBike/system/streamLines @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ + +streamLines +{ + type streamLine; + + // Output every + outputControl outputTime; + // outputInterval 10; + + setFormat vtk; //gnuplot; //xmgr; //raw; //jplot; + + // Velocity field to use for tracking. + U U; + + // Tracked forwards (+U) or backwards (-U) + trackForward true; + + // Names of fields to sample. Should contain above velocity field! + fields (p U k); + + // Steps particles can travel before being removed + lifeTime 10000; + + // Number of steps per cell (estimate). Set to 1 to disable subcycling. + nSubCycle 5; + + // Cloud name to use + cloudName particleTracks; + + // Seeding method. See the sampleSets in sampleDict. + seedSampleSet uniform; //cloud;//triSurfaceMeshPointSet; + + uniformCoeffs + { + type uniform; + axis x; //distance; + + // Note: tracks slightly offset so as not to be on a face + start (-1.001 1e-7 0.0011); + end (-1.001 1e-7 1.0011); + nPoints 20; + } +} + + +// ************************************************************************* // From 9e6f7b70e9ede251dea56aea985db6a2b65ff1c9 Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 12 Apr 2011 11:49:02 +0100 Subject: [PATCH 007/141] Compilation: Correct the gcc location for compilation in 32bit on a 64bit machine --- etc/settings.csh | 2 +- etc/settings.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/settings.csh b/etc/settings.csh index 0e15cef31e..c8807695b5 100644 --- a/etc/settings.csh +++ b/etc/settings.csh @@ -52,7 +52,7 @@ case Linux: case x86_64: switch ($WM_ARCH_OPTION) case 32: - setenv WM_COMPILER_ARCH '-64' + setenv WM_COMPILER_ARCH 64 setenv WM_CC 'gcc' setenv WM_CXX 'g++' setenv WM_CFLAGS '-m32 -fPIC' diff --git a/etc/settings.sh b/etc/settings.sh index f3ccaebb18..650861fa10 100644 --- a/etc/settings.sh +++ b/etc/settings.sh @@ -76,7 +76,7 @@ Linux) x86_64) case "$WM_ARCH_OPTION" in 32) - export WM_COMPILER_ARCH='-64' + export WM_COMPILER_ARCH=64 export WM_CC='gcc' export WM_CXX='g++' export WM_CFLAGS='-m32 -fPIC' From 96b1a46333895e0ad31f0c47858819f353ec358d Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 12 Apr 2011 11:57:40 +0100 Subject: [PATCH 008/141] ENH: Updated reactingParcelFilmFoam solver --- .../solvers/lagrangian/reactingParcelFilmFoam/YEqn.H | 2 +- .../reactingParcelFilmFoam/reactingParcelFilmFoam.C | 2 +- .../lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H | 5 +---- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H index 5eed16aef4..db79376614 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/YEqn.H @@ -23,7 +23,7 @@ tmp > mvConvection ( fvm::ddt(rho, Yi) + mvConvection->fvmDiv(phi, Yi) - - fvm::laplacian(turbulence->muEff(), Yi) + - fvm::laplacian(turbulence->alphaEff(), Yi) == parcels.SYi(i, Yi) + surfaceFilm.Srho(i) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C index fdedebb785..9ec100f3fd 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/reactingParcelFilmFoam.C @@ -67,7 +67,7 @@ int main(int argc, char *argv[]) while (runTime.run()) { #include "readTimeControls.H" - #include "readPISOControls.H" + #include "readPIMPLEControls.H" #include "compressibleCourantNo.H" #include "setMultiRegionDeltaT.H" #include "setDeltaT.H" diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H index ed3b584675..037a09f93d 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/setMultiRegionDeltaT.H @@ -43,14 +43,11 @@ if (adjustTimeStep) const scalar dt0 = runTime.deltaTValue(); - const scalar TFactorFluidLim = - min(min(TFactorFluid, 1.0 + 0.1*TFactorFluid), 1.2); - runTime.setDeltaT ( min ( - dt0*min(TFactorFluidLim, TFactorFilm), + dt0*min(min(TFactorFluid, TFactorFilm), 1.2), maxDeltaT ) ); From 1291caa0dcfce1157fd40e11833128f1872174c9 Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 12 Apr 2011 12:00:23 +0100 Subject: [PATCH 009/141] ENH: Updated cloud couping terms --- .../Templates/KinematicCloud/KinematicCloud.C | 40 +++++++++++++++---- .../Templates/KinematicCloud/KinematicCloud.H | 11 +++++ .../Templates/ReactingCloud/ReactingCloud.C | 19 ++++++++- .../Templates/ReactingCloud/ReactingCloud.H | 3 ++ .../Templates/ThermoCloud/ThermoCloud.C | 11 +++++ .../Templates/ThermoCloud/ThermoCloud.H | 3 ++ .../ReactingMultiphaseParcel.C | 12 +----- .../Templates/ReactingParcel/ReactingParcel.C | 6 +-- 8 files changed, 81 insertions(+), 24 deletions(-) diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index 1c59cae4a6..ce375f42e0 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -100,13 +100,7 @@ template template void Foam::KinematicCloud::solve(TrackData& td) { - if (solution_.transient()) - { - td.cloud().preEvolve(); - - evolveCloud(td); - } - else + if (solution_.steadyState()) { td.cloud().storeState(); @@ -116,6 +110,14 @@ void Foam::KinematicCloud::solve(TrackData& td) td.cloud().relaxSources(td.cloud().cloudCopy()); } + else + { + td.cloud().preEvolve(); + + evolveCloud(td); + + td.cloud().scaleSources(); + } td.cloud().info(); @@ -258,6 +260,7 @@ void Foam::KinematicCloud::cloudReset(KinematicCloud& c) injectionModel_.reset(c.injectionModel_.ptr()); patchInteractionModel_.reset(c.patchInteractionModel_.ptr()); postProcessingModel_.reset(c.postProcessingModel_.ptr()); + surfaceFilmModel_.reset(c.surfaceFilmModel_.ptr()); UIntegrator_.reset(c.UIntegrator_.ptr()); } @@ -556,11 +559,23 @@ void Foam::KinematicCloud::relax ) const { const scalar coeff = solution_.relaxCoeff(name); - field = field0 + coeff*(field - field0); } +template +template +void Foam::KinematicCloud::scale +( + DimensionedField& field, + const word& name +) const +{ + const scalar coeff = solution_.relaxCoeff(name); + field *= coeff; +} + + template void Foam::KinematicCloud::relaxSources ( @@ -568,6 +583,15 @@ void Foam::KinematicCloud::relaxSources ) { this->relax(UTrans_(), cloudOldTime.UTrans(), "U"); + this->relax(UCoeff_(), cloudOldTime.UCoeff(), "U"); +} + + +template +void Foam::KinematicCloud::scaleSources() +{ + this->scale(UTrans_(), "U"); + this->scale(UCoeff_(), "U"); } diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H index 765abfedd7..88eff6449f 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H @@ -498,9 +498,20 @@ public: const word& name ) const; + //- Scale field + template + void scale + ( + DimensionedField& field, + const word& name + ) const; + //- Apply relaxation to (steady state) cloud sources void relaxSources(const KinematicCloud& cloudOldTime); + //- Apply scaling to (transient) cloud sources + void scaleSources(); + //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index eb1f66e85a..c536cd84d6 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -295,10 +295,10 @@ void Foam::ReactingCloud::relaxSources const ReactingCloud& cloudOldTime ) { - typedef DimensionedField dsfType; - CloudType::relaxSources(cloudOldTime); + typedef DimensionedField dsfType; + forAll(rhoTrans_, fieldI) { dsfType& rhoT = rhoTrans_[fieldI]; @@ -308,6 +308,21 @@ void Foam::ReactingCloud::relaxSources } +template +void Foam::ReactingCloud::scaleSources() +{ + CloudType::scaleSources(); + + typedef DimensionedField dsfType; + + forAll(rhoTrans_, fieldI) + { + dsfType& rhoT = rhoTrans_[fieldI]; + this->scale(rhoT, "rho"); + } +} + + template void Foam::ReactingCloud::evolve() { diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H index 6d46d08bb7..324636cca5 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.H @@ -287,6 +287,9 @@ public: //- Apply relaxation to (steady state) cloud sources void relaxSources(const ReactingCloud& cloudOldTime); + //- Apply scaling to (transient) cloud sources + void scaleSources(); + //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index e0365b54e2..91cb53aff0 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -290,6 +290,17 @@ void Foam::ThermoCloud::relaxSources CloudType::relaxSources(cloudOldTime); this->relax(hsTrans_(), cloudOldTime.hsTrans(), "hs"); + this->relax(hsCoeff_(), cloudOldTime.hsCoeff(), "hs"); +} + + +template +void Foam::ThermoCloud::scaleSources() +{ + CloudType::scaleSources(); + + this->scale(hsTrans_(), "hs"); + this->scale(hsCoeff_(), "hs"); } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H index 44656d07fc..f725dca73e 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.H @@ -301,6 +301,9 @@ public: //- Apply relaxation to (steady state) cloud sources void relaxSources(const ThermoCloud& cloudOldTime); + //- Apply scaling to (transient) cloud sources + void scaleSources(); + //- Evolve the cloud void evolve(); diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C index 6ee0d77474..bec3481a0b 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingMultiphaseParcel/ReactingMultiphaseParcel.C @@ -386,15 +386,11 @@ void Foam::ReactingMultiphaseParcel::calc { label gid = composition.localToGlobalCarrierId(GAS, i); td.cloud().rhoTrans(gid)[cellI] += np0*dMassGas[i]; -// td.cloud().hsTrans()[cellI] += -// np0*dMassGas[i]*composition.carrier().Hs(gid, T0); } forAll(YLiquid_, i) { label gid = composition.localToGlobalCarrierId(LIQ, i); td.cloud().rhoTrans(gid)[cellI] += np0*dMassLiquid[i]; -// td.cloud().hsTrans()[cellI] += -// np0*dMassLiquid[i]*composition.carrier().Hs(gid, T0); } /* // No mapping between solid components and carrier phase @@ -402,15 +398,11 @@ void Foam::ReactingMultiphaseParcel::calc { label gid = composition.localToGlobalCarrierId(SLD, i); td.cloud().rhoTrans(gid)[cellI] += np0*dMassSolid[i]; -// td.cloud().hsTrans()[cellI] += -// np0*dMassSolid[i]*composition.carrier().Hs(gid, T0); } */ forAll(dMassSRCarrier, i) { td.cloud().rhoTrans(i)[cellI] += np0*dMassSRCarrier[i]; -// td.cloud().hsTrans()[cellI] += -// np0*dMassSRCarrier[i]*composition.carrier().Hs(i, T0); } // Update momentum transfer @@ -458,8 +450,8 @@ void Foam::ReactingMultiphaseParcel::calc } */ td.cloud().UTrans()[cellI] += np0*mass1*U1; - td.cloud().hsTrans()[cellI] += - np0*mass1*HEff(td, pc, T1, idG, idL, idS); // using total h + + // enthalpy transfer accounted for via change in mass fractions } } diff --git a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C index 56f24c97f1..5fe67854f8 100644 --- a/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/ReactingParcel/ReactingParcel.C @@ -396,8 +396,6 @@ void Foam::ReactingParcel::calc { label gid = composition.localToGlobalCarrierId(0, i); td.cloud().rhoTrans(gid)[cellI] += np0*dMassPC[i]; -// td.cloud().hsTrans()[cellI] += -// np0*dMassPC[i]*composition.carrier().Hs(gid, T0); } // Update momentum transfer @@ -429,8 +427,8 @@ void Foam::ReactingParcel::calc td.cloud().rhoTrans(gid)[cellI] += np0*mass1*Y_[i]; } td.cloud().UTrans()[cellI] += np0*mass1*U1; - td.cloud().hsTrans()[cellI] += - np0*mass1*composition.H(0, Y_, pc_, T1); + + // enthalpy transfer accounted for via change in mass fractions } } From 963ef7e6887700c6df243d3e05b6e528bbf3875b Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 12 Apr 2011 12:00:39 +0100 Subject: [PATCH 010/141] ENH: Updated cloud splash model --- .../ThermoSurfaceFilm/ThermoSurfaceFilm.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C index 7249846b13..541e983155 100644 --- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C +++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C @@ -391,8 +391,8 @@ void Foam::ThermoSurfaceFilm::splashInteraction const scalar dBarSplash = 1/cbrt(6.0)*cbrt(mRatio/Ns)*d + ROOTVSMALL; // cumulative diameter splash distribution - const scalar dMax = cbrt(mRatio)*d; - const scalar dMin = 0.001*dMax; + const scalar dMax = 0.9*cbrt(mRatio)*d; + const scalar dMin = 0.1*dMax; const scalar K = exp(-dMin/dBarSplash) - exp(-dMax/dBarSplash); // surface energy of secondary parcels [J] @@ -437,7 +437,7 @@ void Foam::ThermoSurfaceFilm::splashInteraction // magnitude of the normal velocity of the first splashed parcel const scalar magUns0 = - sqrt(2.0*parcelsPerSplash_*EKs/mSplash/(1 + coeff1/sqr(coeff2))); + sqrt(2.0*parcelsPerSplash_*EKs/mSplash/(1.0 + coeff1/sqr(coeff2))); // Set splashed parcel properties forAll(dNew, i) @@ -467,7 +467,7 @@ void Foam::ThermoSurfaceFilm::splashInteraction // Apply correction to velocity for 2-D cases meshTools::constrainDirection(mesh, mesh.solutionD(), pPtr->U()); - +Info<< "NEW PARTICLE: " << *pPtr << endl; // Add the new parcel this->owner().addParticle(pPtr); From 676b83b87793adb413c2e35bcbaac86022994b4b Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 12 Apr 2011 14:00:12 +0100 Subject: [PATCH 011/141] ENH: Film tutorial updates --- .../0.org => cylinder/0.org/0}/H2O | 2 +- .../{evaporationTest => cylinder/0.org}/0/N2 | 2 +- .../{evaporationTest => cylinder/0.org}/0/O2 | 2 +- .../0.org => cylinder/0.org/0}/T | 10 +- .../0.org => cylinder/0.org/0}/U | 9 +- .../reactingParcelFilmFoam/cylinder/0.org/0/p | 36 + .../0/p => cylinder/0.org/0/p_rgh} | 8 +- .../0.org}/0/wallFilmRegion/Tf | 16 +- .../U => cylinder/0.org/0/wallFilmRegion/Uf} | 14 +- .../cylinder/0.org/0/wallFilmRegion/deltaf | 41 + .../{evaporationTest/0 => cylinder/0.org}/H2O | 2 +- .../{evaporationTest => cylinder}/0.org/N2 | 2 +- .../{evaporationTest => cylinder}/0.org/O2 | 2 +- .../{multipleBoxes/0 => cylinder/0.org}/T | 10 +- .../{evaporationTest/0 => cylinder/0.org}/U | 9 +- .../reactingParcelFilmFoam/cylinder/0.org/p | 36 + .../0.org/p => cylinder/0.org/p_rgh} | 8 +- .../0.org/wallFilmRegion/Tf | 16 +- .../0/U => cylinder/0.org/wallFilmRegion/Uf} | 14 +- .../cylinder/0.org/wallFilmRegion/deltaf | 41 + .../reactingParcelFilmFoam/cylinder/0/0/H2O | 36 + .../reactingParcelFilmFoam/cylinder/0/0/N2 | 36 + .../reactingParcelFilmFoam/cylinder/0/0/O2 | 36 + .../reactingParcelFilmFoam/cylinder/0/0/T | 36 + .../reactingParcelFilmFoam/cylinder/0/0/U | 37 + .../reactingParcelFilmFoam/cylinder/0/0/p | 36 + .../reactingParcelFilmFoam/cylinder/0/0/p_rgh | 34 + .../cylinder/0/0/wallFilmRegion/Tf | 41 + .../cylinder/0/0/wallFilmRegion/Uf | 43 + .../cylinder/0/0/wallFilmRegion/deltaf | 41 + .../reactingParcelFilmFoam/cylinder/0/H2O | 36 + .../reactingParcelFilmFoam/cylinder/0/N2 | 36 + .../reactingParcelFilmFoam/cylinder/0/O2 | 36 + .../reactingParcelFilmFoam/cylinder/0/T | 36 + .../reactingParcelFilmFoam/cylinder/0/U | 37 + .../reactingParcelFilmFoam/cylinder/0/p | 36 + .../reactingParcelFilmFoam/cylinder/0/p_rgh | 34 + .../cylinder/0/wallFilmRegion/Tf | 41 + .../cylinder/0/wallFilmRegion/Uf | 43 + .../cylinder/0/wallFilmRegion/deltaf | 41 + .../{multipleBoxes => cylinder}/Allclean | 3 +- .../reactingParcelFilmFoam/cylinder/Allrun | 11 + .../{evaporationTest => cylinder}/Allrun.pre | 5 - .../constant/additionalControls | 2 +- .../constant/chemistryProperties} | 13 +- .../constant/combustionProperties} | 4 +- .../constant/foam.dat | 0 .../{panel => cylinder}/constant/foam.inp | 3 +- .../{panel => cylinder}/constant/g | 2 +- .../constant/parcelInjectionProperties | 25 + .../constant/polyMesh.save}/blockMeshDict | 18 +- .../cylinder/constant/polyMesh.save/boundary | 242 + .../cylinder/constant/polyMesh.save/cellZones | 21 + .../cylinder/constant/polyMesh.save/faceZones | 232 + .../cylinder/constant/polyMesh.save/faces | 12824 ++++++++ .../cylinder/constant/polyMesh.save/neighbour | 11225 +++++++ .../cylinder/constant/polyMesh.save/owner | 12825 ++++++++ .../constant/polyMesh.save/pointZones | 21 + .../cylinder/constant/polyMesh.save/points | 4875 +++ .../constant/polyMesh.save/sets/wallFilmFaces | 223 + .../cylinder/constant/polyMesh/blockMeshDict | 132 + .../cylinder/constant/polyMesh/boundary | 1149 + .../constant/radiationProperties | 0 .../constant/reactingCloud1Properties | 103 +- .../constant/surfaceFilmProperties | 47 +- .../constant/thermophysicalProperties | 7 +- .../constant/turbulenceProperties | 0 .../system/controlDict | 12 +- .../system/createPatchDict | 2 +- .../system/decomposeParDict | 7 +- .../system/extrudeToRegionMeshDict} | 29 +- .../system/fvSchemes | 9 +- .../{panel => cylinder}/system/fvSolution | 47 +- .../system/wallFilmRegion/fvSchemes | 12 +- .../system/wallFilmRegion/fvSolution | 1 - .../cylinder/wallFilmRegion.setSet | 4 + .../evaporationTest/0.org/T | 39 - .../evaporationTest/0.org/alphat | 39 - .../evaporationTest/0.org/epsilon | 43 - .../evaporationTest/0.org/htcConv | 39 - .../evaporationTest/0.org/k | 37 - .../evaporationTest/0.org/mut | 43 - .../evaporationTest/0.org/wallFilmRegion/T | 53 - .../evaporationTest/0.org/wallFilmRegion/U | 53 - .../evaporationTest/0.org/wallFilmRegion/USpf | 53 - .../evaporationTest/0.org/wallFilmRegion/Uf | 54 - .../evaporationTest/0.org/wallFilmRegion/p | 53 - .../evaporationTest/0.org/wallFilmRegion/pSpf | 53 - .../evaporationTest/0/T | 39 - .../evaporationTest/0/alphat | 39 - .../evaporationTest/0/epsilon | 43 - .../evaporationTest/0/htcConv | 39 - .../evaporationTest/0/k | 37 - .../evaporationTest/0/mut | 43 - .../evaporationTest/0/wallFilmRegion/T | 53 - .../evaporationTest/0/wallFilmRegion/U | 53 - .../evaporationTest/0/wallFilmRegion/USpf | 53 - .../evaporationTest/0/wallFilmRegion/Uf | 54 - .../evaporationTest/0/wallFilmRegion/p | 53 - .../evaporationTest/0/wallFilmRegion/pSpf | 53 - .../evaporationTest/Allclean | 14 - .../evaporationTest/Allrun | 6 - .../constant/chemistryProperties | 49 - .../evaporationTest/constant/g | 23 - .../constant/polyMesh/boundary | 3260 -- .../constant/surfaceFilmProperties | 90 - .../constant/thermophysicalProperties | 43 - .../evaporationTest/system/decomposeParDict | 45 - .../system/extrudeToRegionMeshDict | 38 - .../evaporationTest/system/fvSolution | 62 - .../reactingParcelFilmFoam/hotBoxes/0.org/H2O | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/N2 | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/O2 | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/T | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/U | 2 +- .../hotBoxes/0.org/alphat | 2 +- .../hotBoxes/0.org/epsilon | 2 +- .../hotBoxes/0.org/htcConv | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/k | 2 +- .../reactingParcelFilmFoam/hotBoxes/0.org/mut | 4 +- .../reactingParcelFilmFoam/hotBoxes/0.org/p | 8 +- .../0.org/p => hotBoxes/0.org/p_rgh} | 10 +- .../hotBoxes/0.org/wallFilmRegion/T | 52 - .../hotBoxes/0.org/wallFilmRegion/U | 52 - .../hotBoxes/0.org/wallFilmRegion/USpf | 52 - .../hotBoxes/0.org/wallFilmRegion/Uwf | 53 - .../hotBoxes/0.org/wallFilmRegion/p | 52 - .../hotBoxes/0.org/wallFilmRegion/pSpf | 52 - .../reactingParcelFilmFoam/hotBoxes/0/H2O | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/N2 | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/O2 | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/T | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/U | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/alphat | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/epsilon | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/htcConv | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/k | 2 +- .../reactingParcelFilmFoam/hotBoxes/0/mut | 4 +- .../reactingParcelFilmFoam/hotBoxes/0/p | 8 +- .../{multipleBoxes/0/p => hotBoxes/0/p_rgh} | 10 +- .../hotBoxes/0/wallFilmRegion/T | 52 - .../hotBoxes/0/wallFilmRegion/U | 52 - .../hotBoxes/0/wallFilmRegion/USpf | 52 - .../hotBoxes/0/wallFilmRegion/Uwf | 53 - .../hotBoxes/0/wallFilmRegion/p | 52 - .../hotBoxes/0/wallFilmRegion/pSpf | 52 - .../reactingParcelFilmFoam/hotBoxes/Allclean | 1 - .../reactingParcelFilmFoam/hotBoxes/Allrun | 6 +- .../hotBoxes/Allrun-parallel | 17 +- .../hotBoxes/Allrun.pre | 22 +- .../hotBoxes/constant/RASProperties | 2 +- .../hotBoxes/constant/chemistryProperties | 22 +- .../constant/combustionProperties} | 5 +- .../hotBoxes/constant/foam.inp | 3 +- .../hotBoxes/constant/polyMesh/boundary | 27 +- .../hotBoxes/constant/radiationProperties | 42 +- .../constant/reactingCloud1Properties | 88 +- .../hotBoxes/constant/surfaceFilmProperties | 48 +- .../constant/thermophysicalProperties | 7 +- .../hotBoxes/createWallFilmZone.setSet | 3 +- .../hotBoxes/patchifyObstacles | 13 +- .../hotBoxes/system/changeDictionaryDict | 2 +- .../hotBoxes/system/controlDict | 14 +- .../hotBoxes/system/decomposeParDict | 18 - .../system/extrudeToRegionMeshDict} | 48 +- .../hotBoxes/system/fvSchemes | 22 +- .../hotBoxes/system/fvSolution | 64 +- .../wallFilmRegion.org/decomposeParDict | 18 - .../system/wallFilmRegion.org/fvSchemes | 13 +- .../system/wallFilmRegion.org/fvSolution | 3 +- .../multipleBoxes/0.org/H2O | 35 - .../multipleBoxes/0.org/N2 | 35 - .../multipleBoxes/0.org/O2 | 34 - .../multipleBoxes/0.org/wallFilmRegion/T | 52 - .../multipleBoxes/0.org/wallFilmRegion/Tf | 49 - .../multipleBoxes/0.org/wallFilmRegion/U | 52 - .../multipleBoxes/0.org/wallFilmRegion/USpf | 52 - .../multipleBoxes/0.org/wallFilmRegion/Uf | 50 - .../multipleBoxes/0.org/wallFilmRegion/deltaf | 49 - .../multipleBoxes/0.org/wallFilmRegion/p | 52 - .../multipleBoxes/0.org/wallFilmRegion/pSpf | 52 - .../multipleBoxes/0/H2O | 35 - .../reactingParcelFilmFoam/multipleBoxes/0/N2 | 35 - .../reactingParcelFilmFoam/multipleBoxes/0/O2 | 34 - .../multipleBoxes/0/wallFilmRegion/T | 52 - .../multipleBoxes/0/wallFilmRegion/Tf | 49 - .../multipleBoxes/0/wallFilmRegion/U | 52 - .../multipleBoxes/0/wallFilmRegion/USpf | 52 - .../multipleBoxes/0/wallFilmRegion/Uf | 50 - .../multipleBoxes/0/wallFilmRegion/deltaf | 49 - .../multipleBoxes/0/wallFilmRegion/p | 52 - .../multipleBoxes/0/wallFilmRegion/pSpf | 52 - .../multipleBoxes/Allrun | 6 - .../multipleBoxes/Allrun-parallel | 14 - .../multipleBoxes/Allrun.pre | 45 - .../constant/chemistryProperties | 49 - .../multipleBoxes/constant/foam.inp | 10 - .../constant/polyMesh/blockMeshDict | 60 - .../multipleBoxes/constant/polyMesh/boundary | 25882 ---------------- .../constant/radiationProperties | 67 - .../multipleBoxes/createObstacle.setSet | 14 - .../multipleBoxes/createWallFilmZone.setSet | 2 - .../multipleBoxes/patchifyObstacles | 127 - .../multipleBoxes/system/controlDict | 55 - .../multipleBoxes/system/fvSchemes | 71 - .../wallFilmRegion.org/decomposeParDict | 45 - .../system/wallFilmRegion.org/fvSchemes | 68 - .../system/wallFilmRegion.org/fvSolution | 50 - .../panel/0.org/wallFilmRegion/T | 58 - .../panel/0.org/wallFilmRegion/U | 58 - .../panel/0.org/wallFilmRegion/USpf | 58 - .../panel/0.org/wallFilmRegion/deltaf | 56 - .../panel/0.org/wallFilmRegion/p | 58 - .../panel/0.org/wallFilmRegion/pSpf | 58 - .../panel/0/wallFilmRegion/T | 58 - .../panel/0/wallFilmRegion/U | 58 - .../panel/0/wallFilmRegion/USpf | 58 - .../panel/0/wallFilmRegion/deltaf | 56 - .../panel/0/wallFilmRegion/p | 58 - .../panel/0/wallFilmRegion/pSpf | 58 - .../reactingParcelFilmFoam/panel/Allrun | 6 - .../panel/constant/chemistryProperties | 49 - .../panel/constant/foam.dat | 58 - .../panel/constant/polyMesh/boundary | 642 - .../panel/system/extrudeToRegionMeshDict | 38 - .../panel/wallFilmRegion.setSet | 5 - .../{panel => splashPanel}/0.org/H2O | 2 +- .../{panel => splashPanel}/0.org/N2 | 2 +- .../{panel => splashPanel}/0.org/O2 | 2 +- .../{panel => splashPanel}/0.org/T | 2 +- .../{panel => splashPanel}/0.org/U | 4 +- .../splashPanel/0.org/p | 36 + .../0.org/p => splashPanel/0.org/p_rgh} | 8 +- .../0 => splashPanel/0.org}/wallFilmRegion/Tf | 4 +- .../0.org/wallFilmRegion/Uf | 7 +- .../0.org/wallFilmRegion/deltaf | 12 +- .../{panel => splashPanel}/0/H2O | 2 +- .../{panel => splashPanel}/0/N2 | 2 +- .../{panel => splashPanel}/0/O2 | 2 +- .../{panel => splashPanel}/0/T | 2 +- .../{panel => splashPanel}/0/U | 4 +- .../reactingParcelFilmFoam/splashPanel/0/p | 36 + .../{panel/0/p => splashPanel/0/p_rgh} | 8 +- .../0.org => splashPanel/0}/wallFilmRegion/Tf | 4 +- .../0/wallFilmRegion/Uf | 7 +- .../0/wallFilmRegion/deltaf | 12 +- .../{panel => splashPanel}/Allclean | 3 + .../reactingParcelFilmFoam/splashPanel/Allrun | 11 + .../{panel => splashPanel}/Allrun.pre | 0 .../constant/additionalControls | 2 +- .../constant/chemistryProperties} | 15 +- .../splashPanel/constant/combustionProperties | 21 + .../constant/foam.dat | 0 .../constant/foam.inp | 3 +- .../{multipleBoxes => splashPanel}/constant/g | 0 .../constant/parcelInjectionProperties} | 13 +- .../constant/polyMesh/blockMeshDict | 35 +- .../splashPanel/constant/polyMesh/boundary | 243 + .../constant/radiationProperties | 0 .../constant/reactingCloud1Properties | 143 + .../constant/surfaceFilmProperties | 69 + .../constant/thermophysicalProperties | 7 +- .../constant/turbulenceProperties | 0 .../createWallFilmRegionPatches.setSet | 0 .../{panel => splashPanel}/system/controlDict | 12 +- .../splashPanel/system/createPatchDict | 31 + .../system/decomposeParDict | 7 +- .../system/extrudeToRegionMeshDict | 36 + .../{panel => splashPanel}/system/fvSchemes | 9 +- .../system/fvSolution | 47 +- .../system/wallFilmRegion/createPatchDict | 2 +- .../system/wallFilmRegion/fvSchemes | 3 +- .../system/wallFilmRegion/fvSolution | 4 +- .../wallFilmRegion.setSet | 1 + 274 files changed, 45973 insertions(+), 35110 deletions(-) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0.org => cylinder/0.org/0}/H2O (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder/0.org}/0/N2 (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder/0.org}/0/O2 (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0.org => cylinder/0.org/0}/T (87%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0.org => cylinder/0.org/0}/U (88%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0/p => cylinder/0.org/0/p_rgh} (87%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder/0.org}/0/wallFilmRegion/Tf (84%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0.org/U => cylinder/0.org/0/wallFilmRegion/Uf} (85%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/deltaf rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0 => cylinder/0.org}/H2O (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/0.org/N2 (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/0.org/O2 (97%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0 => cylinder/0.org}/T (87%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0 => cylinder/0.org}/U (88%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/0.org/p => cylinder/0.org/p_rgh} (87%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/0.org/wallFilmRegion/Tf (84%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0/U => cylinder/0.org/wallFilmRegion/Uf} (85%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/deltaf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/H2O create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/N2 create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/O2 create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/T create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/U create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p_rgh create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Tf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Uf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/deltaf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/H2O create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/N2 create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/O2 create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/T create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/U create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p_rgh create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Tf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Uf create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/deltaf rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => cylinder}/Allclean (85%) create mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/Allrun.pre (68%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/constant/additionalControls (95%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/constant/RASProperties => cylinder/constant/chemistryProperties} (80%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/constant/turbulenceProperties => cylinder/constant/combustionProperties} (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/constant/foam.dat (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/constant/foam.inp (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/constant/g (96%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/parcelInjectionProperties rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/constant/polyMesh => cylinder/constant/polyMesh.save}/blockMeshDict (85%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/boundary create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/cellZones create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/faceZones create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/faces create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/neighbour create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/owner create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/pointZones create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/points create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/sets/wallFilmFaces create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh/blockMeshDict create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh/boundary rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/constant/radiationProperties (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => cylinder}/constant/reactingCloud1Properties (53%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => cylinder}/constant/surfaceFilmProperties (61%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/constant/thermophysicalProperties (95%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/constant/turbulenceProperties (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/system/controlDict (89%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/system/createPatchDict (98%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/system/decomposeParDict (93%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/constant/surfaceFilmProperties => cylinder/system/extrudeToRegionMeshDict} (65%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/system/fvSchemes (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/system/fvSolution (76%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => cylinder}/system/wallFilmRegion/fvSchemes (85%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => cylinder}/system/wallFilmRegion/fvSolution (98%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/cylinder/wallFilmRegion.setSet delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/alphat delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/epsilon delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/htcConv delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/k delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/mut delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/Uf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/pSpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/alphat delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/epsilon delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/htcConv delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/k delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/mut delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/Uf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/pSpf delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/Allclean delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/Allrun delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/chemistryProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/g delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/polyMesh/boundary delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/surfaceFilmProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/thermophysicalProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/system/decomposeParDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/system/extrudeToRegionMeshDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/system/fvSolution rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0.org/p => hotBoxes/0.org/p_rgh} (78%) delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/Uwf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0.org/wallFilmRegion/pSpf rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/0/p => hotBoxes/0/p_rgh} (78%) delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/Uwf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/hotBoxes/0/wallFilmRegion/pSpf rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes/constant/additionalControls => hotBoxes/constant/combustionProperties} (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/system/wallFilmRegion/decomposeParDict => hotBoxes/system/extrudeToRegionMeshDict} (51%) delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/H2O delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/N2 delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/O2 delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/Tf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/Uf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/deltaf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/wallFilmRegion/pSpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/H2O delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/N2 delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/O2 delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/Tf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/Uf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/deltaf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/wallFilmRegion/pSpf delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allrun delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allrun-parallel delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allrun.pre delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/constant/chemistryProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/constant/foam.inp delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/constant/polyMesh/blockMeshDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/constant/polyMesh/boundary delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/constant/radiationProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/createObstacle.setSet delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/createWallFilmZone.setSet delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/patchifyObstacles delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/system/controlDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/system/fvSchemes delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/system/wallFilmRegion.org/decomposeParDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/system/wallFilmRegion.org/fvSchemes delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/system/wallFilmRegion.org/fvSolution delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/deltaf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0.org/wallFilmRegion/pSpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/T delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/U delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/USpf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/deltaf delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/p delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/0/wallFilmRegion/pSpf delete mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/panel/Allrun delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/chemistryProperties delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/foam.dat delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/polyMesh/boundary delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/system/extrudeToRegionMeshDict delete mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/panel/wallFilmRegion.setSet rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/H2O (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/N2 (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/O2 (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/T (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/U (94%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/0.org/p rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/0.org/p => splashPanel/0.org/p_rgh} (89%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/0 => splashPanel/0.org}/wallFilmRegion/Tf (94%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0.org/wallFilmRegion/Uf (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/0.org/wallFilmRegion/deltaf (93%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/H2O (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/N2 (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/O2 (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/T (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/U (94%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/0/p rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/0/p => splashPanel/0/p_rgh} (89%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/0.org => splashPanel/0}/wallFilmRegion/Tf (94%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/0/wallFilmRegion/Uf (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/0/wallFilmRegion/deltaf (93%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/Allclean (75%) create mode 100755 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/Allrun rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/Allrun.pre (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/constant/additionalControls (95%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel/constant/reactingCloud1Properties => splashPanel/constant/chemistryProperties} (80%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/combustionProperties rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/constant/foam.dat (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/constant/foam.inp (92%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/constant/g (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest/constant/reactingCloud1Properties => splashPanel/constant/parcelInjectionProperties} (76%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/constant/polyMesh/blockMeshDict (75%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/polyMesh/boundary rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/constant/radiationProperties (100%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/reactingCloud1Properties create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/constant/surfaceFilmProperties rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/constant/thermophysicalProperties (95%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/constant/turbulenceProperties (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/createWallFilmRegionPatches.setSet (100%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/system/controlDict (88%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/system/createPatchDict rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/system/decomposeParDict (93%) create mode 100644 tutorials/lagrangian/reactingParcelFilmFoam/splashPanel/system/extrudeToRegionMeshDict rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/system/fvSchemes (91%) rename tutorials/lagrangian/reactingParcelFilmFoam/{multipleBoxes => splashPanel}/system/fvSolution (76%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/system/wallFilmRegion/createPatchDict (99%) rename tutorials/lagrangian/reactingParcelFilmFoam/{panel => splashPanel}/system/wallFilmRegion/fvSchemes (91%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/system/wallFilmRegion/fvSolution (93%) rename tutorials/lagrangian/reactingParcelFilmFoam/{evaporationTest => splashPanel}/wallFilmRegion.setSet (53%) diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/H2O b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/H2O similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/H2O rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/H2O index b760440d33..5e1dccea96 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/H2O +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/H2O @@ -22,7 +22,7 @@ internalField uniform 0.0; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/N2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/N2 similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/N2 rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/N2 index 526299832f..cc5c913e85 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/N2 +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/N2 @@ -22,7 +22,7 @@ internalField uniform 0.79; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/O2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/O2 similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/O2 rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/O2 index df1711bebb..b0e5c52822 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/O2 +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/O2 @@ -22,7 +22,7 @@ internalField uniform 0.21; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/T b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/T similarity index 87% rename from tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/T rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/T index c00d88466a..d7e527d5cd 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/T +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/T @@ -9,8 +9,8 @@ FoamFile { version 2.0; format ascii; - class volScalarField; location "0"; + class volScalarField; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,16 +21,16 @@ internalField uniform 300; boundaryField { - walls + "(sides|frontAndBack)" { type fixedValue; value uniform 300; } - wallFilm + region0_to_wallFilmRegion_wallFilmFaces { - type zeroGradient; + type fixedValue; + value uniform 300; } } - // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/U similarity index 88% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/U rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/U index 4ba4caa5d3..5583d72825 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/U +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/U @@ -21,17 +21,14 @@ internalField uniform (0 0 0); boundaryField { - "(.*)" + "(sides|frontAndBack)" { - type fixedValue; + type pressureInletOutletVelocity; value uniform (0 0 0); } region0_to_wallFilmRegion_wallFilmFaces { - type directMapped; - fieldName Usf; - average ( 0 0 0 ); - setAverage no; + type fixedValue; value uniform (0 0 0); } } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p new file mode 100644 index 0000000000..fcda0699d1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type calculated; + value $internalField; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p_rgh similarity index 87% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/p rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p_rgh index 545caddb33..f9906768c1 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/p +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/p_rgh @@ -11,7 +11,7 @@ FoamFile format ascii; class volScalarField; location "0"; - object p; + object p_rgh; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,13 +21,13 @@ internalField uniform 100000; boundaryField { - "(.*)" + "(sides|frontAndBack)" { - type zeroGradient; // buoyantPressure; + type buoyantPressure; } region0_to_wallFilmRegion_wallFilmFaces { - type zeroGradient; // buoyantPressure; + type buoyantPressure; } } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/Tf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Tf similarity index 84% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/Tf rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Tf index 452777f8f7..79b48fefa2 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/wallFilmRegion/Tf +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Tf @@ -17,7 +17,7 @@ FoamFile dimensions [0 0 0 1 0 0 0]; -internalField uniform 288; +internalField uniform 300; boundaryField { @@ -27,25 +27,15 @@ boundaryField } region0_to_wallFilmRegion_wallFilmFaces - { - type fixedValue; - value uniform 312.3; - } - - left { type zeroGradient; } - right - { - type zeroGradient; - } - - frontAndBack + filmWalls { type zeroGradient; } } + // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Uf similarity index 85% rename from tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/U rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Uf index 7a2646b8a8..962a7a18fb 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0.org/U +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/Uf @@ -10,8 +10,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; - object U; + location "0/wallFilmRegion"; + object Uf; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,12 +21,18 @@ internalField uniform (0 0 0); boundaryField { - walls + wallFilmFaces_top + { + type slip; + } + + region0_to_wallFilmRegion_wallFilmFaces { type fixedValue; value uniform (0 0 0); } - wallFilm + + filmWalls { type fixedValue; value uniform (0 0 0); diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/deltaf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/deltaf new file mode 100644 index 0000000000..0289f0e1c8 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/0/wallFilmRegion/deltaf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object deltaf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/H2O b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/H2O similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/H2O rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/H2O index b760440d33..5e1dccea96 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/H2O +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/H2O @@ -22,7 +22,7 @@ internalField uniform 0.0; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/N2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/N2 similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/N2 rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/N2 index 526299832f..cc5c913e85 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/N2 +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/N2 @@ -22,7 +22,7 @@ internalField uniform 0.79; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/O2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/O2 similarity index 97% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/O2 rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/O2 index df1711bebb..b0e5c52822 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/O2 +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/O2 @@ -22,7 +22,7 @@ internalField uniform 0.21; boundaryField { - "(.*)" + "(sides|frontAndBack)" { type zeroGradient; } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/T b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/T similarity index 87% rename from tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/T rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/T index c00d88466a..d7e527d5cd 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/T +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/T @@ -9,8 +9,8 @@ FoamFile { version 2.0; format ascii; - class volScalarField; location "0"; + class volScalarField; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,16 +21,16 @@ internalField uniform 300; boundaryField { - walls + "(sides|frontAndBack)" { type fixedValue; value uniform 300; } - wallFilm + region0_to_wallFilmRegion_wallFilmFaces { - type zeroGradient; + type fixedValue; + value uniform 300; } } - // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/U similarity index 88% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/U rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/U index 4ba4caa5d3..5583d72825 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0/U +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/U @@ -21,17 +21,14 @@ internalField uniform (0 0 0); boundaryField { - "(.*)" + "(sides|frontAndBack)" { - type fixedValue; + type pressureInletOutletVelocity; value uniform (0 0 0); } region0_to_wallFilmRegion_wallFilmFaces { - type directMapped; - fieldName Usf; - average ( 0 0 0 ); - setAverage no; + type fixedValue; value uniform (0 0 0); } } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p new file mode 100644 index 0000000000..fcda0699d1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type calculated; + value $internalField; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p_rgh similarity index 87% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/p rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p_rgh index 545caddb33..f9906768c1 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/p +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/p_rgh @@ -11,7 +11,7 @@ FoamFile format ascii; class volScalarField; location "0"; - object p; + object p_rgh; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,13 +21,13 @@ internalField uniform 100000; boundaryField { - "(.*)" + "(sides|frontAndBack)" { - type zeroGradient; // buoyantPressure; + type buoyantPressure; } region0_to_wallFilmRegion_wallFilmFaces { - type zeroGradient; // buoyantPressure; + type buoyantPressure; } } diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/Tf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Tf similarity index 84% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/Tf rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Tf index 452777f8f7..79b48fefa2 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/0.org/wallFilmRegion/Tf +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Tf @@ -17,7 +17,7 @@ FoamFile dimensions [0 0 0 1 0 0 0]; -internalField uniform 288; +internalField uniform 300; boundaryField { @@ -27,25 +27,15 @@ boundaryField } region0_to_wallFilmRegion_wallFilmFaces - { - type fixedValue; - value uniform 312.3; - } - - left { type zeroGradient; } - right - { - type zeroGradient; - } - - frontAndBack + filmWalls { type zeroGradient; } } + // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Uf similarity index 85% rename from tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/U rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Uf index 7a2646b8a8..962a7a18fb 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/0/U +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/Uf @@ -10,8 +10,8 @@ FoamFile version 2.0; format ascii; class volVectorField; - location "0"; - object U; + location "0/wallFilmRegion"; + object Uf; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -21,12 +21,18 @@ internalField uniform (0 0 0); boundaryField { - walls + wallFilmFaces_top + { + type slip; + } + + region0_to_wallFilmRegion_wallFilmFaces { type fixedValue; value uniform (0 0 0); } - wallFilm + + filmWalls { type fixedValue; value uniform (0 0 0); diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/deltaf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/deltaf new file mode 100644 index 0000000000..0289f0e1c8 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0.org/wallFilmRegion/deltaf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object deltaf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/H2O b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/H2O new file mode 100644 index 0000000000..5e1dccea96 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/H2O @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/N2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/N2 new file mode 100644 index 0000000000..cc5c913e85 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/N2 @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.79; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/O2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/O2 new file mode 100644 index 0000000000..b0e5c52822 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/O2 @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.21; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/T b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/T new file mode 100644 index 0000000000..d7e527d5cd --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/T @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + location "0"; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + "(sides|frontAndBack)" + { + type fixedValue; + value uniform 300; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform 300; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/U new file mode 100644 index 0000000000..5583d72825 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/U @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ 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 +{ + "(sides|frontAndBack)" + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p new file mode 100644 index 0000000000..fcda0699d1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type calculated; + value $internalField; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p_rgh b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p_rgh new file mode 100644 index 0000000000..f9906768c1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/p_rgh @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type buoyantPressure; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type buoyantPressure; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Tf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Tf new file mode 100644 index 0000000000..79b48fefa2 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Tf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object Tf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Uf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Uf new file mode 100644 index 0000000000..962a7a18fb --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/Uf @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0/wallFilmRegion"; + object Uf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + wallFilmFaces_top + { + type slip; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform (0 0 0); + } + + filmWalls + { + type fixedValue; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/deltaf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/deltaf new file mode 100644 index 0000000000..0289f0e1c8 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/0/wallFilmRegion/deltaf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object deltaf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/H2O b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/H2O new file mode 100644 index 0000000000..5e1dccea96 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/H2O @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object H2O; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.0; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/N2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/N2 new file mode 100644 index 0000000000..cc5c913e85 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/N2 @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object N2; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.79; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/O2 b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/O2 new file mode 100644 index 0000000000..b0e5c52822 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/O2 @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object O2; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0 0 0]; + +internalField uniform 0.21; + +boundaryField +{ + "(sides|frontAndBack)" + { + type zeroGradient; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/T b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/T new file mode 100644 index 0000000000..d7e527d5cd --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/T @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + location "0"; + class volScalarField; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + "(sides|frontAndBack)" + { + type fixedValue; + value uniform 300; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform 300; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/U b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/U new file mode 100644 index 0000000000..5583d72825 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/U @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ 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 +{ + "(sides|frontAndBack)" + { + type pressureInletOutletVelocity; + value uniform (0 0 0); + } + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p new file mode 100644 index 0000000000..fcda0699d1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p @@ -0,0 +1,36 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type calculated; + value $internalField; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type calculated; + value $internalField; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p_rgh b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p_rgh new file mode 100644 index 0000000000..f9906768c1 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/p_rgh @@ -0,0 +1,34 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p_rgh; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 100000; + +boundaryField +{ + "(sides|frontAndBack)" + { + type buoyantPressure; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type buoyantPressure; + } +} + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Tf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Tf new file mode 100644 index 0000000000..79b48fefa2 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Tf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object Tf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Uf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Uf new file mode 100644 index 0000000000..962a7a18fb --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/Uf @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0/wallFilmRegion"; + object Uf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + wallFilmFaces_top + { + type slip; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type fixedValue; + value uniform (0 0 0); + } + + filmWalls + { + type fixedValue; + value uniform (0 0 0); + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/deltaf b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/deltaf new file mode 100644 index 0000000000..0289f0e1c8 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/0/wallFilmRegion/deltaf @@ -0,0 +1,41 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0/wallFilmRegion"; + object deltaf; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + wallFilmFaces_top + { + type zeroGradient; + } + + region0_to_wallFilmRegion_wallFilmFaces + { + type zeroGradient; + } + + filmWalls + { + type zeroGradient; + } +} + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allclean b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allclean similarity index 85% rename from tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allclean rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allclean index 60822bc8ef..49a23b95b8 100755 --- a/tutorials/lagrangian/reactingParcelFilmFoam/multipleBoxes/Allclean +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allclean @@ -4,10 +4,11 @@ cleanCase -rm -rf system/wallFilmRegion rm -rf constant/wallFilmRegion rm -rf 0 cp -rf 0.org 0 rm -f *.obj +#rm -rf VTK + diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun new file mode 100755 index 0000000000..03135280bf --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +./Allrun.pre + +application=`getApplication` + +runApplication $application + diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/Allrun.pre b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun.pre similarity index 68% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/Allrun.pre rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun.pre index a6e2612512..a283228a85 100755 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/Allrun.pre +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/Allrun.pre @@ -1,15 +1,10 @@ #!/bin/sh . $WM_PROJECT_DIR/bin/tools/RunFunctions -rm -fr log.* - runApplication blockMesh runApplication setSet -batch wallFilmRegion.setSet mv log.setSet log.wallFilmRegion.setSet -runApplication setsToZones -noFlipMap -mv log.setsToZones log.setsToZones.primaryRegion - runApplication extrudeToRegionMesh -overwrite diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/additionalControls b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/additionalControls similarity index 95% rename from tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/additionalControls rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/additionalControls index cd51e00683..dbbbbf342c 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/additionalControls +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/additionalControls @@ -15,6 +15,6 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -solvePrimaryRegion false; // true; +solvePrimaryRegion true; // false; // true; // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/RASProperties b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/chemistryProperties similarity index 80% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/RASProperties rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/chemistryProperties index ff89fc8434..fca4f15a5c 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/RASProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/chemistryProperties @@ -11,16 +11,19 @@ FoamFile format ascii; class dictionary; location "constant"; - object RASProperties; + object chemistryProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -RASModel kEpsilon; +psiChemistryModel ODEChemistryModel; -turbulence on; +chemistry off; -printCoeffs on; +turbulentReaction off; + +chemistrySolver noChemistrySolver; + +initialChemicalTimeStep 1e-07; // ************************************************************************* // -/* vim: set filetype=cpp : */ diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/turbulenceProperties b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties similarity index 92% rename from tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/turbulenceProperties rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties index d0a0998654..4d6e2a96b0 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/turbulenceProperties +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/combustionProperties @@ -11,11 +11,11 @@ FoamFile format ascii; class dictionary; location "constant"; - object turbulenceProperties; + object combustionProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -simulationType laminar; +combustionModel none; // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/foam.dat b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat similarity index 100% rename from tutorials/lagrangian/reactingParcelFilmFoam/evaporationTest/constant/foam.dat rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.dat diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/foam.inp b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.inp similarity index 92% rename from tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/foam.inp rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.inp index 84c3df95ee..cf67d1ec7c 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/foam.inp +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/foam.inp @@ -3,7 +3,8 @@ species O2 H2O N2 -); +) +; reactions {} diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/g b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/g similarity index 96% rename from tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/g rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/g index fdf2676466..fdb459fd07 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/g +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/g @@ -16,7 +16,7 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -2 0 0 0 0]; -value (0 0 -9.81); +value (0 -9.81 0); // ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/parcelInjectionProperties b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/parcelInjectionProperties new file mode 100644 index 0000000000..65c5a7f257 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/parcelInjectionProperties @@ -0,0 +1,25 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.7.1 | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object scalarListList; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// (x y z) (u v w) d rho mDot T cp (Y0..Y2) (Yg0..YgN) (Yl0..YlN) (Ys0..YsN) +( + (0 1.95 -0.2) (0 -5 0) 0.001 1000 0.002 300 4200 (1) + (0 1.95 0) (0 -5 0) 0.001 1000 0.002 300 4200 (1) + (0 1.95 0.2) (0 -5 0) 0.001 1000 0.002 300 4200 (1) +); + + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/polyMesh/blockMeshDict b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/blockMeshDict similarity index 85% rename from tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/polyMesh/blockMeshDict rename to tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/blockMeshDict index 120df680f5..ab01f1281b 100644 --- a/tutorials/lagrangian/reactingParcelFilmFoam/panel/constant/polyMesh/blockMeshDict +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/blockMeshDict @@ -20,21 +20,21 @@ convertToMeters 0.1; vertices ( //back - ( 0 0 0) - ( 1 0 0) + ( 0 0 0) + ( 1 0 0) ( 0 0.5 0) - ( 1 0.5 0) + ( 1 0.5 0) // front - ( 0 0 0.2) - ( 1 0 0.2) - ( 0 0.5 0.2) - ( 1 0.5 0.2) + ( 0 0 1) + ( 1 0 1) + ( 0 0.5 1) + ( 1 0.5 1) ); blocks ( - hex (0 1 3 2 4 5 7 6 ) (20 30 1) simpleGrading (1 1 1) + hex (0 1 3 2 4 5 7 6 ) (20 10 20) simpleGrading (1 1 1) ); edges @@ -43,7 +43,7 @@ edges patches ( - wall walls + patch sides ( (1 5 7 3) (4 5 7 6) diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/boundary b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/boundary new file mode 100644 index 0000000000..52b636ac61 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/boundary @@ -0,0 +1,242 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +2 +( + sides + { + type patch; + nFaces 1400; + startFace 11200; + } + region0_to_wallFilmRegion_wallFilmFaces + { + type directMappedWall; + nFaces 200; + startFace 12600; + sampleMode nearestPatchFace; + sampleRegion wallFilmRegion; + samplePatch region0_to_wallFilmRegion_wallFilmFaces; + offsets +200 +( +(-4.33680869e-19 -4.33680869e-19 -0) +(-4.33680869e-19 -8.67361738e-19 -0) +(-4.33680869e-19 -1.734723476e-18 -0) +(-0 3.469446952e-18 -0) +(-0 -0 -0) +(-4.33680869e-19 -3.469446952e-18 -0) +(-4.33680869e-19 -6.938893904e-18 -0) +(-4.33680869e-19 -0 -0) +(-0 -6.938893904e-18 -0) +(-4.33680869e-19 -0 -0) +(-0 -4.33680869e-19 -0) +(-1.734723476e-18 -0 -0) +(-0 -0 -0) +(-8.67361738e-19 -0 -0) +(-8.67361738e-19 3.469446952e-18 -0) +(-2.602085214e-18 -3.469446952e-18 -0) +(-0 -6.938893904e-18 -0) +(-8.67361738e-19 -6.938893904e-18 -0) +(-0 6.938893904e-18 -0) +(-0 -0 -0) +(1.734723476e-18 -0 -0) +(-1.734723476e-18 -0 -0) +(-0 -3.469446952e-18 -0) +(1.734723476e-18 6.938893904e-18 -0) +(-0 -0 -0) +(1.734723476e-18 -0 -0) +(3.469446952e-18 6.938893904e-18 -0) +(-0 -6.938893904e-18 -0) +(-1.734723476e-18 -6.938893904e-18 -0) +(3.469446952e-18 6.938893904e-18 -0) +(-3.469446952e-18 4.33680869e-19 -0) +(-0 -1.734723476e-18 -0) +(-0 1.734723476e-18 -0) +(3.469446952e-18 3.469446952e-18 -0) +(3.469446952e-18 3.469446952e-18 -0) +(-0 3.469446952e-18 -0) +(-3.469446952e-18 -0 -0) +(-0 -0 -0) +(-0 -0 -0) +(-3.469446952e-18 -0 -0) +(-0 -4.33680869e-19 -0) +(-0 -8.67361738e-19 -0) +(-3.469446952e-18 -0 -0) +(-3.469446952e-18 -3.469446952e-18 -0) +(-0 -0 -0) +(-0 -0 -0) +(-6.938893904e-18 -0 -0) +(-3.469446952e-18 -6.938893904e-18 -0) +(-3.469446952e-18 6.938893904e-18 -0) +(-6.938893904e-18 -1.387778781e-17 -0) +(-3.469446952e-18 -4.33680869e-19 -0) +(-3.469446952e-18 1.734723476e-18 -0) +(3.469446952e-18 -0 -0) +(-0 3.469446952e-18 -0) +(-3.469446952e-18 -3.469446952e-18 -0) +(-3.469446952e-18 -1.040834086e-17 -0) +(3.469446952e-18 6.938893904e-18 -0) +(-3.469446952e-18 -0 -0) +(-3.469446952e-18 -6.938893904e-18 -0) +(3.469446952e-18 -0 -0) +(-0 -4.33680869e-19 -0) +(6.938893904e-18 8.67361738e-19 -0) +(-6.938893904e-18 -1.734723476e-18 -0) +(-6.938893904e-18 -3.469446952e-18 -0) +(-0 -0 -0) +(-0 -6.938893904e-18 -0) +(-6.938893904e-18 -6.938893904e-18 -0) +(-6.938893904e-18 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-6.938893904e-18 -1.387778781e-17 -0) +(-0 -0 -0) +(-0 -0 -0) +(6.938893904e-18 1.734723476e-18 -0) +(-0 -0 -0) +(-6.938893904e-18 -0 -0) +(-0 -6.938893904e-18 -0) +(-0 6.938893904e-18 -0) +(-6.938893904e-18 -0 -0) +(-6.938893904e-18 -0 -0) +(-0 -0 -0) +(6.938893904e-18 -0 -0) +(-6.938893904e-18 -2.602085214e-18 -0) +(6.938893904e-18 3.469446952e-18 -0) +(6.938893904e-18 3.469446952e-18 -0) +(6.938893904e-18 -3.469446952e-18 -0) +(6.938893904e-18 -3.469446952e-18 -0) +(-6.938893904e-18 -0 -0) +(-6.938893904e-18 -0 -0) +(-6.938893904e-18 -6.938893904e-18 -0) +(-6.938893904e-18 -6.938893904e-18 -0) +(-6.938893904e-18 -4.33680869e-19 -0) +(6.938893904e-18 8.67361738e-19 -0) +(-6.938893904e-18 -1.734723476e-18 -0) +(-1.387778781e-17 -3.469446952e-18 -0) +(-6.938893904e-18 -0 -0) +(-0 -6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-6.938893904e-18 -0 -0) +(-6.938893904e-18 -6.938893904e-18 -0) +(-1.387778781e-17 -1.387778781e-17 -0) +(-0 -0 -0) +(-0 -0 -0) +(-0 1.734723476e-18 -0) +(6.938893904e-18 -0 -0) +(-0 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-0 6.938893904e-18 -0) +(6.938893904e-18 -0 -0) +(-6.938893904e-18 -0 -0) +(-0 -0 -0) +(-0 -0 -0) +(-6.938893904e-18 -2.602085214e-18 -0) +(-0 3.469446952e-18 -0) +(-6.938893904e-18 3.469446952e-18 -0) +(-6.938893904e-18 -3.469446952e-18 -0) +(-0 -3.469446952e-18 -0) +(-1.387778781e-17 -0 -0) +(-1.387778781e-17 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-2.081668171e-17 -4.33680869e-19 -0) +(-6.938893904e-18 8.67361738e-19 -0) +(6.938893904e-18 -1.734723476e-18 -0) +(-0 -3.469446952e-18 -0) +(6.938893904e-18 -0 -0) +(1.387778781e-17 -6.938893904e-18 -0) +(-0 -6.938893904e-18 -0) +(-0 -0 -0) +(-0 -6.938893904e-18 -0) +(-0 -1.387778781e-17 -0) +(-1.387778781e-17 -4.33680869e-19 -0) +(-0 8.67361738e-19 -0) +(-0 -1.734723476e-18 -0) +(-1.387778781e-17 -3.469446952e-18 -0) +(-0 -0 -0) +(-0 -6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -1.387778781e-17 -0) +(-0 -0 -0) +(-0 -0 -0) +(-0 1.734723476e-18 -0) +(1.387778781e-17 -3.469446952e-18 -0) +(-0 -3.469446952e-18 -0) +(-0 3.469446952e-18 -0) +(-0 -0 -0) +(-1.387778781e-17 6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-0 -1.387778781e-17 -0) +(-1.387778781e-17 -4.33680869e-19 -0) +(1.387778781e-17 8.67361738e-19 -0) +(-1.387778781e-17 -1.734723476e-18 -0) +(-0 -3.469446952e-18 -0) +(-0 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -0 -0) +(-2.775557562e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -1.387778781e-17 -0) +(-0 -4.33680869e-19 -0) +(-0 8.67361738e-19 -0) +(-1.387778781e-17 -1.734723476e-18 -0) +(-1.387778781e-17 -3.469446952e-18 -0) +(1.387778781e-17 -0 -0) +(1.387778781e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -1.387778781e-17 -0) +(-0 -4.33680869e-19 -0) +(-1.387778781e-17 -8.67361738e-19 -0) +(-0 1.734723476e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-0 -0 -0) +(-1.387778781e-17 -1.040834086e-17 -0) +(-1.387778781e-17 -0 -0) +(1.387778781e-17 -0 -0) +(-1.387778781e-17 -0 -0) +(-1.387778781e-17 -1.387778781e-17 -0) +(-0 -4.33680869e-19 -0) +(1.387778781e-17 8.67361738e-19 -0) +(1.387778781e-17 -1.734723476e-18 -0) +(-2.775557562e-17 -3.469446952e-18 -0) +(-1.387778781e-17 -0 -0) +(-0 -6.938893904e-18 -0) +(-2.775557562e-17 -6.938893904e-18 -0) +(-0 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -1.387778781e-17 -0) +(-2.775557562e-17 -4.33680869e-19 -0) +(1.387778781e-17 8.67361738e-19 -0) +(-1.387778781e-17 -1.734723476e-18 -0) +(-1.387778781e-17 -3.469446952e-18 -0) +(-0 -0 -0) +(-0 -6.938893904e-18 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-2.775557562e-17 -0 -0) +(-1.387778781e-17 -6.938893904e-18 -0) +(-1.387778781e-17 -1.387778781e-17 -0) +) +; + } +) + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/cellZones b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/cellZones new file mode 100644 index 0000000000..e170d8c1ad --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/cellZones @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object cellZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +0 +() + +// ************************************************************************* // diff --git a/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/faceZones b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/faceZones new file mode 100644 index 0000000000..bd1f20da56 --- /dev/null +++ b/tutorials/lagrangian/reactingParcelFilmFoam/cylinder/constant/polyMesh.save/faceZones @@ -0,0 +1,232 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class regIOobject; + location "constant/polyMesh"; + object faceZones; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +1 +( +wallFilmFaces +{ + type faceZone; +faceLabels List