PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3)...

16
23.06.2016 PIMPLE Algorithm and Partitioned FSI Solvers Petr Víta, Wilhelm Brandstätter

Transcript of PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3)...

Page 1: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016

PIMPLE Algorithm and Partitioned FSI Solvers

Petr Víta, Wilhelm Brandstätter

Page 2: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 2

MotivationHydrodynamic Bearing Simulation

- Kingsbury tilting pad hydrodynamic thrust bearing

- Bearing submerged in the lubricant pool

- Support is provided by a thin film of lubricant above pads

- Pads tilt and thus form a wedge of lubricant that carries the thrust

Heinrichson, N., & Santos, I. (2007)

Page 3: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 3

Motivation (2)Hydrodynamic Bearing Simulation

- Interest in film thickness, pressure,temperature, friction losses etc.

- Software typically used for numerical investigations is limited

- Steady-state solutions, transient start-up scenarios usually not possible

- Investigations are focused on a single pad without its surrounding

Heinrichson, N., & Santos, I. (2007)

Page 4: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 4

Motivation (3)Hydrodynamic Bearing Simulation

- Problem is hiding many extreme parameters

- Pad length about half metre

- Lubricant wedge height in order of 10-100μm

- Laminar and turbulent flow

- Pressures up to 10-20MPa

- Temperature differences up to 50°C due to viscous dissipation

Page 5: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 5

FSI SolverBasic Info

- Developed solver was a partitioned FSI solver based on an historical icoFsiElasticNonLinSolidFoam

- Flow solver used was an adapted rhoPisoFoam with a modified thermophysical model for customer‘s lubricants

- Solid solver in total and updated Lagrangian formulation- Explicit coupling with Aitken adaptive under-relaxation- Conjugate heat transfer between fluid and solid- Additional bearing model (tilting, mirrored runner floating,

material model, boundary condition for the pad support, etc.)

Page 6: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 6

FSI Solver (2)Stability Problems

- The length scales differences complicated grid modelling, mesh motion, time stepping and generally solution stability

- Extreme value changes where gap displacement of 10μm would induce pressure differences of up to 1 MPa

- Mesh distortions especially around the gap area- Aitken under-relaxation stabilized solution during interface

search inside a single time step- Transient time advance eventually always crashed

Page 7: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 7

FSI Solver (3)PISO Algorithm

- Used flow solver, rhoPisoFoam, was unfortunately unstable for given meshes and time steps

- Minimal Courant number of 10 on the graded grid in the gap

- Lowering the cell size leads to the cells count explosion

- Lowering the time step leads to instability of the solid solver and/or excessively long simulation times

- We tried separate fluid and solid time steps with a limited success, but the idea pointed us into right direction…

Page 8: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 8

PIMPLE AlgorithmBasics

- Merged PISO and SIMPLE algs.- PIMPLE allows transient solutions

of higher Courant numbers- PIMPLE iterates and under-relaxes

the solution of pressure-velocitycoupling within a time step

- PIMPLE-loop ends by reachingeither a static number of iterations or a residual limit ε

Page 9: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 9

Residual ControlsolutionControl classes

- OpenFOAM Extend project code base lacks the option to prematurely end the PIMPLE-loop using solution residuals

- OpenFOAM Foundation version does have residual control

- src/finiteVolume/cfdTools/general/solutionControl

- solutionControl classes do a bit more as just residual control and are connected to some additional API changes

- We distilled the mechanism itself and created a stand-alone light-weight class compatible with OpenFOAM Extend code

Page 10: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 10

Residual Control (2)residualControl Class

- Reads residualControl dictionary from the fvSolution-file

- Dictionary format is fully compatible with OpenFOAMFoundation version of solution control

- Registers solution residualsvoid registerPerf(const word& fieldName,

const lduMatrix::solverPerformance& perf);

void reset();

- Checks the solution convergencebool converged() const;

Page 11: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 11

createFields.H:residualControl residuals(

mesh, "PIMPLE“

);

UEqn.H:residuals.registerPerf(

U.name(),

solve(UEqn() ==

-fvc::grad(p))

);

pimpleFoam.C:int oCorr=0;

do {

#include "UEqn.H"

for(…) {

#include "pEqn.H"

}

turbulence->correct();

oCorr++;

} while(oCorr<nOuterCorr

&& !residuals.converged());

Residual Control (3)pimpleFoam

Page 12: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 12

PIMPLE-FSI SolverPIMPLE-FSI-loop

- We reworked the FSI solver replacing the flow solver, originally rhoPisoFoam, with rhoPimpleFoam

Iterate until FSI error is low

Solve fluid, PIMPLE-loop, until error is low

Apply fluid forces

Solve solid displacement until error is low

Move fluid mesh using Aitken under-relaxation

Move solid mesh

Time and iteration management

Page 13: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 13

label oCorr=0, oFSICorr=0;

bool moveFluid=false;

do // PIMPLE-FSI-loop

{

if (moveFluid) {

… // fluid mesh movement

moveFluid=false;

}

#include "solveFluid.H"

if(fluidResiduals.converged()

|| (oCorr==(nOCorr-1))) {

(cont.)… // apply forces, solve solid

moveFluid=true;

oFSICorr++; // FSI iterations

oCorr=-1; // recalculate fluid

fluidResiduals.reset();

}

oCorr++; // PIMPLE iterations

} while (

(fsiResidualNorm>oCorrTolerance)

&& (oFSICorr<nOFSICorr));

PIMPLE-FSI Solver (2)pimpleFsiElasticNonLinULSolidFoam

Page 14: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 14

PIMPLE-FSI Solver (3)Behaviour

- PIMPLE-FSI solver shows muchhigher stability

- PIMPLE flow solver better deal with meshes of low and/ordeteriorated quality

- PIMPLE flow solver naturally stabilizes fluid-solid interaction

- PIMPLE-FSI solver with residual control converges quicker

Page 15: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 15

PIMPLE-FSI Solver (4)Hydrodynamic Bearing Simulation

- Stability by higherCourant numbers

- Courant of 100+- Transient bearing

start-up possible

- Unthinkable before due to fluid-structureinteraction

Page 16: PIMPLE Algorithm and Partitioned FSI Solvers · 2016. 7. 28. · 23.06.2016 Page 7 FSI Solver (3) PISO Algorithm-Used flow solver, rhoPisoFoam, was unfortunately unstable for given

23.06.2016 Page 16

References and Discussion

Heinrichson, N., & Santos, I. (2007). On the Design of Tilting-Pad Thrust Bearings. Ph.D. thesis. Retrieved June 22, 2016, from http://orbit.dtu.dk/.