Modulefpreviousupnextcontents[BIG][Normal][small]
Suiv.: 4 Tests conversationnels Sup.: 3 Introduction Préc.: 3 Introduction Table des matières


Résolution d'un problème par MODULEF

L'exemple suivant est simple et nous servira à montrer comment le résoudre par MODULEF en précisant les notations utilisées.

On commence par donner la formulation du problème, ensuite on indique la formulation variationnelle associée. L'approximation par éléments finis et son implémentation sont alors présentées, en indiquant les différentes étapes à enchainer. Pour ce faire, on considère le problème de Dirichlet décrit ci-dessous:

Formulation mathématique

Le problème s'écrit:

 

avec

f
, et
a
, i.e.,
a
, où est un sous-ensemble ouvert régulier de de frontière régulière.

La formulation variationnelle (ou faible) de ce problème est:

Trouver , l'espace des fonctions admissibles, tel que

 

pour tout .

Cette formulation variationnelle est le point de départ de la méthode des éléments finis.

Remarque: L'analyse détaillée des solutions des problèmes (3.1) et (3.2) n'est pas l'objet de ce papier aussi le lecteur pourra consulter par exemple "The Finite Element Method for Elliptic Problems" par P. G. Ciarlet (1978)).

A première vue, ce problème ne peut pas être résolu par MODULEF. Néanmoins, une analyse plus fine montre que l'on peut le considérer comme un problème de type thermique.

L'approximation par éléments finis

 

La méthode des éléments finis consiste à chercher une solution approchée dans un sous-espace de dimension finie. Pour résoudre le problème (3.2), on doit le poser dans cet espace discret, l'équation (3.2) devient:

Trouver la solution approchée telle que

 

pour tout , avec comme espace discret et définis par:

et

est l'espace des polynômes de degré plus petit ou égal à k, où k dépend de l'élément fini choisi.

Notations

Avant de revenir sur l'équation (3.3), nous introduisons les notations suivantes:

L'équation (3.3) s'exprime alors en fonction de ces quantités par:

Trouver avec , pour , tel que

 

pour tout tel que , .

A ce stade, l'obtention à partir de la formulation (3.3) de la formulation (3.6) est tout à fait générale (indépendante de MODULEF). Il reste maintenant à définir les opérateurs mathématiques utiles et à trouver leur correspondant dans MODULEF.

Rappelons d'abord le problème thermique classique, tel qu'il est décrit dans
[4] [Guide Modulef - 7], qui est complètement résolu par MODULEF, et pour lequel la matrice élémentaire de rigidité, la matrice élémentaire de masse et le second membre élémentaire sont donnés par:

 

Alors, si on pose:

[k] = [I] : la conductivité thermique ([I] : matrice unité),
g=0 : le coefficient de transfert à travers ,
: la densité, et
: les forces sur la frontière.

dans le cas classique, on retrouve les matrices et seconds membres élémentaires du problème de Dirichlet que l'on cherche à résoudre, c'est-à-dire:

 

Ainsi l'équation (3.6) de notre problème, identifié comme un problème thermique simplifié, peut être résolue entièrement par MODULEF.

Remarque: La liste et la description des éléments finis pour les problèmes thermiques présents dans le code MODULEF est donnée dans [Guide Modulef - 7].

Avec ces notations, (3.6) devient:

Trouver avec , , tel que

 

pour tout , tel que , , ceci donne un système linéaire de matrice définie positive.

Assemblage des matrices

Soit la matrice associée à l'élément T, alors

est la matrice globale. Cette opération, l'assemblage, est indépendante de la structure de .

Il y a deux interprétations possibles pour cet exemple: si est la matrice du système à résoudre, on peut écrire:

  1. ou, de manière équivalente
  2. telle que

Du point de vue mathématique, ces formules sont identiques. Néanmoins, elles donnent lieu, du point de vue du calcul sur ordinateur, à deux problèmes différents. Dans les deux cas, il est nécessaire de calculer les masses élémentaires et les rigidités élémentaires , ensuite soit on:

  1. ou on
L'une ou l'autre de ces possibilités peut être adoptée selon la nature du problème.

Poursuite des calculs

Après avoir assemblé les matrices, l'équation (3.9) devient:

Trouver avec , pour tout , tel que

 

pour tout avec , .

Comme est de la forme:

