• Aucun résultat trouvé

Calcul des gradients et du Hessien

1.4 Méthodes de fiabilité : le couplage mécano-fiabiliste

1.4.3 Méthodes d’approximation FORM/SORM

1.4.3.4 Calcul des gradients et du Hessien

Dans lequel, l’indice A dénote l’approximation asymptotique, n est la dimension de l’espace normé et κj, où j = 1 à (n − 1), sont les courbures principales de la surface

d’état limite au point de conception. Breitung a montré que l’équation (1.49) approche asymptotiquement la probabilité de défaillance exacte pour des valeurs de βHL tendant

vers l’infini, le produit (βHL.κj)restant fixé.

L’approximation asymptotique donne donc de bons résultats pour les grandes valeurs de βHL. En revanche, cette approximation devient erronée lorsque les courbures tendent

vers 1/βHL, c’est-à-dire 1/βHL ' κj, à cause de la singularité de ce point. Une meilleure

forme de Pf A est obtenue par Tvedt, présentée dans [133] :

Pf A = 1 2 − 1 π Z ∞ 0 sin βHLt + 1 2 n−1 X j=1 tan−1(−κjt) ! expt2 2  t limn−1j=1 (1 + κ2t2)14 dt (1.50) Cette équation peut être employée pour des indices βHL petit ; l’utilisation des deux

équations (1.49) et (1.50) pour des valeurs de βHL moyennes donne alors une bonne

approximation de l’indice de fiabilité.

1.4.3.4 Calcul des gradients et du Hessien

Les différents algorithmes énoncés ci-dessus sont des algorithmes de degrés 1 ou 2. La construction de la séquence de points minimisant la fonction d’optimisation se fait donc par le calcul des gradients ou du Hessien de la fonction d’état limite par rapport aux différentes variables de base. Il existe plusieurs méthodes pour évaluer ces dérivées d’ordre 1 ou 2. La solution à retenir dépend de la disponibilité du code source évaluant la fonction d’état limite. Le couplage direct avec un code éléments finis restreint donc fortement le choix de la technique d’évaluation des dérivées. Nous allons tout de même énumérer les solutions puisque nous pourrons voir par la suite que toutes les méthodes sont applicables dans le contexte des méthodes de surface de réponse ou dans l’identification paramétrique. Pour cela, plaçons nous dans un contexte général où la dérivée d’une fonctionnelle J doit être évaluée :

J (x) : x → q(x) → U (q(x)) → J (x, q(x), U (q(x))) (1.51) où q et U sont des variables intermédiaires ou des fonctions d’état. Le gradient de la fonctionnelle s’écrit alors :

1.4. MÉTHODES DE FIABILITÉ : LE COUPLAGE MÉCANO-FIABILISTE 41 dJ dx = ∂J ∂x + ∂J ∂q ∂q ∂x + ∂J ∂U ∂U ∂x (1.52)

Nous noterons 4 méthodes calculant la dérivée première de J (l’itération de la méthode permet alors le calcul du Hessien) :

1. La méthode par différence finie, consistant à évaluer la dérivée grâce à un dévelop- pement de Taylor à l’ordre 1 autour de x :

dJ dx =

1

