
[Sponsors] 
Periodic cyclic AMI + MRF crashing on pressure 

LinkBack  Thread Tools  Search this Thread  Display Modes 
October 9, 2017, 03:22 
Periodic cyclic AMI + MRF crashing on pressure

#1 
Member
Thomas Sprich
Join Date: Mar 2015
Posts: 76
Rep Power: 11 
Dear FOAMERS
I am simulating a 3D impeller case in a closed tank (no inlet and outlet) with simpleFOAM and MRF. I would like to take advantage of symmetry. To do this I model the geometry of the tank in quarters along the axis of the tank as shown in the image. I am using cyclicAMI boundary conditions on the ‘wedge’ edges because I can’t get an equal mesh on each face. When I run simpleFOAM, I get a crash on the first iteration on the pressure step. See the error below: Code:
/**\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.1   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ Build : 4.1 Exec : simpleFoam Date : Oct 09 2017 Time : 08:53:30 Host : "thomasMS7885" PID : 3752 Case : FourBladedMapFieldsRealizeableKEHiResCyclic nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring runtime modified files using timeStampMaster allowSystemOperations : Allowing usersupplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict coupled 1; Create mesh for time = 0 SIMPLE: convergence criteria field p tolerance 0.0001 field U tolerance 1e05 field "(kepsilon)" tolerance 1e05 Reading field p AMI: Creating addressing and weights between 50097 source faces and 44472 target faces AMI: Patch source sum(weights) min/max/average = 0, 2.4426, 1.0002 AMI: Patch target sum(weights) min/max/average = 0.26519, 2.476, 1.0029 Reading field U Reading/calculating face flux field phi Selecting incompressible transport model Newtonian Selecting turbulence model type RAS Selecting RAS turbulence model realizableKE bounding k, min: 0 max: 0.051 average: 0.051 bounding epsilon, min: 0 max: 0.05 average: 0.05 Creating MRF zone list from MRFProperties creating MRF zone: MRF1 No finite volume options present Starting time loop Time = 1 GAMG: Solving for Ux, Initial residual = 1, Final residual = 2.2586e05, No Iterations 3 GAMG: Solving for Uy, Initial residual = 1, Final residual = 0.00090351, No Iterations 2 GAMG: Solving for Uz, Initial residual = 1, Final residual = 0.00082893, No Iterations 2 #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64linuxgnu/libc.so.6" #3 Foam::divide(Foam::Field<double>&, double const&, Foam::UList<double> const&) at ??:? #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::operator/<Foam::fvPatchField, Foam::volMesh>(Foam::dimensioned<double> const&, Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&) at ??:? #5 ? at ??:? #6 __libc_start_main in "/lib/x86_64linuxgnu/libc.so.6" #7 ? at ??:? Does anyone have some advice on how to resolve this? My boundary conditions are: p: Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object p; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 2 0 0 0 0]; internalField uniform 0; boundaryField { cyclic1Right { type cyclicAMI; } cyclic2Left { type cyclicAMI; } rotorBottom { type zeroGradient; } baffles { type zeroGradient; } tank { type zeroGradient; } shaft { type zeroGradient; } bottomOfTank { type zeroGradient; } topOfTank { type zeroGradient; } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format binary; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { cyclic1Right { type cyclicAMI; } cyclic2Left { type cyclicAMI; } rotorBottom { type fixedValue; value uniform (0 0 0); } baffles { type fixedValue; value uniform (0 0 0); } tank { type fixedValue; value uniform (0 0 0); } shaft { type fixedValue; value uniform (0 0 0); } bottomOfTank { type fixedValue; value uniform (0 0 0); } topOfTank { type fixedValue; value uniform (0 0 0); } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object k; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 2 0 0 0 0]; internalField uniform 0.051; boundaryField { cyclic1Right { type cyclicAMI; } cyclic2Left { type cyclicAMI; } rotorBottom { type kqRWallFunction; value uniform 0.051; } baffles { type kqRWallFunction; value uniform 0.051; } tank { type kqRWallFunction; value uniform 0.051; } shaft { type kqRWallFunction; value uniform 0.051; } bottomOfTank { type kqRWallFunction; value uniform 0.051; } topOfTank { type kqRWallFunction; value uniform 0.051; } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object epsilon; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 3 0 0 0 0]; internalField uniform 0.05; boundaryField { cyclic1Right { type cyclicAMI; } cyclic2Left { type cyclicAMI; } rotorBottom { type epsilonWallFunction; value uniform 0.05; } baffles { type epsilonWallFunction; value uniform 0.05; } tank { type epsilonWallFunction; value uniform 0.05; } shaft { type epsilonWallFunction; value uniform 0.05; } bottomOfTank { type epsilonWallFunction; value uniform 0.05; } topOfTank { type epsilonWallFunction; value uniform 0.05; } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 4.1   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format binary; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 8 ( rotorBottom { type wall; inGroups 1(wall); nFaces 27410; startFace 2887555; } baffles { type wall; inGroups 1(wall); nFaces 8790; startFace 2914965; } tank { type wall; inGroups 1(wall); nFaces 23866; startFace 2923755; } shaft { type wall; inGroups 1(wall); nFaces 2813; startFace 2947621; } bottomOfTank { type wall; inGroups 1(wall); nFaces 7259; startFace 2950434; } topOfTank { type wall; inGroups 1(wall); nFaces 7268; startFace 2957693; } cyclic1Right { type cyclicAMI; inGroups 1(cyclicAMI); nFaces 50097; startFace 2964961; matchTolerance 0.0001; transform rotational; neighbourPatch cyclic2Left; rotationAxis (0 0 1); rotationCentre (0 0 0); } cyclic2Left { type cyclicAMI; inGroups 1(cyclicAMI); nFaces 44472; startFace 3015058; matchTolerance 0.0001; transform rotational; neighbourPatch cyclic1Right; rotationAxis (0 0 1); rotationCentre (0 0 0); } ) // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 3.0.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default steadyState; } gradSchemes { //default faceLimited leastSquares 0.5; default Gauss linear; //grad(p) cellLimited Gauss linear 1; //grad(U) cellLimited Gauss linear 1; } divSchemes { default none; //div(phi,U) bounded Gauss limitedLinearV 1; div(phi,U) bounded Gauss linearUpwind grad(U); div(phi,k) bounded Gauss linearUpwind grad(U); div(phi,epsilon) bounded Gauss linearUpwind grad(U); div((nuEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { // default Gauss linear corrected; default Gauss linear limited 0.33; } interpolationSchemes { default linear; } snGradSchemes { // default limited 0.33; default corrected; } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 3.0.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { p { solver GAMG; tolerance 1e08; relTol 0.01; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 20; agglomerator faceAreaPair; mergeLevels 1; } pFinal { $p; relTol 0.00; } U { solver GAMG; tolerance 1e08; relTol 0.001; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 20; agglomerator faceAreaPair; mergeLevels 1; } k { solver GAMG; smoother GaussSeidel; nSweeps 5; tolerance 1e08; relTol 0.001; } epsilon { solver GAMG; smoother GaussSeidel; nSweeps 5; tolerance 1e08; relTol 0.001; } } SIMPLE { nNonOrthogonalCorrectors 2; momentumPredictor yes; pRefCell 0; pRefPoint (00 0.0); pRefValue 0; residualControl { p 1e4; U 1e5; "(kepsilon)" 1e5; } } relaxationFactors { fields { p 0.7; } equations { U 0.6; k 0.6; epsilon 0.6; } } // ************************************************************************* // Code:
/** C++ **\  =========    \\ / F ield  OpenFOAM: The Open Source CFD Toolbox   \\ / O peration  Version: 3.0.0   \\ / A nd  Web: www.OpenFOAM.org   \\/ M anipulation   \**/ FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object MRFProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // MRF1 { cellZone rotatingDomainBottom; active yes; // Fixed patcsshes (by default they 'move' with the MRF zone) nonRotatingPatches (cyclic1Right cyclic2Left); origin (0 0 0); axis (0 0 1); omega 2.8571; } // ************************************************************************* // Kind Regards, Thomas Sprich 

