code saturne 2 - cfd.mace.manchester.ac.ukcfd.mace.manchester.ac.uk/...code_saturne_2.0.pdf ·...
TRANSCRIPT
Code_Saturne 2.0
Code_Saturne development team
Code_Saturne User meeting7th and 8th, December 2009
7th and 8th, December 2009 Code_Saturne User Meeting
Outlines
1. Enhancements and new features
2. Perspectives
3. Open source initiative
Code_Saturne User Meeting
Enhancements,New features
With respect to the latest validated version 1.3
Release schedule and validation
Code_Saturne User Meeting
Previous versionsLatest validated version “1.3.2” released in April 2008
Corrective version “1.3.3” released for Code_Saturne User Meeting 2009
Intermediate development version “1.4” concurrently with 1.3.3 version
On the road to the next validated version 2.0Two development snapshots, 2.0-beta1 (June 2009) and 2.0-beta2 (August 2009)Validation of version 2.0-beta2
First stage: August-NovemberAbout 30 tests-cases, more than 200 simulations
Second stage: Starting nowOn a selected set of test-cases (known to have had issues in the first stage)
Next version 2.0-rc (stands for release candidate)Now consolidating fixes issued after the first validation stagePublicly released soon
Graphical Interface
Fully re-written in PyQt 4Now without any regression compared to 1.3 versionFor a better integration in SALOMENatively supported on GNU/Linux, MacOS X and Windows systemsDrag’n drop feature for time average and profile definitions
Many new features!Head-loss zones definitionFluid-structure interaction for internal / external couplingLagrangian simulations setupOxycombustion setup for coal combustionMathematical expressions interpreter (see next slide)…
Code_Saturne User Meeting
Mathematical Expression Interpreter (MEI)
A new low-level library along with BFT and FVMDedicated to the interpretation of mathematical expressionsUsed both by the solver and the interface (as a syntax checker)
Mathematical expressions can be used in different placesFluid propertiesBoundary conditions setupFluid structure interaction (internal coupling with spring modelling)…
Will be extended for other functionalities when needed
Code_Saturne User Meeting
Mathematical Expression Interpreter (MEI)
Code_Saturne User Meeting
Mathematical Expression Interpreter (MEI)
Code_Saturne User Meeting
Integration in SALOME platform
Code_Saturne graphical interface can be embedded in SALOME platform
Compliant with SALOME 5.1.3 (soon to be released)Will be publicly released early 2010Will also be available at MFEE department
/home/salome/runSalome
Extends the capabilities of Code_Saturne interfaceBoundary zone selectionCode_Saturne simulations can be launched and stopped from within SALOMEVirtual results and drafts directories for an easier user file managementCompared to former Tcl/Tk interface, 2.0 interface is far more reactive
Code_Saturne User Meeting
“One script to run them all”
The different user scripts have been unified in a single one
code_saturne <command> [options]
Examples:Documentation code_saturne info --guide=user --reader=acroread
Case creation code_saturne create --study=coupling --nsyr=2
Mesh verification code_saturne check_mesh mesh.neu --join --color 98 99
Compilation test code_saturne compile --test
GUI launch code_saturne gui
It is now possible to have different versions of Code_Saturne simultaneously availableE.g.: alias cs=`/path/to/saturne/bin/code_saturne`
alias csdev=`/path/to/mysaturnedev/bin/code_saturne`
Script completion is available for easier typing of a command
Code_Saturne User Meeting
Architectural changes
Code_Saturne kernel-related changesSwitch to the autotools for configuration and installation
Coherent with what was done for the other packages of the codeFar more standard in the Unix world than the previous homemade build processFar more easier to maintain or to detect error in the build process
Update Fortran source files to Fortran 95 normFortran 77 norm showed some limitations in terms of code complexity and maintenanceMostly only changes from fixed to free-form files (a script will be provided to ease the conversion)Fortran 95 features (dynamic memory allocation, modules, …) to be used progressively
Global changesPre-requisites detection now emits a warning if an optional package is not found when the detection is automatic but exits with an error if the package has been requested by the userSwitch to the standard management of long/short options (e.g. --study / -s)English translation for the study structure directories (lance becomes runcase, …)All executables begin with cs_ except the main script code_saturne
Code_Saturne User Meeting
Preprocessing enhancements
Addition of new readersNOPO 64 bits files format from Simail (version 7)CCM files format from Star-CCM
Requires to be linked with the libccmio library, available on request through the CD-Adapco web-siteA couple of fixes have also been issued for existing formats
Preparation for larger mesh readingA configure option has been added to handle long integers (> 2 billions)
Useful for very large meshes on machines with more than 128 Gb of memory./configure --enable-long-int
Same option (--enable-long-gnum) has been added for FVM configuration
Communication between the pre-processor and the solverA single prepocessor_output file is now generated by the pre-processorThis file and the solver restart files share the same unified format
They can be inquired by the cs_io_dump toolA partitionner cs_partition reads this file and generates domain_nXXXX indirection files for domain splitting
No need to regenerate the pre-processor information when changing the number of processor in a simulation
Code_Saturne User Meeting
A new parallelized joining algorithm
Code_Saturne User Meeting
Another bottleneck is removed for very large meshes!
Can be considered production-ready, but not yet used by defaultActivated by a Fortran subroutine usjoin.f90Cannot handle periodicity at the moment… work in progress!Faster than previous algorithm on a single processorSame standard parameters than beforeMore advanced parameters now available to solve corner cases
A couple of other “HPC-related” features
MPI-I/O featuresOnly used for preprocessor_output and restart files reading and writingActivated by the cs_solver option --mpi-io, if FVM is compiled with MPI I/O supportMixed feedback, depending on the MPI distribution and the architecture
Parallel partitioningA Space-Filling Curve algorithm has been implemented in the solverActivated by the ALGDOM subroutineGenerally worse results than with sequential Metis partitioning, but satisfying nonetheless
Porting to number of current HPC facilitiesIn the framework of the PRACE projectBlueGene/L and /P, NEC SX9, Cray XT, …
Code_Saturne User Meeting
Algebraic multigrid algorithm
For pressure resolution, instead of standard conjugate gradientStabilized since 1.4 development versionAlso used for other scalar, purely diffusive, variablesCompatible with parallelism and periodicity
Periodicity of translation and/or rotation are compatibleScalable up to a large number of cells and/or processors
May leverage convergence issues on mesh of very poor qualitySmoother evolution of CPU time per iteration than with standard Conjugate Gradient algorithmMajor improvement on the elapsed CPU time
Up to 10x faster on the pressure resolutionUp to 3 or 4x faster on the global elapsed time!
Code_Saturne User Meeting
Atmospheric modelling
Porting main features of Mercure_SaturneImplemented as a specific physics in Code_Saturne, triggered with usppmo.f90Neutral atmosphere modellingPotential temperature formulation for neutral or non-neutral atmosphereA meteorological data files can be given via a METEO_DATA variable in the runcase
Code_Saturne User Meeting
Combustion modelling
Accounting for possible oxycombustion in coal combustion
Extension of the heavy fuel combustionPossibly several initial droplets sizeNot yet validated
7th and 8th, December 2009 Code_Saturne User Meeting
Cooling towers modelling
Based on former code N3S-AeroImplemented as a specific physics in Code_Saturne, triggered by usppmo.f90Poppe and Merkel models availablePost-processing of the exchange zonesImportant fixes since 1.4 development version
But still needs to be “polished”…Parallel simulation not fully functionalUser subroutines given as an exampleBoundary conditions setup can be difficult
Code_Saturne User Meeting
Rotor / stator interaction modelling
Main featuresDedicated to incompressible flowsNo turbine modellingBased on code/code coupling, thus a non-conservative method, but…
… less than 1% of mass loss in the different tests
Validated against Ubaldi’s test case
Two different approaches availableFrozen Rotor method
Full domain only
Unsteady method
See dedicated talk of B. Audebert
Code_Saturne User Meeting
Code_Saturne coupling features
Coupling with SYRTHESNow handled with a user subroutine ussyrc.f90 (or the interface)Already prepared for the next version of SYRTHES
Version 4 of SYRTHES will be fully parallelUnder testing by the SYRTHES development team
Coupling with Code_AsterFor fluid/structure interaction simulationsCoupling through the YACS module of SALOMEStill under final stage of integration in the standard version of Code_AsterValidation is under progress
Coupling with Code_Saturne itselfMainly used for rotor/stator interaction modellingCan be used for “standard” coupling
Code_Saturne User Meeting
Caveat and deprecated features
Known caveatThe particle-tracking algorithm in the Lagrangian module may suffer discrepancies on “some” architectures
Due to the internal handling of floating-point precision with some processor / compilerDoes not suffer such discrepancy on standard architectures: i386-like, x86_64 and IA64 processors with GCC or Intel compilersFor portability question, contact the support
The cooling tower module may fail in parallel runWhen an “exchange zone” has more than a single neighbour domain
Deprecated featuresLagrangian modelling for coal combustion
Not been used for a long time, so probably broken
Matisse engineering module (EDF specific)The solver code adaptation is still functional, but the graphical user interface is not
Code_Saturne User Meeting
Code_Saturne User Meeting
Perspectives
Fully parallelized tool-chain
Code_Saturne 2.0 tool-chain is nearly fully parallel...The last bottleneck for standard calculations is mesh concatenation
Next version will be!A development version for parallel mesh concatenation is already under testing
Daresbury Laboratory helps to debug the new algorithm
Parallel domain partitioningPossible use of ParMetis or PtScotchImprovement in the Space Filling Curve algorithm
The Lagrangian particle tracking algorithm is prepared for parallel runNeed to be testing thoroughly
Code_Saturne User Meeting
Further developments
Several development axis for the Navier-Stokes solverOpportunity of a velocity-pressure coupled solverPseudo-compressible solver scheme for dilatable flowsSwitch to a lower precision for iterative linear solver
Very good feedback on the different testsProbably increase EPSILO(IVAR) to 1.e-5 instead of 1.e-8
Refactoring the boundary conditions managementFor more robustness in the simulationsFor increased flexibility
…
Treatment of uncertaintiesTests of plugging of OpenTURNS platform (open source) to Code_SaturneIf convenient, triggering from Code_Saturne graphical interface
Code_Saturne User Meeting
Further developments (cont’d)
Physical modellingLow-Reynolds second order turbulence model (Elliptic Blending RSM, R. Manceau)Thermal fluxes modellingTurbulence improvement for rotation modellingSynthetic turbulence generation for RANS/LES coupling or LES inlet setupIonic mobilityFire-driven flows specific enhancementsPumps modelling (conservative method)Stabilization of the heavy-fuel oil combustionUnification of coal and heavy-fuel oil combustion…
Architectural changesUse of Fortran 95 specific features (dynamic memory allocation, modules, …)Unification of the different packages in a single one…
Code_Saturne User Meeting
Code_Saturne User Meeting
Code_Saturneopen source initiative
The long-awaited community features…
Code_Saturne web-site finally has its forum and bug-tracker!Registering is mandatory for moderating and surveying purposesTo register, please contact the support
https://www.code-saturne.infoA big thank to our colleagues of SINETICS for providing us with the facilities, especially to Christophe Mouton
Code_Saturne User Meeting
The long-awaited community features…
Code_Saturne User Meeting
The long-awaited community features…
Code_Saturne User Meeting
Code_Saturne packaging and distribution
A new Python installer is provided to the userAutomatic download of every pre-requisite (except optional libccmio library)Automatic installation of every source packageShould be fully working for most standard systems
The code is packaged in DebianWork in progress (only beta2 is present as of now)About 10 different architectures supported1.3.3 already available as a FreeBSD port
Still no Windows version, but…Code compilation is regularly tested on Cygwin and MingGW systemsThe new Qt interface is directly portable on WindowsEvery contribution would be welcome in this area ;-)
Code_Saturne User Meeting
Code_Saturne documentation
All the user subroutines have been translated in EnglishLow-level libraries (BFT, FVM and MEI) are fully in EnglishThe preprocessor is written in French, and will remain as isRegarding the solver part
The C source files are fully in EnglishThe comments in the Fortran source files will be translated as they are modified… work in progress!
Code_Saturne documentation is improvingMan pages have been added to all executables
E.g.: man cs_preprocess
A quick reference card is availableA double A4 format with main commands to be printed as a memento
The theory manual is still to be reorganized and translatedA developer’s guide is to be written early 2010
Code_Saturne User Meeting
Code_Saturne User Meeting
And a special thank for every contribution to Code_Saturne, users and developers!
Thank you for listening!