|
[Sponsors] |
August 12, 2022, 16:54 |
rhoPimpleFoam with AMI crashed
|
#1 |
New Member
Anuar Giménez
Join Date: Feb 2022
Location: Spain
Posts: 15
Rep Power: 4 |
Hi all,
I am trying to simulate a polymer flow through a single screw extruder, such as the one shown below: I modified some libraries to correctly introduce the non-Newtonian fluid behavior and ran some steady simulations with the MRF approach and rhoSimpleFoam. Everything worked fine, they converge very well and have physical meaning. Then I tried the AMI approach with rhoPimpleFoam and after a few iterations, the simulation crashed: Code:
[1] #0 Foam::error::printStack(Foam::Ostream&)[3] #0 Foam::error::printStack(Foam::Ostream&)[4] #0 Foam::error::printStack(Foam::Ostream&)[5] #0 Foam::error::printStack(Foam::Ostream&)[2] #0 Foam::error::printStack(Foam::Ostream&)[0] #0 Foam::error::printStack(Foam::Ostream&) at ??:? at ??:? [1] #1 [3] #1 Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int) at ??:? [4] #1 Foam::sigFpe::sigHandler(int) at ??:? [5] #1 Foam::sigFpe::sigHandler(int) at ??:? [2] #1 Foam::sigFpe::sigHandler(int) at ??:? [0] #1 Foam::sigFpe::sigHandler(int) at ??:? [1] #2 at ??:? [3] #2 ?? at ??:? [4] #2 ? at ??:? [5] #2 ? at ??:? [2] #2 ? at ??:? [0] #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" [4] #3 ? in "/lib/x86_64-linux-gnu/libc.so.6" [5] #3 ? in "/lib/x86_64-linux-gnu/libc.so.6" [1] #3 ? in "/lib/x86_64-linux-gnu/libc.so.6" [3] #3 ? in "/lib/x86_64-linux-gnu/libc.so.6" [2] #3 ? in "/lib/x86_64-linux-gnu/libc.so.6" [0] #3 ? in "/lib/x86_64-linux-gnu/libm.so.6" [5] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" [4] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" [1] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" [2] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" [3] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" [0] #4 exp in "/lib/x86_64-linux-gnu/libm.so.6" in "/lib/x86_64-linux-gnu/libm.[5] #5so.6" Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const[4] #5 Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const in "/lib/x86_64-linux-gnu/libm.so.6" in "/lib/x86_64-linux-gnu/libm.so.6" [1] #5 Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const[2] #5 Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const in "/lib/x86_64-linux-gnu/libm.so.6" [3] #5 Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const in "/lib/x86_64-linux-gnu/libm.so.6" [0] #5 Foam::rhoPolymerEOS<Foam::specie>::rho(double, double) const at ??:? at ??:? at ??:? [1] #6 [2] #6 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate()Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate()[3] #6 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate() at ??:? at ??:? [5] #6 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate()[4] #6 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate() at ??:? [0] #6 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::calculate() at ??:? at ??:? at ??:? at ??:? at ??:? [5] #7 [4] #[2] #7 [1] #7 7 [3] #7 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct()Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct()Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct()Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct()Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct() at ??:? [0] #7 Foam::heRhoThermo<Foam::rhoThermo, Foam::pureMixture<Foam::polymerKWLFTransport<Foam::species::thermo<Foam::hPolymerThermo<Foam::rhoPolymerEOS<Foam::specie> >, Foam::sensibleEnthalpy> > > >::correct() at ??:? [4] #8 at ??:? [1] #8 at ??:? at ??:? [5] #8 [2] #8 at ??:? [3] #8 at ??:? [0] #8 ?????? in "/opt/openfoam7/platforms/linux6 in "/opt/openf4GccDPInt32Opt/bin/rhoPimpleFoam" in "/opt/openoam7/platforms/linux64GccDPInt32O in "/opt/ofoam7/platforms/lipt/bin/rhoPimpleFoam" nux64GccDPInt32O[5] #9 __libc_start_mainpenfoam7/platforms/linupt/bin/rhoPimplx64GccDPInt32Opt/beFoam" in/rhoPimpleFo[1] #9 am" [4] #__libc_start_main9 __libc_start_main[2] # in "/opt/openfo9 __libc_start_mainam7/platforms/linux64GccDPInt32Opt/bin/rhoPimpleFoam" [3] #9 __libc_start_main in "/opt/openfoam7/platforms/linux64GccDPInt32Opt/bin/rhoPimpleFoam" [0] #9 __libc_start_main in "/lib/x86_64-linux-gnu/li in "/lib/x86_64-linux-gnu/libc.so.6bc.so.6" " [4] #10 [3] #10 in "/lib/x86_64-linux-gnu/libc.so.6" [2] #10 in "/lib/x86_64-linux-gnu/libc.so.6" in "/lib/x86_64-linux[5] #10 -gnu/libc.so.6" [1] #10 in "/lib/x86_64-linux-gnu/libc.so.6" This is the running log file: runningLog.txt Here you can see the continuity and residuals plot: continuity.png linear.png My initial conditions are: p: Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2112 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; internalField uniform 1e5; boundaryField { inlet { type zeroGradient; } outlet { type fixedValue; value uniform 1e5; } barrelup { type zeroGradient; } barreldown { type zeroGradient; } screwup { type zeroGradient; } screwdown { type zeroGradient; } "AMI1|AMI2" { type cyclicAMI; } } // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2112 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volVectorField; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { inlet { type flowRateInletVelocity; massFlowRate 6.1e-06;// kg/s aprox. 0.36 kg/h rho rho; rhoInlet 1040; } outlet { type zeroGradient; value uniform (0 0 0); } barrelup { type slip; } barreldown { type noSlip; } screwup { type movingWallVelocity; value uniform (0 0 0); } screwdown { type movingWallVelocity; value uniform (0 0 0); } "AMI1|AMI2" { type cyclicAMI; } } // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v2112 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0]; internalField uniform 500; //initial condition boundaryField { inlet { type fixedValue; value uniform 298.15; // temperature ambient 25ºC } outlet { type zeroGradient; } //ZONE 1: CONDUCTIVITY + RADIATION barrelup { type convectiveRadiativeHeatFlux; mode convectiveRadiative; Ta constant 592.15; h uniform 215; //Heat transfer coefficient [W/(m²*K)] emissivityNozzle 0.95; //Emissivity nozzle (or brass) [-] emissivityFilament 0.95; //Emissivity filament [-] dNozzle 4.0; //inner diameter nozzle [mm} dFilament 1.75; //filament diameter [mm] kappaMethod fluidThermo; value $internalField; //initial Temperature value } //ZONE 2: constant temperature. barreldown { type fixedValue; value uniform 590; } screwup { type zeroGradient; } screwdown { type zeroGradient; } "AMI1|AMI2" { type cyclicAMI; } } // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 7 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application rhoPimpleFoam; startFrom latestTime; startTime 0; stopAt endTime; endTime 6; deltaT 1e-4; writeControl adjustableRunTime; writeInterval 0.005; purgeWrite 0; writeFormat binary; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; adjustTimeStep yes; maxCo 20; maxDeltaT 0.0025; // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 7 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver GAMG; tolerance 1e-10; relTol 0.01; smoother GaussSeidel; cacheAgglomeration no; } pFinal { $p; tolerance 1e-6; relTol 0; } "pcorr.*" { $p; tolerance 1e-3; relTol 0; } rho { solver PCG; preconditioner DIC; tolerance 1e-8; relTol 0.1; } rhoFinal { $rho; tolerance 1e-5; relTol 0; } "(U|h)" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-10; relTol 0.1; } "(U|h)Final" { $U; tolerance 1e-10; relTol 0; } } PIMPLE { //- Correct the fluxes based on mesh motion. See header files of the solver correctPhi true; //- Turn on of off the momentum predictor. In a numerical point of view // not necessary. Useful for 2-phase and high viscosity ratios momentumPredictor true; //- Use the SIMPLE(C) := C = consistent / corrected algorithm for // the outer corrections. A pressure term that is neglected in the // SIMPLE algorithm is included. More inner calculations but the // coupling U-p in general is solved faster consistent true; //- Mesh non-orthogonality correctors. Foam handles non-orthogonality quite // good, so there is no need to use or only up to 2 - 3 nNonOrthogonalCorrectors 0; //- Outer loops, re-calculation around p-U and other equations within // one time step. For stiff problems while using under-relaxation nOuterCorrectors 5; //- Pressure corrections nCorrectors 2; //- If the transient solution tends towards a steady state solution, // end the calculation after the residual control is reached residualControl { p 1e-5; U 4e-6; h 1e-4; } //- Control over each time step. The outer loops are recalculated // till the residuals are reached. For outer loops, we can use // under-relaxation as it is kind of a SIMPLE loop. Stiff problems // can be handled and the time step can be increased. Further information // are given in the book Mathematics, Numerics, Derivations and OpenFOAM outerCorrectorResidualControl { //- Weak control - bad accuracy but faster p { relTol 0; tolerance 1e-3; } U { relTol 0; tolerance 1e-3; } h { relTol 0; tolerance 1e-3; } } } //- Relaxation factors applied to the fields or equations in the outer loops // If nOuterCorrectors is not used, no underrelaxation should be placed. // Always use the *.Final factor too, only you really know what your are doing // ++ Relaxation of the final outer correction is possible, if the residual // controls are very strict. relaxationFactors { //- Relaxation of the fields: See doxygen // Range [0-1] while 0 does not change the field (no sense) fields { p 0.95; pFinal 1; } //- Relaxation of the equation: // Factor: -1 disables the usage // Factor: 1 makes the matrix diagonal dominant or at least equal // --> matrix might be manipulated // Factor: 0 < alpha < 1; underrelaxation - make matrix diagonal dominat // Factor: alpha > 1; over-relaxation - make matrix diagonal dominat weak // --> can be used in some cases, generally not stable equations { p 1; // Make matrix at least diagonal dominant U 1; h 0.9; } } // ************************************************************************* // Code:
/*--------------------------------*- C++ -*----------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 7 \\/ M anipulation | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; } divSchemes { default Gauss upwind; div(phi,U) Gauss linearUpwind grad(U); div(phi,h) Gauss linearUpwind grad(h); div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } // ************************************************************************* // It would be a great help if you could give me some advice to manage this. Thanks, Anuar |
|
August 13, 2022, 05:25 |
|
#2 |
New Member
Anuar Giménez
Join Date: Feb 2022
Location: Spain
Posts: 15
Rep Power: 4 |
Anyone who might be interested in the case?
|
|
August 13, 2022, 06:58 |
|
#3 |
New Member
Max Spencer
Join Date: Dec 2019
Posts: 11
Rep Power: 7 |
I cannot confirm your overall setup and boundary files are 100% correct, but assuming you have run successfully with an MRF simulation maybe they are.
I would start with lowering the starting time step (perhaps to 1e-5), increase the outer correctors on your pimple loop from 5 to larger (perhaps 20), and decrease your target courant number to a smaller value, 20 is probably too large to get stability at least until the flow has initiated and stabilized. I would try with 1 for some timesteps and slowly increase to see where it diverges. You ideally should be looking that the solution converges to your residual controls before it advances to the next time steps. Pushing to Co of 20 this early before having any more converged iterations is probably not going to be stable. |
|
August 13, 2022, 10:29 |
|
#4 |
New Member
Anuar Giménez
Join Date: Feb 2022
Location: Spain
Posts: 15
Rep Power: 4 |
Hi spenceme, thank you very much for your reply.
I followed the instructions that you suggested and the solver crashes in the first timestep It seems that the residuals in each iteration dont converge, dont know why it could be. This is the running log: runningLog2.txt Thank you for your time, Anuar |
|
August 13, 2022, 10:54 |
|
#5 |
New Member
Max Spencer
Join Date: Dec 2019
Posts: 11
Rep Power: 7 |
I would try some relaxation on u and p and more on h.
|
|
August 13, 2022, 12:42 |
|
#6 |
New Member
Anuar Giménez
Join Date: Feb 2022
Location: Spain
Posts: 15
Rep Power: 4 |
Thank you for your suggestions! Unfortunately, despite I tried different values for relaxation, the simulation keeps crashing.
I tried this configuration, as it is used in many rhoPimpleFoam tutorials: PIMPLE { correctPhi yes; nOuterCorrectors 2; nCorrectors 1; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } relaxationFactors { equations { ".*" 1; } } It keeps running, however the initial residual of pressure always remains 1. This is the residuals plot now: Imagen1.png Here you can see the last timeStep: Code:
Courant Number mean: 5.77082e-06 max: 9.93088e-05 deltaT = 4.01532e-08 Time = 3.16779e-05 AMI: Creating addressing and weights between 50424 source faces and 50424 target faces AMI: Patch source sum(weights) min/max/average = 0.998807, 1, 0.999998 AMI: Patch target sum(weights) min/max/average = 0.998811, 1, 0.999998 GAMG: Solving for pcorr, Initial residual = 1, Final residual = 0.000809554, No Iterations 50 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 smoothSolver: Solving for Ux, Initial residual = 1.21937e-05, Final residual = 9.73018e-11, No Iterations 189 smoothSolver: Solving for Uy, Initial residual = 2.37258e-07, Final residual = 9.59816e-11, No Iterations 104 smoothSolver: Solving for Uz, Initial residual = 1.72491e-05, Final residual = 9.92642e-11, No Iterations 199 - selecting all cells - selected 11197318 cell(s) with volume 6.83952e-06 - selecting all cells - selected 11197318 cell(s) with volume 6.83952e-06 smoothSolver: Solving for h, Initial residual = 0.000362698, Final residual = 7.93305e-12, No Iterations 1 - selecting all cells - selected 11197318 cell(s) with volume 6.83952e-06 GAMG: Solving for p, Initial residual = 1, Final residual = 0.00973657, No Iterations 15 pressureControl: p max 9.41894e+08 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 4.75605e-10, global = 2.18067e-12, cumulative = 1.08047e-09 GAMG: Solving for p, Initial residual = 1, Final residual = 0.00973657, No Iterations 15 pressureControl: p max 9.41894e+08 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 4.75605e-10, global = 2.18067e-12, cumulative = 1.08265e-09 GAMG: Solving for p, Initial residual = 1, Final residual = 7.5759e-07, No Iterations 49 pressureControl: p max 9.59615e+08 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 3.70065e-14, global = 8.61469e-17, cumulative = 1.08265e-09 ExecutionTime = 4564.31 s ClockTime = 4566 s greetings, Anuar |
|
August 14, 2022, 04:23 |
|
#7 |
New Member
Max Spencer
Join Date: Dec 2019
Posts: 11
Rep Power: 7 |
It looks like somewhere in your domain the pressure values are exploding. I would write the results and look where this is occurring. Perhaps something in your mesh at that location.
for BC, you might want to use pressureInletOutletVelocity instead of zero gradient on the U outlet. |
|
Tags |
ami, holzmann cfd, mrf, openfoam, rhopimplefoam |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Error running AMI propeller simulation | luitzor | OpenFOAM Running, Solving & CFD | 0 | April 19, 2021 14:48 |
[swak4Foam] reconstructPar error in MRFsimpleFoam (ami apprach) using GroovyBC velocity inlet | Krao | OpenFOAM Community Contributions | 3 | August 19, 2019 06:40 |
mapField error | rvl565 | OpenFOAM Pre-Processing | 1 | September 6, 2018 17:13 |
Compressor Simulation using rhoPimpleDyMFoam | Jetfire | OpenFOAM Running, Solving & CFD | 107 | December 9, 2014 14:38 |
mixerVesselAMI2D's mass is not balancing | sharonyue | OpenFOAM Running, Solving & CFD | 6 | June 10, 2013 10:34 |