Skip to content
Snippets Groups Projects
externalWallHeatFluxTemperatureFvPatchScalarField.H 5.76 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*---------------------------------------------------------------------------*\
      =========                 |
      \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
       \\    /   O peration     |
    
        \\  /    A nd           | Copyright (C) 2011 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/>.
    
        externalWallHeatFluxTemperatureFvPatchScalarField
    
        Heat flux boundary condition for temperature on external wall.
    
        If h and Ta are specified then fixed_heat_transfer_coefficient mode is used
        If q is specified then fixed_heat_flux is used.
    
    
        Example usage:
            myWallPatch
            {
    
                type            externalWallHeatFluxTemperature;
                K               solidThermo;       // solidThermo or lookup
                q               uniform 1000;      // Heat flux / [W/m2]
                Ta              uniform 300.0;     // Tambient temperature /[K]
                h               uniform 10.0;      // Heat transfer coeff /[W/Km2]
                value           uniform 300.0;     // Initial temperature / [K]
                KName           none;
    
    Note:
        Only the pair h, Ta or q can be specified in the dictionary.
    
        externalWallHeatFluxTemperatureFvPatchScalarField.C
    
    
    \*---------------------------------------------------------------------------*/
    
    #ifndef solidWallHeatFluxTemperatureFvPatchScalarField_H
    #define solidWallHeatFluxTemperatureFvPatchScalarField_H
    
    
    #include "mixedFvPatchFields.H"
    #include "temperatureCoupledBase.H"
    
    
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    namespace Foam
    {
    
    /*---------------------------------------------------------------------------*\
    
          Class externalWallHeatFluxTemperatureFvPatchScalarField Declaration
    
    \*---------------------------------------------------------------------------*/
    
    
    class externalWallHeatFluxTemperatureFvPatchScalarField
    
        public mixedFvPatchScalarField,
        public temperatureCoupledBase
    
        // Public data
    
            //- Operation mode enumeration
    
            enum operationMode
            {
                fixedHeatFlux,
                fixedHeatTransferCoeff,
                unknown
            };
            static const NamedEnum<operationMode, 3> operationModeNames;
    
    
    
    private:
    
        // Private data
    
    
            //- Operation mode
            operationMode oldMode_;
    
    
            //- Heat flux / [W/m2]
            scalarField q_;
    
    
            //- Heat transfer coefficient / [W/m2K]
            scalarField h_;
    
            //- Ambient temperature / [K]
            scalarField Ta_;
    
    
    
    public:
    
        //- Runtime type information
    
        TypeName("externalWallHeatFluxTemperature");
    
    
    
        // Constructors
    
            //- Construct from patch and internal field
    
            externalWallHeatFluxTemperatureFvPatchScalarField
    
            (
                const fvPatch&,
                const DimensionedField<scalar, volMesh>&
            );
    
            //- Construct from patch, internal field and dictionary
    
            externalWallHeatFluxTemperatureFvPatchScalarField
    
            (
                const fvPatch&,
                const DimensionedField<scalar, volMesh>&,
                const dictionary&
            );
    
            //- Construct by mapping given
    
            // externalWallHeatFluxTemperatureFvPatchScalarField
    
            // onto a new patch
    
            externalWallHeatFluxTemperatureFvPatchScalarField
    
                const externalWallHeatFluxTemperatureFvPatchScalarField&,
    
                const fvPatch&,
                const DimensionedField<scalar, volMesh>&,
                const fvPatchFieldMapper&
            );
    
            //- Construct as copy
    
            externalWallHeatFluxTemperatureFvPatchScalarField
    
                const externalWallHeatFluxTemperatureFvPatchScalarField&
    
            );
    
            //- Construct and return a clone
            virtual tmp<fvPatchScalarField> clone() const
            {
                return tmp<fvPatchScalarField>
                (
    
                    new externalWallHeatFluxTemperatureFvPatchScalarField(*this)
    
                );
            }
    
            //- Construct as copy setting internal field reference
    
            externalWallHeatFluxTemperatureFvPatchScalarField
    
                const externalWallHeatFluxTemperatureFvPatchScalarField&,
    
                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 externalWallHeatFluxTemperatureFvPatchScalarField(*this, iF)
    
                );
            }
    
    
        // Member functions
    
            // Evaluation functions
    
                //- Update the coefficients associated with the patch field
                virtual void updateCoeffs();
    
            // I-O
    
                //- Write
                void write(Ostream&) const;
    };
    
    
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    } // End namespace Foam
    
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    #endif
    
    // ************************************************************************* //