FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

dragModel.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 Class
00025     Foam::dragModel
00026 
00027 Description
00028 
00029 SourceFiles
00030     dragModel.C
00031     newDragModel.C
00032 
00033 \*---------------------------------------------------------------------------*/
00034 
00035 #ifndef dragModel_H
00036 #define dragModel_H
00037 
00038 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00039 
00040 #include <OpenFOAM/dictionary.H>
00041 #include <phaseModel/phaseModel.H>
00042 #include <OpenFOAM/runTimeSelectionTables.H>
00043 
00044 namespace Foam
00045 {
00046 
00047 /*---------------------------------------------------------------------------*\
00048                            Class dragModel Declaration
00049 \*---------------------------------------------------------------------------*/
00050 
00051 class dragModel
00052 {
00053 protected:
00054 
00055     // Protected data
00056 
00057         const dictionary& interfaceDict_;
00058         const volScalarField& alpha_;
00059         const phaseModel& phasea_;
00060         const phaseModel& phaseb_;
00061 
00062 
00063 public:
00064 
00065     //- Runtime type information
00066     TypeName("dragModel");
00067 
00068 
00069     // Declare runtime construction
00070 
00071         declareRunTimeSelectionTable
00072         (
00073             autoPtr,
00074             dragModel,
00075             dictionary,
00076             (
00077                 const dictionary& interfaceDict,
00078                 const volScalarField& alpha,
00079                 const phaseModel& phasea,
00080                 const phaseModel& phaseb
00081             ),
00082             (interfaceDict, alpha, phasea, phaseb)
00083         );
00084 
00085 
00086     // Constructors
00087 
00088         dragModel
00089         (
00090             const dictionary& interfaceDict,
00091             const volScalarField& alpha,
00092             const phaseModel& phasea,
00093             const phaseModel& phaseb
00094         );
00095 
00096 
00097     //- Destructor
00098     virtual ~dragModel();
00099 
00100 
00101     // Selectors
00102 
00103         static autoPtr<dragModel> New
00104         (
00105             const dictionary& interfaceDict,
00106             const volScalarField& alpha,
00107             const phaseModel& phasea,
00108             const phaseModel& phaseb
00109         );
00110 
00111 
00112     // Member Functions
00113 
00114         //- the dragfunction K used in the momentum eq.
00115         //    ddt(alpha*rhoa*Ua) + ... = ... alpha*beta*K*(Ua-Ub)
00116         //    ddt(beta*rhob*Ub) + ...  = ... alpha*beta*K*(Ub-Ua)
00117         // ********************************** NB ! *****************************
00118         // for numerical reasons alpha and beta has been extracted from the
00119         // dragFunction K, so you MUST divide K by alpha*beta when implementing
00120         // the drag function
00121         // ********************************** NB ! *****************************
00122         virtual tmp<volScalarField> K(const volScalarField& Ur) const = 0;
00123 };
00124 
00125 
00126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00127 
00128 } // End namespace Foam
00129 
00130 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00131 
00132 #endif
00133 
00134 // ************************ vim: set sw=4 sts=4 et: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines