/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2016-2017 Wikki Ltd Copyright (C) 2023 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::fixedGradientFaPatchField Description This boundary condition supplies a fixed gradient condition, such that the patch values are calculated using: \f[ x_p = x_c + \frac{\nabla(x)}{\Delta} \f] where \vartable x_p | patch values x_c | internal field values \nabla(x)| gradient (user-specified) \Delta | inverse distance from patch face centre to cell centre \endvartable Usage \table Property | Description | Required | Default value gradient | gradient | yes | \endtable Example of the boundary condition specification: \verbatim { type fixedGradient; gradient uniform 0; } \endverbatim Author Zeljko Tukovic, FMENA Hrvoje Jasak, Wikki Ltd. SourceFiles fixedGradientFaPatchField.C \*---------------------------------------------------------------------------*/ #ifndef Foam_fixedGradientFaPatchField_H #define Foam_fixedGradientFaPatchField_H #include "faPatchField.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class fixedGradientFaPatch Declaration \*---------------------------------------------------------------------------*/ template class fixedGradientFaPatchField : public faPatchField { // Private Data Field gradient_; protected: // Protected Member Functions //- Read the "gradient" entry into corresponding member // The reading can be optional (default), mandatory etc. // \returns True on success bool readGradientEntry ( const dictionary& dict, IOobjectOption::readOption readOpt = IOobjectOption::LAZY_READ ); public: //- Runtime type information TypeName("fixedGradient"); // Constructors //- Construct from patch and internal field fixedGradientFaPatchField ( const faPatch&, const DimensionedField& ); //- Construct from patch, internal field and dictionary. fixedGradientFaPatchField ( const faPatch&, const DimensionedField&, const dictionary& dict, //! The "gradient" entry (default: mandatory) IOobjectOption::readOption requireGrad = IOobjectOption::MUST_READ ); //- Construct by mapping the given fixedGradient patch field //- onto a new patch fixedGradientFaPatchField ( const fixedGradientFaPatchField&, const faPatch&, const DimensionedField&, const faPatchFieldMapper& ); //- Construct as copy fixedGradientFaPatchField ( const fixedGradientFaPatchField& ); //- Construct as copy setting internal field reference fixedGradientFaPatchField ( const fixedGradientFaPatchField&, const DimensionedField& ); //- Return clone virtual tmp> clone() const { return faPatchField::Clone(*this); } //- Clone with an internal field reference virtual tmp> clone ( const DimensionedField& iF ) const { return faPatchField::Clone(*this, iF); } // Member Functions //- The reference gradient at boundary virtual Field& gradient() noexcept { return gradient_; } //- The reference gradient at boundary virtual const Field& gradient() const noexcept { return gradient_; } // Mapping functions //- Map (and resize as needed) from self given a mapping object virtual void autoMap ( const faPatchFieldMapper& ); //- Reverse map the given faPatchField onto this faPatchField virtual void rmap ( const faPatchField&, const labelList& ); // Evaluation functions //- Return gradient at boundary virtual tmp> snGrad() const { return gradient_; } //- Evaluate the patch field virtual void evaluate ( const Pstream::commsTypes commsType = Pstream::commsTypes::buffered ); //- Return the matrix diagonal coefficients corresponding to the // evaluation of the value of this patchField with given weights virtual tmp> valueInternalCoeffs ( const tmp& ) const; //- Return the matrix source coefficients corresponding to the // evaluation of the value of this patchField with given weights virtual tmp> valueBoundaryCoeffs ( const tmp& ) const; //- Return the matrix diagonal coefficients corresponding to the // evaluation of the gradient of this patchField virtual tmp> gradientInternalCoeffs() const; //- Return the matrix source coefficients corresponding to the // evaluation of the gradient of this patchField virtual tmp> gradientBoundaryCoeffs() const; //- Write virtual void write(Ostream&) const; }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository #include "fixedGradientFaPatchField.C" #endif // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* //