CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM CC Toolkits for Fluid-Structure Interaction (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/)
-   -   [solids4Foam] linear vs nonlinear simulation blow up (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/248235-linear-vs-nonlinear-simulation-blow-up.html)

Thangam March 3, 2023 12:18

linear vs nonlinear simulation blow up
 
2 Attachment(s)
I am trying to do an fsi of a simplified geometry i.e two perpendicular flaps in a pipe (see image 1). As suggested in several threads here, I initially got only the fluid side working first. Then, I introduced the linear solid model. After a few trial and errors I figured the right combinations for the linear elastic model. Now, I want to get the nonlinear model working but the simulation blows half way (i.e total simulation time is 0.3s, blows up at around 0.125 mark) up with Ux exploding which is perplexing. The fluid mesh with the nonlinear model has not deformed even half of what the linear model deformed (and continued to run). See image 2.

Few things that I tried:

1) Different non-linear material models:

- StVenantKirchhoffElastic and neoHookeanElastisc produce the same blow up at the same time with unsNonLinearGeometryTotalLagrangian

- MooneyRivlinElastic and OgdenElastic enforce material linearity for stability and crash within a few time steps.

2) Switching between Aitken and IQNLS didnt solve the issue although with Aitken it took longer cpu time which is expected I guess.

3) The solid side fvSchemes/fvSolution are similar to most tutorials i.e backward, leastSquares, Gauss linear etc and did not change between linear vs nonlinear.

4) nonLinearGeometryTotalLagrangian and unsNonLinearGeometryTotalLagrangian produced same results i.e crashed at similar time points.


How should I approach the transition from a linear model to a non-linear model? The simulations are with OF9.0/ s4F 2.0 and Ubuntu 22.04.

More importantly, how to approach such simulations where large deformations are expected? In this case, I expect the flaps to completely open due to the fluid pressure.

The error with the nonlinear models:

Code:

Time = 0.1585, iteration: 1
Modes before clean-up (leafletInterface_right): 4, modes after clean-up (leafletInterface_right): 0
Modes before clean-up (leafletInterface_left): 4, modes after clean-up (leafletInterface_left): 0
Current fsi under-relaxation factor (leafletInterface_right): 0.04
Current fsi under-relaxation factor (leafletInterface_left): 0.04
Maximal accumulated displacement of interface 0: 0.00122374
Maximal accumulated displacement of interface 1: 0.000717729
GAMG:  Solving for cellMotionUx, Initial residual = 0.273882, Final residual = 0.000270944, No Iterations 2
GAMG:  Solving for cellMotionUy, Initial residual = 0.85522, Final residual = 0.00069667, No Iterations 2
GAMG:  Solving for cellMotionUz, Initial residual = 0.429167, Final residual = 0.000326026, No Iterations 2
Evolving fluid model: pimpleFluid
smoothSolver:  Solving for Ux, Initial residual = 0.0174593, Final residual = 3.84848e+142, No Iterations 1000
smoothSolver:  Solving for Uy, Initial residual = 0.016358, Final residual = 5.57287e-06, No Iterations 3
smoothSolver:  Solving for Uz, Initial residual = 0.00462265, Final residual = 9.712e-06, No Iterations 2
GAMG:  Solving for p, Initial residual = 1, Final residual = 0.0337324, No Iterations 2
time step continuity errors : sum local = 9.49087e+139, global = -7.41012e+136, cumulative = -7.41012e+136
GAMG:  Solving for p, Initial residual = 0.760907, Final residual = 5.35549e-07, No Iterations 13
time step continuity errors : sum local = 2.47545e+135, global = 6.11507e+134, cumulative = -7.34896e+136
Setting traction on solid interfaces
Mapping face values using directMap
Total force on fluid interface 0: (1.67545e+141 5.24331e+141 6.00937e+142)
Total force on solid interface 0: (-1.67545e+141 -5.24331e+141 -6.00937e+142)

Mapping face values using directMap
Total force on fluid interface 1: (1.06048e+141 -1.36071e+141 4.26914e+141)
Total force on solid interface 1: (-1.06048e+141 1.36071e+141 -4.26914e+141)

Evolving solid solver
[1] #0  [5] #0  Foam::error::printStack(Foam::Ostream&)[0] #0  [2] #0  Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[7] Foam::error::printStack(Foam::Ostream&)[9] #0  [6] #0  Foam::error::printStack(Foam::Ostream&)#0  [3] [8] Foam::error::printStack(Foam::Ostream&)[4] Foam::error::printStack(Foam::Ostream&)#0  #0  #0  Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&) at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
 at ??:?
[9] #1  [4] #1  Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int) at ??:?
[0] #1  [2] #1  Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int)[6] #1  Foam::sigFpe::sigHandler(int)[7] #1  Foam::sigFpe::sigHandler(int)[3] #1  Foam::sigFpe::sigHandler(int) at ??:?
 at ??:?
 at ??:?
[1] #1  Foam::sigFpe::sigHandler(int)[5] #1  [8] #1  Foam::sigFpe::sigHandler(int)Foam::sigFpe::sigHandler(int) at ??:?
[8] #2  ? at ??:?
[0] #2  ? at ??:?
[9] #2  ? at ??:?
[5] #2  ? at ??:?
[2] #2  ? at ??:?
[7] #2  at ??:?
?[4] #2  ? at ??:?
[3] #2  ? at ??:?
[6] #2  ? at ??:?
[1] #2  ? in "/lib/x86_64-linux-gnu/libc.so.6"
 in "/lib/x86_64-linux-gnu/libc.so.6"
 in "/lib/x86_64-linux-gnu/libc.so.6"
 in "/lib/x86_64-linux-gnu/libc.so.6[0] #"