h(J (x + hi, U (x + hi)) − J (x, U (x)) + O(h) (1.53) Le problème de cette approche réside dans le choix difficile des pas hi qui peuvent

être de plus différents pour des ordres de grandeurs inégales entre les différentes composantes du vecteur X. Par ailleurs, cette méthode souffre énormément de l’uti- lisation des nombres à virgule flottante (float ) dans la soustraction de variables proches. La solution consiste à doubler la complexité en effectuant un deuxième développement de Taylor pour réaliser la différence finie centrée. L’erreur ainsi com- mise est alors d’ordre 2 avec O(h2).

2. La méthode des variables complexes, lève le problème du choix de l’incrément et de la soustraction de nombres voisins. En effet, si J est une fonctionnelle réelle, nous avons :

J (xi+ ih, U (xi+ ih)) = J (x, U (x)) + ihJx0 −

h2 2 J 00 xx− i h3 6 J 000 xxx + O(h 3 ) (1.54) où xi + ih représente la ième composante de x à laquelle on ajoute une partie

imaginaire égal à l’incrément de différentiation. La solution du gradient s’exprime alors :

dJ dxi

= Im(J (xi+ ih, U (xi+ ih)))

h + O(h) (1.55)

3. La différentiation automatique est un ensemble de techniques basées sur l’enchaîne- ment des opérations numérique afin d’obtenir les dérivées d’une fonction évaluée par un programme machine. Elle exploite le fait que chaque programme machine, aussi compliqué soit-il, exécute une succession d’opérations arithmétiques (+, −, ×, /) ou fonctions élémentaires (sin,exp,...). En appliquant les règles du calcul de dérivées pour les compositions de fonctions à plusieurs reprises, les dérivées d’ordre arbitraire peuvent être calculées automatiquement, et exactement. Ainsi, la fonctionnelle J (x) peut être vue comme la succession d’opération élémentaire. Soit v le vecteur conte- nant toutes les variables du code, que celles-ci soient des variables d’entrée (les variables indépendantes) ou des résultats de calculs (les variables dépendantes). Les valeurs de v renseignent donc sur l’état du code à un moment précis et l’exécution d’une instruction du code produira une modification du vecteur. Le code est donc décrit par l’équation d’état non linéaire à temps discret v(k) = Φk[v(k − 1)], où

k = 1, ..., f représente le temps et s’incrémente par le passage d’une instruction à une autre. Les règles de dérivations permettent d’écrire :

∂J ∂x = ∂J ∂v(f ) ∂Φf ∂v(f − 1) ∂Φf −1 ∂v(f − 2)... ∂Φ1 ∂v(0) ∂v(0) ∂x (1.56)

Il existe alors deux façons d’évaluer cette relation si nous partons de gauche à droite ou de droite à gauche et s’appelant respectivement méthode inverse et méthode direct. La méthode inverse est beaucoup plus économique puisque aucun stockage de la fonction v n’est nécessaire pour évaluer les gradients. La mise en oeuvre de cette approche peut être faite suivant deux approches : la pré-compilation où l’outil de différentiation automatique produira un code dérivé du code direct et la sur- charge d’opérateur où aucun code supplémentaire n’est généré mais qui introduit des nouvelles classes de variables dans le code original. Dans la deuxième approche, l’exécution du code génère en même temps la solution et les dérivées mais nécessite un code de bas niveau (C++, FORTRAN) alors que la seconde est applicable pour tous les langages.

4. La formulation de Lagrange (1.34) peut être utilisée directement et ainsi un système de N + 1 équations peut être mis en place en dérivant le Lagrangien par rapport aux variables aléatoires et par rapport au multiplicateur de Lagrange pour la contrainte H(u) < 0. Si la fonction d’état limite est polynomiale, le système d’équation non linéaire peut être résolu par la décomposition sur les bases de Gröbner.

La figure (1.6) illustre sur un cas simple (calcul de la dérivée de sin(x2 + 3x) au point

x = 2) ces différentes méthodes pour le cas d’un pas de différentiation h volontairement très petit afin d’atteindre les problèmes de virgule flottante.

(a) Valeur du gradient pour de grand pas de h (b) Valeur du gradient pour de petit pas de h

Fig. 1.6 – Évaluation du gradient suivant différentes méthodes.

La méthode de différentiation automatique reste exacte et la méthode par variable complexe n’est pas affectée par la soustraction de nombres voisins. En revanche, la mé- thode complexe diverge complètement quand h augmente. Une différence est alors trouvée sur les méthodes par différence finie. La différence finie progressive souffre dans un pre- mier temps de l’erreur due à la soustraction de nombres codés en virgule flottante proches et, dans un deuxième temps, de l’erreur de l’approximation en O(h). La différence finie centrée est aussi touchée par ces problèmes de soustraction mais ensuite, pour des pas

1.4. MÉTHODES DE FIABILITÉ : LE COUPLAGE MÉCANO-FIABILISTE 43

h convenables, l’erreur en O(h2) est infime. La taille du pas h, pour ce cas élémentaire

doit être petit pour espérer apercevoir ces phénomènes mais dans le cas de l’évaluation de la fonction d’état par un code EF, la succession des différentes opérations amplifie le problème si bien que l’erreur commise sur une différence finie progressive peut se ressentir pour des pas de l’ordre de l’écart-type de la variable. La méthode des différences finies reste malheureusement la seule applicable dés lors que nous ne disposons pas des sources du code évaluant la fonction d’état limite. Les codes de calcul par éléments finis sont com- plexes et/ou fermés, l’évaluation de la réponse avec une variable de base complexe n’est souvent jamais possible et la différentiation automatique nécessiterait un code adjoint et des stockages de résultats intermédiaires importants. Elles seront tout de même utilisées dans le cas de l’expression d’une fonction d’état limite explicite dans la dernière partie de ce chapitre, puisque la différentiation automatique d’une surface de réponse s’effectue aisément pour le peu d’opération effectuée.