October 9, 2017, 03:35 

#2 
Senior Member
Join Date: Aug 2013
Posts: 407
Rep Power: 15 
Hi,
If you look at the weights of your AMI, you see that the minimum weight is 0. While I have not performed simulations similar to yours, I have encountered AMI issues in my runs & they typically have to do with the minimum weight being 0. This 0 weight, at least for me, has been the result of there being a mismatch in defining the cyclicAMI patches. You might want to check your mesh, particularly the AMI faces/patches, to ensure that the patches are defined correctly Hope this helps. Cheers, Antimony 

October 9, 2017, 10:02 

#3 
Member
Thomas Sprich
Join Date: Mar 2015
Posts: 76
Rep Power: 11 
Hi Antimony,
Thanks for your reply. It makes sense what you say. I think when I saw it crash on pressure, on not on velocity that AMI weights were not a problem. I'm not sure what type of AMI simulations you have done. I've done some where I had rotating AMI planes and AMI was a problem too. In this case, the AMI planes are orthogonal and I'm not sure if that could be the problem...? There is a 'rotationAngle' option available for the cyclicAMI definition, but I'm not sure how to use this. The second thing that could be a problem is at the corner of the wedge by the axis where the two AMI planes meet the mesh is very busy because this is where the impeller is located. I can't think why this should be a problem, but I think it is worth mentioning. Thomas 

