a coupling library for partitioned multi physics
play

A Coupling Library for Partitioned Multi-Physics Simulations 1. - PowerPoint PPT Presentation

A Coupling Library for Partitioned Multi-Physics Simulations 1. What is preCICE? 2. How to get started? 3. How can I couple my own code? 1. What is preCICE? Example: Shell-And-Tube Heat Exchanger Partitioned coupling: Usage of three


  1. A Coupling Library for Partitioned Multi-Physics Simulations

  2. 1. What is preCICE? 2. How to get started? 3. How can I couple my own code?

  3. 1. What is preCICE?

  4. Example: Shell-And-Tube Heat Exchanger ◮ Partitioned coupling: Usage of three independent solvers ◮ Reuse of existing solvers OpenFOAM CalculiX OpenFOAM

  5. Overview structure fl uid solver solver

  6. Overview e c adapter i c solver e r p b i l structure fl uid solver solver

  7. Overview e c adapter i c solver e r p b i l structure fl uid solver solver in-house commercial solver solver

  8. Overview e c adapter i c solver e r p b i l structure fl uid solver solver OpenFOAM CalculiX Code_Aster SU2 FEniCS foam-extend deal-ii MBDyn in-house commercial solver solver API in: C++ Python ANSYS Fluent C Fortran COMSOL

  9. Overview e c adapter i c solver e r p b i l structure A Coupling Library for Partitioned fl uid solver solver Multi-Physics Simulations OpenFOAM CalculiX Code_Aster SU2 ... FEniCS foam-extend deal-ii ... MBDyn communication data mapping in-house commercial solver solver coupling schemes time interpolation API in: C++ Python ANSYS Fluent C Fortran COMSOL

  10. Unique Selling Points (USPs) 1. Scalability 2. Robust quasi-Newton coupling 3. Coupling of arbitrary many components ( arbitrary many = more than two ) 4. Minimally-invasive coupling 5. Open-source, community

  11. USP 1: Scalability Server-Based Concept ◮ Complete communication through central server process A1 B1 ◮ Interface computations on server A2 B2 (in sequential) A3 C B3 . . . . ◮ ⇒ Coupling becomes bottleneck for . . overall simulation already on moderate AN BN parallel systems Our Peer-To-Peer Concept A1 B1 ◮ No central entity A2 B2 ◮ ⇒ Easier to handle (user does not need A3 B3 to care about server) . . . . . . ◮ ⇒ No scaling issues AN BN

  12. USP 1: Scalability ◮ Travelling density pulse (Euler equations) through artificial coupling interface ◮ DG solver Ateles (U Siegen), 7 . 1 · 10 6 dofs A t e l e s A t e l e s E C L e f t R i g h t I C e ◮ Nearest neighbor mapping and r p communication Monolithic Simulation 10 2 New Fully-Parallel Concept Old Server-Based Concept 10 1 Time [s] 10 0 10 -1 4 8 16 32 64 128 256 512 Total Number of Solver Cores

  13. USP 2: Quasi-Newton Coupling ! Coupled problem: F : d �→ f , S : f �→ d ( S ◦ F )( d ) = d � Driven Cavity FSI3 3D-Tube Mean Iterations Aitken Quasi-Newton FSI3 17.0 3.3 3D-Tube Div. 7.5 Driven Cavity 7.4 2.0

  14. USP 2: Quasi-Newton Coupling ◮ Quasi-Newton can even handle biomedical applications, such as an Aortic bloodflow ◮ Stable coupling (no added-mass instabilities) ◮ Six times less iterations than Aitken ◮ Joint work with Juan-Carlos Cajas (Barcelona Supercomputing Center) ◮ Geometry by Jordi Martorell

  15. Contributors Amin Miriam Mehl Florian Lindner Kyle Davis Alexander Rusch Totounferoush U Stuttgart U Stuttgart U Stuttgart U Stuttgart ETH Z¨ urich Gerasimos Benjamin Hans Bungartz Benjamin R¨ uth Fr´ ed´ eric Simonis Chourdakis Uekermann TUM TUM TUM TUM TU/e Previous and further contributors: ◮ Bernhard Gatzhammer, Klaudius Scheufele, Lucia Cheung, Alexander Shukaev, Peter Vollmer, Georg Abrams, Alex Trujillo, Dmytro Sashko, David Sommer, David Schneider, Richard Hertrich, Saumitra Joshi, Peter Meisrimel, Derek Risseeuw, Rafal Kulaga, Ishaan Desai, Dominik Volland, Michel Takken, . . .

  16. Users ◮ Helicopter Technology & Astronautics, ◮ LSM & STS, U Siegen, Germany TUM, Germany ◮ SC & FNB, TU Darmstadt, Germany ◮ IAG & IWS & MechBau & VISUS, University of Stuttgart, Germany ◮ SCpA, CIRA, Italy ◮ CTTC UPC, Barcelona, Spain ◮ Cardiothoracic Surgery, UFS, South Africa ◮ Amirkabir U. of Technology, Iran ◮ A*STAR, Singapore ◮ Noise & Vibration Research Group, KU ◮ NRG, Petten, The Netherlands Leuven, Belgium ◮ Aerodynamics &Wind Energy (KITE Power), TU Upcoming : Delft, The Netherlands ◮ Numerical Analysis, Lund, Sweden ◮ Mechanical and Aeronautical Eng., University of ◮ ATA Engineering Inc., USA Manchester, UK ◮ University of Strathclyde, Glasgow, UK ◮ BITS Pilani, India ◮ FAST, KIT, Germany ◮ Aviation, MSU Denver, USA ◮ AIT, Ranshofen, Austria ◮ IMVT, University of Stuttgart ◮ GRS, Garching, Germany ◮ Engineering Science, U of Luxembourg ◮ MTU Aero Engines, Munich, Germany ◮ Renewable and Sustainable Energy Systems & Hydrogeology, TUM, Germany 500 Unique GitHub visitors / two weeks GitHub stars 400 Mailing list subscribers 300 200 100 0 Jan-18 Apr-18 Jul-18 Oct-18 Jan-19 Apr-19

  17. 2. How to get started?

  18. Infrastructure We are on GitHub: github.com/precice ◮ LGPL3 license ◮ User documentation in the wiki ◮ Debian packages, Spack, Docker, cmake

  19. Tutorials 1D Elastic Tube ◮ Simple provided solvers ◮ Learn about API and configuration Flexible beam ◮ Fluid-structure interaction ◮ Couple SU2 or OpenFOAM to CalculiX or deal.II ◮ Learn about coupling schemes ◮ Also interactive version available in browser http://run.coplon.de/

  20. Tutorials Flow over a Heated Plate ◮ Conjuagte-heat transfer ◮ Couple two OpenFOAM solvers ◮ Learn about OpenFOAM adapter Heat exchanger ◮ Conjugate-heat transfer ◮ Couple two OpenFOAM instances with CalculiX ◮ Learn about multi coupling

  21. The OpenFOAM Adapter Adapter CFD CSM API callback libpreciceAdapter.so libprecice.so myFoam Adapter Config preCICE Config YAML XML

  22. Flow over a Heated Plate Load adapter at runtime in system/controlDict : functions 1 { 2 preCICE_Adapter 3 { 4 type preciceAdapterFunctionObject; 5 libs ("libpreciceAdapterFunctionObject.so"); 6 } 7 } 8 Define coupling boundary in system/blockMeshDict : interface 1 { 2 type wall; 3 faces 4 ( 5 (4 0 1 5) 6 ); 7 } 8

  23. Flow over a Heated Plate Configure adapter in precice-adapter-config.yml : participant: Fluid 1 2 precice-config-file: /path/to/precice-config.xml 3 4 interfaces: 5 - mesh: Fluid-Mesh 6 patches: [interface] 7 write-data: Temperature 8 read-data: Heat-Flux 9

  24. Flow over a Heated Plate

  25. 3. How can I couple my own code?

  26. How to couple my own code? precice::SolverInterface precice("FluidSolver",rank,size); 1 precice.configure("precice-config.xml"); 2 precice.setMeshVertices(); 3 precice.initialize(); 4 5 while (precice.isCouplingOngoing()) { // main time loop 6 solve(); 7 8 precice.writeBlockVectorData(); 9 precice.advance(); 10 precice.readBlockVectorData(); 11 12 endTimeStep(); // e.g. write results, increase time 13 } 14 15 precice.finalize(); 16 ◮ Timesteps, most arguments, and less important methods omitted. ◮ Full example in the wiki. ◮ API in C++, C, Fortran, and Python

  27. Funding H2020 grant 754462

  28. Summary Flexible: Couple your own solver with any other Easy: Add a few lines to your code Ready: Out-of-the box support for many solvers Fast: Fully parallel, peer-to-peer, designed for HPC Stable: Implicit coupling, accelerated with Quasi-Newton Multi-coupling: Couple more than two solvers Free: LGPL3, source on GitHub � www.precice.org � github.com/precice � @preCICE org � Mailing-list, Gitter � Literature Guide on wiki

Recommend


More recommend