on peut décomposer (momentanément) et en

 

est une matrice.

Avec cette décomposition, en utilisant le fait que et sont dans , l'équation (3.10) devient:

 

Ainsi, pour calculer , il faut résoudre (3.12), ou seulement:

 

est un vecteur de dimension , dont les composantes sont les premières composantes de .

Remarques:

  1. Du point de vue mathématique, la relation (3.12) entraîne (3.13), aussi, pour obtenir u, il est possible de résoudre (3.12) ou (3.13). Toutefois, pratiquement, il est préférable de résoudre (3.12) plutot que (3.13), car (3.13) nécessite une seconde numérotation des degrés de liberté pour tenir compte de la condition de frontière imposée.
  2. Le calcul direct de (équation (3.12)), en assemblant les éléments , nécessite de distinguer les éléments de de ceux de , pour prendre en compte la condition .

    Il est donc plus simple de calculer en premier puis , c'est la prise en compte des conditions aux limites imposées.

En suivant cette analyse, on a déterminé les différents opérateurs mathématiques et de ce fait, le problème se décompose en les étapes suivantes:

  1. maillage du domaine,  
  2. choix des éléments finis,  
  3. données et calcul des matrices et seconds membres élémentaires,
  4. résolution du problème linéaire, et
  5. présentation des résultats.

Remarque: Les étapes 1) et 2) dépendent de la formulation variationnelle choisie.

Chaque étape est décomposée en sous-étapes. La décomposition de chaque étape, tout comme le choix des modules assurant le calcul des opérateurs mathématiques, sont présentés dans la suite de cette section.

Terminologie MODULEF

Suivent quelques mots usuellement utilisés par la suite:

Inconnue variationnelle:
inconnue du problème continu;
Degré de liberté (d.l.):
inconnue du système discret;
Mnémonique:
associé à un d.l. afin de le définir précisément, par exemple: VN est une valeur a un noeud, DX est la dérivée par rapport à x , etc. La liste complète est dans le tableau MAI8 de la structure de données (S.D.) MAIL (voir [Guide Modulef - 2] pour la description des structures de données);
Noeud:
support d'un (ou de plusieurs) degré(s) de liberté;
Point:
définit la géométrie des éléments;
Sommet:
sens habituel;
Numéro de sous-domaine:
numéro associé à chaque matériau, il permet de distinguer les matériaux différents et les traitements différents d'un même matériau;
Numéro de référence:
notion similaire pour distinguer les frontières (surfaces en , lignes et points en ou ).

Ces attributs servent à traiter par lot des conditions aux limites, des forces ou à définir les lignes (surfaces) courbes.

  1. Numéros à prévoir:

    Sur la figure 3.1, le corps est fixé sur la frontière AF, et chargé le long de la frontière CD. Il comprend deux matériaux, un trou circulaire et un demi-trou.

    Il y a donc deux sous-domaines:

    1. le domaine ABEF en cuivre, et
    2. le domaine BCDE en fer,

    et au moins quatre numéros de référence:

    1. pour définir les cercles formant le bord des trous
    2. pour définir la portion de la frontière fixée, et
    3. pour définir le côté DC support du chargement.

    Remarque: Les lignes AC et FD n'ont pas de numéros particuliers car elles ne supportent aucunes conditions particulières.

     
    Figure: Domaine encastré et chargé 

  2. Noeuds et points:

    Sur la figure 3.2 on voit un triangle P2 droit et un triangle P2 courbe. Un élément droit est un élément dont les points sont les sommets. Un élément courbe est un élément dont les points sont les sommets et d'autres points non sommets. Dans le cas du triangle P2, l'élément droit est défini par 3 points alors que le courbe a 6 points, tout deux ayant 6 noeuds.

     
    Figure: Eléments P2 triangulaires 

Relation entre opérateurs mathématiques et programmes de calcul

 

Les différents opérateurs mathématiques introduits pour décomposer le problème exemple sont, du point de vue pratique, réalisés par un programme de calcul ou module. Ces modules communiquent entre eux via les structures de données (S.D.). Dans cette section, nous donnons le détail de ces correspondances.

Etape 1:
Maillage du domaine

Le maillage doit respecter les règles générales des maillages éléments finis. Si et sont éléments de alors:

