usr0830 |
January 8, 2020 04:55 |
Very low Courant numbers for multiple AMI
2 Attachment(s)
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;
}
};
// ************************************************************************* //
fvSchemes
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;
}
// ************************************************************************* //
fvSolution
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);
}
// ************************************************************************* //
boundary
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;
}
)
|