October 10, 2017, 03:06 

#4 
Member
Thomas Sprich
Join Date: Mar 2015
Posts: 76
Rep Power: 11 
Hi Antimony,
I have remeshed while trying to get better AMI weights. I have managed to get the following when running simpleFoam: Code:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Overriding DebugSwitches according to controlDict coupled 1; Create mesh for time = 1 SIMPLE: convergence criteria field p tolerance 0.0001 field U tolerance 1e05 field "(kepsilon)" tolerance 1e05 Reading field p AMI: Creating addressing and weights between 61954 source faces and 61950 target faces AMI: Patch source sum(weights) min/max/average = 0.5618, 1.1697, 1 AMI: Patch target sum(weights) min/max/average = 0.562, 1.0172, 0.99997 The weights are not close to one. Is this a problem? At least they are very similar. Thanks for your help once again. Thomas 

October 10, 2017, 03:22 

#5 
Senior Member
Join Date: Aug 2013
Posts: 407
Rep Power: 15 
Hi,
I think most of the problems come only when the weights are exactly 0. Apart from that the simulation should run, though there is no guarantee that it won't fail later. If I remember correctly (from reading somewhere), if you use the rotation transformation, then it is quite possible that you will weights that are not close to 1 (but I could be wrong!). Apologies that I don't have a more definitive answer for you. Cheers, Antimony 

October 11, 2017, 01:53 

#6 
Member
Thomas Sprich
Join Date: Mar 2015
Posts: 76
Rep Power: 11 
Hi Antimony,
Just to let you know. The simulation ran to a reasonable convergence without crashing. Thanks again for your help and swift responses. Thomas 

May 16, 2019, 04:20 

#7 
Senior Member
Kmeti Rao
Join Date: May 2019
Posts: 145
Rep Power: 8 
Hi Thomas Sprich,
I am facing a similar problem where the patch AMI weights are zero. I am trying to simulate half of the propeller using MRF+AMI. It would be very interesting if you can share the information regarding what exactly was the error that caused the failure. Thank you 

May 16, 2019, 06:14 

#8 
Member
Thomas Sprich
Join Date: Mar 2015
Posts: 76
Rep Power: 11 
Hi Krao,
Its been a long time since I have done this. To be honest, I think at that stage I just played with sHM settings until I got better AMI weights. Since then I have found some tips that can help get better results. The problem I had was that the points on the master and slave surfaces for the AMI surfaces where not 100% conformal. You can see this when you look at them in paraFoam, the surfaces don't quite line up. I particularly had a problem at the edges. To be able to help, you would really need to show your snappyHexMeshDict and show your meshing procedure. You also haven't shown what your error is, are all your AMI weights zero, or just the minimum? I can only presume what problems you are having, but the below has helped me get AMI surfaces with better weights. Assuming that you have had similar problems to me. There is a really good example for how to get good AMI surfaces in the tutorials: tutorials/compressible/rhoPimpleFoam/RAS/annularThermalMixer/system/ I recommend starting with this. Unlike in the propeller tutorial in pimple(DyM)Foam, here no facetype is defined and mergeOrSplitBaffles is used. I have honestly found this to be the only way to get AMI surfaces that are 100% conformal and that allow me to rotate the mesh. But you aren't rotating your mesh, so this maybe isn't an issue for you. This may also help you: https://openfoam.org/release/220/s...fles/#x412000 See "Baffle and Boundary Creation" section. This may also give you some ideas. I hope that helps, Thomas 

May 17, 2019, 01:55 

#9 
Senior Member
Kmeti Rao
Join Date: May 2019
Posts: 145
Rep Power: 8 
Thank you very much for your reply, can you please look into this thread, which I have posted yesterday (One half propeller simulation with MRFSimpleFoam crashing). It would be of a great help if you can provide some insights, where I would have made mistakes.
Previously I have used, AMI successfully for the dynamic simulation of Propellers and also I had success with MRFsimpleFoam for the full propeller. Now I am trying to figure out a procedure for determining the results of one half propeller, to save computational time. 

Tags 
cyclicami; mrf 
Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
question regarding LES of pipe flow  pimpleFoam  Dan1788  OpenFOAM Running, Solving & CFD  37  December 26, 2017 14:42 
Pressure Outlet Guage pressure  Mohsin  FLUENT  36  April 29, 2016 17:16 
Does star cd takes reference pressure?  monica  Siemens  1  April 19, 2007 11:26 
Gas pressure question  Dan Moskal  Main CFD Forum  0  October 24, 2002 22:02 
Hydrostatic pressure in 2phase flow modeling (long)  DS & HB  Main CFD Forum  0  January 8, 2000 15:00 