L'implémentation d'un mailleur n'est pas triviale (cf. par exemple [George-1986]) et de plus, même si les opérateurs nécessaires sont inclus dans le code, la construction du maillage demande un certain temps. Notons qu'un bon maillage est une condition importante pour obtenir de bons résultats numériques.

La technique de génération de maillages de MODULEF est arborescente (ascendante et descendante), le domaine est décomposé en sous-domaines géométriquement plus simples. Ces derniers sont manipulés par des opérateurs simples (symétrie, rotation, translation, etc.) et recollés ensuite de façon à obtenir le maillage final. Dans le cas bidimensionnel, le module APNOPO est à utiliser, on trouvera une description des techniques et des différents modules possibles dans [Guide Modulef - 3].

Le maillage résultat est stocké dans une S.D. NOPO. Cette S.D. contient la description du maillage: les éléments, les noeuds (sommets ou non), les coordonnées des sommets, ..., qui ont été créés.

A ce stade, on n'a pas encore défini l'interpolation (si ce n'est la numérotation des noeuds), c'est l'objet de l'étape suivante.

Exemple:

Considérons l'élément: triangle P2 courbe. Lors de l'étape de maillage, les noeuds 1 à 6 et les coordonnées des 3 sommets sont connus. Ensuite (étape 2), les coordonnées des noeuds milieux d'arêtes seront calculées.

Le dessin du maillage construit est obtenu grâce au module TRNOPO
[4] [Guide Modulef - 6], décrit plus bas.

Etape 2:
Choix des éléments finis

Dans cette étape, on prend en compte les fonctions d'interpolation. Ceci se fait via le module COMACO [Guide Modulef - 4]. Deux cas existent:

  1. L'élément fini choisi existe dans l'une des bibliothèques suivantes:
    THER
    Thermique [Guide Modulef - 7]
    ELAS
    Elasticité linéaire [Guide Modulef - 7]
    ELNL
    Elasticité non linéaire [97]

  2. L'élément fini choisi n'existe pas, dans ce cas
    • il peut être incorporé dans l'une des bibliothèques: THER, ELAS, ELNL, FLUI, ou PERS (opération décrite dans [95]), après quoi on se retrouve dans le premier cas, ou
    • il peut être décrit directement comme entrée du module COMACO avec des "cartes" données.

Les résultats de ce calcul se trouvent dans les deux structures de données MAIL et COOR. La S.D. MAIL contient la description du maillage (noeuds, points, etc.) et celle de l'interpolation (nombre et nom des inconnus variationnelles, mnémoniques, etc.). La S.D. COOR contient les coordonnées des points (sommets ou non).

Note: La S.D. COOR ne contient pas les coordonnées des noeuds en sortie de COMACO. Si on reprend le cas des éléments triangle P2 droit et P2 courbe, dans le premier cas, la S.D. COOR contient les coordonnées des sommets alors que dans le second cas, elle contient celles des sommets et des milieux d'arêtes.

Etape 3:
Les données physiques et le calcul des tableaux élémentaires

Cette étape a pour but de construire, élément par élément, les matrices et le second membre , , et . Ce calcul nécessite la connaissance des données physiques décrivant les matériaux, les efforts, etc. Dans cet exemple, cela correspond à f et a qui apparaissent dans l'équation. Toutes ces données doivent être connues lors de l'activation du module calculant les tableaux élémentaires.

Il y a deux possibilités:

  1. Pour le cas général (données non constantes), les données seront fournies par subroutines ou tableaux. Le module COFORC [Guide Modulef - 4] construit la S.D. FORC, qui indique comment les données seront fournies pour le calcul du second membre élémentaire. Le module COMILI
    [4][Guide Modulef - 4] construit la S.D. MILI, qui indique comment seront fournies les données pour le calcul des matrices élémentaires. Les tableaux élémentaires seront construits par le module THENEW
    [4] [Guide Modulef - 4].
  2. Quand les données, caractéristiques physiques, efforts, etc. sont constantes par sous-domaines ou par portions de frontière, caractérisés par un même numéro (de sous-domaine ou de référence), le module THERCT [14], dans le cas d'un problème thermique, et le module ELASCT [14] en élasticité remplacent COFORC, COMILI, et THELAS.

Dans tous les cas, il est possible de fournir ces valeurs par numéros de sous-domaine et/ou de référence, ce qui minimise le nombre de valeurs à fournir. Les résultats de cette étape consistent en la S.D. TAE qui contient les matrices et les seconds membres associés à tous les éléments du maillage.

Remarques:

  1. Cette étape dépend de la nature du problème. Les modules THENEW, THERCT et ELASCT conviennent dans le cas des problèmes de thermique ou d'élasticité linéaire. Ces modules peuvent également être adaptés pour la résolution de problèmes différents.

    D'autres modules correspondent à cette étape pour certains problèmes spécifiques (ex. COTAE pour un problème d'élasticité non linéaire en grandes déformations [97]; BIHAP1, BIHAP2 pour le problème biharmonique [93], etc.).

  2. Pour traiter un nouveau problème, il est souvent suffisant de construire la S.D. TAE à partir des S.D. MAIL et COOR, à partir des données relatives aux matériaux (les autres étapes étant inchangées).

Etape 4:
Résolution du système linéaire

Ce calcul est décomposé en plusieurs sous-étapes. Le principe général est le même quelque soit le cas, les différences sont liées à la méthode choisie. Le code MODULEF contient un grand nombre de méthodes de résolution des systèmes linéaires, parmi lesquelles on trouve:

Les matrices associées à une discrétisation de type éléments finis sont creuses. Afin de minimiser la place occupée, un stockage approprié est choisi:

Un problème non linéaire pourra souvent être vu comme une suite de problèmes linéaires, chacun de ceux-ci étant traité comme ci-dessous.

Choisir une méthode de résolution pour un système linéaire n'est pas simple et dépend fortement de la nature du problème à résoudre. Pour les systèmes simples, toutes les méthodes donnent de bons résultats. Quand il y a plusieurs systèmes à résoudre, par exemple de manière itérative, il y a des arguments en faveur des deux types de méthodes:

Pour analyser les différentes sous-étapes, on se place dans le cas d'un système linéaire traité par la méthode de Cholesky en mémoire centrale (m.c.).

  1. Construction des pointeurs
      On construit les pointeurs utiles au stockage profil en regardant tous les éléments du maillage, et on calcule la place nécessaire au stockage de la matrice. Le calcul proprement dit sera débuté uniquement si la place disponible est suffisante.

    Cette étape est faite par le module PREPAC [Guide Modulef - 5]. Le résultat est mis dans une S.D. MUA, qui ne contient pas encore la matrice mais uniquement les pointeurs.

  2. Assemblage
    Partant de la S.D. MUA créée au pas ci-dessus, et prenant la S.D. TAE contenant les tableaux élémentaires, les modules ASSMUA et ASEMBV assemblent respectivement les matrices et les seconds membres globaux, i.e., réalisent (voir l'équation (3.9)):
    et

    Les résultats de ces calculs constituent la S.D. MUA, contenant la matrice, et la S.D. B, contenant le second membre.

  3. Les conditions aux limites imposées
    Les conditions aux limites sont de deux sortes:
    1. celles incluses dans la formulation variationnelle, par exemple les conditions de Neumann ou de Fourier du problème thermique classique (voir [Guide Modulef - 7]: Introduction), et

    2. celles non prises en compte dans cette formulation, par exemple les conditions de Dirichlet.

    Le but de cette étape, divisée en deux parties, est de traiter ce deuxième cas.

    1. Construction de la S.D. BDCL
      La S.D. BDCL contient la description des conditions aux limites imposées (numéros et valeurs des degrés de liberté bloqués). Cette structure est construite par les modules COBDC1 ou COBDCL [Guide Modulef - 4]. Le module COBDCL construit la S.D. BDCL, degré de liberté par degré de liberté, à partir de "cartes" données. Le module COBDC1 construit cette même S.D. en utilisant des informations globales, par exemple les numéros de référence et les noms des inconnues variationnelles, et est plus simple à utiliser que COBDCL. Ces deux modules peuvent traiter le cas de conditions en relations linéaires, ce qui est particulièrement utile quand des conditions périodiques sont présentes.

      Remarques:

      1. S'il y a des conditions en relations linéaires, ce calcul doit être effectué avant l'étape 1, le profil de la matrice étant affecté.
      2. Le module COBDC1 utilise la S.D. COOR, qui contient les coordonnées des noeuds. Cette structure peut être construite en utilisant le module CORNOE [Guide Modulef - 4].

    2. Implémentation effective des conditions aux limites
      Ce calcul revient à trouver, à partir de , la matrice , selon les équations (3.11) et (3.12).

      Il y a plusieurs techniques pour prendre en compte pratiquement ces conditions aux limites, voir [Guide Modulef - 5]: le module CLIMPC, pour les matrices profils. Conceptuellement, nous distinguons deux classes:

      1. La méthode de pénalisation:

        L'idée de base est l'égalité (sur ordinateur) suivante:

        si (par exemple: et ).

        En pratique, on part de et de de l'équation (3.11), et on remplace les coefficients diagonaux de par VTG et les coefficients de par , où

         

        avec

        le vecteur des valeurs imposées des degrés de liberté (0 dans cet exemple (voir (3.12)).

        Une variante de cette méthode consiste à remplacer les coefficients diagonaux de par:

        et le second membre par:
        pour .

        Avantages et désavantages:

        • Dans la première méthode, les valeurs initiales des coefficients diagonaux sont perdues.
        • Dans le second cas, il est utile de connaître ces valeurs pour les injecter dans le second membre. Pour les méthodes itératives ceci peut être un inconvénient quand la matrice est constante.

        En résumé:

        Variante 1 :
        mettre les conditions aux limites séparément dans la matrice et le second membre ([Guide Modulef - 5]: PROFIL et CLIMPC), avec

        et

        Variante 2 :
        mettre les conditions aux limites simultanément dans MUA et B, avec

      2. La méthode directe:

        L'idée est d'obtenir l'équation (3.12) à partir de (3.11) effectivement. Notons que dans l'équation (3.12) on a perdu la propriété de symétrie de la matrice. Ceci est important car pour une matrice symétrique, on ne stocke que la moitié des coefficients. Néanmoins, on veut obtenir (3.15), équivalent à (3.12), à partir de l'équation (3.11), où (3.15) est symétrique.

        Dans le cas général (d.l. imposés à une valeur de , nulle ou non (3.14)), si on prend la décomposition de :

        avec
        le vecteur des degrés de liberté libres, et
        le vecteur des degrés de liberté bloqués,

        l'équation (3.12) peut être écrite comme:

        qui est équivalent à:

         

        En pratique, c'est l'équation (3.15) qui est calculée en suivant les notations de [Guide Modulef - 5]: PROFIL et CLIMPC, avec NIVO = 3 et VTG = 1).

      Remarque: Les différentes techniques sont indépendantes du mode de stockage des matrices, et, par suite, s'appliquent dans le cas où d'autres stockages sont utilisées.

  4. Factorisation de Cholesky
    Cette étape calcule la matrice triangulaire L qui satisfait la relation:
    et est réalisée par le module CHOLPC [Guide Modulef - 5].

    Le résultat est une S.D. MUA qui contient la matrice factorisée.

  5. Substitutions avant et arrière
    Ces substitutions permettent de trouver la solution d'un système de matrice triangulaire. Elles sont effectuées par le module DRCHPC
    [4] [Guide Modulef - 5].

    Le résultat est une S.D. B.

Commentaires:
La solution d'un système linéaire est décomposée en plusieurs étapes dans le but de simplifier la phase de calcul sur ordinateur. Par exemple:

Etape 5:
Interprétation des résultats

La visualisation des résultats est un point important. En fait, il est difficile d'analyser un résultat en regardant uniquement le contenu d'une structure B. Afin d'aider à cette analyse, les outils suivants sont disponibles:

Au cours du post-traitement, on peut aussi utiliser les modules de modification des structures NOPO [Guide Modulef - 3] et B. Par exemple, si le problème est symétrique, le calcul peut se faire uniquement sur une partie du domaine. S'il est souhaité de présenter les résultats sur le domaine complet, on peut recoller ensemble la solution calculée et son symétrique et les maillages correspondants.

3.1.4 Conclusion

Par cet exemple, on a illustré comment trouver les modules voulus dans les bibliothèques. Néanmoins, on n'a pas indiqué comment utiliser ces modules. Les exemples suivants vont décrire en détails ce point.


Modulefpreviousupnextcontents[BIG][Normal][small]
Suiv.: 4 Tests conversationnels Sup.: 3 Introduction Préc.: 3 Introduction Table des matières