Une approche tensorielle à objets pour la discrétisation EF en calcul de structure R. SAAD a, D. EYHERAMENDY b a. Laboratoire de Mécanique et d Acoustique (LMA), CNRS UPR 7051, Marseille, France b. Laboratoire de Mécanique et d Acoustique (LMA), CNRS UPR 7051, Ecole Centrale Marseille, France Résumé : Les problèmes qui se posent aujourd'hui en mécanique numérique et domaines connexes sont complexes, et impliquent de plus en plus souvent plusieurs physiques à différentes échelles de temps et d espace. Leur traitement numérique est en général long et difficile d où l intérêt d avoir accès à des méthodes et outils facilitant l intégration de nouveaux modèles physiques dans les outils de simulation. Dans cet article, nous proposons un cadre de calcul formel à objets pour la dérivation de formulations éléments finis et l intégration automatique des formes élémentaires dans un code de calcul éléments finis. La méthode est basée sur la dérivation des formes discrètes d un problème variationnel, ici dans un contexte éléments finis, et leur intégration automatique dans un code de calcul. Abstract : The problems occurring today in computational mechanics and related domains are complex, and may involve several physics at different time and space scales. The numerical treatment of a complex problems is in general though and time consuming. In this context, the interest to develop methods and tools to accelerate the integration of new formulations into simulation tools is obvious. In this paper, we present a symbolic object-oriented framework for the derivation of finite elements formulations, and the automatic integration of the elemental contributions description into a finite element code. The method is based on the symbolic derivation of the elemental contributions of the variational statement and their automatic integration into a finite element code. Mots clefs: Eléments finis, orienté objet, analyse tensorielle, discrétisation automatique d EDP. 1 Introduction Jusque dans les années 90, les programmes éléments finis étaient constitués de plusieurs milliers de lignes de code généralement écrit en FORTRAN. Les problèmes d'ingénierie qui sont résolus aujourd'hui sont de plus en plus complexes. Il peut s'agir de traiter plusieurs physiques, et/ou plusieurs échelles d'espace et de temps... Dans les années 90, l'application de la conception orientée objet s'est avérée être très efficace pour le développement de programmes flexibles pour le développement à grande échelle dans un contexte industriel. Parmi les pionniers, Fenves [1] a décrit les avantages de la programmation orientée-objet dans le cadre des éléments finis. Depuis cette origine, la programmation orientée objet a été largement appliquée à tous les domaines du calcul en mécanique (voir par exemple Mackerle [2] ou Dubois-Pélerin [6] et références incluses). Assez récemment, des auteurs ont proposé différentes implémentations basées sur des approches à objets avancées (Java ou C#) dans différents domaines de la mécanique : Vanderheyden [10] et Riley [11] en mécanique des fluides, Nikishkov [12] en mécanique de la rupture, Eyheramendy [13] en calcul parallèle de dynamique de fluide et en mécanique des solides, Baudel [16] en électromagnétisme, Hauser [17] ou Mackie [8] et Heng [9] pour le calcul parallèle en mécanique. Notez que de nombreux auteurs ont préconisé l'utilisation de Java et ont comparé ses performances à d autres langages de programmation (langage C): Nikishkov, Bull [18], Hauser [17], Eyheramendy [14]. Toutefois, ces codes traditionnels de calcul, y compris les outils industriels n'offrent pas toujours toute la flexibilité pour s attaquer aux défis des problèmes multi- 1
physiques et multi-échelles qui se posent dans l' industrie et la recherche. Afin d aider au développement d outils de simulation, de nouvelles approches basées sur la calcul symbolique ont été proposées afin d automatiser l'élaboration de modèles éléments finis, y compris pour la partie de discrétisation. Ces approches consistent généralement à construire automatiquement les matrices élémentaires et à les intégrer dans des codes plus classiques ou dans des bibliothèques d'éléments finis. Les exemples les plus avancés sont : Eyheramendy [3], Logg [4], Korelc [5]. D autre part, le code Comsol Multiphysics suit en quelque sorte une stratégie similaire, mais les algorithmes liés à la résolution éléments finis restent imposés pour la résolution. Il est quasi indispensable d avoir accès à tous les niveaux de l algorithmique pour résoudre de nouveaux problèmes. Dans ce travail, nous proposons une approche à objets pour développer des schémas de discrétisation (ici éléments finis) de formes variationnelles, permettant de gérer les formulations couplées en mécanique. L originalité du travail réside dans l utilisation d un cadre global basé sur le calcul tensoriel pour élaborer symboliquement les matrices élémentaires, et de son intégration dans un environnement à objets. La dernière phase de l approche consiste à intégrer automatiquement les contributions élémentaires dans un code de calcul classique. Dans le paragraphe 2, nous présentons une approche mathématique générique de dérivation du modèle éléments finis. Dans le paragraphe 3, nous décrivons le modèle orienté objet intégrant l approche développée. Dans le paragraphe 4, le schéma d intégration automatique des formes élémentaires obtenues sous forme symbolique est décrit. Dans le paragraphe 5, l'approche est illustrée sur l élasticité linéaire en milieu incompressible. 2 Une approche tensorielle pour la discrétisation par éléments finis Soit un espace de fonctions, on considère les formes et défini sur le produit des espaces et on considère le problème variationnel multiphysique suivant: Où désigne le nombre de termes de la fonctionnelle, le ème terme de cette fonctionnelle, la fonction test correspondant au ème ème terme, désigne le nombre de termes de la fonctionnelle, le terme de cette fonctionnelle et la fonction test dans le ème terme. On peut ramener la forme à une forme bilinéaire et la forme à une forme linéaire (par linéarisation si la formulation n est pas linéaire) donc le problème devient : est une forme bilinéaire, est une forme linéaire La méthode des éléments finis appliquée à l'équation (1) consiste à remplacer construits à partir de fonctions continues par morceau. On considère les approximations éléments finis classiques sur un élément : par une paire d espaces où termes variationnels de (1) : sont les fonctions d interpolation sur l élément. On peut donc écrire pour chacun des Où et sont respectivement les vecteurs élémentaires des inconnues nodales et des inconnues virtuelles nodales, est la matrice élémentaire correspondant à la discrétisation du terme, représente les interpolations des différents champs. 2
On peut montrer que se calcule explicitement en considérant les produits des champs (exprimés sous forme tensorielle) qui compose le terme variationnel. Il peut s exprimer sous la forme suivante : avec, représente le nombre de fonctions de base dans la discrétisation du champ s, est le nombre de facteurs dans la forme, est l operateur différentiel appliqué sur le champ, représente l ensemble des indices du terme autre qu un champ test ou un champ solution, correspond aux degrés de liberté, correspond au système de coordonnées de bases et représente l ensemble des indices dans la fonction discrétisée. Cette forme est assez générale pour représenter tout type de formes variationnelles (forme multilinéaire ou forme non linéaire) dont les termes de base sont des champs tensoriels. Remarque : L approche tensorielle sur laquelle est basé le modèle est valide quel que soit le système de coordonnées choisi à condition que la base de travail soit orthonormée. Il suffit de donner les expressions des opérateurs différentiels dans le système de coordonnées choisi. 3 Une approche orientée objet pour le traitement symbolique des éléments finis Dans ce paragraphe, nous présentons une hiérarchie des operateurs et nous décrivons les objets nécessaires aux manipulations symboliques pour la méthode des éléments finis. Tout d'abord, nous décrivons les classes nécessaires pour représenter tout type d'expression. Des classes supplémentaires sont nécessaires pour représenter les opérateurs différentiels (appliqué aux tenseurs) et les dérivées partielles appliquées à une fonction. La classe Tensor est la représentation mathématique d un tenseur. La méthode de discrétisation par éléments finis est programmée dans la classe FEDiscretization. Operator UnaryOperator BinaryOperator Field Integral Fraction DifferentialOperator PartialDerivative Product Sum Equal Figure 1: Hiérarchie des classes de l environnement symbolique La hiérarchie des classes qui est donné dans la figure 1 nous permet de représenter tout type d'expression. La classe Field représente un champ. Il peut être de type scalaire, vectoriel ou tensoriel. Un opérateur de types dérivés partielles peut être appliqué à ce champ. La classe Integral représente une intégrale. Elle est définie sur un domaine et possède un intégrant. Toutes les grandeurs numériques sont représentées dans la classe Fraction. Les expressions sont donc des sommes de produits gérées dans un arbre binaire représenté dans les classes Sum et Product. La classe Equal permet la représentation d une égalité d expressions, et donc d'une équation. La classe Tensor est la représentation mathématique des tenseurs. Elle contient les composantes du tenseur qui sont des expressions (arbre binaire de champs). Les opérations tensorielles du base sont effectuées dans cette classe: produit tensoriel, produit contracté, somme La classe FEDiscretization regroupe toutes les opérations nécessaires à écrire le schéma de discrétisation par éléments finis. Ceci est fait pour les fonctions solutions et tests. La construction du tenseur est générique. Dans ce travail, seules les expressions des opérateurs différentiels en coordonnées cartésiennes sont programmées, mais l extension à d autres systèmes de coordonnées serait naturelle (par exemple en dérivant la classe FEDiscretisation pour chacun des systèmes de coordonnées). 3
4 Génération automatique de contributions élémentaire dans un environnement à objets La classe CodeCompiler gère l intégration des formes élémentaires dans le code de calcul FEMJava (voir Eyheramendy [14]). Les formes symboliques obtenues sont introduites dans un code élément finis classique, en respectant, d une part, les syntaxes du langage de programmation, et d autre part, le schéma algorithmique du code (voir Figure 2). A ce stade, seules les contributions élémentaires sont intégrées dans le code. On pourrait très bien imaginer étendre la génération de code à la partie algorithme de la résolution du problème. Figure 2 : Intégration des formes élémentaires dans un code Eléments finis 5 Application à une formulation de l élasticité linéaire pour un milieu incompressible 5.1 Approche tensorielle et approche symbolique On considère le problème d élasticité linéaire pour un milieu incompressible: Trouver déplacement et paramètre pression avec tels que : + Conditions de bords On cherche la solution approchée du problème sous la forme suivante (formulation de Galerkin stabilisée par ajout de termes de type moindres-carrés -voir Franca [20]): Où est un paramètre de stabilisation numérique. A titre d illustration, on considère le premier terme de la formulation : La matrice élémentaire de la relation (2) s écrit. Dans le cadre de l algèbre tensorielle classique, la convention d Einstein s applique pour les indices et. La matrice élémentaire est de dimension (interpolation trilinéaire pour 3 degrés de liberté par nœud). 4
Après évaluation symbolique, on obtient la matrice élémentaire dont certains termes sont explicités dans la Figure 3. Celle-ci correspond bien à la forme donnée ci-dessus. 1,1=[2.0*mu*(dN1_dx1*dN1_dx1 + 0.5*(dN1_dx2)*0.5*(dN1_dx2) + 0.5*(dN1_dx3)*0.5*(dN1_dx3) + 0.5*(dN1_dx2)*0.5*(dN1_dx2) + 0.5*(dN1_dx3)*0.5*(dN1_dx3))]; 1,2=[2.0*mu*(0.5*(dN1_dx2)*0.5*(dN1_dx1) + 0.5*(dN1_dx2)*0.5*(dN1_dx1))]; 1,23=[2.0*mu*(0.5*(dN1_dx2)*0.5*(dN8_dx1) + 0.5*(dN1_dx2)*0.5*(dN8_dx1))]; 1,24=[2.0*mu*(0.5*(dN1_dx3)*0.5*(dN8_dx1) + 0.5*(dN1_dx3)*0.5*(dN8_dx1))]; 24,1=[2.0*mu*(0.5*(dN8_dx1)*0.5*(dN1_dx3) + 0.5*(dN8_dx1)*0.5*(dN1_dx3))]; 24,2=[2.0*mu*(0.5*(dN8_dx2)*0.5*(dN1_dx3) + 0.5*(dN8_dx2)*0.5*(dN1_dx3))]; 24,23=[2.0*mu*(0.5*(dN8_dx2)*0.5*(dN8_dx3) + 0.5*(dN8_dx2)*0.5*(dN8_dx3))]; 24,24=[2.0*mu*(0.5*(dN8_dx1)*0.5*(dN8_dx1) + 0.5*(dN8_dx2)*0.5*(dN8_dx2) + 0.5*(dN8_dx1)*0.5*(dN8_dx1) + 0.5*(dN8_dx2)*0.5*(dN8_dx2) + dn8_dx3*dn8_dx3)]] Figure 3 : Vue partielle des termes de la matrice sous forme symbolique 5.2 Application au cisaillement d un bloc d élastomère On considère l exemple d un bloc en élastomère encastré dans un massif rigide cisaillé sur sa surface supérieure (Figure 4). Le coefficient de Lamé est pris égal à 1,25.Les solutions en déplacement et pression sont données dans les figures 5 et 6. Figure 4 : Détails du problème Figure 5 : Déformations du solide cisaillé Figure 6 : Isopressions 6 Conclusion Dans cet article, nous avons présenté les principes d'un cadre global pour générer sous forme symbolique des formes élémentaires de la méthode des éléments finis dans un environnement à objets. Les principes de discrétisation éléments finis basés sur l analyse tensorielle sont décrits. Le cadre présenté est structuré au sein d'un environnement orienté objet. D autres types schémas de discrétisation pourraient être développés en utilisant une approche similaire. Le schéma d intégration automatique des formes élémentaires dans un code éléments finis est présenté. L'approche est illustrée sur l'exemple formulation variationnelle pour les équations de l élasticité pour un milieu incompressible. Ce problème mixte permet de dire que l approche peut être appliqué à des problèmes multi-champs (problèmes couplés). La formulation est intégrée à un code 5
élément fini traditionnel écrit en Java [19]. Cette approche peut être étendue à un ensemble d algorithmes numériques nécessaires pour obtenir un outil de simulation. Nous projetons d étendre à court terme cette approche au cadre Lagrangien. Ce type d'approche vise à définir un concept de niveau d'abstraction pour automatiser le développement d outils de calcul correspondant à un problème donné. Cette approche générique ouvre de nouvelles voies dans la conception de codes basés sur les approches mathématiques et non plus sur de simples applications. References [1] G.L. Fenves, Object-Oriented programming for engineering software development, Engineering with Computer, 6, 1-15, 1990. [2] J. Mackerle, Object-oriented programming in FEM and BEM: a bibliography (1990-2003), Advances in Engineering Software, 35, 325-336, 2004. [3] D. Eyheramendy, Th. Zimmermann, Object-oriented finite elements: III. Theory and application of automatic programming, Comput. Methods Appl. Mech. Engrg., 154, 41-68, 1998. [4] A. Logg, Automating the Finite Element Method, Arch Comput Methods Eng., 14, 93-138, 2007. [5] J. Korelc, Multi-language and Multi-environment Generation of Nonlinear Finite Element Codes, Engineering with Computers, 18, 312-327, 2002. [6] Y. Dubois-Pelerin and Th. Zimmermann, Object-oriented finite element programming: III An efficient implementation in C++, Computer Methods Appl. Mech. Eng., 108(2), 165-183, 1993. [7] G.P.Nikishkov, Object-oriented design of a finite element code in Java, Computer Modeling in Engng and Sciences, 11, 81-90, 2006. [8] R.I. Mackie, Using Objects to handle complexity in Finite Element Software, Eng. with computers, 13, 99-111, 1997. [9] B.C.P. Heng and R.I. Mackie, Design Patterns in Object-Oriented Finite Element Programming, in Proceedings of the Fifth International Conference on Engineering Computational Technology, B.H.V. Topping, G. Montero and R. Montenegro, (Editors), Civil-Comp Press, United Kingdom, 2006. [10] W.B. VanderHeyden, E.D. Dendy and N.T. Padial-Collins, CartaBlanca-a pure-java, componentbased systems simulation tool for coupled nonlinear physics on unstructured grids-an update, Concurrency and Computation: Practice and Experience, 15, 431-458, 2003. [11] C.J. Riley, S. Chatterjee and R. Biswas, High-performance Java codes for computational fluid dynamics, Concurrency and Computation: Practice and Experience 15, 395-415, 2003. [12] G.P. Nikishkov and H. Kanda, The development of a Java engineering application for higher-order asymptotic analysis of crack-tip fields, Advances in Engineering Software, 30, 469-477, 1999. [13] D. Eyheramendy, Object-oriented parallel CFD with JAVA, 15th International Conference on Parallel Computational Fluid Dynamics, Eds. Chetverushkin, Ecer, Satofuka, Périaux, Fox, Ed. Elsevier, 409-416, 2003. [14] D. Eyheramendy and F. Oudin, Object-oriented finite elements: From Smalltalk to Java, In Trends in Engineering Computational Technology Eds. M. Papadrakakis and B.H.V. Topping, Saxe-Cobourg Publications, Chap. 2, (2008) pp. 17-40. [15] R. Saad and D. Eyheramendy, An object-oriented framework for automated computer-aided finite element derivation, ECT 2010, 14-17 Sept. 2010, Valencia, Spain. [16] L. Baduel, F. Baude, D. Caromel, C. Delbé, N. Gama, S. El Kasmi and S. Lanteri, A parallel objectoriented application for 3-D electromagnetism, ECCOMAS, Jyväskylä, Finland 2004. [17] J. Häuser, T. Ludewig, R.D. Williams, R. Winkelmann, T. Gollnick, S. Brunett and J. Muylaert, A test suite for high-performance parallel Java, Advances in Engineering Software, 31, 687-696, 2000. [18] J.M. Bull, L. A. Schmith, L. Pottage and R. Freeman, Benchmarking Java against C and Fortran for Scientific Applications, Joint ACM JavaGrande ISCOPE 2001 Conference, Stanford Universtity, June 2-4, 2001. [19] D. Eyheramendy, R. Saad et F. Oudin Advanced object-oriented paradigms for parallel computational mechanics, Proceedings of the 2 nd International Conference on Parallel, Distributed, Grid and Cloud Computing for Engineering, B.H.V. Topping, J.M. Adam, F.J. Pallarés, R. Bru and M.L. Romero, (Editors), Civil-Comp Press, Stirlingshire, Scotland, 2011. [20] L.P. Franca and T.J.R. Hughes, Two classes of mixed finite element methods, Comput. Methods Appl. Mech. Engrg., 69, 89-129, 1988. 6