Questions diverses sur l'utilisation openturns

Bonjour
Je suis une nouvelle utilisatrice d’OpenTurns. Je me suis définie un cas d’étude (simulation en 2D faisant appel à un logiciel interne), j’ai paramétré ce cas, j’ai défini le script python qui permet de générer les fichiers d’entrées, de lancer le calcul et de récupérer les résultats (utilisation du module coupling_tools).
Ca fonctionne super bien

Maintenant je souhaite définir un DOE et lancer les calculs correspondants.
J’ai bien vu les exemples en ligne mais je me pose bien des questions, que je vous expose ci-dessous, merci d’avance (à moins qu’il y ait un document “user guide” ?).

Mon but est de parcourir avec ce cas d’étude les différentes fonctionnalités d’OpenTurns, (analyse de sensibilité, incertitudes diverses), pour apprendre OpenTurns et ensuite pouvoir mieux orienter la suite de mon projet.

  1. Par quels moyens les résultats sont stockés / conservés pour de futures utilisations ? une option à activer ?

Mon cas comporte 27 paramètres d’entrée

  • 20 paramètres géométriques
  • 2 paramètres de maillage
  • 5 paramètres de calcul proprement dit (valeurs des conditions limites notamment)

et j’ai 5 résultats scalaires de mon calcul à analyser (certains doivent être fortement corrélés entre eux)

J’imagine que cela fait encore trop de paramètres, mais bon, c’est pour voir (mon calcul est plutôt rapide, de l’ordre de la minute ou un peu plus)

  1. Dans un 1er temps je souhaite faire varier uniquement les paramètres géométriques
    comment indiquer que je “bloque” les autres paramètres à une valeur par défaut ?

  2. Pour les distributions de mes paramètres géométriques :
    la plupart peuvent varier entre 2 valeurs, c’est donc une distribution uniforme
    cependant certains peuvent varier uniquement entre 0 et +Val avec une moyenne de 0, donc je me demande quelle est la distribution qui pourrait le mieux correspondre à cela ?

  3. Pour le choix de DOE, vu mon nombre de paramètres, que faudrait-il utiliser de préférence ?

  4. Si dans certains cas de figure mon logiciel ne converge pas et ne donne donc pas de résultats, comment cela est-il pris en compte ?

Merci à tous pour votre aide !

Cordialement
Flore

Hi!
I’m sorry that you did not get further answers until now: I did not notice that your questions were left unanswered. For future questions, I suggest to focus on a single topic, which improves your chances of getting an answer faster.

I try to answer to all your questions, hoping that this might be still useful.

  1. To save the results of a calculation, you may use the Study class, which allows to save the results of a script onto a XML file, and to read this file afterwards. Another way to proceed is to use the pickle Python module, which works fine for most cases, because OT is a Python package after all. Examples are provided here:

http://openturns.github.io/openturns/master/auto_numerical_methods/general_methods/plot_study_save_load.html

Notice that a new HDF5 support has be introduced recently, which might be handy if your study is large. There is currently no example (The HDF5 format is undocumented · Issue #1801 · openturns/openturns · GitHub), but the unit test speaks for itself:
openturns/t_Study_h5.py at master · openturns/openturns · GitHub

  1. In general, the inputs of a UQ computer model fall in two categories indeed: random variables, fixed variables. There are two different ways to manage this. The first is too foul OpenTURNS by setting an input as a Dirac distribution:

http://openturns.github.io/openturns/master/user_manual/_generated/openturns.Dirac.html

A Dirac distribution is a random variable which generates a single observation. This keeps the input dimension of the computer model unchanged.
Another way to proceed is to create a ParametricFunction, which is a functions with deterministic parameters:

http://openturns.github.io/openturns/master/user_manual/_generated/openturns.ParametricFunction.html

This allows to reduce the input dimension of the computer model.

  1. I do not know. I would use a UserDefined to create a distribution which two random observations, but this does not match your requirements to set the mean to zero.

  2. With 27 inputs, I would say that the first step would be to reduce the number of inputs. I would personally first create a sparse polynomial chaos based on an hyperbolic enumeration rule and then perform a draft of a sensitivity analysis on this. This is done for example at:

Other users may choose to perform a screening analysis with GitHub - openturns/otmorris: Morris module, but this method may raise other questions, so I would not recommend it in general.

Without dimension reduction, I would use … any valid DOE, depending on other criterias. A good starting point is Monte-Carlo simulation, of course.

  1. If your software fails, an exception will be generated at some point, or a Not-A-Number floating point number is produced. In both cases, the analysis will be impossible in theory, because all estimators I know of require to have independent and identically distributed points. I suggest to 1) fix the bugs in the software, 2) reduce the dispersion of the distributions on input. The solution 1 is better: the input sample which leads to software failures is generally interesting for the developer of the software, because it pushes the library to the limits, where most computer systems are rarely experienced. This may improve the quality of the library itself, be it software or methodological improvements.

Regards,

Michaël