English Français

Documentation / User's manual in C++ : PDF version

Chapter I. Overview: Uranie in a nutshell

Chapter I. Overview: Uranie in a nutshell

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.

I.1. Introducing Uranie

Uranie (the version under discussion here being v4.9.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.32.00).

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.

I.1.1. Uranie modules organisation

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).

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.

I.1.1.1. DataServer module

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.

I.1.1.2. Sampler module

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.

I.1.1.3. Launcher module

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...).

I.1.1.4. Modeler module

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, ...).

I.1.1.5. Sensitivity module

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].

I.1.1.6. Optimizer and Reoptimizer modules

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.

I.1.1.7. Relauncher module

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.

I.1.1.8. Calibration module

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.

I.1.2. External dependencies

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.

I.1.2.1. Compulsory dependencies

ROOT:

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.32.00)

Cmake:

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.26.3)

CPPUnit:

Unit testing framework for C++ programming [feathers2002cppunit].
It is available at http://sourceforge.net/projects/cppunit/ (version used is v1.15.1)

I.1.2.2. Optional dependencies

OPT++:

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.

FFTW:

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.8). It is mainly used for two methods in the Sensitivity library.

NLopt:

Library for nonlinear optimisation [nlopt].
It is available at http://ab-initio.mit.edu/nlopt (version used is v2.6.1). It is mainly used for kriging and mono-criterion optimisation.

Boost

It is a set of libraries used here to implement the low level functionality for coroutines in replacement of PCL (Portable Coroutine Library) since V4.8.0.
It is available at https://www.boost.org (version used is v1.66)

MPI:

(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 v3.1)

CUDA:

(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.66.

/language/en