CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   OF 4.1 + Helyx-OS v2.4.0 AMI Simulation blows up after 0.4 seconds (https://www.cfd-online.com/Forums/openfoam-solving/204371-4-1-helyx-os-v2-4-0-ami-simulation-blows-up-after-0-4-seconds.html)

Ruonin July 21, 2018 10:03

OF 4.1 + Helyx-OS v2.4.0 AMI Simulation blows up after 0.4 seconds
 
5 Attachment(s)
Hello Everyone,

Just for some context, I'm trying to move one of the impellers of a reactor using AMI.
I'm using OF4.1 and Helyx-OS v2.4.0.

I've read some of the posts regarding convergence issues with sliding mesh (AMI) and I believe I have tackled most of issues that could hinder convergence.

I verify the mesh is indeed sliding, however, after some type I get the dreaded error:

MI: Creating addressing and weights between 52300 source faces and 54593 target faces
[0]
[0]
[0] --> FOAM FATAL ERROR:
[0] Unable to set source and target faces
[0]
[0] From function void Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::setNextFaces(Foam::label&, Foam::label&, Foam::label&, const boolList&, Foam::labelList&, const Foam::DynamicList<int>&, bool) const [with SourcePatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; TargetPatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; Foam::label = int; Foam::boolList = Foam::List<bool>; Foam::labelList = Foam::List<int>]
[0] in file lnInclude/faceAreaWeightAMI.C at line 287.
[0]
FOAM parallel run aborting
[0]
[0] #0 Foam::error::printStack(Foam::Ostream&) at ??:?
[0] #1 Foam::error::abort() at ??:?
[0] #2 Foam::faceAreaWeightAMI<Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::calcAddressing(Foam::List<Foam::DynamicList<int , 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<double, 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<int, 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<double, 0u, 2u, 1u> >&, int, int) at ??:?
[0] #3 Foam::faceAreaWeightAMI<Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::calculate(Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, int, int) at ??:?
[0] #4 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam:: face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::update(Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&) at ??:?
[0] #5 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam:: face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::constructFromSurface(Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::autoPtr<Foam::searchableSurface> const&) at ??:?
[0] #6 Foam::cyclicAMIPolyPatch::resetAMI(Foam::AMIInterp olation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::interpolationMethod const&) const at ??:?
[0] #7 Foam::cyclicAMIPolyPatch::AMI() const at ??:?
[0] #8 Foam::cyclicAMIPolyPatch::applyLowWeightCorrection () const at ??:?
[0] #9 Foam::cyclicAMIFvPatchField<Foam::Vector<double> >::patchNeighbourField() const at ??:?
[0] #10 Foam::coupledFvPatchField<Foam::Vector<double> >::evaluate(Foam::UPstream::commsTypes) at ??:?
[0] #11 Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::Boundary::evaluate() at ??:?
[0] #12 Foam::multiSolidBodyMotionFvMesh::update() at ??:?
[0] #13 ? at ??:?
[0] #14 __libc_start_main in "/lib64/libc.so.6"
[0] #15 ? at /home/abuild/rpmbuild/BUILD/glibc-2.22/csu/../sysdeps/x86_64/start.S:121
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.

[IMG]file:///home/hovione/Desktop/mesh1.png[/IMG]

I understand the mesh could use some fine tuning but could this be the cause?
No errors or warnings in checkMesh.
This seem odd since I would have gotten the error sooner...

I can't seem to understand why the simulation blows up.
Can anyone detect any errors or provide some insight?

Log
Courant Number mean: 0.003791078666 max: 1.967136809
deltaT = 0.0005555555556
Time = 0.401667

AMI: Creating addressing and weights between 52300 source faces and 54593 target faces
AMI: Patch source sum(weights) min/max/average = 0, 1.506151533, 1.007932604
AMI: Patch source identified 9 faces with weights less than 0.2
AMI: Patch target sum(weights) min/max/average = 0, 1.455095879, 1.001904928
AMI: Patch target identified 15 faces with weights less than 0.2
GAMG: Solving for pcorr, Initial residual = 1, Final residual = 0.006262864683, No Iterations 72
GAMG: Solving for pcorr, Initial residual = 0.2674973684, Final residual = 0.002601096384, No Iterations 28
time step continuity errors : sum local = 9.684025466e-10, global = 7.955442223e-10, cumulative = -1.610408404e-07
PIMPLE: iteration 1
smoothSolver: Solving for Ux, Initial residual = 0.0004328596307, Final residual = 1.77369777e-05, No Iterations 1
smoothSolver: Solving for Uy, Initial residual = 0.000419783604, Final residual = 1.721121331e-05, No Iterations 1
smoothSolver: Solving for Uz, Initial residual = 0.0002945661384, Final residual = 1.182454377e-05, No Iterations 1
GAMG: Solving for p, Initial residual = 0.4609984327, Final residual = 0.003167119338, No Iterations 3
GAMG: Solving for p, Initial residual = 0.02578119572, Final residual = 0.000247318199, No Iterations 28
time step continuity errors : sum local = 1.803082199e-09, global = -9.57286632e-10, cumulative = -1.619981271e-07
smoothSolver: Solving for epsilon, Initial residual = 0.0003327351328, Final residual = 8.315218439e-06, No Iterations 1
smoothSolver: Solving for k, Initial residual = 0.0007650400529, Final residual = 2.672913661e-05, No Iterations 1
PIMPLE: iteration 2
smoothSolver: Solving for Ux, Initial residual = 0.0003442167062, Final residual = 7.320810545e-07, No Iterations 3
smoothSolver: Solving for Uy, Initial residual = 0.000336613188, Final residual = 7.382960511e-07, No Iterations 3
smoothSolver: Solving for Uz, Initial residual = 0.0002487474601, Final residual = 5.985640355e-07, No Iterations 3
GAMG: Solving for p, Initial residual = 0.4505889049, Final residual = 0.00291997857, No Iterations 3
GAMG: Solving for p, Initial residual = 0.06539827074, Final residual = 7.307976183e-07, No Iterations 98
time step continuity errors : sum local = 9.574142553e-10, global = -9.559433288e-10, cumulative = -1.629540704e-07
smoothSolver: Solving for epsilon, Initial residual = 0.0001625167787, Final residual = 5.564326877e-07, No Iterations 2
smoothSolver: Solving for k, Initial residual = 0.000390723251, Final residual = 6.081068895e-07, No Iterations 3
PIMPLE: not converged within 2 iterations
ExecutionTime = 6737.33 s ClockTime = 6758 s
Thank is advance.

BR.
Ruonin

harsha_kulkarni July 23, 2018 00:59

[QUOTE=Ruonin;700002]Hello Everyone,

Just for some context, I'm trying to move one of the impellers of a reactor using AMI.
I'm using OF4.1 and Helyx-OS v2.4.0.

I've read some of the posts regarding convergence issues with sliding mesh (AMI) and I believe I have tackled most of issues that could hinder convergence.

I verify the mesh is indeed sliding, however, after some type I get the dreaded error:

MI: Creating addressing and weights between 52300 source faces and 54593 target faces
[0]
[0]
[0] --> FOAM FATAL ERROR:
[0] Unable to set source and target faces
[0]
[0] From function void Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::setNextFaces(Foam::label&, Foam::label&, Foam::label&, const boolList&, Foam::labelList&, const Foam::DynamicList<int>&, bool) const [with SourcePatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; TargetPatch = Foam::PrimitivePatch<Foam::face, Foam::SubList, const Foam::Field<Foam::Vector<double> >&>; Foam::label = int; Foam::boolList = Foam::List<bool>; Foam::labelList = Foam::List<int>]
[0] in file lnInclude/faceAreaWeightAMI.C at line 287.
[0]
FOAM parallel run aborting
[0]
[0] #0 Foam::error::printStack(Foam::Ostream&) at ??:?
[0] #1 Foam::error::abort() at ??:?
[0] #2 Foam::faceAreaWeightAMI<Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::calcAddressing(Foam::List<Foam::DynamicList<int , 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<double, 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<int, 0u, 2u, 1u> >&, Foam::List<Foam::DynamicList<double, 0u, 2u, 1u> >&, int, int) at ??:?
[0] #3 Foam::faceAreaWeightAMI<Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::calculate(Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, Foam::List<Foam::List<int> >&, Foam::List<Foam::List<double> >&, int, int) at ??:?
[0] #4 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam:: face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::update(Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&) at ??:?
[0] #5 Foam::AMIInterpolation<Foam::PrimitivePatch<Foam:: face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::constructFromSurface(Foam::PrimitivePatch<Foam: :face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > const&, Foam::autoPtr<Foam::searchableSurface> const&) at ??:?
[0] #6 Foam::cyclicAMIPolyPatch::resetAMI(Foam::AMIInterp olation<Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> >, Foam::PrimitivePatch<Foam::face, Foam::SubList, Foam::Field<Foam::Vector<double> > const&, Foam::Vector<double> > >::interpolationMethod const&) const at ??:?
[0] #7 Foam::cyclicAMIPolyPatch::AMI() const at ??:?
[0] #8 Foam::cyclicAMIPolyPatch::applyLowWeightCorrection () const at ??:?
[0] #9 Foam::cyclicAMIFvPatchField<Foam::Vector<double> >::patchNeighbourField() const at ??:?
[0] #10 Foam::coupledFvPatchField<Foam::Vector<double> >::evaluate(Foam::UPstream::commsTypes) at ??:?
[0] #11 Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::Boundary::evaluate() at ??:?
[0] #12 Foam::multiSolidBodyMotionFvMesh::update() at ??:?
[0] #13 ? at ??:?
[0] #14 __libc_start_main in "/lib64/libc.so.6"
[0] #15 ? at /home/abuild/rpmbuild/BUILD/glibc-2.22/csu/../sysdeps/x86_64/start.S:121
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
with errorcode 1.

[IMG]file:///home/hovione/Desktop/mesh1.png[/IMG]

I understand the mesh could use some fine tuning but could this be the cause?
No errors or warnings in checkMesh.
This seem odd since I would have gotten the error sooner...

I can't seem to understand why the simulation blows up.
Can anyone detect any errors or provide some insight?

Log
Courant Number mean: 0.003791078666 max: 1.967136809
deltaT = 0.0005555555556
Time = 0.401667

AMI: Creating addressing and weights between 52300 source faces and 54593 target faces
AMI: Patch source sum(weights) min/max/average = 0, 1.506151533, 1.007932604
AMI: Patch source identified 9 faces with weights less than 0.2
AMI: Patch target sum(weights) min/max/average = 0, 1.455095879, 1.001904928
AMI: Patch target identified 15 faces with weights less than 0.2
GAMG: Solving for pcorr, Initial residual = 1, Final residual = 0.006262864683, No Iterations 72
GAMG: Solving for pcorr, Initial residual = 0.2674973684, Final residual = 0.002601096384, No Iterations 28
time step continuity errors : sum local = 9.684025466e-10, global = 7.955442223e-10, cumulative = -1.610408404e-07
PIMPLE: iteration 1
smoothSolver: Solving for Ux, Initial residual = 0.0004328596307, Final residual = 1.77369777e-05, No Iterations 1
smoothSolver: Solving for Uy, Initial residual = 0.000419783604, Final residual = 1.721121331e-05, No Iterations 1
smoothSolver: Solving for Uz, Initial residual = 0.0002945661384, Final residual = 1.182454377e-05, No Iterations 1
GAMG: Solving for p, Initial residual = 0.4609984327, Final residual = 0.003167119338, No Iterations 3
GAMG: Solving for p, Initial residual = 0.02578119572, Final residual = 0.000247318199, No Iterations 28
time step continuity errors : sum local = 1.803082199e-09, global = -9.57286632e-10, cumulative = -1.619981271e-07
smoothSolver: Solving for epsilon, Initial residual = 0.0003327351328, Final residual = 8.315218439e-06, No Iterations 1
smoothSolver: Solving for k, Initial residual = 0.0007650400529, Final residual = 2.672913661e-05, No Iterations 1
PIMPLE: iteration 2
smoothSolver: Solving for Ux, Initial residual = 0.0003442167062, Final residual = 7.320810545e-07, No Iterations 3
smoothSolver: Solving for Uy, Initial residual = 0.000336613188, Final residual = 7.382960511e-07, No Iterations 3
smoothSolver: Solving for Uz, Initial residual = 0.0002487474601, Final residual = 5.985640355e-07, No Iterations 3
GAMG: Solving for p, Initial residual = 0.4505889049, Final residual = 0.00291997857, No Iterations 3
GAMG: Solving for p, Initial residual = 0.06539827074, Final residual = 7.307976183e-07, No Iterations 98
time step continuity errors : sum local = 9.574142553e-10, global = -9.559433288e-10, cumulative = -1.629540704e-07
smoothSolver: Solving for epsilon, Initial residual = 0.0001625167787, Final residual = 5.564326877e-07, No Iterations 2
smoothSolver: Solving for k, Initial residual = 0.000390723251, Final residual = 6.081068895e-07, No Iterations 3
PIMPLE: not converged within 2 iterations
ExecutionTime = 6737.33 s ClockTime = 6758 s
Thank is advance.

BR.

Initialy
Try to run it on single core

Ruonin July 23, 2018 10:38

Hello harsha_kulkarni,

thanks for the input.

I did try running it on a single core and using moveDynamicMesh to get a general sense if there is an issue with the AMI or just the problem physics.

Initially the Patch Target Sum weights start to diminish and after a while just go to zero for the minimum. I used a constant time step o 2.0E-4 to get a Co number below 1. Still no luck and the simulations blows up around 0.145 seconds.

Any suggestions?
Maybe I need to make a coarser mesh? I've seen some suggestions on the forum.
Or maybe have the same number of faces for both sides of AMI...

I would like to start from scratch rather than using the mapFields from the MRF case.
Going further into the future I would like to use 6DOF where I don't know the impeller speed but I'm still stuck in moving mesh convergence.

BR.
Ruonin.

harsha_kulkarni July 23, 2018 10:59

Quote:

Originally Posted by Ruonin (Post 700145)
Hello harsha_kulkarni,

thanks for the input.

I did try running it on a single core and using moveDynamicMesh to get a general sense if there is an issue with the AMI or just the problem physics.

Initially the Patch Target Sum weights start to diminish and after a while just go to zero for the minimum. I used a constant time step o 2.0E-4 to get a Co number below 1. Still no luck and the simulations blows up around 0.145 seconds.

Any suggestions?
Maybe I need to make a coarser mesh? I've seen some suggestions on the forum.
Or maybe have the same number of faces for both sides of AMI...

I would like to start from scratch rather than using the mapFields from the MRF case.
Going further into the future I would like to use 6DOF where I don't know the impeller speed but I'm still stuck in moving mesh convergence.

BR.
Ruonin.

If I get you your problem
You have used dynamic mesh and single core.

Instead if I will suggest to use single core without dynamic
Mesh

Ruonin July 23, 2018 12:49

Thanks for the reply, harsha_kulkarni.

I've already solved this case using MRF and multiple cores.

Now, I'm trying to use dynamic mesh and AMI to perform a mixing time study.
So, I'll need the movement enforced by dynamic mesh.

So, in essence, I suppose my issue is how to set up my dynamic mesh properly.
I see the mesh moves, so I assume the patches and interfaces are well defined.
Probably, is just my meshing strategy that need some fine tuning.

Any thoughts?

BR.
Ruonin


All times are GMT -4. The time now is 13:13.