3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) in "/lib/x86_64-linux-gnu/libc.so.6"
[8] #3  [2] #3  [5] #Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&)Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&)3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&)[9] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) in "/lib/x86_64-linux-gnu/libc.so.6"
 in "/lib/x86_64-linux-gnu/libc.so.6"
[3] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) in "/lib/x86_64-linux-gnu/libc.so.6"
[4] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&)[7] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) in "/lib/x86_64-linux-gnu/libc.so.6"
[6] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) in "/lib/x86_64-linux-gnu/libc.so.6"
[1] #3  Foam::inv(Foam::Field<Foam::Tensor<double> >&, Foam::UList<Foam::Tensor<double> > const&) at ??:?
[0] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
 at ??:?
[2] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[8] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&)[9] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[4] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[3] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[5] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[6] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[7] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
[1] #4  Foam::tmp<Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::inv<Foam::fvsPatchField, Foam::surfaceMesh>(Foam::GeometricField<Foam::Tensor<double>, Foam::fvsPatchField, Foam::surfaceMesh> const&) at ??:?
 at ??:?
[2] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve()[9] #5  at ??:?
Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve()[4] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
 at ??:?
[3] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve()[8] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
[6] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
 at ??:?
[5] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve()[0] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
[7] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
[1] #5  Foam::solidModels::unsNonLinGeomTotalLagSolid::evolve() at ??:?
[9] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
[3] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
 at ??:?
[2] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve()[4] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
 at ??:?
[8] #6  [6] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve()Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
 at ??:?
[0] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve()[5] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
[7] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
[3] #7  at ??:?
 at ??:?
[2] #7  [1] #6  Foam::fluidSolidInterfaces::IQNILSCouplingInterface::evolve() at ??:?
[6] #7  at ??:?
[8] #7  at ??:?
[0] #7  at ??:?
[9] #7  at ??:?
[4] #7  at ??:?
[5] #7  ?? at ??:?
[7] #7  ??????? in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
[3] #8  ? in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
 in "/nethome/tnatarajan6/Open[8] #8  ?FOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
[6] #8  ? in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/soli in "ds4Foam"
/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPI[2] #8  ?nt32Opt/bin/solids4Foam"
[9] #8  ? in "/nethome/tnatarajan6/Op at ??:?
enFOAM/tnatarajan6-9/platforms/linux in "/nethome/tnatarajan6/OpenFO[1] #7  64GccDPInt32Opt/bin/solids4Foam"
AM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/sol[0] #8  ids4Foam"
?[4] #8  ? in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
[5] #8  ? in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
[7] #8  ? in "/lib/x86_64-linux-gnu/libc.so.6"
[3] #9  in "/lib/x86_64-linux-gnu/libc.so.6"
__libc_start_main[8] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[9] #9  __libc_start_main? in "/lib/x86_64-linux-gnu/libc.so.6"
[6] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
 in "/lib/x86_64-linux-gnu/libc.so.6"
[0] #9  __libc_start_main[4] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[2] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[5] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[7] #9  __libc_start_main in "/nethome/tnatarajan6/OpenFOAM/tnatarajan6-9/platforms/linux64GccDPInt32Opt/bin/solids4Foam"
[1] #8 in "/lib  ?/x86_64-linux-gnu/libc.so.6"
[8] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[3] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[0] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[6] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[5] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[2] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[9] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[4] #10  ? in "/lib/x86_64-linux-gnu/libc.so.6"
[7] #10  ? in "/lib/x86_64-linux-gnu/libc.so.6"


ilhado March 6, 2023 19:44

Hi Thangam,



By the piece of your log, note that the divergence is occurring on the continuity equation solution step. This may point to boundary conditions, for example, but since you tested with the linear model for the solid, they are probably right. My second guess is related to the mesh motion. But it is hard to be sure with the data you provided. Could you share the case setup or more of the log file?


Best,
Iago

Thangam March 8, 2023 09:47

1 Attachment(s)
Hi Iago,

Thanks for taking a look. I have attached the zip file that contains the fluid and solid side settings. I have removed the polyMesh due to file size limits. I dont have the log file but I am sure everything was perfect until that point as shown in my earlier post. It blows up suddenly at a certain time step. I believe the route of making things work with fliud alone, then solid alone and then moving to a linear model with fsi with stiffer properties works to a certain extent, however, the resulting dynamics arent the same and looks like it still needs some tweaking.

I'm guessing its got to do with the mesh motion as well but not sure. Because with the linear model, I was able to achieve a higher deformation. Again, to re-iterate, I expect/want the flaps to completely open due to the fluid pressure - so how to ensure mesh quality or rather accomodate such large deformations?

Thanks.



Quote:

Originally Posted by ilhado (Post 845653)
Hi Thangam,



By the piece of your log, note that the divergence is occurring on the continuity equation solution step. This may point to boundary conditions, for example, but since you tested with the linear model for the solid, they are probably right. My second guess is related to the mesh motion. But it is hard to be sure with the data you provided. Could you share the case setup or more of the log file?


Best,
Iago



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