enfr

Amélioration des performances du recalage

27 mai 2010

par A. Assire et J.-M. Proix, EDF R&D / AMA

Le recalage des paramètres d’un modèle s’effectue dans Code_Aster grâce à la commande MACR_RECAL, qui propose plusieurs méthodes d’optimisation, et en particulier le classique algorithme de Levenberg-Marquardt. Les paramètres à identifier peuvent être des coefficients de lois de comportement, des chargements, des épaisseurs de coques,… ou tout autre paramètre de la modélisation. L’optimisation consiste à trouver les valeurs des paramètres permettant de minimiser l’écart entre la réponse numérique, (sous forme de n courbes), et les n courbes expérimentales.

Cette commande a été améliorée principalement en vue d’optimiser les performances.

Le calcul peut maintenant s’effectuer suivant deux modes :

  • DISTRIBUTION : lancer les calculs en mode distribué, c’est-à-dire simultanément, peut accélérer sensiblement la procédure en cas de ressources CPU disponibles : en effet, pour un problème de recalage à N paramètres, les N+1 calculs nécessaires pour la construction du gradient à chaque itération, sont complètement indépendants. Ce mode permet le lancement en interactif en utilisant les différents cœurs d’une machine locale, ou en batch sur un cluster de calcul par exemple, voire un mélange des deux. Ce mode est à privilégier dans le cas de nombreux paramètres, et/ou de calculs esclaves lents (par exemple du recalage sur des structures complexes).
  • INCLUSION : les calculs de gradient passent par un INCLUDE du fichier esclave. Ce mode est préférable dans le cas d’un calcul esclave rapide, par exemple pour identifier quelques paramètres d’une loi de comportement sur point matériel.

Deux critères d’arrêts classiques dans les algorithmes d’optimisation ont été ajoutés :

  • TOLE_FONC : si la variation en valeur absolue de la norme de la fonctionnelle entre deux itérations est inférieure à la valeur TOLE_FONC, la procédure s’interrompt ;
  • TOLE_PARA : si la variation de la norme de la différence des paramètres entre deux itérations est inférieure à la valeur TOLE_PARA, la procédure s’interrompt.

Pour améliorer encore les performances de l’identification des paramètres de lois de comportement, la commande de simulation sur point matériel, SIMU_POINT_MAT a été enrichie du mot-clé SUPPORT=’POINT’, consistant à appeler directement la routine d’intégration des comportements. Elle est utilisable en petites déformations, sans recherche linéaire (dans le cas contraire, il faut utiliser l’ancien mode de calcul : SUPPORT=’ELEMENT’). (cf. U4.51.12).

Les temps calculs sont nettement diminués : par exemple, les tests "compxxx" passent en moyenne de 70s à 9s.

Ces deux évolutions conduisent globalement à un facteur 10 à 20 sur les tests de recalage de coefficients de lois de comportement. A titre d’exemple, le test SSNA118A (recalage de 4 paramètres du comportement VISC_CIN2_CHAB sur 4 courbes) prenait sur une machine locale Linux :

  • 315s avec la version STA10.1
  • 24s avec les nouveaux développements (courbes ci-jointes).