|
[Sponsors] |
January 8, 2020, 05:55 |
Very low Courant numbers for multiple AMI
|
#1 |
New Member
Join Date: Jul 2019
Posts: 14
Rep Power: 7 |
Hello,
I am studying the interaction of 2 rotors using cyclic AMI with pimpleFoam. The wind velocity is 10m/s and the rotor has a high rotational speed of 1200 rpm. The maximum Courant number is set at 0.7. The smallest theoretically calculated time step size for this Courant number is 1e-5 and the largest is 1e-3. The simulations never reach these time step sizes. They oscillate around 1e-7 and 1e-6. When I map the Courant number obtained from OpenFOAM, I see that in the outer domain, where the cells are comparatively larger than inside the rotor region, the courant number values are very small (in the order of e-5). The velocity in this region is initialised at 10 m/s (Figure2). So, I expected higher Courant numbers here. The problem here, in my opinion, is that these low Co values are causing the time step sizes to be very small and hence slowing the simulation down drastically. There also seems to be a small jump in the Co at the interface between the stationary and the rotating parts. (Shown in Fig1) Could anybody please help me understand why the Co is so low in the outer domain? Is there a way to set a minimum Courant number for the simulations? I have attached a few set-up files which might give some insight into the issue. Thanks in advance. Controldict file Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.2 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application pimpleFoam; startFrom latestTime; startTime 0; stopAt endTime; //stopAt nextWrite; //stopAt noWriteNow endTime 2; deltaT 1e-5; writeControl adjustableRunTime; writeInterval 0.1; purgeWrite 0; writeFormat ascii; writePrecision 9; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; adjustTimeStep yes; maxCo 0.7; functions { forces_t1 { type forces; functionObjectLibs ("libforces.so"); patches (blades1 blades2); origin (0.0 0.0 0.5); coordinateRotation { type axesRotation; e3 (0 0 1); e1 (1 0 0); } rho rhoInf; rhoInf 1.225; writeControl adjustableRunTime; writeInterval 0.00001; } forces_t2 { type forces; functionObjectLibs ("libforces.so"); patches (blades3 blades4); origin (0.0 0.65 0.5); coordinateRotation { type axesRotation; e3 (0 0 1); e1 (1 0 0); } rho rhoInf; rhoInf 1.225; writeControl adjustableRunTime; writeInterval 0.00001; } Co1 { type CourantNo; libs ("libfieldFunctionObjects.so"); executeControl timeStep; executeInterval 1; writeControl writeTime; } }; // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.2 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { //default Euler; default CrankNicolson 0.5; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) cellLimited Gauss linear 1; } divSchemes { default none; div(phi,U) Gauss linearUpwindV grad(U); div(phi,nuTilda) Gauss upwind; div((nuEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; pcorr ; p ; } wallDist { method meshWave; } // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.2 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { pcorr { solver GAMG; smoother GaussSeidel; nPreSweeps 0; nPostSweeps 2; cacheAgglomeration off; agglomerator faceAreaPair; nCellsInCoarsestLevel 10; mergeLevels 1; tolerance 0.001; relTol 0; } p { $pcorr; tolerance 1e-06; relTol 0.01; } pFinal { $p; tolerance 1e-06; relTol 0; } // Phi // { // solver GAMG; // smoother DIC; // // tolerance 1e-06; // relTol 0.01; // } "(U|nuTilda)" { solver smoothSolver; smoother GaussSeidel; tolerance 1e-05; relTol 0.1; } "(U|nuTilda)Final" { $U; tolerance 1e-06; relTol 0; } } potentialFlow { nNonOrthogonalCorrectors 2; } SIMPLE { nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } PIMPLE { correctPhi no; nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 5; pRefCell 0; pRefValue 0; } relaxationFactors { "(U|nuTilda).*" 1; } cache { grad(U); } // ************************************************************************* // Code:
FoamFile { version 2.0; format ascii; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } 13 ( blades1 { type wall; inGroups 1(wall); nFaces 99; startFace 36323; } blades2 { type wall; inGroups 1(wall); nFaces 99; startFace 36422; } blades3 { type wall; inGroups 1(wall); nFaces 99; startFace 36521; } blades4 { type wall; inGroups 1(wall); nFaces 99; startFace 36620; } bottom { type symmetryPlane; nFaces 39; startFace 36719; } ext_interface1 { type cyclicAMI; nFaces 38; startFace 36758; matchTolerance 0.025; transform noOrdering; neighbourPatch int_interface1; method faceAreaWeightAMI; } ext_interface2 { type cyclicAMI; nFaces 38; startFace 36796; matchTolerance 0.025; transform noOrdering; neighbourPatch int_interface2; method faceAreaWeightAMI; } inlet { type patch; nFaces 39; startFace 36834; } int_interface1 { type cyclicAMI; nFaces 38; startFace 36873; matchTolerance 0.025; transform noOrdering; neighbourPatch ext_interface1; method faceAreaWeightAMI; } int_interface2 { type cyclicAMI; nFaces 38; startFace 36911; matchTolerance 0.025; transform noOrdering; neighbourPatch ext_interface2; method faceAreaWeightAMI; } outlet { type patch; nFaces 39; startFace 36949; } sides { type empty; inGroups 1(empty); nFaces 45204; startFace 36988; } top { type symmetryPlane; nFaces 39; startFace 82192; } ) |
|
January 8, 2020, 07:20 |
|
#2 |
Senior Member
Yogesh Bapat
Join Date: Oct 2010
Posts: 102
Rep Power: 16 |
Courant number in each cell depends on cell size, velocity and time step. If cells in outder domain are very large, Co No. will be low compared to inner cells if velocities are same.
Regards, -Yogesh |
|
January 8, 2020, 08:57 |
|
#3 |
New Member
Join Date: Jul 2019
Posts: 14
Rep Power: 7 |
Hello Yogesh,
Thank you for your response. The time step in my case is adjustable wrt to Co. I would like to increase the time step size for my simulation from 1e-6 to 1e-5 or higher. However, since the Co reduces beyond e-5, this is not possible. Do you have any suggestions to do this for this particular mesh? Thanks! |
|
January 9, 2020, 00:10 |
|
#4 |
Senior Member
Yogesh Bapat
Join Date: Oct 2010
Posts: 102
Rep Power: 16 |
Hello,
You can try coarser mesh if that is possible specially in the region with high CO. Regards, -Yogesh |
|
July 24, 2021, 09:03 |
|
#5 |
New Member
Pedro
Join Date: Jul 2021
Posts: 11
Rep Power: 5 |
Hello usr0830,
Could you share your dynamicMeshDict file? And what version of OpenFOAM do you use? I'm facing problems too while trying to use multiple AMI, I get the case running with reasonable time steps, but it crashes after a few iterations due 2nd AMI zone not moving correctly. Maybe we can help each other. Best regards, Pedro. |
|
Tags |
courant number, cyclic ami, time steps |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Compressor Simulation using rhoPimpleDyMFoam | Jetfire | OpenFOAM Running, Solving & CFD | 107 | December 9, 2014 14:38 |
Upgraded from Karmic Koala 9.10 to Lucid Lynx10.04.3 | bookie56 | OpenFOAM Installation | 8 | August 13, 2011 05:03 |
diverge with low Re numbers | hui | Main CFD Forum | 2 | April 10, 2007 08:16 |
Compressible code at low Mach numbers | Peter | Main CFD Forum | 7 | May 15, 2003 08:12 |
high and low reynolds numbers - what does it mean | Bo Busk Jensen | Main CFD Forum | 3 | September 5, 2002 06:41 |