Abstract
This chapter introduces the global organisation of the Uranie software at a very large scale (module one) and its main dependence: ROOT. Each and every Uranie modules is also briefly described in a specific section, before being furthermore discussed later on.
Uranie (the version under discussion here being v4.7.0) is a software dedicated to perform studies on uncertainty propagation, sensitivity analysis and surrogate model generation and calibration, based on ROOT (the corresponding version being v6.22.02).
As a result, Uranie benefits from numerous features of ROOT, among which:
an interactive C++ interpreter (Cling), built on the top of LLVM and Clang;
a Python interface (PyROOT);
an access to SQL databases;
many advanced data visualisation features;
and much more...
In the following sections, the ROOT platform will be briefly introduced as well as the python interface it brings once the Uranie classes are declared and known. The organisation of the Uranie platform is then introduced, from a broad scale, giving access to more refined discussion within this documentation.
The platform consists of a set of so-called technical libraries, or modules (represented as green boxes in Figure I.1), each performing a specific task.
Figure I.1. Organisation of the Uranie-modules (green boxes) in terms of inter-dependencies. The blue boxes represent the external dependencies (discussed later on).
![]() |
In the rest of this section each and every modules discussed in this documentation will be briefly described (in terms
of role and main components) starting with the DataServer one, which is the spine of the Uranie project, as shown in
Figure I.1. A more precise description will then be done in the dedicated other
chapters.
The DataServer library (cf Chapter II) is the core of the
Uranie platform. It describes the central element of Uranie: the TDataServer
. This object contains all the necessary
information about the variables of a problem (such as the names, units, probability laws, data files, and so on...)
and allows to perform the very basic statistical operations.
The Sampler library (cf Chapter III) allows to create
design-of-experiments using TDataServer
's attributes which are random variables. There are a large variety of design-of-experiments
some of which are only meant to be called by more complicated methods.
The Launcher library (cf Chapter IV) applies an analytic
function or an external simulation code on the content of a TDataServer
. The TDataServer
content can either result from a design-of-experiments
generated using one of the TSampler
object, or can be loaded into from an external source (ASCII file, SQL
database, etc...).
The Modeler library (cf Chapter V) allows the
construction of a surrogate model that links the output and the input factors
(for
) (polynomial models, neural networks, ...).
The Sensitivity library (cf Chapter VI) allows to perform
sensitivity analysis of one of the output response with respect to the input factors
(for
). The very basic concepts of sensitivity analysis are introduced as well in
the introduction of this chapter while they are discussed a bit more thoroughly in [metho].
The Optimizer and Reoptimizer libraries (cf Chapter VII and Chapter IX) are dedicated to optimisation and model calibration. Model calibration consists in setting up the "degrees of freedom" of a model so that future simulations will optimally fit an experimental database. The optimisation is a complex procedure and several techniques are available to perform single-criterion or multi criteria one, with and without constraint.
The Relauncher library (cf Chapter VIII) is more a technical module that is used throughout the Uranie platform to provide a general architecture for all parametric studies, allowing secure multi-processors and multi-thread usage in a simple way.
The Calibration library (cf Chapter XI) is more a dedicated module that is used to get the best estimations of some of the parameter of a specific model under consideration. This module provides different techniques relying on their own hypothesis on the model but all of these methods need data to perform this calibration.
Before starting with the internal organisation of the platform, this section is discussing the dependencies of the Uranie platform. They are sorted in two categories: the compulsory and optional ones. The latter ones are shown as blue boxes in Figure I.1 and both types are listed and briefly discussed below.
An oriented-object package that offers many possibilities for data handling, analysis,
display... [Brun1997pa]
Sources, binaries and documentation are available at http://root.cern.ch (version used is v6.22.02)
Free and open-source software for managing the build process of compiled software
[martin2007open].
It is available at http://www.cmake.org/ (version used is v3.14.0)
Unit testing framework for C++ programming [feathers2002cppunit].
It is available at
http://sourceforge.net/projects/cppunit/ (version
used is v1.13.1)
Libraries that include non linear optimisation algorithms written in C++
[meza2007objectoriented].
It is available at https://software.sandia.gov/opt++/ (version used is
v2.4). It is mainly used for neural networks.
Library that computes discrete Fourier transform (DFT) (one or more dimensions), of arbitrary input size
[FFTW05].
It is available at http://www.fftw.org/ (version used is v3.3.4). It is mainly used for
two methods in the Sensitivity library.
Library for nonlinear optimisation [nlopt].
It is available at http://ab-initio.mit.edu/nlopt (version used is
v2.2.4). It is mainly used for kriging and mono-criterion optimisation.
(Portable Coroutine Library) Implements the low level functionality for coroutines.
It is available at
http://xmailserver.org/libpcl.html (version used is
v1.10)
(Message Passing Interface) Standardised and portable message-passing system needed to run parallel computing
[gabriel04_open_mpi].
It is available at http://www.open-mpi.org/ (version used is v1.6.5)
(Compute Unified Device Architecture) Parallel computing platform and pro- gramming model invented by NVIDIA to
harness the power of the graphics processing unit (GPU) [nvidia2011nvidia](version used is
v8.0).
If requested, it should be used with the boost
library, with a version greater than v1.47.