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 engineSwirl 00026 00027 Description 00028 Generates a swirling flow for engine calulations 00029 00030 Usage 00031 00032 - engineSwirl [OPTIONS] 00033 00034 @param -case <dir>\n 00035 Case directory. 00036 00037 @param -parallel \n 00038 Run in parallel. 00039 00040 @param -help \n 00041 Display help message. 00042 00043 @param -doc \n 00044 Display Doxygen API documentation page for this application. 00045 00046 @param -srcDoc \n 00047 Display Doxygen source documentation page for this application. 00048 00049 \*---------------------------------------------------------------------------*/ 00050 00051 #include <finiteVolume/fvCFD.H> 00052 #include <OpenFOAM/mathematicalConstants.H> 00053 00054 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00055 00056 int main(int argc, char *argv[]) 00057 { 00058 00059 # include <OpenFOAM/setRootCase.H> 00060 # include <OpenFOAM/createTime.H> 00061 # include <OpenFOAM/createMesh.H> 00062 # include "createFields.H" 00063 00064 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00065 00066 scalar Vphi = (mathematicalConstant::pi*swirlRPMRatio*rpm/30).value(); 00067 scalar b1 = j1(swirlProfile).value(); 00068 scalar b2 = 2.0*b1/swirlProfile.value() - j0(swirlProfile).value(); 00069 00070 scalar omega = 0.125*(Vphi*bore*swirlProfile/b2).value(); 00071 00072 scalar cylinderRadius = 0.5*bore.value(); 00073 00074 scalar Umax = 0.0; 00075 forAll(mesh.C(), celli) 00076 { 00077 vector c = mesh.C()[celli] - swirlCenter; 00078 scalar r = ::pow(sqr(c & xT) + sqr(c & yT), 0.5); 00079 00080 if (r <= cylinderRadius) 00081 { 00082 scalar b = j1(swirlProfile*r/cylinderRadius).value(); 00083 scalar vEff = omega*b; 00084 r = max(r, SMALL); 00085 U[celli] = ((vEff/r)*(c & yT))*xT + (-(vEff/r)*(c & xT))*yT; 00086 Umax = max(Umax, mag(U[celli])); 00087 } 00088 } 00089 00090 Info << "Umax = " << Umax << endl; 00091 00092 U.write(); 00093 00094 Info << "\n end\n"; 00095 00096 return 0; 00097 } 00098 00099 00100 // ************************ vim: set sw=4 sts=4 et: ************************ //