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] solver settings for unsLinearGeometry (https://www.cfd-online.com/Forums/openfoam-cc-toolkits-fluid-structure-interaction/233122-solver-settings-unslineargeometry.html)

Barry January 14, 2021 01:19

solver settings for unsLinearGeometry
 
Hi,

I am using solids4Foam to obtain displacements for a complex geometry. The mesh has a combination of hexahedra and polyhedra cells and the total cell count is 1.8 mil. Even after 4 hours, the 24 core parallel solver runs only 1100 iterations at the first time step and not converged. A few settings of the case are:
"linearGeometryTotalDisplacementCoeffs|unsLinearGe ometryCoeffs"
{ nCorrectors 10000;
solutionTolerance 1e-06;
alternativeTolerance 1e-07;
materialTolerance 1e-05;
infoFrequency 100;
}
solvers
{
D
{
solver PCG;
preconditioner FDIC;
tolerance 1e-09;
relTol 0.01;
}
}
'Harmonic' interpolation is set for impK.

May I know if any of the above settings are not suitable for complex geometry or is it that the solver cannot handle combination of hexahedra and polyhedra cells? Appreciate any help or views on this.

Thanks

bigphil January 15, 2021 07:26

Hi Barry,

Can you give more details on your case? For example, a simple sketch of the problem showing the boundary conditions and materials properties.

Lack of convergence can be due to one of several issues, including:
  • Inappropriate boundary conditions
  • Inappropriate material properties
  • Poor mesh
  • Mistake in geometry scaling
  • Or if the problem is particularly difficult for some reason e.g. very large strains

Philip

Barry January 18, 2021 02:43

1 Attachment(s)
Thanks for your reply Phil.
In the attached, left fig shows geometry used for simulations and the right fig is zoom in version of a joint. Three colors in the left fig indicate mesh resolutions that differ by a level with coarser being at the bottom. The boundary conditions are time varying traction for the top two parts and fixed displacement for the bottom part and indicated in the left fig.

The solidModel is 'unsLinearGeometry' and the specifications are mentioned in the above query. The solidProperties specified are
mechanical
(
steel
{
type linearElastic;
rho rho [1 -3 0 0 0 0 0] 700;
E E [1 -1 -2 0 0 0 0] 2e+9;
nu nu [0 0 0 0 0 0 0] 0.3;
}
);

From this info, is it possible to infer reasons for non-convergence?

B

Barry January 18, 2021 03:01

In addition to the above, may I know what's the difference between linearGeometryTotalDisplacement and linearGeometry?

bigphil January 28, 2021 17:39

Quote:

Originally Posted by Barry (Post 793583)
In addition to the above, may I know what's the difference between linearGeometryTotalDisplacement and linearGeometry?

Both linearGeometryTotalDisplacement and linearGeometry are almost the same with the difference being that linearGeometryTotalDisplacement solves for total displacement, D, whereas linearGeometry solves for increment of displacement, DD i.e. change in displacement from the old time to the current time.

Both should give the same answer but there may be a difference in the convergence and speed.

anaspauzi February 8, 2021 22:09

Hi,

I'm also having same problem, just wondering why for high density, stiffness material it runs very slow.

I've tried changing the material in the HronTurek tutorials from rubber to steel, and set for linearElastic model but takes too long for my laptop.

Any tips to run FSI for steel-water?

Tq

bigphil February 9, 2021 05:25

Quote:

Originally Posted by anaspauzi (Post 795676)
Hi,

I'm also having same problem, just wondering why for high density, stiffness material it runs very slow.

I've tried changing the material in the HronTurek tutorials from rubber to steel, and set for linearElastic model but takes too long for my laptop.

Any tips to run FSI for steel-water?

Tq

I have noticed similar behaviour. To begin with you can probably loosen the FSI outer loop tolerance in fsiProperties; this should reduce the number of FSI iterations and help speed it up.

Philip

anaspauzi February 11, 2021 05:43

Quote:

Originally Posted by bigphil (Post 795707)
I have noticed similar behaviour. To begin with you can probably loosen the FSI outer loop tolerance in fsiProperties; this should reduce the number of FSI iterations and help speed it up.

Philip

Thank you Philip for the suggestion. The number of outer iteration did improve, but still the simulation is very slow in solving the momentum equation.

I've tried changing the material model to St Venant Kirchhoff, it keeps on giving the same as NeoHookean

Quote:

Evolving solid solver
Enforcing linear geometry: minJ: 1.63158e+09, maxJ: 9.79459e+18
--> FOAM Warning :
From function void StVenantKirchhoffElastic::correct(surfaceSymmTenso rField& sigma)
in file materialModels/mechanicalModel/mechanicalLaws/mechanicalLaw/mechanicalLaw.C at line 511
Material linearity enforced for stability!
Corr 0, relative residual = 1
--> FOAM Warning :
From function void StVenantKirchhoffElastic::correct(surfaceSymmTenso rField& sigma)
in file materialModels/mechanicalModel/mechanicalLaws/mechanicalLaw/mechanicalLaw.C at line 511
Material linearity enforced for stability!
--> FOAM Warning :
From function void StVenantKirchhoffElastic::correct(surfaceSymmTenso rField& sigma)
in file materialModels/mechanicalModel/mechanicalLaws/mechanicalLaw/mechanicalLaw.C at line 511
Material linearity enforced for stability!
--> FOAM Warning :
From function void StVenantKirchhoffElastic::correct(surfaceSymmTenso rField& sigma)
in file materialModels/mechanicalModel/mechanicalLaws/mechanicalLaw/mechanicalLaw.C at line 511
Material linearity enforced for stability!
Changing to linearElastic would not give the above error.
By the way, how could I tail -f the displacement if run in parallel? it keep on showing 0 displacement.

Thank you

bigphil May 12, 2021 12:59

Quote:

Originally Posted by anaspauzi (Post 795955)
By the way, how could I tail -f the displacement if run in parallel? it keep on showing 0 displacement.

What displacement are you referring to?

Philip

anaspauzi May 12, 2021 13:29

Quote:

Originally Posted by bigphil (Post 803688)
What displacement are you referring to?

Philip

Hi Philip,

Thanks for the reply, I'd solve the error in the point displacement function by reinstalling the solids4Foam.

I'm facing two problem in trying to simulation vibration of steel in water.

1.Do you have any tips on reducing the numerical damping? I've used the backward temporal discretization and tried reducing the displacement solution tolerance in the solidProperties.

2. There seem to be small fluctuations in the displacement, and when I to set a case with vibration inside a water would cause larger fluctuation in flow velocity and diverge the simulation. How to remove this fluctuation?

Thank you

bigphil May 14, 2021 15:02

Quote:

Originally Posted by anaspauzi (Post 803692)
Hi Philip,

Thanks for the reply, I'd solve the error in the point displacement function by reinstalling the solids4Foam.

I'm facing two problem in trying to simulation vibration of steel in water.

1.Do you have any tips on reducing the numerical damping? I've used the backward temporal discretization and tried reducing the displacement solution tolerance in the solidProperties.

2. There seem to be small fluctuations in the displacement, and when I to set a case with vibration inside a water would cause larger fluctuation in flow velocity and diverge the simulation. How to remove this fluctuation?

Thank you

1. In my experience, the "backward" scheme is highly dispersive when used for solids (it generates a lot of noise and instability unless your time-step is small). So you could use a smaller time-step with Euler, but this time-step may be prohibitively small depending on your cases; alternatively you can implement a better 2nd order time-scheme (on my to-do list for some time!).

2. This may be related to the backward scheme (see point 1). If not, then I cannot say what the sources of the fluctuations without knowing more about the case. When using water the fluid/solid density becomes larger which makes it more difficult for the FSI coupling procedure; smaller initial FSI relaxation factors may help.

Philip

Neb May 17, 2022 11:34

Quote:

Originally Posted by bigphil (Post 794731)
Both linearGeometryTotalDisplacement and linearGeometry are almost the same with the difference being that linearGeometryTotalDisplacement solves for total displacement, D, whereas linearGeometry solves for increment of displacement, DD i.e. change in displacement from the old time to the current time.

Both should give the same answer but there may be a difference in the convergence and speed.

Dear prof. Cardiff,
I'm working on a tube with poisson 0.45, young's modulus equal to 1.5 * 10 ^ 6. I impose a velocity at the inlet that varies over time and a pressure at the outlet that depends on the flow at the outlet. I noticed that the two solid models (linearGeometry and unsLinearGeometry) don't give me the same deformation. In the linearGeometry case I get what I want, with unsLinearGeometry instead I have an expansion of the tube that remains fixed over time. It's possible?

bigphil May 17, 2022 15:39

Quote:

Originally Posted by Neb (Post 828173)
Dear prof. Cardiff,
I'm working on a tube with poisson 0.45, young's modulus equal to 1.5 * 10 ^ 6. I impose a velocity at the inlet that varies over time and a pressure at the outlet that depends on the flow at the outlet. I noticed that the two solid models (linearGeometry and unsLinearGeometry) don't give me the same deformation. In the linearGeometry case I get what I want, with unsLinearGeometry instead I have an expansion of the tube that remains fixed over time. It's possible?

Can you reproduce this behaviour using the 3dTube tutorial?
An if so, which version of OpenFOAM are you using?

All the linear geometry solid models should approach the same answer as the mesh is refined.

Neb May 18, 2022 12:14

Thanks for the quick reply.

Quote:

Originally Posted by bigphil (Post 828190)
Can you reproduce this behaviour using the 3dTube tutorial?
An if so, which version of OpenFOAM are you using?

In the 3dTube tutorial the answers are identical. I am using Openfoam-7. If I modify the 3dTube tutorial with my fluid boundary conditions , I get a constant dilation over time in the case of the unsLinearGeometry model, variable in the linearGeometry model.


My fluid boundary conditions are:
velocity
- pulsatile inlet velocity with backflow
- Outlet: advective
- on the wall: newMovingWallVelocity
Pressure
-Inlet: zeroGradient;
-Otlet: pressure variable over time according to the flow rate
-wall:extrapolatedPressure.

The boundary conditions on the solid are the same as in the tutorial.
I had to change IQNILS to Aitken, because the simulation exploded.
This simulation aims to reproduce the blood flow in the artery.

Neb May 24, 2022 04:59

Quote:

Originally Posted by bigphil (Post 828190)
Can you reproduce this behaviour using the 3dTube tutorial?
An if so, which version of OpenFOAM are you using?

All the linear geometry solid models should approach the same answer as the mesh is refined.

Prof. Cardiff,
I have run other simulations with more refined meshes, I have reduced the tolerance on the equation of the moment of the equation on the solid and I now get the explosion of the simulation. The forces exchanging at the interface are too high. I augmented the young module and so the simulation works, but I don't get the correct displacements. So I need to work with my young module. I tried using IQNILS, delaying coupling, but it doesn't work. I have tried to use a hyperelastic solid model, but I always get the explosion of the simulation.
I also did separate solid and fluid simulations and they work.

Do you have any suggestions for me?

Thanks for your time.

Neb June 9, 2022 10:26

Quote:

Originally Posted by bigphil (Post 828190)
Can you reproduce this behaviour using the 3dTube tutorial?
An if so, which version of OpenFOAM are you using?

All the linear geometry solid models should approach the same answer as the mesh is refined.

Dear Prof. Cardiff,
I go back to asking for help with my simulations.
I changed mesh, now I have a tube bent at 90° to simulate blood flow in an artery. I notice the following behavior during the simulation: to reach the convergence on the fsi loop with a tolerance of 10 ^ - 2, it takes more than 100000 cycles and, during these cycles, the Courant number increases, until the explosion. I cannot understand the reason for this behavior. Is there any way to speed up the simulation? I used the fixedRelaxation coupling method with value 10 ^ -5, other methods and higher values ​​don't work.

The same simulation but with straight pipe works without problems.

Thank you for your time, I really need to unlock this if you can give me any suggestions.

Neb June 15, 2022 11:56

Hello,
how can i map the weights of AMI?


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