/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 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::pressurePermeableAlphaInletOutletVelocityFvPatchVectorField Group grpInletBoundaryConditions grpOutletBoundaryConditions Description The \c pressurePermeableAlphaInletOutletVelocity is a velocity inlet-outlet boundary condition which can be applied to velocity boundaries for multiphase flows when the pressure boundary condition is specified. In the \c pressurePermeableAlphaInletOutletVelocity, an open condition is applied when \c alpha is under a user-defined \c alphaMin value and a wall condition is applied when \c alpha is larger than the \c alphaMin. This boundary condition can be used in conjunction with \c prghPermeableAlphaTotalPressure for the \c p_rgh variable. Usage Example of the boundary condition specification: \verbatim { // Mandatory entries type pressurePermeableAlphaInletOutletVelocity; // Optional entries phi phi; rho rho; alpha alpha.water; alphaMin 0.01; // Inherited entries value uniform (0 0 0); ... } \endverbatim where the entries mean: \table Property | Description | Type | Reqd | Deflt phi | Name of flux field | word | no | phi rho | Name of density field | word | no | rho alpha | Name of mixture field | word | no | none alphaMin | Minimum alpha | scalar | no | 1 \endtable The inherited entries are elaborated in: - \link mixedFvPatchFields.H \endlink See also - Foam::prghPermeableAlphaTotalPressureFvPatchScalarField - Foam::mixedFvPatchVectorField SourceFiles pressurePermeableAlphaInletOutletVelocityFvPatchVectorField.C \*---------------------------------------------------------------------------*/ #ifndef pressurePermeableAlphaInletOutletVelocityFvPatchVectorField_H #define pressurePermeableAlphaInletOutletVelocityFvPatchVectorField_H #include "fvPatchFields.H" #include "mixedFvPatchFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class pressurePermeableAlphaInletOutletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressurePermeableAlphaInletOutletVelocityFvPatchVectorField : public mixedFvPatchVectorField { // Private Data //- Name of flux field word phiName_; //- Name of density field word rhoName_; //- Name of the mixture VOF field (if used) word alphaName_; //- Minimum alpha value to outlet blockage scalar alphaMin_; public: //- Runtime type information TypeName("permeableAlphaPressureInletOutletVelocity"); // Constructors //- Construct from patch and internal field pressurePermeableAlphaInletOutletVelocityFvPatchVectorField ( const fvPatch&, const DimensionedField& ); //- Construct from patch, internal field and dictionary pressurePermeableAlphaInletOutletVelocityFvPatchVectorField ( const fvPatch&, const DimensionedField&, const dictionary& ); //- Construct by mapping given //- pressurePermeableAlphaInletOutletVelocityFvPatchVectorField //- onto a new patch pressurePermeableAlphaInletOutletVelocityFvPatchVectorField ( const pressurePermeableAlphaInletOutletVelocityFvPatchVectorField&, const fvPatch&, const DimensionedField&, const fvPatchFieldMapper& ); //- Construct as copy pressurePermeableAlphaInletOutletVelocityFvPatchVectorField ( const pressurePermeableAlphaInletOutletVelocityFvPatchVectorField& ); //- Construct as copy setting internal field reference pressurePermeableAlphaInletOutletVelocityFvPatchVectorField ( const pressurePermeableAlphaInletOutletVelocityFvPatchVectorField&, 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 //- True: this patch field is altered by assignment virtual bool assignable() const { return true; } // Access //- Return the name of rho const word& rhoName() const noexcept { return rhoName_; } //- Return reference to the name of rho to allow adjustment word& rhoName() { return rhoName_; } //- Return the name of phi const word& phiName() const noexcept { return phiName_; } //- Return reference to the name of phi to allow adjustment word& phiName() { return phiName_; } //- Update the coefficients associated with the patch field virtual void updateCoeffs(); //- Write virtual void write(Ostream&) const; // Member Operators //- Copy assignment virtual void operator=(const fvPatchField& pvf); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //