Implémentation d'éléments isogéométriques dans
Abaqus et développement d'outils de pré-et
post-traitement dédiés

Arnaud Duval, Hassan Al-Akhras, Florian Maurin, Thomas Elguedj

<figure><img src="image_1.png" /></figure>

To cite this version:

Arnaud Duval, Hassan Al-Akhras, Florian Maurin, Thomas Elguedj. Implémentation d'éléments isogéométriques dans Abaqus et développement d'outils de pré-et post-traitement dédiés. 11e colloque national en calcul des structures, CSMA, May 2013, Giens, France. hal-01717833

HAL Id: hal-01717833

https://hal.science/hal-01717833v1

Submitted on 26 Feb 2018

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons CC0 1.0 - Universal - International License
# Implémentation d'éléments isogéométriques dans Abaqus et développement d'outils de pré- et post-traitement dédiés

Arnaud DUVAL<fnref n="1" />, Hassan AL-AKHRAS<fnref n="2" />, Florian MAURIN<fnref n="3" />, Thomas ELGUEDJ<fnref n="4" />

Université de Lyon, CNRS, INSA-Lyon, LaMCoS UMR5259, F-69621, France

**Résumé** — L'analyse isogéométrique est une technique de discrétisation d'équations aux dérivées partielles. Elle est basée sur des fonctions de forme NURBS, identiques à celles utilisées en CAO. Ceci permet notamment, contrairement à la discrétisation par la méthode des éléments finis, de conserver la géométrie initiale lors du raffinement de maillage.

Afin d'utiliser cette technique au sein du code de calcul Abaqus, un paquet logiciel nommé abqNURBS, disponible sous licence libre CeCILL a été développé. Il se compose :

- d'outils de pré-traitement permettant de créer une géométrie à l'aide du modeleur Rhino ou de GeoPDEs, de raffiner le maillage obtenu et d'appliquer des conditions aux limites ;

- de routines utilisateur permettant de disposer d'éléments NURBS lors d'un calcul Abaqus, tout en bénéficiant de la palette de lois de comportement disponibles en standard dans ce code ;

- d'outils de post-traitement permettant la génération d'un fichier de résultats exploitable par Abaqus CAE;

- d'extensions de l'interface graphique Abaqus CAE afin de pouvoir utiliser ces différents outils de façon interactive.

**Mots clés** — analyse isogéométrique, NURBS, Abaqus

# 1 Introduction

L'analyse isogéométrique est basée sur les primitives géométriques utilisées en CAO (NURBS, T-splines, ...). Elle permet notamment, en comparaison avec l'analyse par éléments finis, une modélisation précise de la géométrie qui ne se dégrade pas lors du raffinement de maillage et de meilleures propriétés d'approximation [3]. Afin de permettre son utilisation industrielle, il est nécessaire d'implémenter cette méthode au sein des codes de calcul habituellement utilisés en bureau d'études. De plus, des outils de pré- et post-traitement adaptés doivent être proposés afin de faciliter la mise en données et l'exploitation des résultats.

# 2 Implémentation

L'implémentation d'éléments NURBS a été réalisée au sein du code de calcul Abaqus par le biais d'une subroutine permettant à l'utilisateur de formuler ses propres éléments. Une subroutine nommée UELMAT (User Element with abaqus MATerial), disponible à partir de la version 6.9 d'Abaqus [1], permet en outre d'utiliser la bibliothèque de lois de comportement proposée par le logiciel pour l'implémentation d'éléments utilisateur.

Un calcul de structure à l'aide d'éléments NURBS nécessite des données d'entrée supplémentaires par rapport à un calcul par éléments finis (voir tableau 1). À partir de l'indice d'une fonction de forme et d'une direction paramétrique, le tableau INC renvoie la coordonnée NURBS [4]. Le tableau IEN renvoie l'indice global de la fonction de forme à partir de l'indice local et du numéro d'élément. Enfin, le tableau ID retourne la position dans l'équation matricielle en fonction de l'indice de fonction de forme global

<footnote n="1">¹ arnaud.duval@insa-lyon.fr</footnote>

<footnote n="2">² hassan.al-akhras@insa-lyon.fr</footnote>

<footnote n="3">³ florian.maurin@epfl.ch</footnote>

<footnote n="4">⁴ thomas.elguedj@insa-lyon.fr</footnote>
<table><caption>Tableau 1 – Données nécessaires à un calcul EF ou IGA. Les données d'entrée supplémentaires figurent en gras</caption><thead><tr><th>Analyse par éléments finis</th><th>Analyse isogéométrique NURBS</th></tr></thead><tbody><tr><td>Coordonnées nodales<br>Type d'élément<br>connectivité des éléments (ID, IEN, LM)<br>règle d'intégration numérique</td><td>coordonnées des points de contrôle<br>degré polynomial<br>connectivité des éléments (ID, IEN, LM, INC)<br>règle d'intégration numérique<br><b>Poids des points de contrôle</b><br><b>Vecteur knot</b></td></tr></tbody></table>

et du numéro du degré de liberté considéré. Ainsi, si les coordonnées des points de contrôle du maillage NURBS et la table de connectivité IEN peuvent être passés via les fichiers d'entrée classiques d'Abaqus, les poids des points de contrôle ainsi que les vecteurs knot sont entrés dans un fichier supplémentaire, dont la lecture et la gestion des données sont effectuées par une seconde subroutine utilisateur nommée UEXTERNALDB, appelée préalablement à l'exécution du calcul. Le tableau IEN est construit lors du pré-traitement à l'aide de la matrice INC. Lors du calcul de la matrice de raideur, seules certaines composantes de INC sont nécessaires. On peut dès lors se contenter de passer ces composantes via le fichier d'entrée supplémentaire sous la forme d'un tableau NIJK.

La figure 1(a) montre le déroulement d'un calcul pour une structure composée d'un seul patch NURBS. Les blocs verts indiquent les différences par rapport à calcul EF classique. Les blocs bleus sont identiques, qu'il s'agisse d'analyse isogéométrique ou d'analyse par éléments finis. La figure 1(b) montre la proposition de Hugues et al. [4] d'implémentation d'un calcul faisant intervenir plusieurs patchs. Celle-ci implique une boucle supplémentaire sur les patchs qui n'a pas d'équivalent en éléments finis. Cette stratégie est donc impossible à mettre en place dans un code existant pour lequel l'accès au code source est limité. Par simplicité, nous nous contentons d'un couplage $C^0$ entre les patchs. Le collage $C^0$ est identique au collage $C^0$ utilisé en éléments finis (figure 2). Le couplage $C^1$ ne pose toutefois pas de difficulté supplémentaire en terme de structure de données. Les étapes de mise en données d'un calcul multi-patchs sont les suivantes :

- le pré-traitement est réalisé pour chaque patch séparément ;

- une renumérotation globales des points de contrôle et des éléments est effectuée en fusionnant les points de contrôle identiques aux interfaces entre patchs ;

- les fichier .inp est généré pour l'ensemble du domaine comme s'il s'agissait d'un unique patch ;

- les informations propres à chaque patch (vecteur knot, etc.) sont passés dans le fichier .NB.

Les figures 3 et 4 donnent des exemples de fichiers d'entrée .inp et .NB pour une analyse isogéométrique multi-patchs.

## 3 Pré- et post-traitement

La construction de géométries NURBS complexes ne peut être faite qu'à l'aide d'outils dédiés. Pour ce faire, des extensions du logiciel Rhino ont été développées afin de pouvoir imposer des conditions aux limites sur une géométrie, créer des géométries NURBS 3D volumiques (Rhino étant à la base un outil dédié au rendu, il ne peut, en standard, modéliser que la peau d'une géométrie 3D) et générer les fichiers de données nécessaire au calcul Abaqus. Une extension au logiciel GeoPDEs [2] a également été développée afin de créer les fichiers d'entrée nécessaires à Abaqus en ligne de commande.

Les résultats du calcul étant définis sur des éléments NURBS, ils ne peuvent être visualisés directement par l'interface graphique Abaqus CAE, cette dernière ne gérant que les éléments disponible en standard dans le code de calcul. Un script de post-traitement a donc été développé afin de projeter les résultats calculés sur un maillage NURBS vers un maillage éléments finis. Chaque élément NURBS est subdivisé en un maillage éléments finis, les fonctions de forme NURBS étant utilisées pour interpoler les grandeurs définies aux points de contrôle du maillage NURBS (forces et déplacements) vers les nœuds du maillage EF projeté. Les grandeurs définies aux points de Gauss des éléments NURBS (contraintes, déformations, ...) sont quant à elles préalablement projetés par une méthode de moindres carrés globale aux points de contrôle NURBS. Cette étape est coûteuse en temps de calcul car elle fait intervenir l'as-
<figure><img src="image_3.png" /><figcaption>Fig. 1 – Déroulement d’un calcul par éléments NURBS dans le cas d’un unique patch (a) et d’une géométrie multi-patchs (b) (d’après [4]).</figcaption></figure>

<figure><img src="image_4.png" /><figcaption>Fig. 2 – Collage $C^0$ entre deux patchs.</figcaption></figure>
* HEADING
** Job name: test.txt
** abqNURBS - Laboratoire de Mecanique des Contacts et des Structures - INSA-Lyon
* Part, name: Piece
* USER ELEMENT, NODES=ncpelt, TYPE=Up, COORDINATES=d, variables=size of SVARS, INTEGRATION=ngelt, TENSOR=PSTRAIN or THREED
1,2 for 2D, 1,2,3 for 3D
* Node, nset=AllNode -> list of control points
cpnb, X-coordinate, Y-coordinate, Z-coordinate
* Element, type=Up, elset=AllEls -> list of elements
eltnb, CP1, CP2, CP3, ...
* ELSET, ELSET=EltPatch1 -> set of all the elements
list of elements nb
* NSET, NSET=SetCPFacei -> set of control points used for Dirichlet BC
list of control points lying on the i-th face
* ELSET, ELSET=SetEltFacei -> set of elements used for Neumann BC
list of elements belonging to the i-th face
* UEL PROPERTY, ELSET=EltPatch1, MATERIAL=MAT
-> assign the material to the set of all elements
* End Part
** ASSEMBLY
* Assembly, name=Assembly
* Instance, name=I1, part=Piece
* End Instance
* End Assembly
** MATERIAL
* MATERIAL, NAME=MAT
* Elastic
Young's modulus value, Poisson's ratio value
* STEP, extrapolation=NO, NLGEOM=YES or NO
* Static
** BOUNDARY CONDITIONS -> list of Dirichlet boundary conditions
* Boundary
I1. SetCPFacei, direction of the imposed BC, direction of the imposed BC, value imposed.
** LOADS -> list of Neumann boundary conditions
* Cload
I1. SetFacei, key for selecting element face, value imposed.
** OUTPUT REQUESTS
* node file, frequency=1
U, RF, CF
* el file, frequency=1
SDV
* End Step

<caption>Fig. 3 – Exemple de fichier .inp pour une analyse isogéométrique basée sur les fonctions NURBS.</caption>

* DIMENSION
2 or 3
* total nb of elements
nelt
* nb of patches
nbpatch
* nb of elements per patch
neltp1, neltp2, ...
* data for patch i
number of knots for parametric direction j
knot vector for parametric direction j
* NIJK array based on global domain element numbering
eltnb, nijk1, nijk2, nijk3
* list of CP weights based on global domain CP numbering
CPnb, weight

<caption>Fig. 4 – Exemple de fichier .NB pour une analyse isogéométrique basée sur les fonctions NURBS.</caption>
semblage et l'inversion de la matrice de masse du maillage NURBS. L'interface de programmation C++ d'Abaqus a donc été privilégiée par rapport à l'interface de programmation Python également disponible pour garantir un temps raisonnable de post-traitement.

# 4 Exemples d'étude

## 4.1 Déroulement complet

La création de la géométrie est réalisée avec le logiciel Rhino. Les géométries complexes sont réalisées par assemblage de plusieurs patchs (figure 5(a)). Les outils développés au sein du logiciel Rhino permettent de raffiner le maillage NURBS obtenu. La maillage est d'abord raffiné dans un patch donné (par augmentation du degré des fonction d'interpolation ou par insertion de knots) puis propagé aux patchs voisins de l'assemblage multi-patchs (figure 5(b)). La définition de l'analyse se fait à l'aide d'un plugin Rhino (figure 5(c)) permettant de définir des conditions limites sur la structure, soit en déplacement, soit en effort (figure 5(d)) et de stipuler des paramètres matériau et enfin de générer les fichiers d'entrée nécessaire à Abaqus. (figure 5(e)) Le lancement du calcul se fait de façon interactive dans Abaqus CAE par le biais d'une boîte de dialogue où l'utilisateur doit saisir le chemin de ses fichiers d'entrée (figure 5(f)). Une fois le calcul achevé, une phase de post-traitement doit être lancée depuis Abaqus CAE afin de projeter les résultats obtenus sur le maillage NURBS vers un maillage éléments finis exploitable par le module de visualisation fourni avec Abaqus (figure 5(g)). Pour ce faire, l'utilisateur doit préciser le chemin des fichiers de résultat (fichier .fil) et les options nécessaires à la projection (densité du maillage élément fini, utilisation des grandeurs définies aux points de Gauss et méthode de fusion des nœuds re-dondants). Un fichier de résultat standard au format .odb est alors obtenu, directement exploitable depuis l'interface Abaqus CAE. La projection sur le maillage éléments finis étant réalisée indépendamment pour chaque élément du maillage NURBS, l'option d'affichage « feature edges » d'Abaqus permet d'afficher les résultats en ne faisant figurer que les arêtes correspondant au maillage NURBS (figure 5(h)).

## 4.2 Exemples

La figure 6 illustre les résultats obtenus pour un calcul effectué sur une géométrie 3D constituée d'un seul patch. La comparaison porte sur les valeurs de la composante $\sigma_{33}$ du tenseur des contraintes. Les résultats obtenus à l'aide des éléments NURBS implémentés dans Abaqus concordent bien avec ceux obtenus par Hugues [3].

L'implémentation réalisée permet de prendre en compte différents types de non-linéarités : géométriques par le biais de la formulation des éléments qui permet la prise en compte des grands déplacements et matériau grâce à l'utilisation de la bibliothèques de lois de comportement d'Abaqus. Ainsi, la figure 7 représente un calcul en déformations planes d'un cylindre sous pression, dans le cas d'un matériau élastique ou parfaitement plastique.

# 5 Conclusion

Une implémentation de l'analyse isogéométrique basée sur les NURBS a été réalisée au sein du code de calcul Abaqus. Elle permet de prendre en compte les géométries comportant un seul ou plusieurs patchs, par le biais d'un continuité $C^0$ aux frontières des patchs. L'utilisation d'une subroutine utilisateur UELMAT donne un accès direct aux différentes lois de comportement disponibles dans Abaqus en petites et grandes déformations (NLGEOM). Des outils de post-traitement utilisant les interfaces Python/C++ d'Abaqus sont accessibles directement depuis l'interface d'Abaqus CAE afin de pouvoir visualiser les résultats obtenus. Enfin, des outils de pré-traitement ont été développés permettant la mise en données d'études 2D/3D *via* le logiciel Rhino ou *via* Matlab/GeoPDEs.

Les développements futurs viseront à introduire des degrés de liberté en température afin de pouvoir réaliser des études thermomécaniques. De plus, l'utilisation des fonctions d'interpolation NURBS permet d'assurer une continuité $C^1$ et donc d'utiliser des lois de comportement basées sur le gradient du tenseur de déformations. Enfin, l'implémentation de l'analyse isogéométrique basée sur l'extraction de Bezier est
<figure><img src="image_5.png" /><figcaption>(a) Définition d'une géométrie multipatch</figcaption></figure>

<figure><img src="image_6.png" /><figcaption>(b) Raffinement du maillage</figcaption></figure>

<figure><img src="image_7.png" /><figcaption>(c) Création d'une nouvelle analyse</figcaption></figure>

<figure><img src="image_8.png" /><figcaption>(d) Création des conditions limites</figcaption></figure>

<figure><img src="image_9.png" /><figcaption>(e) Création des fichiers d'entrée pour Abaqus</figcaption></figure>

<figure><img src="image_10.png" /><figcaption>(f) Lancement interactif du calcul depuis Abaqus</figcaption></figure>

<figure><img src="image_11.png" /><figcaption>(g) Projection des résultats sur un maillage élémentsofins</figcaption></figure>

<figure><img src="image_12.png" /><figcaption>(h) Visualisation des résultats sur le maillage NURBS</figcaption></figure>

Fig. 5 – Différentes étapes d'une analyse isogéométrique basée sur les NURBS.
<figure><img src="image_13.png" /><figcaption>Fig. 6 – Exemple de calcul 3D sur une géométrie de type « fer à cheval » constituée d'un seul patch NURBS [3]. Comparaison entre le résultat obtenu par Hugues et la solution obtenue à l'aide des éléments implémentés dans Abaqus. La vue isocouleur représente la composante $\sigma_{33}$ du tenseur des contraintes.</figcaption></figure>

<figure><img src="image_14.png" /><figcaption>Fig. 7 – Contrainte de Von Mises dans le cas d'un cylindre soumis à une pression interne. R = 2 m, r = 1 m, P = 145 MPa, E = 200 000 MPa, ν = 0,3. La figure de gauche illustre le cas élastique et celle de droite le cas parfaitement plastique ($\sigma_Y = 200MPa$).</figcaption></figure>
envisagée. Les différents outils logiciels présentés sont développés sous licence CeCILL et disponibles à
l'adresse http://abqnurbs.insa-lyon.fr.

Références

[1] Dassault Systèmes, *Abaqus 6.9-EF online documentation*, 2009

[2] C. de Falco, A. Reali, R. Vazquez. *GeoPDEs, a research tool for Isogeometric Analysis of PDEs*, Advances in Engineering Software, vol. 42, 2020-1034, 2011

[3] T.J.R. Hughes, J.A. Cottrell, Y. Bazilevs. *Isogeometric analysis : CAD, finite element, NURBS, exact geometry and mesh refinement*, Computer Methods in Applied Mechanics and Engineering, 4135-4195, 2005.

[4] J.A. Cottrell, T.J.R. Hughes, Y. Bazilevs. *Isogeometric Analysis : Toward Intregration of CAD and FEA*, Wiley, 2009.