[SoNICS : conception et flux opérationnel d’un logiciel de CFD]
SoNICS is a new CFD software which builds upon the experience acquired in the years developing and extending the elsA CFD tool implemented at ONERA and used in industry. This article presents an overview of the SoNICS design and workflow, the motivation for this new tool, its structure and how it manages the user configuration (including the input mesh) to produce in the end a graph of tasks to schedule. In particular, we will discuss how well-studied concepts like variability, task graphs and compilations passes are cornerstones of the SoNICS workflow and allow for: a relatively easy evolution and maintenance of the code-base; a relatively straightforward user experience; and good performances.
SoNICS est un nouveau logiciel CFD qui s’appuie sur l’expérience acquise durant les années de développement et d’extension de l’outil CFD elsA, implanté à l’ONERA et utilisé dans l’industrie. Cet article présente une vue d’ensemble de la conception de SoNICS et de son flux opérationnel, la motivation derrière ce nouvel outil, sa structure et la manière dont il gère la configuration utilisateur (y compris le maillage d’entrée) pour produire au final un graphe de tâches à exécuter. Nous aborderons en particulier la manière dont des concepts bien étudiés tels que la variabilité, les graphes de tâches et les passes de compilation constituent les pierres angulaires du flux opérationnel de SoNICS et permettent : une évolution et une maintenance relativement faciles de la base de code ; une expérience utilisateur relativement simple ; et de bonnes performances.
Révisé le :
Accepté le :
Publié le :
Mots-clés : Mécanique des fluides numérique, variabilité, assemblage de code, passes de compilation
Michael Lienhardt  1 ; Bertrand Michel  2
CC-BY 4.0
@article{CRMECA_2025__353_G1_1261_0,
author = {Michael Lienhardt and Bertrand Michel},
title = {SoNICS: design and workflow of a new {CFD} software},
journal = {Comptes Rendus. M\'ecanique},
pages = {1261--1287},
year = {2025},
publisher = {Acad\'emie des sciences, Paris},
volume = {353},
doi = {10.5802/crmeca.334},
language = {en},
}
Michael Lienhardt; Bertrand Michel. SoNICS: design and workflow of a new CFD software. Comptes Rendus. Mécanique, Volume 353 (2025), pp. 1261-1287. doi: 10.5802/crmeca.334
[1] An overview of the multi-purpose elsA flow solver, Aerospace Lab (2011) no. 2, AL02-10, 15 pages
[2] The Onera elsA CFD software: input from research and feedback from industry, Mech. Ind., Volume 14 (2013) no. 3, pp. 159-174 | DOI
[3] The High Level of Maturity of the elsA CFD Software for Aerodynamics Applications, EUCASS 2019 (2019)
[4] Body-force modeling for aerodynamic analysis of air intake–fan interactions, Int. J. Numer. Methods Heat Fluid Flow, Volume 26 (2016) no. 7, pp. 2048-2065 | DOI
[5] Gradient-based aerodynamic optimization with the elsA software, 52nd Aerospace Sciences Meeting, American Institute of Aeronautics and Astronautics (2014), AIAA 2014-0568 | DOI
[6] From aeroacoustics basic research to a modern low-noise rotor blade, J. Am. Helicopter Soc., Volume 62 (2017) no. 4, pp. 1-16 | DOI
[7] Concurrent aerodynamic optimization of rotor blades using a Nash game method, J. Am. Helicopter Soc., Volume 61 (2016) no. 2, pp. 1-13 | DOI
[8] Three-dimensional full annulus unsteady RANS simulation of an integrated propulsion system, 51st AIAA/SAE/ASEE Joint Propulsion Conference, American Institute of Aeronautics and Astronautics (2015), AIAA 2015-4021 | DOI
[9] Ground effect on fan forced response, Proc. of the 15th International Symposium on Unsteady Aerodynamics, Aeroacoustics and Aeroelasticity of Turbomachines, Vol. ISUAAAT15-094, American Society of Mechanical Engineers (2018)
[10] Modelling unsteadinesses and polydispersion in wet steam flows using the quadrature method of moments and a two-equation model, Proceedings of the 10th European Conference on Turbomachinery Fluid dynamics & Thermodynamics, European Turbomachinery Society (2013)
[11] Numerical Investigation of Condenser Pressure Effect on Last Stage Operation of Low Pressure Wet Steam Turbines, ASME Turbo Expo 2013: Turbine Technical Conference and Exposition. Volume 5B: Oil and Gas Applications; Steam Turbines, ASME Press (2013), pp. 1-11 | DOI
[12] The Tapenade automatic differentiation tool: Principles, model, and specification, ACM Trans. Math. Softw., Volume 39 (2013) no. 3, 20, 43 pages | DOI | MR
[13] Scalable automatic differentiation of multiple parallel paradigms through compiler augmentation, Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis, IEEE Press (2022), 60, 18 pages | DOI
[14] Autograd: effortless gradients in numpy, ICML 2015 AutoML Workshop, Volume 238 (2015)
[15] JAX: composable transformations of Python+NumPy programs, version 0.3.13, 2018 http://github.com/jax-ml/jax (Accessed 2025-10-31)
[16] High-Performance Derivative Computations using CoDiPack, ACM Trans. Math. Softw., Volume 45 (2019) no. 4, 38, 26 pages | DOI | MR
[17] NeuroVectorizer: end-to-end vectorization with deep reinforcement learning, CGO ’20: Proceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization (Jason Mars; Lingjia Tang; Jingling Xue; Peng Wu, eds.), ACM Press (2020), pp. 242-255 | DOI
[18] All you need is superword-level parallelism: systematic control-flow vectorization with SLP, PLDI 2022: Proceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation (Ranjit Jhala; Işil Dillig, eds.), ACM Press (2022), pp. 301-315 | DOI
[19] Automatic loop invariant generation for data dependence analysis, FormaliSE ’22: Proceedings of the IEEE/ACM 10th International Conference on Formal Methods in Software Engineering (Stefania Gnesi; Nico Plat; Arnd Hartmanns; Ina Schaefer, eds.), ACM Press (2022), pp. 34-45 | DOI
[20] Algorithmic Differentiation for an efficient CFD solver, ECCOMAS 2022: 8th European Congress on Computational Methods in Applied Sciences and Engineering (2022)
[21] Software product lines: practices and patterns, Addison Wesley Longman, 2001
[22] The CGNS system, 29th AIAA, Fluid Dynamics Conference, American Institute of Aeronautics and Astronautics (1998) | DOI
[23] Seven keys for practical understanding and use of CGNS, 2018 AIAA Aerospace Sciences Meeting, American Institute of Aeronautics and Astronautics (2018), AIAA 2018-1503 | DOI
[24] Maia: a Python and C++ library for parallel algorithms and manipulations over CGNS meshes, version 1.5, 2024 https://github.com/onera/maia/ (Accessed 2025-10-31)
[25] Aspect-oriented programming, ACM Comput. Surv., Volume 28 (1996) no. 4es, 154 | DOI
[26] AspectJ(tm): Aspect-Oriented Programming in Java, Objects, Components, Architectures, Services, and Applications for a Networked World, International Conference NetObjectDays, NODe 2002, Erfurt, Germany, October 7-10, 2002, Revised Papers (Mehmet Aksit; Mira Mezini; Rainer Unland, eds.) (Lecture Notes in Computer Science), Volume 2591, Springer (2002), p. 1 | DOI
[27] Aspect-oriented programming, ICSE ’05: Proceedings of the 27th International Conference on Software Engineering (Gruia-Catalin Roman; William G. Griswold; Bashar Nuseibeh, eds.), ACM Press (2005), p. 730 | DOI
[28] SCOTCH: A Software Package for Static Mapping by Dual Recursive Bipartitioning of Process and Architecture Graphs, High-Performance Computing and Networking, International Conference and Exhibition, HPCN Europe 1996, Brussels, Belgium, April 15-19, 1996, Proceedings (Heather M. Liddell; Adrian Colbrook; Louis O. Hertzberger; Peter M. A. Sloot, eds.) (Lecture Notes in Computer Science), Volume 1067, Springer (1996), pp. 493-498 | DOI
[29] Multi-criteria Graph Partitioning with Scotch, Proceedings of the Eighth SIAM Workshop on Combinatorial Scientific Computing, CSC 2018, Bergen, Norway, June 6-8, 2018 (Fredrik Manne; Peter Sanders; Sivan Toledo, eds.), Society for Industrial and Applied Mathematics (2018), pp. 66-75 | DOI
[30] ParMETIS — Parallel graph partitioning and sparse matrix ordering library (2003) http://charm.cs.uiuc.edu/...
[31] METIS and ParMETIS, Encyclopedia of Parallel Computing (David A. Padua, ed.), Springer, 2011, pp. 1117-1124 | DOI
[32] ParaDiGM: a library for parallel computational geometry, version 2.6.0, 2024 https://github.com/onera/paradigm/ (Accessed 2025-10-31)
[33] Taskflow: A Lightweight Parallel and Heterogeneous Task Graph Computing System, IEEE Trans. Parallel Distrib. Syst., Volume 33 (2022) no. 6, pp. 1303-1320 | DOI
[34] Kconfig metamodel: a first approach, Proceedings of the 28th ACM International Systems and Software Product Line Conference - Volume B, SPLC 2024, Dommeldange, Luxembourg, September 2-6, 2024 (Maxime Cordy; Daniel Strüber; Mónica Pinto; Iris Groher; Deepak Dhungana; Jacob Krüger; Juliana Alves Pereira; Mathieu Acher; Thomas Thüm; Maurice H. ter Beek; Jessie Galasso-Carbonnel; Paolo Arcaini; Mohammad Reza Mousavi; Xhevahire Tërnava; José A. Galindo; Tao Yue; Lidia Fuentes; José Miguel Horcas, eds.), ACM Press (2024), pp. 55-60 | DOI
[35] Feature-model interfaces: the highway to compositional analyses of highly-configurable systems, Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14-22, 2016 (Laura K. Dillon; Willem Visser; Laurie A. Williams, eds.), ACM Press (2016), pp. 667-678 | DOI
[36] Delta-Oriented Programming of Software Product Lines, Software Product Lines: Going Beyond - 14th International Conference, SPLC 2010, Jeju Island, South Korea, September 13-17, 2010. Proceedings (Jan Bosch; Jaejoon Lee, eds.) (Lecture Notes in Computer Science), Volume 6287, Springer (2010), pp. 77-91 | DOI
[37] PYDOP: A Generic Python Library for Delta-Oriented Programming, Proceedings of the 27th ACM International Systems and Software Product Line Conference - Volume B, SPLC 2023, Tokyo, Japan, 28 August 2023- 1 September 2023 (Paolo Arcaini; Maurice H. ter Beek; Gilles Perrouin; Iris Reinhartz-Berger; Ivan Machado; Silvia Regina Vergilio; Rick Rabiser; Tao Yue; Xavier Devroey; Mónica Pinto; Hironori Washizaki, eds.), ACM Press (2023), pp. 30-33 | DOI
[38] SymPy: symbolic computing in Python, PeerJ Comput. Sci., Volume 3 (2017), e103, 27 pages | DOI
[39] Code generation for massively parallel phase-field simulations, Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, SC 2019, Denver, Colorado, USA, November 17-19, 2019 (Michela Taufer; Pavan Balaji; Antonio J. Peña, eds.), ACM Press (2019), 59, 32 pages | DOI
[40] Product lines of dataflows, J. Syst. Software, Volume 210 (2024), 111928, 22 pages | DOI
[41] The Hrewrite Library: A Term Rewriting Engine for Automatic Code Assembly, Rewriting Logic and Its Applications - 15th International Workshop, WRLA 2024, Luxembourg City, Luxembourg, April 6-7, 2024, Revised Selected Papers (Kazuhiro Ogata; Narciso Martí-Oliet, eds.) (Lecture Notes in Computer Science), Volume 14953, Springer (2024), pp. 165-178 | DOI
[42] Dynamic stall experiments on the NACA 0012 airfoil (1978) no. 19780009057 (Technical Publication)
[43] A critical assessment of wind tunnel results for the NACA 0012 airfoil (1987) no. 19880002254 (Technical Memorandum)
[44] Pressure distributions on the ONERA-M6-Wing at transonic Mach numbers (1979) no. AGARD AR 138 (Technical report)
[45] Turbulence Modeling Resource https://turbmodels.larc.nasa.gov/ (Accessed 2025-10-30)
[46] A one-equation turbulence model for aerodynamic flows, Rech. Aerosp., Volume 42 (1994) no. 1, pp. 5-21
[47] Two-Equation Eddy-Viscosity Turbulence Models for Engineering Applications, AIAA J., Volume 32 (1994) no. 8, pp. 1598-1605 | DOI
[48] Correlation-Based Transition Modeling for Unstructured Parallelized Computational Fluid Dynamics Codes., AIAA J., Volume 47 (2009) no. 12, pp. 2894-2906 | DOI
[49] Low-Storage Runge-Kutta Schemes., J. Comput. Phys., Volume 35 (1980), pp. 48-56 | DOI
[50] Numerical initial value problems in ordinary differential equations, Prentice Hall, 1971 | MR | Zbl
[51] Recent improvements in the Zonal Detached Eddy Simulation (ZDES) formulation, Theor. Comput. Fluid Dyn., Volume 26 (2012), pp. 523-550 | DOI
[52] NASA Rotor 37, Springer (2021), pp. 533-544 | DOI
[53] Analysis of unsteadiness in afterbody transonic flows, AIAA J., Volume 42 (2004) no. 12, pp. 2541-2550 | DOI
[54] Zonal Detached Eddy Simulation of the Flow Around a Simplified Launcher Afterbody, AIAA J., Volume 52 (2014) no. 9, pp. 1967-1979 | DOI
[55] Design and overall performance of four highly loaded, high-speed inlet stages for an advanced high-pressure-ratio core compressor (1978) no. NASA-TP-1337 (Technical Paper)
[56] Étude expérimentale de l’écoulement d’arrière-corps du lanceur Ariane 5 dans la soufflerie transsonique S3Ch (2007) (Technical report)
[57] AVBP, version 7.15, 2025 https://avbp-wiki.cerfacs.fr/ (Accessed 2025-10-31)
[58] Steady and unsteady flow simulations using the hybrid flow solver AVBP, AIAA J., Volume 37 (1999) no. 11, pp. 1378-1385 | DOI
[59] Design of a massively parallel CFD code for complex geometries, Comptes Rendus. Mécanique, Volume 339 (2011) no. 2–3, pp. 141-148 | DOI | Zbl
[60] DLR-Project Digital-X — Next Generation CFD Solver ’Flucs’, Deutscher Luft- und Raumfahrtkongress 2016 (2016), 420027, 14 pages
[61] Introduction to MPI: The Message Passing Interface, Undergraduate Topics in Computer Science, Springer (2016), pp. 21-62 | DOI
[62] GASPI/GPI In-memory Checkpointing Library, Euro-Par 2017: Parallel Processing - 23rd International Conference on Parallel and Distributed Computing, Santiago de Compostela, Spain, August 28 - September 1, 2017, Proceedings (Francisco F. Rivera; Tomás F. Pena; José Carlos Cabaleiro, eds.) (Lecture Notes in Computer Science), Volume 10417, Springer (2017), pp. 497-508 | DOI
[63] OpenMP: An Industry-Standard API for Shared-Memory Programming, IEEE Comput. Sci. Eng., Volume 5 (1998) no. 1, pp. 46-55 | DOI
[64] Spliss: A Sparse Linear System Solver for Transparent Integration of Emerging HPC Technologies into CFD Solvers and Applications, New Results in Numerical and Experimental Fluid Mechanics XIII (Andreas Dillmann; Gerd Heller; Ewald Krämer; Claus Wagner, eds.), Springer (2021), pp. 635-645 | DOI
[65] Algorithm 755: ADOL-C: a package for the automatic differentiation of algorithms written in C/C++, ACM Trans. Math. Softw., Volume 22 (1996) no. 2, pp. 131-167 | DOI
[66] OpenFOAM: Open source CFD in research and industry, Int. J. Nav. Archit. Ocean Eng., Volume 1 (2009) no. 2, pp. 89-94 | DOI
[67] Multi GPU Implementation to Accelerate the CFD Simulation of a 3D Turbo-Machinery Benchmark Using the RapidCFD Library, Supercomputing (Moisés Torres; Jaime Klapp, eds.), Springer (2019), pp. 173-187 | DOI
[68] Dafoam: An open-source adjoint framework for multidisciplinary design optimization with openfoam, AIAA J., Volume 58 (2020) no. 3, pp. 1304-1319
[69] MeDiPack — Message Differentiation Package, 2024 https://scicomp.rptu.de/software/medi/ (Accessed 2025-10-31)
[70] Stanford University Unstructured (SU): An open-source integrated computational environment for multi-physics simulation and design, 51st AIAA Aerospace Sciences Meeting including the New Horizons Forum and Aerospace Exposition 2013, American Institute of Aeronautics and Astronautics (2013), AIA 2013-0287, 60 pages | DOI
[71] SU2GUI, 2024 https://github.com/su2code/su2gui (Accessed 2025-10-31)
[72] Introduction to TensorFlow 2.0, Apress (2020), pp. 1-24 | DOI
[73] PyTorch, Springer (2021), pp. 87-104 | DOI
[74] Performance-effective and low-complexity task scheduling for heterogeneous computing, IEEE Trans. Parallel Distrib. Syst., Volume 13 (2002) no. 3, pp. 260-274 | DOI
[75] DAG scheduling using a lookahead variant of the heterogeneous earliest finish time algorithm, 2010 18th Euromicro Conference on Parallel, Distributed and Network-based Processing, IEEE (2010), pp. 27-34 | DOI
[76] List Scheduling Algorithm for Heterogeneous Systems by an Optimistic Cost Table, IEEE Trans. Parallel Distrib. Syst., Volume 25 (2014) no. 3, pp. 682-694 | DOI
Cité par Sources :
Commentaires - Politique
