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

porousInterFoam.C

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 Application
00025     porousInterFoam
00026 
00027 Description
00028     Solver for 2 incompressible, isothermal immiscible fluids.
00029 
00030     Based on a VOF (volume of fluid) phase-fraction based interface capturing
00031     approach. The momentum and other fluid properties are of the "mixture" and
00032     a single momentum equation is solved.
00033 
00034     Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
00035 
00036     Explicit handling of porous zones is included.
00037 
00038 Usage
00039     - porousInterFoam [OPTION]
00040 
00041     @param -case <dir> \n
00042     Specify the case directory
00043 
00044     @param -parallel \n
00045     Run the case in parallel
00046 
00047     @param -help \n
00048     Display short usage message
00049 
00050     @param -doc \n
00051     Display Doxygen documentation page
00052 
00053     @param -srcDoc \n
00054     Display source code
00055 
00056 See
00057     For a two-fluid approach see twoPhaseEulerFoam.
00058 
00059 \*---------------------------------------------------------------------------*/
00060 
00061 #include <finiteVolume/fvCFD.H>
00062 #include <finiteVolume/MULES.H>
00063 #include <OpenFOAM/subCycle.H>
00064 #include <interfaceProperties/interfaceProperties.H>
00065 #include <incompressibleTransportModels/twoPhaseMixture.H>
00066 #include <incompressibleTurbulenceModel/turbulenceModel.H>
00067 #include <finiteVolume/porousZones.H>
00068 
00069 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00070 
00071 int main(int argc, char *argv[])
00072 {
00073     #include <OpenFOAM/setRootCase.H>
00074     #include <OpenFOAM/createTime.H>
00075     #include <OpenFOAM/createMesh.H>
00076     #include <finiteVolume/readPISOControls.H>
00077     #include <finiteVolume/initContinuityErrs.H>
00078     #include "../createFields.H"
00079     #include "createPorousZones.H"
00080     #include <finiteVolume/readTimeControls.H>
00081     #include "../correctPhi.H"
00082     #include <finiteVolume/CourantNo.H>
00083     #include <finiteVolume/setInitialDeltaT.H>
00084 
00085     // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00086 
00087     Info<< "\nStarting time loop\n" << endl;
00088 
00089     while (runTime.run())
00090     {
00091         #include <finiteVolume/readPISOControls.H>
00092         #include <finiteVolume/readTimeControls.H>
00093         #include <finiteVolume/CourantNo.H>
00094         #include "../alphaCourantNo.H"
00095         #include "../setDeltaT.H"
00096 
00097         runTime++;
00098 
00099         Info<< "Time = " << runTime.timeName() << nl << endl;
00100 
00101         twoPhaseProperties.correct();
00102 
00103         #include "../alphaEqnSubCycle.H"
00104 
00105         #include "UEqn.H"
00106 
00107         // --- PISO loop
00108         for (int corr=0; corr<nCorr; corr++)
00109         {
00110             #include "../pEqn.H"
00111         }
00112 
00113         turbulence->correct();
00114 
00115         runTime.write();
00116 
00117         Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
00118             << "  ClockTime = " << runTime.elapsedClockTime() << " s"
00119             << nl << endl;
00120     }
00121 
00122     Info<< "End\n" << endl;
00123 
00124     return 0;
00125 }
00126 
00127 
00128 // ************************************************************************* //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines