/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2017-2021 OpenCFD Ltd ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . Class Foam::fanPressureFvPatchScalarField Group grpInletBoundaryConditions grpOutletBoundaryConditions Description This boundary condition can be applied to assign either a pressure inlet or outlet total pressure condition for a fan. The switch nonDimensional can be used for a non-dimensional fan curve. It needs inputs rpm and dm of the fan. The nonDimensional flux is calculate as : phi = 4.0*mDot/(rho*sqr(PI)*dm^3*omega) where: dm is the mean diameter. omega is rad/sec. The nonDimensinal pressure : Psi = 2 deltaP/(rho*(sqr(PI*omega*dm))) where: deltaP is the pressure drop The non-dimensional table should be given as Psi = F(phi). Usage \table Property | Description | Required | Default fanCurve | Pressure vs flow-rate | yes | direction | direction of flow through fan [in/out] | yes | p0 | environmental total pressure | yes | nonDimensional | uses non-dimensional table | no | false rpm | fan rpm for non-dimensional table | no | dm | mean diameter for non-dimensional table | no | file | fan curve file name | legacy | outOfBounds | out of bounds handling | legacy | \endtable Example of the boundary condition specification: \verbatim inlet { type fanPressure; direction in; fanCurve { type table; file "/fanCurve"; outOfBounds clamp; // Optional out-of-bounds handling } p0 uniform 0; value uniform 0; } // Legacy specification outlet { type fanPressure; direction out; file "/fanCurve"; outOfBounds clamp; p0 uniform 0; value uniform 0; } \endverbatim Note For compatibility with older versions (OpenFOAM-v2006 and earlier), a missing \c fanCurve keyword is treated as a tableFile and makes the \c file keyword mandatory. See also Foam::fanFvPatchField Foam::totalPressureFvPatchScalarField Foam::Function1 SourceFiles fanPressureFvPatchScalarField.C \*---------------------------------------------------------------------------*/ #ifndef fanPressureFvPatchScalarField_H #define fanPressureFvPatchScalarField_H #include "totalPressureFvPatchScalarField.H" #include "Function1.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class fanPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class fanPressureFvPatchScalarField : public totalPressureFvPatchScalarField { public: //- Fan flow direction enum fanFlowDirection : uint8_t { ffdIn, ffdOut }; //- Fan flow direction names static const Enum fanFlowDirectionNames_; private: // Private Data //- Run-time selectable fan curve autoPtr> fanCurve_; //- Direction of flow through the fan relative to patch fanFlowDirection direction_; //- Use non-dimensional curve bool nonDimensional_; //- Fan rpm (for non-dimensional curve) autoPtr> rpm_; //- Fan mean diameter (for non-dimensional curve) autoPtr> dm_; public: //- Runtime type information TypeName("fanPressure"); // Constructors //- Construct from patch and internal field fanPressureFvPatchScalarField ( const fvPatch&, const DimensionedField& ); //- Construct from patch, internal field and dictionary fanPressureFvPatchScalarField ( const fvPatch&, const DimensionedField&, const dictionary& ); //- Construct by mapping given // fanPressureFvPatchScalarField // onto a new patch fanPressureFvPatchScalarField ( const fanPressureFvPatchScalarField&, const fvPatch&, const DimensionedField&, const fvPatchFieldMapper& ); //- Construct as copy fanPressureFvPatchScalarField ( const fanPressureFvPatchScalarField& ); //- Construct as copy setting internal field reference fanPressureFvPatchScalarField ( const fanPressureFvPatchScalarField&, const DimensionedField& ); //- Return a clone virtual tmp> clone() const { return fvPatchField::Clone(*this); } //- Clone with an internal field reference virtual tmp> clone ( const DimensionedField& iF ) const { return fvPatchField::Clone(*this, iF); } // Member functions //- Update the coefficients associated with the patch field virtual void updateCoeffs(); //- Write virtual void write(Ostream& os) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //