diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index c6a95a976bd247715d2490461c4100bb76f13030..34a4606e088ade62d6f128c2c021c9524e81c33c 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -97,6 +97,7 @@ $(derivedFvPatchFields)/fixedFluxBoussinesqBuoyantPressure/fixedFluxBoussinesqBu $(derivedFvPatchFields)/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.C $(derivedFvPatchFields)/fixedInternalValueFvPatchField/fixedInternalValueFvPatchFields.C $(derivedFvPatchFields)/fixedNormalSlip/fixedNormalSlipFvPatchFields.C +$(derivedFvPatchFields)/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C $(derivedFvPatchFields)/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C $(derivedFvPatchFields)/freestream/freestreamFvPatchFields.C $(derivedFvPatchFields)/freestreamPressure/freestreamPressureFvPatchScalarField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C new file mode 100644 index 0000000000000000000000000000000000000000..0f01c960b00ee684bfa99b2b51eb0fb2e2c0aa16 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.C @@ -0,0 +1,155 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 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 "fixedPressureCompressibleDensityFvPatchScalarField.H" +#include "addToRunTimeSelectionTable.H" +#include "fvPatchFieldMapper.H" +#include "surfaceFields.H" +#include "volFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +fixedPressureCompressibleDensityFvPatchScalarField:: +fixedPressureCompressibleDensityFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(p, iF), + pName_("pNameIsUndefined") +{} + + +fixedPressureCompressibleDensityFvPatchScalarField:: +fixedPressureCompressibleDensityFvPatchScalarField +( + const fixedPressureCompressibleDensityFvPatchScalarField& ptf, + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const fvPatchFieldMapper& mapper +) +: + fixedValueFvPatchField<scalar>(ptf, p, iF, mapper), + pName_(ptf.pName_) +{} + + +fixedPressureCompressibleDensityFvPatchScalarField:: +fixedPressureCompressibleDensityFvPatchScalarField +( + const fvPatch& p, + const DimensionedField<scalar, volMesh>& iF, + const dictionary& dict +) +: + fixedValueFvPatchField<scalar>(p, iF, dict), + pName_(dict.lookup("p")) +{} + + +fixedPressureCompressibleDensityFvPatchScalarField:: +fixedPressureCompressibleDensityFvPatchScalarField +( + const fixedPressureCompressibleDensityFvPatchScalarField& ptf +) +: + fixedValueFvPatchField<scalar>(ptf), + pName_(ptf.pName_) +{} + + +fixedPressureCompressibleDensityFvPatchScalarField:: +fixedPressureCompressibleDensityFvPatchScalarField +( + const fixedPressureCompressibleDensityFvPatchScalarField& ptf, + const DimensionedField<scalar, volMesh>& iF +) +: + fixedValueFvPatchField<scalar>(ptf, iF), + pName_(ptf.pName_) +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void fixedPressureCompressibleDensityFvPatchScalarField::updateCoeffs() +{ + if (updated()) + { + return; + } + + const fvPatchField<scalar>& pp = + patch().lookupPatchField<volScalarField, scalar>(pName_); + + const dictionary& thermoProps = + db().lookupObject<IOdictionary>("thermodynamicProperties"); + + const scalar rholSat = + dimensionedScalar(thermoProps.lookup("rholSat")).value(); + + const scalar pSat = + dimensionedScalar(thermoProps.lookup("pSat")).value(); + + const scalar psil = dimensionedScalar(thermoProps.lookup("psil")).value(); + + operator==(rholSat + psil*(pp - pSat)); + + fixedValueFvPatchField<scalar>::updateCoeffs(); +} + + +void fixedPressureCompressibleDensityFvPatchScalarField::write +( + Ostream& os +) const +{ + fvPatchField<scalar>::write(os); + os.writeKeyword("p") << pName_ << token::END_STATEMENT << nl; + writeEntry("value", os); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +makePatchTypeField +( + fvPatchScalarField, + fixedPressureCompressibleDensityFvPatchScalarField +); + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H new file mode 100644 index 0000000000000000000000000000000000000000..fbd2616aab6de5791a513df45ffd4e72eef858cd --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H @@ -0,0 +1,162 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2009 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::fixedPressureCompressibleDensityFvPatchScalarField + +Description + Calculate compressible density as a function of pressure and fluid + properties. + + Example of the boundary condition specification: + @verbatim + inlet + { + type fixedPressureCompressibleDensity; + p p; // Name of static pressure field + value uniform 1; // Initial value + } + @endverbatim + +SourceFiles + fixedPressureCompressibleDensityFvPatchScalarField.C + +\*---------------------------------------------------------------------------*/ + +#ifndef fixedPressureCompressibleDensityFvPatchScalarField_H +#define fixedPressureCompressibleDensityFvPatchScalarField_H + +#include "fixedValueFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class fixedPressureCompressibleDensityFvPatchScalarField Declaration +\*---------------------------------------------------------------------------*/ + +class fixedPressureCompressibleDensityFvPatchScalarField +: + public fixedValueFvPatchScalarField +{ + // Private data + + //- Name of static pressure field + word pName_; + + +public: + + //- Runtime type information + TypeName("fixedPressureCompressibleDensity"); + + + // Constructors + + //- Construct from patch and internal field + fixedPressureCompressibleDensityFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>& + ); + + //- Construct from patch, internal field and dictionary + fixedPressureCompressibleDensityFvPatchScalarField + ( + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const dictionary& + ); + + //- Construct by mapping given + // fixedPressureCompressibleDensityFvPatchScalarField + // onto a new patch + fixedPressureCompressibleDensityFvPatchScalarField + ( + const fixedPressureCompressibleDensityFvPatchScalarField&, + const fvPatch&, + const DimensionedField<scalar, volMesh>&, + const fvPatchFieldMapper& + ); + + //- Construct as copy + fixedPressureCompressibleDensityFvPatchScalarField + ( + const fixedPressureCompressibleDensityFvPatchScalarField& + ); + + //- Construct and return a clone + virtual tmp<fvPatchScalarField> clone() const + { + return tmp<fvPatchScalarField> + ( + new fixedPressureCompressibleDensityFvPatchScalarField(*this) + ); + } + + //- Construct as copy setting internal field reference + fixedPressureCompressibleDensityFvPatchScalarField + ( + const fixedPressureCompressibleDensityFvPatchScalarField&, + 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 fixedPressureCompressibleDensityFvPatchScalarField + ( + *this, + iF + ) + ); + } + + + // Member functions + + //- Update the coefficients associated with the patch field + virtual void updateCoeffs(); + + //- Write + virtual void write(Ostream&) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //