|
[Sponsors] |
June 16, 2014, 05:46 |
Steady State Centrifugal Compressor Segment
|
#1 |
Member
Join Date: Oct 2011
Posts: 36
Rep Power: 15 |
Hello everyone,
after a few hours of extensive forum research regarding a steady-state centrifugal compressor passage model simulation and due to the fact that this topic might be interesting for some other users as well, I decided to open a new thread. To begin with, there is a lot of information on transient full model simulations and it seems to be straight-forward, however, this approach is not very efficient when it comes to optimizing preliminary compressor designs due to the huge mesh sizes. So, I thought about running a steady-state simulation based on a segment of the full model domain. This way, less efficient designs can be sorted out before running time consuming transient full model simulations. I know from a friend that this method works sufficiently well in CFX, but the real challenge, I think, would be to do this using OpenFOAM. The segment consists of 3 different cell zones: unvaned inducer - impeller - unvaned diffuser (see fig. 1). The cell zones are "connected" by a pair of interface patches, respectively (orange) and bounded by periodic patches (blue). In order to account for tip gap loss, there also are two patches on top of the main blade (pink). For the sake of completeness, the axial inlet and radial outlet are marked by the green areas. In a first attempt, I'd like to use the official OF-2.3.x version and its functionality. Basically, it's an outlet mass flow driven simulation with a total pressure and total temperature boundary condition at the inlet patch. The following is a summary of the numerical setup for the rhoSimpleFoam simulation: boundary Code:
IN { type patch; } OUT { type patch; } HUB { type wall; } SHROUD { type wall; } // example for orange patch AMI_INTERFACE_6_1 { type cyclicAMI; inGroups 1(cyclicAMI); nFaces 2304; startFace 2176992; matchTolerance 0.001; transform noOrdering; neighbourPatch AMI_INTERFACE_6_2; } // example for blue patch AMI_PERIODIC_3_1 { type cyclicAMI; inGroups 1(cyclicAMI); nFaces 1344; startFace 2172576; matchTolerance 0.001; transform rotational; neighbourPatch AMI_PERIODIC_3_2; rotationAxis (0 0 1); rotationCentre (0 0 0); rotationAngle 40; // negative value for neighbourPatch entry } // example for pink patch AMI_INTERFACE_4_1 { type cyclicAMI; inGroups 1(cyclicAMI); nFaces 1152; startFace 2173920; matchTolerance 0.001; transform noOrdering; neighbourPatch AMI_INTERFACE_4_2; } Code:
internalField uniform 1; boundaryField { IN { type calculated; } OUT { type calculated; } ".*" { type compressible::alphatWallFunction; value uniform 0; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform 1; boundaryField { IN { type turbulentIntensityKineticEnergyInlet; intensity 0.05; U U; phi phi; value uniform 1; } OUT { type zeroGradient; } ".*" { type compressible::kqRWallFunction; value uniform 0; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform 0; boundaryField { IN { type calculated; } OUT { type calculated; } ".*" { type mutLowReWallFunction; value uniform 0; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform 20000; boundaryField { IN { type fixedValue; value uniform 3.5; } OUT { type zeroGradient; } ".*" { type compressible::omegaWallFunction; value uniform 20000; Cmu 0.09; kappa 0.41; E 9.8; beta1 0.075; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform 101000; boundaryField { IN { type totalPressure; p0 uniform 101300; phi phi; rho rho; psi none; gamma 1.4; } OUT { type zeroGradient; } ".*" { type zeroGradient; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform 288; boundaryField { IN { type totalTemperature; T0 uniform 293; gamma 1.4; phi phi; U U; } OUT { type zeroGradient; } ".*" { type zeroGradient; } "AMI.*" { type cyclicAMI; } } Code:
internalField uniform (0 0 0); boundaryField { IN { type zeroGradient; } OUT { type flowRateInletVelocity; rhoInlet 1.2; massFlowRate table ( (0.0 0.0) (200 -0.001) ); value uniform (0 0 0); } ".*" { type fixedValue; value uniform (0 0 0); } "AMI.*" { type cyclicAMI; } } Code:
MRF1 { type MRFSource; active yes; selectionMode cellZone; cellZone IMPELLER; MRFSourceCoeffs { nonRotatingPatches ( SHROUD_IMPELLER // all cyclicAMIs except for the INDUCER and DIFFUSER periodics AMI_INTERFACE_6_1 // orange AMI_INTERFACE_6_2 // orange AMI_INTERFACE_7_1 // orange AMI_INTERFACE_7_2 // orange AMI_PERIODIC_2_1 // blue AMI_PERIODIC_2_2 // blue AMI_INTERFACE_4_1 // pink AMI_INTERFACE_4_2 // pink ); origin (0 0 0); axis (0 0 1); omega table // linear ramping of ( // rotational speed (0.0 0.0) // up to nominal speed (200 20000) // during the first 200 (10000 20000) // iterations ); } } Code:
solvers { rho { solver PCG; preconditioner DIC; tolerance 1e-5; relTol 0.1; } rhoFinal { $rho; tolerance 1e-5; relTol 0; } U { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-5; relTol 0.1; } UFinal { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-5; relTol 0; } eFinal { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-6; relTol 0; } p { solver GAMG; tolerance 1e-6; relTol 0.05; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 20; agglomerator faceAreaPair; mergeLevels 1; } pFinal { solver GAMG; tolerance 1e-6; relTol 0; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 20; agglomerator faceAreaPair; mergeLevels 1; } "(e|U|h|k|omega)" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-6; relTol 0; } "(e|U|h|k|omega)Final" { $U; tolerance 1e-6; relTol 0; } } SIMPLE { nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 4; momentumPredictor yes; rhoMin rhoMin [ 1 -3 0 0 0 ] 1.0; rhoMax rhoMax [ 1 -3 0 0 0 ] 2.0; pRefCell 0; pRefValue 1e5; } relaxationFactors { fields { } equations { "U.*" 0.5; "e.*" 0.9; "k.*" 0.5; "omega.*" 0.5; } } Code:
ddtSchemes { default steadyState; } gradSchemes { default faceMDLimited Gauss linear 1.0; } divSchemes { default none; div(phi,U) bounded Gauss limitedLinearV 0.8; div(phi,e) bounded Gauss limitedLinear 0.8; div(phi,k) bounded Gauss limitedLinear 0.8; div(phi,omega) bounded Gauss limitedLinear 0.8; div(phi,Ekp) bounded Gauss limitedLinear 0.8; div(phid,p) bounded Gauss limitedLinear 0.8; div((muEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; } The simulation is running for a few iterations, but then, blows up due to a "Maximum number of iterations exceeded" error. log Code:
Create time Create mesh for time = 0 SIMPLE: no convergence criteria found. Calculations will run for 10000 steps. Reading thermophysical properties Selecting thermodynamics package { type hePsiThermo; mixture pureMixture; transport const; thermo hConst; equationOfState perfectGas; specie specie; energy sensibleInternalEnergy; } AMI: Creating addressing and weights between 1152 source faces and 1152 target faces AMI: Patch source sum(weights) min/max/average = 1, 1, 1 AMI: Patch target sum(weights) min/max/average = 0.999999, 1, 1 AMI: Creating addressing and weights between 4032 source faces and 4032 target faces AMI: Patch source sum(weights) min/max/average = 1, 1.00074, 1.00014 AMI: Patch target sum(weights) min/max/average = 1, 1.00074, 1.00014 AMI: Creating addressing and weights between 1344 source faces and 1344 target faces AMI: Patch source sum(weights) min/max/average = 1, 1.03734, 1.00162 AMI: Patch target sum(weights) min/max/average = 0.999999, 1.03734, 1.00162 AMI: Creating addressing and weights between 1152 source faces and 768 target faces AMI: Patch source sum(weights) min/max/average = 0.698711, 1.00442, 0.99332 AMI: Patch target sum(weights) min/max/average = 0.793633, 1.00348, 0.994922 AMI: Creating addressing and weights between 576 source faces and 576 target faces AMI: Patch source sum(weights) min/max/average = 0.909942, 1.0008, 0.997517 AMI: Patch target sum(weights) min/max/average = 0.917573, 1.00219, 0.997765 AMI: Creating addressing and weights between 2304 source faces and 2304 target faces AMI: Patch source sum(weights) min/max/average = 1, 1, 1 AMI: Patch target sum(weights) min/max/average = 1, 1, 1 AMI: Creating addressing and weights between 7680 source faces and 7680 target faces AMI: Patch source sum(weights) min/max/average = 1, 1.00003, 1 AMI: Patch target sum(weights) min/max/average = 1, 1.00003, 1 Reading field U Reading/calculating face flux field phi Creating turbulence model Selecting RAS turbulence model kOmegaSST Creating finite volume options from "system/fvOptions" Selecting finite volume options model type MRFSource Source: MRF1 - applying source for all time - selecting cells using cellZone IMPELLER - selected 446208 cell(s) with volume 6.63491e-07 Starting time loop Time = 1 smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0986978, No Iterations 1 smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.0979385, No Iterations 1 smoothSolver: Solving for Uz, Initial residual = 1, Final residual = 0.0111414, No Iterations 2 smoothSolver: Solving for e, Initial residual = 1, Final residual = 9.80797e-07, No Iterations 12 GAMG: Solving for p, Initial residual = 1, Final residual = 0.0446108, No Iterations 8 GAMG: Solving for p, Initial residual = 0.108731, Final residual = 0.00535164, No Iterations 20 GAMG: Solving for p, Initial residual = 0.0380433, Final residual = 0.00170171, No Iterations 11 GAMG: Solving for p, Initial residual = 0.0276649, Final residual = 0.00131236, No Iterations 11 GAMG: Solving for p, Initial residual = 0.0211125, Final residual = 0.000942147, No Iterations 10 time step continuity errors : sum local = 6.38773, global = 0.227561, cumulative = 0.227561 rho max/min : 1.22996 1.19158 smoothSolver: Solving for omega, Initial residual = 0.0231832, Final residual = 5.3308e-07, No Iterations 4 smoothSolver: Solving for k, Initial residual = 1, Final residual = 5.58828e-07, No Iterations 5 ExecutionTime = 20.97 s ClockTime = 21 s faceSource faceSource1 output: sum(INLET) for phi = -1.91468e-05 faceSource faceSource2 output: sum(AMI_INTERFACE_6_1) for phi = 1.87242e-05 faceSource faceSource3 output: sum(AMI_INTERFACE_7_1) for phi = 1.89516e-05 faceSource faceSource4 output: sum(OUTLET) for phi = 1.9445e-05 […] Time = 7 smoothSolver: Solving for Ux, Initial residual = 0.183966, Final residual = 0.00937516, No Iterations 1 smoothSolver: Solving for Uy, Initial residual = 0.235456, Final residual = 0.0110085, No Iterations 1 smoothSolver: Solving for Uz, Initial residual = 0.292774, Final residual = 0.0135016, No Iterations 1 smoothSolver: Solving for e, Initial residual = 0.683258, Final residual = 8.24174e-07, No Iterations 17 GAMG: Solving for p, Initial residual = 0.871516, Final residual = 0.0267436, No Iterations 4 GAMG: Solving for p, Initial residual = 0.774578, Final residual = 0.0200357, No Iterations 4 GAMG: Solving for p, Initial residual = 0.775779, Final residual = 0.0372116, No Iterations 3 GAMG: Solving for p, Initial residual = 0.795692, Final residual = 0.0395914, No Iterations 3 GAMG: Solving for p, Initial residual = 0.745215, Final residual = 0.0356113, No Iterations 3 time step continuity errors : sum local = 3298.37, global = 0.761859, cumulative = 4.81493 rho max/min : 2 1 smoothSolver: Solving for omega, Initial residual = 0.00454441, Final residual = 3.715e-07, No Iterations 3 bounding omega, min: -6.18148e+06 max: 4.82333e+08 average: 5.85145e+06 smoothSolver: Solving for k, Initial residual = 0.363912, Final residual = 7.39091e-07, No Iterations 4 bounding k, min: -0.380705 max: 298.131 average: 1.01755 ExecutionTime = 95.84 s ClockTime = 99 s faceSource faceSource1 output: sum(INLET) for phi = -0.00013497 faceSource faceSource2 output: sum(AMI_INTERFACE_6_1) for phi = 0.00013365 faceSource faceSource3 output: sum(AMI_INTERFACE_7_1) for phi = -0.000379064 faceSource faceSource4 output: sum(OUTLET) for phi = 0.000136115 Time = 8 smoothSolver: Solving for Ux, Initial residual = 0.253062, Final residual = 0.012248, No Iterations 1 smoothSolver: Solving for Uy, Initial residual = 0.293322, Final residual = 0.0134332, No Iterations 1 smoothSolver: Solving for Uz, Initial residual = 0.313296, Final residual = 0.0142965, No Iterations 1 smoothSolver: Solving for e, Initial residual = 0.699603, Final residual = 6.78483e-07, No Iterations 13 --> FOAM FATAL ERROR: Maximum number of iterations exceeded From function thermo<Thermo, Type>::T(scalar f, scalar T0, scalar (thermo<Thermo, Type>::*F)(const scalar) const, scalar (thermo<Thermo, Type>::*dFdT)(const scalar) const, scalar (thermo<Thermo, Type>::*limit)(const scalar) const) const in file /export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/specie/lnInclude/thermoI.H at line 76. FOAM aborting #0 Foam::error::printStack(Foam::Ostream&) in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #1 Foam::error::abort() in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" #2 Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::T(double, double, double, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double) const) const in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so" #3 Foam::hePsiThermo<Foam::psiThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::calculate() in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so" #4 Foam::hePsiThermo<Foam::psiThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::correct() in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/lib/libfluidThermophysicalModels.so" #5 in "/export/home/xxx/vse/OpenFOAM/OpenFOAM-2.3.x/platforms/linux64GccDPOpt/bin/rhoSimpleFoam" #6 __libc_start_main in "/lib64/libc.so.6" #7 at /home/abuild/rpmbuild/BUILD/glibc-2.14.1/csu/../sysdeps/x86_64/elf/start.S:116 Best regards |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
mass flow in is not equal to mass flow out | saii | CFX | 12 | March 19, 2018 06:21 |
Solver for transonic flow? | Martin Hegedus | OpenFOAM Running, Solving & CFD | 22 | December 16, 2015 05:59 |
is it possible to predict how long it takes to reach steady state solution in unstead | Alimohamadi_nasr | CFX | 4 | November 11, 2013 07:11 |
error message | cuteapathy | CFX | 14 | March 20, 2012 07:45 |
Constant velocity of the material | Sas | CFX | 15 | July 13, 2010 09:56 |