diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 987729b1a1d2d7d93c916e29596e7067205fec8a..140b92dc89742c5691368060caa6d470dce8e535 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -204,6 +204,7 @@ $(derivedFvPatchFields)/prghPressure/prghPressureFvPatchScalarField.C $(derivedFvPatchFields)/prghTotalPressure/prghTotalPressureFvPatchScalarField.C $(derivedFvPatchFields)/prghTotalHydrostaticPressure/prghTotalHydrostaticPressureFvPatchScalarField.C $(derivedFvPatchFields)/fixedProfile/fixedProfileFvPatchFields.C +$(derivedFvPatchFields)/plenumPressure/plenumPressureFvPatchScalarField.C fvsPatchFields = fields/fvsPatchFields $(fvsPatchFields)/fvsPatchField/fvsPatchFields.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..13c9af6a54f00e705f7b74dbafb0e2a7e90feb5b --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.C @@ -0,0 +1,346 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "plenumPressureFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "volFields.H" +#include "surfaceFields.H" + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchScalarField(p, iF), + gamma_(1.4), + R_(287.04), + supplyMassFlowRate_(1.0), + supplyTotalTemperature_(300.0), + plenumVolume_(1.0), + plenumDensity_(1.0), + plenumDensityOld_(1.0), + plenumTemperature_(300.0), + plenumTemperatureOld_(300.0), + rho_(1.0), + hasRho_(false), + inletAreaRatio_(1.0), + inletDischargeCoefficient_(1.0), + timeScale_(0.0), + timeIndex_(-1), + phiName_("phi"), + UName_("U") +{} + + +Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + fixedValueFvPatchScalarField(p, iF), + gamma_(readScalar(dict.lookup("gamma"))), + R_(readScalar(dict.lookup("R"))), + supplyMassFlowRate_(readScalar(dict.lookup("supplyMassFlowRate"))), + supplyTotalTemperature_ + ( + readScalar(dict.lookup("supplyTotalTemperature")) + ), + plenumVolume_(readScalar(dict.lookup("plenumVolume"))), + plenumDensity_(readScalar(dict.lookup("plenumDensity"))), + plenumTemperature_(readScalar(dict.lookup("plenumTemperature"))), + rho_(1.0), + hasRho_(false), + inletAreaRatio_(readScalar(dict.lookup("inletAreaRatio"))), + inletDischargeCoefficient_ + ( + readScalar(dict.lookup("inletDischargeCoefficient")) + ), + timeScale_(dict.lookupOrDefault<scalar>("timeScale", 0.0)), + phiName_(dict.lookupOrDefault<word>("phi", "phi")), + UName_(dict.lookupOrDefault<word>("U", "U")) +{ + fvPatchScalarField::operator=(scalarField("value", dict, p.size())); + + if (dict.found("rho")) + { + rho_ = readScalar(dict.lookup("rho")); + hasRho_ = true; + } +} + + +Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField +( + const plenumPressureFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchScalarField(ptf, p, iF, mapper), + gamma_(ptf.gamma_), + R_(ptf.R_), + supplyMassFlowRate_(ptf.supplyMassFlowRate_), + supplyTotalTemperature_(ptf.supplyTotalTemperature_), + plenumVolume_(ptf.plenumVolume_), + plenumDensity_(ptf.plenumDensity_), + plenumTemperature_(ptf.plenumTemperature_), + rho_(ptf.rho_), + hasRho_(ptf.hasRho_), + inletAreaRatio_(ptf.inletAreaRatio_), + inletDischargeCoefficient_(ptf.inletDischargeCoefficient_), + timeScale_(ptf.timeScale_), + phiName_(ptf.phiName_), + UName_(ptf.UName_) +{} + + +Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField +( + const plenumPressureFvPatchScalarField& tppsf +) +: + fixedValueFvPatchScalarField(tppsf), + gamma_(tppsf.gamma_), + R_(tppsf.R_), + supplyMassFlowRate_(tppsf.supplyMassFlowRate_), + supplyTotalTemperature_(tppsf.supplyTotalTemperature_), + plenumVolume_(tppsf.plenumVolume_), + plenumDensity_(tppsf.plenumDensity_), + plenumTemperature_(tppsf.plenumTemperature_), + rho_(tppsf.rho_), + hasRho_(tppsf.hasRho_), + inletAreaRatio_(tppsf.inletAreaRatio_), + inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_), + timeScale_(tppsf.timeScale_), + phiName_(tppsf.phiName_), + UName_(tppsf.UName_) +{} + + +Foam::plenumPressureFvPatchScalarField::plenumPressureFvPatchScalarField +( + const plenumPressureFvPatchScalarField& tppsf, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchScalarField(tppsf, iF), + gamma_(tppsf.gamma_), + R_(tppsf.R_), + supplyMassFlowRate_(tppsf.supplyMassFlowRate_), + supplyTotalTemperature_(tppsf.supplyTotalTemperature_), + plenumVolume_(tppsf.plenumVolume_), + plenumDensity_(tppsf.plenumDensity_), + plenumTemperature_(tppsf.plenumTemperature_), + rho_(tppsf.rho_), + hasRho_(tppsf.hasRho_), + inletAreaRatio_(tppsf.inletAreaRatio_), + inletDischargeCoefficient_(tppsf.inletDischargeCoefficient_), + timeScale_(tppsf.timeScale_), + phiName_(tppsf.phiName_), + UName_(tppsf.UName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::plenumPressureFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + // Patch properties + const fvPatchField<scalar>& p = *this; + const fvPatchField<scalar>& p_old = + db().lookupObject<volScalarField> + ( + dimensionedInternalField().name() + ).oldTime().boundaryField()[patch().index()]; + const fvPatchField<vector>& U = + patch().lookupPatchField<volVectorField, vector>(UName_); + const fvsPatchField<scalar>& phi = + patch().lookupPatchField<surfaceScalarField, scalar>(phiName_); + + // Get the timestep + const scalar dt = db().time().deltaTValue(); + + // Check if operating at a new time index and update the old-time properties + // if so + if (timeIndex_ != db().time().timeIndex()) + { + timeIndex_ = db().time().timeIndex(); + plenumDensityOld_ = plenumDensity_; + plenumTemperatureOld_ = plenumTemperature_; + } + + // Calculate the current mass flow rate + scalar massFlowRate(1.0); + if (phi.dimensionedInternalField().dimensions() == dimVelocity*dimArea) + { + if (hasRho_) + { + massFlowRate = - gSum(rho_*phi); + } + else + { + FatalErrorInFunction + << "The density must be specified when using a volumetric flux." + << exit(FatalError); + } + } + else if + ( + phi.dimensionedInternalField().dimensions() + == dimDensity*dimVelocity*dimArea + ) + { + if (hasRho_) + { + FatalErrorInFunction + << "The density must be not specified when using a mass flux." + << exit(FatalError); + } + else + { + massFlowRate = - gSum(phi); + } + } + else + { + FatalErrorInFunction + << "dimensions of phi are not correct" + << "\n on patch " << patch().name() + << " of field " << dimensionedInternalField().name() + << " in file " << dimensionedInternalField().objectPath() << nl + << exit(FatalError); + } + + // Calcaulate the specific heats + const scalar cv = R_/(gamma_ - 1), cp = R_*gamma_/(gamma_ - 1); + + // Calculate the new plenum properties + plenumDensity_ = + plenumDensityOld_ + + (dt/plenumVolume_)*(supplyMassFlowRate_ - massFlowRate); + plenumTemperature_ = + plenumTemperatureOld_ + + (dt/(plenumDensity_*cv*plenumVolume_)) + * ( + supplyMassFlowRate_ + *(cp*supplyTotalTemperature_ - cv*plenumTemperature_) + - massFlowRate*R_*plenumTemperature_ + ); + const scalar plenumPressure = plenumDensity_*R_*plenumTemperature_; + + // Squared velocity magnitude at exit of channels + const scalarField U_e(magSqr(U/inletAreaRatio_)); + + // Exit temperature to plenum temperature ratio + const scalarField r + ( + 1.0 - (gamma_ - 1.0)*U_e/(2.0*gamma_*R_*plenumTemperature_) + ); + + // Quadratic coefficient (others not needed as b = +1.0 and c = -1.0) + const scalarField a + ( + (1.0 - r)/(r*r*inletDischargeCoefficient_*inletDischargeCoefficient_) + ); + + // Isentropic exit temperature to plenum temperature ratio + const scalarField s(2.0/(1.0 + sqrt(1.0 + 4.0*a))); + + // Exit pressure to plenum pressure ratio + const scalarField t(pow(s, gamma_/(gamma_ - 1.0))); + + // Limit to prevent outflow + const scalarField p_new + ( + (1.0 - pos(phi))*t*plenumPressure + pos(phi)*max(p, plenumPressure) + ); + + // Relaxation fraction + const scalar oneByFraction = timeScale_/dt; + const scalar fraction = oneByFraction < 1.0 ? 1.0 : 1.0/oneByFraction; + + // Set the new value + operator==((1.0 - fraction)*p_old + fraction*p_new); + fixedValueFvPatchScalarField::updateCoeffs(); +} + + +void Foam::plenumPressureFvPatchScalarField::write(Ostream& os) const +{ + fvPatchScalarField::write(os); + os.writeKeyword("gamma") << gamma_ + << token::END_STATEMENT << nl; + os.writeKeyword("R") << R_ + << token::END_STATEMENT << nl; + os.writeKeyword("supplyMassFlowRate") << supplyMassFlowRate_ + << token::END_STATEMENT << nl; + os.writeKeyword("supplyTotalTemperature") << supplyTotalTemperature_ + << token::END_STATEMENT << nl; + os.writeKeyword("plenumVolume") << plenumVolume_ + << token::END_STATEMENT << nl; + os.writeKeyword("plenumDensity") << plenumDensity_ + << token::END_STATEMENT << nl; + os.writeKeyword("plenumTemperature") << plenumTemperature_ + << token::END_STATEMENT << nl; + if (hasRho_) + { + os.writeKeyword("rho") << rho_ + << token::END_STATEMENT << nl; + } + os.writeKeyword("inletAreaRatio") << inletAreaRatio_ + << token::END_STATEMENT << nl; + os.writeKeyword("inletDischargeCoefficient") << inletDischargeCoefficient_ + << token::END_STATEMENT << nl; + writeEntryIfDifferent<scalar>(os, "timeScale", 0.0, timeScale_); + writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); + writeEntryIfDifferent<word>(os, "U", "U", UName_); + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + makePatchTypeField + ( + fvPatchScalarField, + plenumPressureFvPatchScalarField + ); +} + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..c2d5b4f4a7e6f4a27bb90f263a44c22cc2a17c68 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/plenumPressure/plenumPressureFvPatchScalarField.H @@ -0,0 +1,271 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +Class + Foam::plenumPressureFvPatchScalarField + +Group + grpInletBoundaryConditions + +Description + This boundary condition provides a plenum pressure inlet condition. This + condition creates a zero-dimensional model of an enclosed volume of gas + upstream of the inlet. The pressure that the boundary condition exerts on + the inlet boundary is dependent on the thermodynamic state of the upstream + volume. The upstream plenum density and temperature are time-stepped along + with the rest of the simulation, and momentum is neglected. The plenum is + supplied with a user specified mass flow and temperature. + + The result is a boundary condition which blends between a pressure inlet + condition condition and a fixed mass flow. The smaller the plenum + volume, the quicker the pressure responds to a deviation from the supply + mass flow, and the closer the model approximates a fixed mass flow. As + the plenum size increases, the model becomes more similar to a specified + pressure. + + The expansion from the plenum to the inlet boundary is controlled by an + area ratio and a discharge coefficient. The area ratio can be used to + represent further acceleration between a sub-grid blockage such as fins. + The discharge coefficient represents a fractional deviation from an + ideal expansion process. + + This condition is useful for simulating unsteady internal flow problems + for which both a mass flow boundary is unrealistic, and a pressure + boundary is susceptible to flow reversal. It was developed for use in + simulating confined combustion. + + Reference: + \verbatim + Bainbridge, W. (2013). + The Numerical Simulation of Oscillations in Gas Turbine Combustion + Chambers, + PhD Thesis, + Chapter 4, Section 4.3.1.2, 77-80. + \endverbatim + + \heading Patch usage + + \table + Property | Description | Required | Default value + gamma | ratio of specific heats | yes | none + R | specific gas constant | yes | none + supplyMassFlowRate | flow rate into the plenum | yes | none + supplyTotalTemperature | temperature into the plenum | yes | none + plenumVolume | plenum volume | yes | none + plenumDensity | plenum density | yes | none + plenumTemperature | plenum temperature | yes | none + U | velocity field name | no | U + phi | flux field name | no | phi + rho | inlet density | no | none + inletAreaRatio | inlet open fraction | yes | none + inletDischargeCoefficient | inlet loss coefficient | yes | none + timeScale | relaxation time scale | yes | none + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type plenumPressure; + gamma 1.4; + R 287.04; + supplyMassFlowRate 0.0001; + supplyTotalTemperature 300; + plenumVolume 0.000125; + plenumDensity 1.1613; + plenumTemperature 300; + inletAreaRatio 1.0; + inletDischargeCoefficient 0.8; + timeScale 1e-4; + value uniform 1e5; + } + \endverbatim + +SourceFiles + plenumPressureFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef plenumPressureFvPatchScalarField_H +#define plenumPressureFvPatchScalarField_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class plenumPressureFvPatch Declaration +\*---------------------------------------------------------------------------*/ + +class plenumPressureFvPatchScalarField +: + public fixedValueFvPatchScalarField +{ + // Private data + + //- Ratio of specific heats + scalar gamma_; + + //- Specific gas constant + scalar R_; + + //- Mass flow rate supplied to the plenum + scalar supplyMassFlowRate_; + + //- Total temperature of the gas supplied to the plenum + scalar supplyTotalTemperature_; + + //- The volume of the plenum + scalar plenumVolume_; + + //- The mean density of the gas in the plenum + scalar plenumDensity_; + + //- The old-time mean density of the gas in the plenum + scalar plenumDensityOld_; + + //- The mean temperature of the gas in the plenum + scalar plenumTemperature_; + + //- The mean old-time temperature of the gas in the plenum + scalar plenumTemperatureOld_; + + //- The constant density used when phi is volumetric + scalar rho_; + + //- Whether or not the constant density has been specified + bool hasRho_; + + //- The ratio of open area to total area at the inlet + // Allows a grid or mesh to be represented + scalar inletAreaRatio_; + + //- The discharge coefficient at the inlet + scalar inletDischargeCoefficient_; + + //- The time scale over which changes in pressure are smoothed + scalar timeScale_; + + //- The time index used for updating + label timeIndex_; + + //- The name of the flux field + word phiName_; + + //- The name of the velocity field + word UName_; + + +public: + + //- Runtime type information + TypeName("plenumPressure"); + + + // Constructors + + //- Construct from patch and internal field + plenumPressureFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + plenumPressureFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given plenumPressureFvPatchScalarField + // onto a new patch + plenumPressureFvPatchScalarField + ( + const plenumPressureFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + plenumPressureFvPatchScalarField + ( + const plenumPressureFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new plenumPressureFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + plenumPressureFvPatchScalarField + ( + const plenumPressureFvPatchScalarField&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct and return a clone setting internal field reference + virtual tmp<fvPatchScalarField> clone + ( + const DimensionedField<scalar, volMesh>& iF + ) const + { + return tmp<fvPatchScalarField> + ( + new plenumPressureFvPatchScalarField(*this, iF) + ); + } + + + // Member functions + + // Evaluation functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T new file mode 100644 index 0000000000000000000000000000000000000000..08c022f92f38c2ee8c8ecafd7f22b7742d387bdc --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/T @@ -0,0 +1,55 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object T; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 1 0 0 0]; + +internalField uniform 300; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 300; + } + + outlet + { + type inletOutlet; + inletValue uniform 300; + value uniform 300; + } + + symmetry + { + type symmetry; + } + + wall + { + type fixedValue; + value uniform 300; + } + + plenum + { + type fixedValue; + value uniform 300; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U new file mode 100644 index 0000000000000000000000000000000000000000..e2b5d86221249444728aca90bbdb5520e4895ae5 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/U @@ -0,0 +1,60 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + location "0"; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type flowRateInletVelocity; + phi phi; + rho rho; + massFlowRate 0.0001; + value uniform (0 0 0); + } + + outlet + { + type pressureInletOutletVelocity; + inletValue uniform (0 0 0); + value uniform (0 0 0); + } + + symmetry + { + type symmetry; + } + + wall + { + type fixedValue; + value uniform (0 0 0); + } + + plenum + { + type pressureInletVelocity; + phi phi; + rho rho; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p new file mode 100644 index 0000000000000000000000000000000000000000..e9b41399de39be294b60f13a70ef987d1d84b191 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/0/p @@ -0,0 +1,63 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0 0 0]; + +internalField uniform 1e5; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type fixedMean; + meanValue constant 1e5; + value uniform 1e5; + } + + symmetry + { + type symmetry; + } + + wall + { + type zeroGradient; + } + + plenum + { + type plenumPressure; + gamma 1.4; + R 287.04; + supplyMassFlowRate 0.0001; + supplyTotalTemperature 300; + plenumVolume 0.000125; + plenumDensity 1.1613; + plenumTemperature 300; + inletAreaRatio 1.0; + inletDischargeCoefficient 0.8; + timeScale 1e-4; + value uniform 1e5; + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean new file mode 100755 index 0000000000000000000000000000000000000000..afc06ff982c0777d9b403f7dd35f319bf094507f --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allclean @@ -0,0 +1,9 @@ +#!/bin/sh + +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +cleanCase + +(cd system && rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary) + +rm -rf resolved modelled pressure.eps diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun new file mode 100755 index 0000000000000000000000000000000000000000..78bf41821afa9d0e361e0533b5f9a3d507c6bcd5 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/Allrun @@ -0,0 +1,47 @@ +#!/bin/sh + +cd ${0%/*} || exit 1 + +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +# Run function links the appropriate mesh files and clones the case +run() +{ + ( + cd system + rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary + ln -s blockMeshDict.${1}Blocks blockMeshDict.caseBlocks + ln -s blockMeshDict.${1}Boundary blockMeshDict.caseBoundary + ) + + cloneCase . ${1} + + ( + cd ${1} + runApplication blockMesh + runApplication decomposePar + runParallel $(getApplication) + ) +} + +# Run with a fully resolved plenum +run resolved + +# Run with the plenum modelled by a boundary condition +run modelled + +# Plot a comparison of the pressure in the neck +cat << EOF | gnuplot -persist + +set terminal postscript eps size 5,4 enhanced color + +set xlabel "Time (s)" +set ylabel "Guage pressure in the neck (Pa)" + +set output "pressure.eps" + +plot \ + "resolved/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Resolved Plenum" w l, \ + "modelled/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Modelled Plenum" w l + +EOF diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties new file mode 100644 index 0000000000000000000000000000000000000000..392e2e045bf30bfbf162b0f531cf855d8a6056b8 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/thermophysicalProperties @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object thermophysicalProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +thermoType +{ + type hePsiThermo; + mixture pureMixture; + transport const; + thermo eConst; + equationOfState perfectGas; + specie specie; + energy sensibleInternalEnergy; +} + +mixture +{ + specie + { + nMoles 1; + molWeight 28.9; + } + thermodynamics + { + Cv 712; + Hf 0; + } + transport + { + mu 1.8e-05; + Pr 0.7; + } +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..c2c3b28a1b4e8f4a2cae55f58bd61f9b1a67b488 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/constant/turbulenceProperties @@ -0,0 +1,21 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType laminar; + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..e4dabbfe23c9ce735e938267e22da5c977145ff3 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict @@ -0,0 +1,251 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.0025; + +vertices +( + (-28 -10 -10) + (-28 -10 -5) + (-28 -10 5) + (-28 -10 10) + (-28 -5 -10) + (-28 -5 -5) + (-28 -5 5) + (-28 -5 10) + (-28 5 -10) + (-28 5 -5) + (-28 5 5) + (-28 5 10) + (-28 10 -10) + (-28 10 -5) + (-28 10 5) + (-28 10 10) + + (-14 -10 -10) + (-14 -10 -5) + (-14 -10 5) + (-14 -10 10) + (-14 -5 -10) + (-14 -5 -5) + (-14 -5 5) + (-14 -5 10) + (-14 5 -10) + (-14 5 -5) + (-14 5 5) + (-14 5 10) + (-14 10 -10) + (-14 10 -5) + (-14 10 5) + (-14 10 10) + + ( -8 -10 -10) + ( -8 -10 -5) + ( -8 -10 5) + ( -8 -10 10) + ( -8 -5 -10) + ( -8 -5 -5) + ( -8 -5 5) + ( -8 -5 10) + ( -8 5 -10) + ( -8 5 -5) + ( -8 5 5) + ( -8 5 10) + ( -8 10 -10) + ( -8 10 -5) + ( -8 10 5) + ( -8 10 10) + + ( 0 -10 -10) + ( 0 -10 -5) + ( 0 -10 5) + ( 0 -10 10) + ( 0 -5 -10) + ( 0 -5 -5) + ( 0 -5 5) + ( 0 -5 10) + ( 0 5 -10) + ( 0 5 -5) + ( 0 5 5) + ( 0 5 10) + ( 0 10 -10) + ( 0 10 -5) + ( 0 10 5) + ( 0 10 10) + + ( 6 -10 -10) + ( 6 -10 -5) + ( 6 -10 5) + ( 6 -10 10) + ( 6 -5 -10) + ( 6 -5 -5) + ( 6 -5 5) + ( 6 -5 10) + ( 6 5 -10) + ( 6 5 -5) + ( 6 5 5) + ( 6 5 10) + ( 6 10 -10) + ( 6 10 -5) + ( 6 10 5) + ( 6 10 10) + + ( 10 -10 -10) + ( 10 -10 -5) + ( 10 -10 5) + ( 10 -10 10) + ( 10 -5 -10) + ( 10 -5 -5) + ( 10 -5 5) + ( 10 -5 10) + ( 10 5 -10) + ( 10 5 -5) + ( 10 5 5) + ( 10 5 10) + ( 10 10 -10) + ( 10 10 -5) + ( 10 10 5) + ( 10 10 10) + + (-11 -2 -2) + (-11 -2 2) + (-11 2 -2) + (-11 2 2) + + ( -8 -2 -2) + ( -8 -2 2) + ( -8 2 -2) + ( -8 2 2) + + ( 0 -2 -2) + ( 0 -2 2) + ( 0 2 -2) + ( 0 2 2) + + ( 3 -2 -2) + ( 3 -2 2) + ( 3 2 -2) + ( 3 2 2) +); + +x1 14; x2 6; x3 20; x4 6; x5 4; // X divisions +yc 6; ys 12; zc $yc; zs $ys; // Y and Z corner and side divisions +o 6; // O-grid divisions + +blocks +( + #include "blockMeshDict.caseBlocks" + + hex ( 48 52 53 49 64 68 69 65) ($yc $zc $x4) simpleGrading (1 1 1) + hex ( 49 53 54 50 65 69 70 66) ($yc $zs $x4) simpleGrading (1 1 1) + hex ( 50 54 55 51 66 70 71 67) ($yc $zc $x4) simpleGrading (1 1 1) + hex ( 52 56 57 53 68 72 73 69) ($ys $zc $x4) simpleGrading (1 1 1) + hex ( 54 58 59 55 70 74 75 71) ($ys $zc $x4) simpleGrading (1 1 1) + hex ( 56 60 61 57 72 76 77 73) ($yc $zc $x4) simpleGrading (1 1 1) + hex ( 57 61 62 58 73 77 78 74) ($yc $zs $x4) simpleGrading (1 1 1) + hex ( 58 62 63 59 74 78 79 75) ($yc $zc $x4) simpleGrading (1 1 1) + + hex ( 64 68 69 65 80 84 85 81) ($yc $zc $x5) simpleGrading (1 1 1) + hex ( 65 69 70 66 81 85 86 82) ($yc $zs $x5) simpleGrading (1 1 1) + hex ( 66 70 71 67 82 86 87 83) ($yc $zc $x5) simpleGrading (1 1 1) + hex ( 68 72 73 69 84 88 89 85) ($ys $zc $x5) simpleGrading (1 1 1) + hex ( 69 73 74 70 85 89 90 86) ($ys $zs $x5) simpleGrading (1 1 1) + hex ( 70 74 75 71 86 90 91 87) ($ys $zc $x5) simpleGrading (1 1 1) + hex ( 72 76 77 73 88 92 93 89) ($yc $zc $x5) simpleGrading (1 1 1) + hex ( 73 77 78 74 89 93 94 90) ($yc $zs $x5) simpleGrading (1 1 1) + hex ( 74 78 79 75 90 94 95 91) ($yc $zc $x5) simpleGrading (1 1 1) + + hex (100 102 103 101 104 106 107 105) ($ys $zs $x3) simpleGrading (1 1 1) + hex (104 106 107 105 108 110 111 109) ($ys $zs $x4) simpleGrading (1 1 1) + hex (108 110 111 109 69 73 74 70 ) ($ys $zs $o ) simpleGrading (1 1 1) + + hex ( 53 54 70 69 104 105 109 108) ($zs $x4 $o ) simpleGrading (1 1 1) + hex ( 57 53 69 73 106 104 108 110) ($ys $x4 $o ) simpleGrading (1 1 1) + hex ( 54 58 74 70 105 107 111 109) ($ys $x4 $o ) simpleGrading (1 1 1) + hex ( 58 57 73 74 107 106 110 111) ($zs $x4 $o ) simpleGrading (1 1 1) +); + +edges +( +); + +defaultPatch +{ + name walls; + type wall; +} + +boundary +( + #include "blockMeshDict.caseBoundary" + + outlet + { + type patch; + faces + ( + (80 84 85 81) + (81 85 86 82) + (82 86 87 83) + (84 88 89 85) + (85 89 90 86) + (86 90 91 87) + (88 92 93 89) + (89 93 94 90) + (90 94 95 91) + ); + } + + sides + { + type symmetry; + faces + ( + (48 49 65 64) + (49 50 66 65) + (50 51 67 66) + (48 52 68 64) + (52 56 72 68) + (56 60 76 72) + (51 55 71 67) + (55 59 75 71) + (59 63 79 75) + (60 61 77 76) + (61 62 78 77) + (62 63 79 78) + + (64 65 81 80) + (65 66 82 81) + (66 67 83 82) + (64 68 84 80) + (68 72 88 84) + (72 76 92 88) + (67 71 87 83) + (71 75 91 87) + (75 79 95 91) + (76 77 93 92) + (77 78 94 93) + (78 79 95 94) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBlocks b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBlocks new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary new file mode 100644 index 0000000000000000000000000000000000000000..84976c8ef2d39a63454e0e2df650c9a65ef6e357 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.modelledBoundary @@ -0,0 +1,8 @@ +plenum +{ + type patch; + faces + ( + (100 102 103 101) + ); +} diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks new file mode 100644 index 0000000000000000000000000000000000000000..1cdaee0c567d53c87bccb883fa01b96f5269c284 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBlocks @@ -0,0 +1,26 @@ +hex ( 0 4 5 1 16 20 21 17) ($yc $zc $x1) simpleGrading (1 1 1) +hex ( 1 5 6 2 17 21 22 18) ($yc $zs $x1) simpleGrading (1 1 1) +hex ( 2 6 7 3 18 22 23 19) ($yc $zc $x1) simpleGrading (1 1 1) +hex ( 4 8 9 5 20 24 25 21) ($ys $zc $x1) simpleGrading (1 1 1) +hex ( 5 9 10 6 21 25 26 22) ($ys $zs $x1) simpleGrading (1 1 1) +hex ( 6 10 11 7 22 26 27 23) ($ys $zc $x1) simpleGrading (1 1 1) +hex ( 8 12 13 9 24 28 29 25) ($yc $zc $x1) simpleGrading (1 1 1) +hex ( 9 13 14 10 25 29 30 26) ($yc $zs $x1) simpleGrading (1 1 1) +hex ( 10 14 15 11 26 30 31 27) ($yc $zc $x1) simpleGrading (1 1 1) + +hex ( 16 20 21 17 32 36 37 33) ($yc $zc $x2) simpleGrading (1 1 1) +hex ( 17 21 22 18 33 37 38 34) ($yc $zs $x2) simpleGrading (1 1 1) +hex ( 18 22 23 19 34 38 39 35) ($yc $zc $x2) simpleGrading (1 1 1) +hex ( 20 24 25 21 36 40 41 37) ($ys $zc $x2) simpleGrading (1 1 1) +hex ( 22 26 27 23 38 42 43 39) ($ys $zc $x2) simpleGrading (1 1 1) +hex ( 24 28 29 25 40 44 45 41) ($yc $zc $x2) simpleGrading (1 1 1) +hex ( 25 29 30 26 41 45 46 42) ($yc $zs $x2) simpleGrading (1 1 1) +hex ( 26 30 31 27 42 46 47 43) ($yc $zc $x2) simpleGrading (1 1 1) + +hex ( 21 25 26 22 96 98 99 97) ($ys $zs $o ) simpleGrading (1 1 1) +hex ( 96 98 99 97 100 102 103 101) ($ys $zs $x2) simpleGrading (1 1 1) + +hex ( 21 22 38 37 96 97 101 100) ($zs $x2 $o ) simpleGrading (1 1 1) +hex ( 25 21 37 41 98 96 100 102) ($ys $x2 $o ) simpleGrading (1 1 1) +hex ( 22 26 42 38 97 99 103 101) ($ys $x2 $o ) simpleGrading (1 1 1) +hex ( 26 25 41 42 99 98 102 103) ($zs $x2 $o ) simpleGrading (1 1 1) diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary new file mode 100644 index 0000000000000000000000000000000000000000..ee32b443dbe66805e59c319c0925f66f6fcba33f --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/blockMeshDict.resolvedBoundary @@ -0,0 +1,16 @@ +inlet +{ + type patch; + faces + ( + ( 0 4 5 1) + ( 1 5 6 2) + ( 2 6 7 3) + ( 4 8 9 5) + ( 5 9 10 6) + ( 6 10 11 7) + ( 8 12 13 9) + ( 9 13 14 10) + (10 14 15 11) + ); +} diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..6332e42714ca4a71aa059c8a3d4b274d53a0e9f2 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/controlDict @@ -0,0 +1,73 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application rhoPimpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 0.05; + +deltaT 1e-4; + +writeControl adjustableRunTime; + +writeInterval 1e-2; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 10; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +adjustTimeStep no; + +maxCo 0.5; + +functions +{ + probes + { + functionObjectLibs ( "libsampling.so" ); + type probes; + name probes; + outputControl timeStep; + outputInterval 1; + fields ( p ); + probeLocations + ( + ( -0.045 0 0 ) + ( -0.045 0.020 0 ) + ( -0.010 0 0 ) + ( 0.0125 0 0 ) + ( 0.0125 0.020 0 ) + ); + } +} + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict new file mode 100644 index 0000000000000000000000000000000000000000..702df4decde3f6db59fed02c6d657cebf90c8e94 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict @@ -0,0 +1,22 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 4; + +method scotch; + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..6a8292d18718c9a118b08a2e2a3c3dc177ece5ae --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSchemes @@ -0,0 +1,54 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) Gauss limitedLinearV 1; + div(phi,e) Gauss limitedLinear 1; + div(phi,K) Gauss limitedLinear 1; + div(phiv,p) Gauss limitedLinear 1; + div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; +} + +snGradSchemes +{ + default corrected; +} + + +// ************************************************************************* // diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..4eddb387211b68f540ad69979408dacf480d5255 --- /dev/null +++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/fvSolution @@ -0,0 +1,67 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + "(p|rho)" + { + solver PCG; + preconditioner DIC; + tolerance 1e-6; + relTol 0.01; + } + + "(p|rho)Final" + { + $p; + relTol 0; + } + + "(U|e|k|nuTilda)" + { + solver smoothSolver; + smoother symGaussSeidel; + tolerance 1e-6; + relTol 0.01; + } + + "(U|e|k|nuTilda)Final" + { + $U; + relTol 0; + } +} + +PIMPLE +{ + momentumPredictor yes; + nOuterCorrectors 3; + nCorrectors 1; + nNonOrthogonalCorrectors 0; + rhoMin 0.5; + rhoMax 2.0; +} + +relaxationFactors +{ + equations + { + ".*" 1; + } +} + +// ************************************************************************* //