Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 1/30
Organisme(s) : EDF-R&D/AMA, SINETICS
Manuel d'Utilisation
Fascicule U2.08 : Fonctions avancées et contrôle des calculs
Document : U2.08.01
Utilisation des indicateurs d'erreur et stratégies
d'adaptation de maillages associées
Résumé :
Ce document décrit l'utilisation dans Code_Aster des indicateurs d'erreur et leur utilisation dans un contexte
d'adaptation de maillage. En ce sens, il vise à faire une synthèse destinée à fournir à l'utilisateur les réponses
préalables à l'utilisation de l'adaptation de maillages : où trouver des informations dans la documentation
Code_Aster, quel est le périmètre d'utilisation, quelles sont les bonnes pratiques à mettre en oeuvre ?
Des exemples d'utilisation viennent illustrer les possibilités et la mise en oeuvre de stratégies de remaillage.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 2/30
1 Introduction
Les indicateurs d'erreur et l'adaptation de maillages sont utiles à l'utilisateur pour fournir des calculs les
plus fiables possible vis-à-vis des erreurs de discrétisation (dues à la méthode éléments finis
employée).
Les indicateurs d'erreur sont calculés en post-traitement de Aster, tandis que l'adaptation de maillage
est effectué par appel à un programme externe, spécialisé dans cette tâche, HOMARD.
Le but de ce document est de fournir un « point d'entrée » le plus complet possible à destination de
l'utilisateur désirant mettre en oeuvre ce genre de techniques dans ses calculs. Le plan du document
est alors le suivant :
1) le périmètre d'utilisation (que peut-on faire ?) ;
2) les références utiles à lire avant utilisation (où aller chercher des informations plus
approfondies que celles apportées dans ce document ?) ;
3) un rappel schématique de la méthodologie d'adaptation de maillages ;
4) un rappel des commandes et options à utiliser (comment écrire le fichier de commande ?) ;
5) un ensemble de conseils sur les « bonnes pratiques » à mettre en oeuvre (quels sont les
points dignes d'attention lors de l'utilisation ?) ;
6) quelques exemples illustrant l'utilisation de ces techniques et les conseils donnés
précédemment (comment faire en pratique ?).
2 Périmètre
d'utilisation
Le domaine d'utilisation des indicateurs d'erreur et de l'adaptation de maillage est délimité par les
contraintes suivantes (on se reportera aux documents de référence donnés ci-dessous pour plus de
détails) :
· les erreurs prises en compte sont les erreurs de discrétisation spatiale (donc la taille des
éléments employés) ; en particulier, les erreurs de discrétisation temporelle (ou pseudo-
temporelle dans le cas de matériaux non-linéaires) sont en dehors de ce périmètre ;
· les phénomènes physiques sont limités à la mécanique (linéaire ou non-linéaire,
Cf. ci-dessous) et à la thermique (idem.) ;
· en mécanique comme en thermique, le comportement peut être linéaire ou non linéaire (sauf
pour l'estimateur d'erreur de Zhu-Zienkiewicz en mécanique qui ne traite que le comportement
linéaire), sachant que les résultats théoriques des indicateurs d'erreur sont obtenus dans le
domaine linéaire (leur utilisation dans le domaine non-linéaire n'est donc pas basé sur des
résultats théoriques mais sur une constatation empirique de leur intérêt) ;
· les éléments utilisés peuvent être quelconques pour l'utilisation des indicateurs d'erreurs (sauf
pour l'estimateur d'erreur de Zhu-Zienkiewicz en mécanique, qui ne traite que les éléments
2D ; l'estimateur ZZ2 n'accepte que des maillages composés soit de triangles soit de
quadrangles) ; en revanche, l'utilisation de l'adaptation de maillages avec HOMARD nécessite
pour l'instant l'emploi d'éléments dans la liste (point, segment, triangle, tétraèdre) à l'exclusion
de tout autre. Ces éléments peuvent être linéaires ou quadratiques.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 3/30
3 Références
utiles
Les documents [bib1] à [bib5] traitent des estimateurs d'erreur et du l'outil d'adaptation de maillage
HOMARD.
Les documents [bib6] à [bib8] forment le support des formations Aster sur le sujet.
A propos du choix des éléments finis, on pourra se reporter au document [bib9].
[1]
X. DESROCHES : « Estimateur d'erreur de Zhu-Zienkiewicz en élasticité 2D ». [R4.10.01],
1994.
[2]
X. DESROCHES : « Estimateur d'erreur en résidu ». [R4.10.02], 2000.
[3]
O. BOITEAU : « Indicateur d'erreur spatiale en résidu pour la thermique transitoire ».
[R4.10.03], 2001.
[4]
G. NICOLAS & al. http://www.code_aster.org/outils/homard
[5]
G. NICOLAS : « Macro-commande MACR_ADAP_MAIL ». Doc [U7.03.01].
[6]
O. BOITEAU : Cas-test. « FORMA04 Maillage adaptatif mécanique sur une poutre en
flexion ». Doc [V6.03.119]
[7]
O. BOITEAU : Cas-test. « FORMA05 Maillage adaptatif thermo-mécanique sur une culasse
fissurée ». Doc [V6.03.120]
[8]
O. BOITEAU : Cours et TP « Indicateurs d'erreur et adaptation de maillage. Etat de l'art et
implantation dans le Code_Aster ». http://www.code_aster.org/utilisation/formations
[9]
S. MICHEL-PONNELLE
: «
Notice d'utilisation sur le choix des éléments finis
».
Doc [U2.01.10]
Principe général
Les indicateurs d'erreur utilisés dans Aster sont des indicateurs a posteriori, on donne ci-dessous un
schéma précisant leur utilisation. On trouvera dans les cas-tests [bib6] et [bib7] ainsi que dans la suite
de ce document des exemples d'utilisation des fonctionnalités du langage de commande Aster (basé
sur Python) adaptés à cet usage.
1) Définition des données du calcul (en
1) Définition des données du calcul (en
particulier le maillage)
particulier le maillage initial)
2) Résolution du problème
2) Résolution du problème
3) Calcul des indicateurs d'erreur (post-
3) Calcul des indicateurs d'erreur (post-
traitement)
traitement)
4) Adaptation du maillage (basé sur un des
indicateurs calculés à l'étape 3)
Utilisation des indicateurs d'erreur
Utilisation de l'adaptation de maillage
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 4/30
4
Rappel des commandes et options Aster à utiliser
4.1
Estimateur d'erreur en mécanique de Zhu-Zienkiewicz
Le calcul de l'estimateur d'erreur s'effectue directement dans l'opérateur CALC_ELEM avec les
options :
OPTION=`ERRE_ELEM_NOZ1' pour l'estimateur ZZ1 ;
OPTION=`ERRE_ELEM_NOZ2' pour l'estimateur ZZ2.
Le calcul du champ (aux noeuds) de contraintes lissées peut être déclenché séparément (peu utile en
pratique) :
OPTION=`SIGM_NOZ1_ELGA' pour le lissage ZZ1
OPTION=`SIGM_NOZ2_ELGA' pour le lissage ZZ2
L'estimateur fournit :
· un champ par élément comportant 3 composantes :
`ERREST' : l'erreur absolue estimée sur l'élément (K ) ;
K
`NUEST' : l'erreur relative estimée sur l'élément rel (K )
( )
= 100×
;
(K )2
2
+ h 0,K
`SIGCAL' : la norme d'énergie de la solution calculée h
;
0,K
· des sorties-listing comportant les mêmes informations au niveau global.
4.2
Estimateur d'erreur en mécanique de type résidu
Avant de calculer l'indicateur d'erreur, il faut effectuer le calcul du champ (aux noeuds par éléments) de
contraintes pour normer l'erreur, par l'opérateur CALC_ELEM :
OPTION=`SIGM_ELNO_DEPL' en élasticité (après MECA_STATIQUE) ;
OPTION=`SIEF_ELNO_ELGA' en non-linéaire (après STAT_NON_LINE).
Le calcul de l'estimateur d'erreur proprement dit s'effectue également dans l'opérateur CALC_ELEM
avec les options :
OPTION=`ERRE_ELGA_NORE' pour le calcul aux points de Gauss ;
OPTION=`ERRE_ELNO_ELGA' pour le calcul aux noeuds par éléments.
L'estimateur fournit :
· un champ par élément comportant 3 composantes :
`ERREST' : l'erreur absolue estimée sur l'élément (K ) ;
K
`NUEST' : l'erreur relative estimée sur l'élément rel (K )
( )
= 100×
;
(K )2
2
+ h 0,K
`SIGCAL' : la norme d'énergie de la solution calculée h
.
0,K
· des sorties-listing comportant les mêmes informations au niveau global.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 5/30
4.3
Estimateur d'erreur en thermique (de type résidus)
Le calcul de l'estimateur d'erreur s'effectue dans l'opérateur CALC_ELEM avec les options :
OPTION=`ERTH_ELEM_TEMP' pour le calcul par éléments ;
OPTION=`ERTH_ELNO_TEMP' pour le calcul par éléments aux noeuds.
L'estimateur fournit les composantes suivantes (on remarquera que tous les champs sont accessibles
individuellement, on en soulignera l'intérêt dans les exemples) :
Erreur absolue
Erreur relative
Terme de normalisation
n 1
+
n 1
+
n 1
+
n 1
+
R,vol (K )
R,vol (K )
N R,vol (K )
Terme
=
×
: hK s,h
0,K
volumique
n+
N R,vol (K )
.
100
1
TERMVO
TERMV2
TERMV1
n 1
+
n 1
+
1
R,saut (K )
R,saut (K )
Terme de saut
×
n 1
2
+
n 1
h
+
1
T
F
,h
n+
NR,saut (K ):=
(K)
N R saut (K )
.
100
1
,
2 2
n
K
F
0,F
TERMSA
TERMS2
TERMS1
n 1
+
n 1
+
1
R, flux (K )
R, flux (K )
Terme de flux
×100
n
N 1
+
2
1
+
R, flux (K )
n
:= h g
n 1
+
N
F
,h
R, flux (K )
.
0,F
TERMFL
TERMF2
TERMF1
n 1
+
n 1
+
1
R,éch(K )
R,éch(K )
Terme
×
n
N 1
+
2
1
+
R,éch (K ):= hF (
ext
hT )n
d'échange
n+
N
,h
R éch (K )
.
100
1
,
0,F
TERMEC
TERME2
TERME1
n+1
1
n+
n+
N 1
1
R
(K) =: n+
N R i, (K )
R (
1 K )
R (K ) =
: n+
R i, (K)
Total
×
i
n+
N
i
R
(K)
.
100
1
ERTABS
ERTREL
TERMNO
Pour une bonne utilisation, il faut faire attention aux points suivants (Cf. documentation R7.10.03) :
· appel préliminaire `FLUX_ELNO_TEMP' obligatoire avant le calcul des indicateurs d'erreurs ;
· homogénéité entre le paramétrage du solveur thermique et l'outil de post-traitement ;
· règles de surcharge particulières concernant les chargements (génération d'alarme <A> en
cas de non-respect) ;
· calcul sur tout le maillage associé au modèle (génération d'erreur <F> en cas de non-respect)
entre deux pas de temps contiguës ou non (génération d'alarme <A> en cas de non-respect) ;
· tous les éléments 2D-plan/axi et 3D sont traités (sauf PYRAM : génération d'alarme <A>) ;
· toutes les conditions limites sauf ECHANGE_PAROI, FLUX_NL et RAYO sont prises en compte
(génération d'alarme <A> en cas d'utilisation d'ECHANGE_PAROI, FLUX_NL ou RAYO ) ;
· le maillage tolère les « ébauches » mais nécessite d'être un peu « nettoyé » (pas de
SEG/FACE intercalés dans des surfaces/volumes, problème de symétrisation, de points
doubles : génération d'alarme <A> ou d'erreur <F>).
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 6/30
4.4
Adaptation de maillage avec HOMARD
La macro-commande MACR_ADAP_MAIL se contrôle avec les options suivantes :
_F Mot-clé
Choix
ADAPTATION
LIBRE
`RAFF_DERA'
`RAFFINEMENT'
ou
`DERAFFINEMENT'
UNIFORME
`RAFFINEMENT'
`DERAFFINEMENT'
MAILLAGE_N/NP1
RESULTAT_N
`EVOL_NOLI' (*)
INDICATEUR
`ERRE_ELGA_NORE' (*)
NOM_CMP_INDICA
`ERREST' (*)
CRIT_RAFF_PE
Permet de contrôler la proportion d'éléments à
_REL
raffiner/déraffiner
_ABS
CRIT_DERA_PE
_REL
_ABS
NIVE_MAX
Niveau max. de raffinement
NIVE_MIN
Niveau min. de raffinement
(*) exemple donné sur un calcul non-linéaire, utilisation de l'indicateur en résidu absolu.
Autres options possibles :
· mise à jour de champs sur le nouveau maillage (MAJ_CHAMP) ; on ne peut pas (encore) mettre
à jour des champs aux points de Gauss (comme les variables internes par exemple) ;
· diagnostics sur la qualité du maillage (QUALITE, INTERPENETRATION, TAILLE, CONNEXITE).
Précautions d'emploi :
· adaptation d'un maillage total (pas de sélection par mailles, groupes de mailles, noeuds,
groupe de noeuds) ;
· les groupes de mailles sont adaptés, en revanche les groupes de noeuds sont laissés
inchangés (il faut donc s'astreindre à imposer des conditions aux limites sur des groupes de
mailles et non des groupes de noeuds) ; il faut donc proscrire (mais c'est une règle de bon
sens) l'utilisation directe de mailles et noeuds lors des affectations pour lui préférer la notion de
groupe de mailles ;
· les reprises (par le mot-clé `POURSUITE') sont à éviter : HOMARD perd alors la hiérarchie
des éléments raffinés : le premier maillage de la poursuite est considéré par HOMARD comme
un maillage initial (sans possibilité de déraffiner par exemple) ;
· on rappelle que l'adaptation par HOMARD n'accepte que des noeuds, POINT, SEG, TRIA ou
TETRA, de degré 1 ou 2, dans un maillage conforme en zones connexes ou non, de même
dimension ou non ;
· HOMARD ne réalise pas encore le suivi de courbe (il se base sur les éléments fournis : par
exemple, si le maillage d'un cercle est fourni dans le maillage initial par son approximation en
N segments d'ordre 1, HOMARD raffinera éventuellement les N segments mais le cercle sera
toujours vu géométriquement comme une succession de ces N segments).
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 7/30
4.5 Préanalyse
d'un
maillage
Le diagnostic sur la qualité d'un maillage activable dans la macro MACR_ADAP_MAIL peut aussi être
obtenu indépendamment par la macro MACR_INFO_MAIL. Il permet de réaliser les vérifications
suivantes :
· vérifier la concordance du maillage avec la géométrie initiale (en masse, en dimension, en
surface et en volume) ;
· lister les GROUP_MA et GROUP_NO, pour une bonne modélisation des conditions aux limites ;
· diagnostiquer d'éventuels problèmes (symétrisation ou connexité, éléments d'ébauche,
mauvaise prise en compte de conditions aux limites, interpénétration d'éléments) ;
h
· évaluer la qualité du maillage par l'indicateur
K
K =
(normalisé à 1 pour des
K
triangles/tetraèdres équilatéraux ; par définition supérieur à 1). Un critère empirique peut être
proposé : par exemple, au moins 50% des EFs < 1.5, au moins 90% des EFs < 2, pas
d'éléments au dessus de 10.
5
Conseils et bonne pratique
· Choix de l'indicateur d'erreur en mécanique : l'utilisateur a le choix entre ZZ1 (première version
de l'indicateur de Zhu-Zienkiewicz), ZZ2 (deuxième version de l'indicateur de
Zhu-Zienkiewicz), et l'indicateur en résidus. Les deux premiers ont un domaine d'application
assez réduit (2D linéaire pour ZZ1 et ZZ2, un seul type d'élément fini dans tout le maillage
pour ZZ2) : pour une utilisation « standard », on préférera l'indicateur en résidus.
· L'enchaînement « opérateurs thermo-mécaniques / MACR_ADAP_MAIL option `UNIFORME' »
(i.e. sans indicateur d'erreur) permet de faire converger proprement, automatiquement et
facilement un maillage. Il faut cependant prendre garde au nombre de degrés de liberté
engendrés ! Ceci constitue une solution de facilité, rapide et robuste, mais rapidement
extrêmement coûteuse (plutôt à réserver pour évaluer s'il y a de grosses erreurs de
discrétisation ou pour de petites études).
· L'enchaînement « opérateurs thermo-mécaniques / MACR_ADAP_MAIL option `LIBRE' »
(i.e. avec indicateur d'erreur) permet de faire converger de la manière la plus optimale possible
(compte-tenu des outils disponibles) le maillage. Cette méthode demande plus d'efforts que la
précédente mais le nombre de degrés de liberté générés est proportionnellement beaucoup
plus faible.
· L'enchaînement « opérateurs thermo-mécaniques / MACR_ADAP_MAIL » peut être réalisé
efficacement dans une boucle Python (boucle de type « for »), avec éventuellement un test de
sortie (boucle de type « while »).
· La qualité des éléments est peu impactée par le processus de raffinement / déraffinement.
Compte-tenu des choix opérés dans HOMARD®, elle peut même s'améliorer en 3D !
· MACR_ADAP_MAIL ne dispose pas de processus de régularisation, donc un mauvais maillage
initial produira probablement un mauvais maillage adapté !
· Les éléments linéaires sont déconseillés en mécanique. La bonne pratique est plutôt : P1
lumpé en thermique (PLAN_DIAG, AXIS_DIAG, 3D_DIAG) et P2 (éventuellement
sous-intégrés) en mécanique, Cf. [bib9].
· Le choix du type d'éléments finis prime sur la qualité des mailles sur lesquelles viennent
s'appuyer les éléments (Cf. exemple de la poutre ci-dessous).
· Le type d'indicateur et son mode de normalisation peut avoir une incidence sur le maillage
K
adapté. Par exemple, en mécanique, rel (K )
( )
= 100×
. Cette façon de
(K )2
2
+ h 0,K
normaliser peut être dangereuse : s'il y a des zones où la norme de contraintes est faible,
l'erreur va avoisiner 100% sur cette zone ; s'il y a des zones où la norme de contraintes est
très élevée (singularités par exemple), l'erreur va être faible sur cette zone. Ce n'est
évidemment pas le résultat recherché. Il faut donc utiliser de préférence l'indicateur absolu, à
moins de savoir précisément ce que l'on fait.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 8/30
· En thermique, on peut aussi « jongler » avec les composantes de l'indicateur thermique et des
conditions aux limites,« fictives » ou non, pour orienter la construction d'un maillage raffiné ou
déraffiné par zones.
· En cas de présence de singularités, il est conseillé de sélectionner le nombre d'éléments sur
lesquels le raffinement porte par une fraction d'éléments à raffiner `CRIT_RAFF_PE' (et non
pas par le quantum d'éléments présentant une erreur supérieur à une fraction de l'erreur totale
`CRIT_RAFF_REL'). En effet, dans le cas d'une singularité, en utilisant `CRIT_RAFF_REL', au
bout d'une ou deux itérations d'adaptation, seuls les éléments touchant la singularité seront
raffinés. En utilisant `CRIT_RAFF_PE', d'autres zones pourront continuer à être raffinées.
Enfin le critère `CRIT_RAFF_ABS' (choix par barrière fixe d'erreur) est à réserver aux cas où
l'utilisateur connaît très bien le problème envisagé.
· En tant que « simple post-traitement » du problème thermo-mécanique, l'indicateur ne peut
malheureusement pas fournir de diagnostic plus fiable dans les zones où la résolution du
problème initial achoppe. Il est donc préférable de débuter un processus d'adaptation, avec un
maillage déjà un peu raffiné « à la main ».
· En thermo-mécanique, différentes stratégies d'adaptation de maillage s'offrent à l'utilisateur :
- adapter le maillage suivant un critère thermique uniquement,
- adapter le maillage suivant un critère mécanique uniquement,
- adapter conjointement ou séparément (i.e. avec une ou deux boucles d'adaptation) ; en
clair chaîner ou coupler les deux premières stratégies.
La bonne pratique lors d'un tel calcul thermo-mécanique conduit à utiliser deux maillages et à
interpoler le champ thermique P1 sur le maillage mécanique P2 (via l'opérateur PROJ_CHAMP).
Si on souhaite ne travailler qu'avec un seul maillage, on peut décliner l'une des stratégies via
l'option MAJ_CHAMP de MACR_ADAP_MAIL. Cela permet, tout en adaptant le maillage suivant
un critère, de mettre à jour le champ complémentaire sur le nouveau maillage adapté.
· En thermique, pour effectuer une adaptation de maillage basée sur l'indicateur
ERTH_ELNO_ELEM au cours d'un transitoire, il ne faut pas oublier de démarrer le calcul du pas
de temps suivant avec l'ancien EVOL_THER remis à jour sur le nouveau maillage.
6 Exemples
d'utilisation
6.1
Exemple mécanique (poutre 2D)
Il s'agit d'une poutre métallique (acier 16MND5, E = 210.103 Mpa, v = 0.2) en flexion. Calcul
élastique (MECA_STATIQUE ou STAT_NON_LINE) en modélisation contraintes planes (C_PLAN).
Maillages initiaux en TRIA3 ou TRIA6.
GM12
PRES_REP=0.1 N
Y
GM14
X
10
GM13
DX=0
GM10
DY=0
100
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 9/30
6.1.1 Utilisation
de
MACR_INFO_MAIL
La macro MACR_INFO_MAIL est lancée dans le fichier de commande par le bloc suivant. Le maillage
est ici rangé dans un tableau Python : MA[num_calc] pourrait être remplacé par un nom plus
conventionnel en l'absence d'utilisation de boucles Python.
MACR_INFO_MAIL(MAILLAGE=MA[num_calc],
QUALITE='OUI',
INTERPENETRATION='OUI',
CONNEXITE='OUI',
TAILLE='OUI')
Et on obtient dans le fichier de message :
ANALYSE DU MAILLAGE
===================
Maillage a analyser
MA_0
Date de creation : vendredi 27 septembre 2002 a 15 h 58 mn 20 s
Dimension : 2
Degre : 1
C'est un maillage de depart.
Direction | Unite | Minimum | Maximum
--------------------------------------------------
X | INCONNUE | 0. | 100.00
Y | INCONNUE | 0. | 10.000
INTERPENETRATION DES ELEMENTS
=============================
**********************************************************
* *
* Recapitulatif sur les faces actives *
* *
* Aucun probleme n'a ete rencontre. *
* *
**********************************************************
QUALITE DES ELEMENTS
====================
**********************************************************
* Qualite des triangles du maillage de calcul *
* Rappel : la qualite est egale au rapport du diametre *
* du triangle sur le rayon du cercle inscrit, *
* normalise a 1 pour un triangle regulier. *
**********************************************************
* Minimum : 1.0117 Maximum : 2.0158 *
**********************************************************
**********************************************************
* Fonction de repartition *
* *
* Valeurs * Nombre d'elements *
* Mini < < Maxi * par classe * cumul *
* * en % . nombre * en % . nombre *
**********************************************************
* 1.00 < 1.05 * 14.75 . 9 * 14.75 . 9 *
* 1.05 < 1.10 * 42.62 . 26 * 57.38 . 35 *
* 1.10 < 1.15 * 16.39 . 10 * 73.77 . 45 *
* 1.15 < 1.20 * 1.64 . 1 * 75.41 . 46 *
* 1.20 < 1.25 * 6.56 . 4 * 81.97 . 50 *
* 1.25 < 1.30 * 11.48 . 7 * 93.44 . 57 *
* 1.30 < 1.35 * 0.00 . 0 * 93.44 . 57 *
* 1.35 < 1.40 * 3.28 . 2 * 96.72 . 59 *
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 10/30
* 1.40 < 1.45 * 0.00 . 0 * 96.72 . 59 *
* 1.45 < 1.50 * 0.00 . 0 * 96.72 . 59 *
* 1.50 < 1.55 * 0.00 . 0 * 96.72 . 59 *
* 1.55 < 1.60 * 0.00 . 0 * 96.72 . 59 *
* 1.60 < 1.65 * 0.00 . 0 * 96.72 . 59 *
* 1.65 < 1.70 * 0.00 . 0 * 96.72 . 59 *
* 1.70 < 1.75 * 1.64 . 1 * 98.36 . 60 *
* 1.75 < 1.80 * 0.00 . 0 * 98.36 . 60 *
* 1.80 < 1.85 * 0.00 . 0 * 98.36 . 60 *
* 1.85 < 1.90 * 0.00 . 0 * 98.36 . 60 *
* 1.90 < 1.95 * 0.00 . 0 * 98.36 . 60 *
* 1.95 < 2.00 * 0.00 . 0 * 98.36 . 60 *
* 2.00 < 2.05 * 1.64 . 1 * 100.00 . 61 *
* 2.05 < 2.10 * 0.00 . 0 * 100.00 . 61 *
* 2.10 < 2.15 * 0.00 . 0 * 100.00 . 61 *
* 2.15 < 2.20 * 0.00 . 0 * 100.00 . 61 *
* 2.20 < 2.25 * 0.00 . 0 * 100.00 . 61 *
* 2.25 < 2.30 * 0.00 . 0 * 100.00 . 61 *
* 2.30 < 2.35 * 0.00 . 0 * 100.00 . 61 *
* 2.35 < 2.40 * 0.00 . 0 * 100.00 . 61 *
* 2.40 < 2.45 * 0.00 . 0 * 100.00 . 61 *
* 2.45 < 2.50 * 0.00 . 0 * 100.00 . 61 *
* 2.50 < inf. * 0.00 . 0 * 100.00 . 61 *
**********************************************************
NOMBRE D'ENTITES DU CALCUL
==========================
**********************************************************
* Les noeuds *
**********************************************************
* Nombre total * 48 *
**********************************************************
**********************************************************
* Les mailles-points *
**********************************************************
* Nombre total * 2 *
**********************************************************
**********************************************************
* Les aretes *
**********************************************************
* Nombre total * 15 *
* . dont aretes isolees * 0 *
* . dont aretes de bord de regions 2D * 15 *
* . dont aretes internes aux faces/volumes * 0 *
**********************************************************
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 11/30
**********************************************************
* Les faces *
**********************************************************
* Nombre total * 61 *
**********************************************************
CONNEXITE DES ENTITES DU CALCUL
===============================
**********************************************************
* Les faces sont en un seul bloc. *
**********************************************************
TAILLES DES SOUS-DOMAINES DE CALCUL
===================================
Direction | Unite
-------------------------
X | INCONNUE
Y | INCONNUE
**********************************************************
* Sous-domaines 2D *
**********************************************************
*Numero* Nom * Surface *
**********************************************************
* -4 * FAMILLE_MAILLE_-4_______________ * 1000.0 *
**********************************************************
* Total : * 1000.0 *
**********************************************************
**********************************************************
* Sous-domaines 1D *
**********************************************************
*Numero* Nom * Longueur *
**********************************************************
* -3 * FAMILLE_MAILLE_-3_______________ * 10.000 *
* -2 * FAMILLE_MAILLE_-2_______________ * 50.000 *
* -1 * FAMILLE_MAILLE_-1_______________ * 40.000 *
**********************************************************
* Total : * 100.00 *
**********************************************************
On apprend par ce message :
· les coordonnées extrêmes du maillages ;
· l'absence de problème d'interpénétration ;
· un histogramme de la qualité géométrique des éléments (on observera la bonne qualité de ce
maillage) ;
· le nombre de noeuds, de mailles points, d'arêtes, de faces ;
· la connexité du maillage ;
· la taille des domaines définis par les groupes de mailles (cette description n'est pas très lisible,
néanmoins, on observera que le domaine 2D de la poutre est bien de surface 1000 comme
prévu).
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 12/30
6.1.2 Utilisation
de
MACR_ADAP_MAIL option UNIFORME
Dans une boucle Python, le raffinement uniforme est demandé par l'appel suivant. Remarque
importante : une subtilité dans les boucles Python, il faut déclarer le concept sortant avant de l'utiliser
avec la commande CO.
# SUBTILITE MACRO_COMMANDE VIS A VIS DES ENTREES
MA[num_calc1]=CO('MA_%d' % (num_calc1))
# RAFFINEMENT UNIFORME VIA HOMARD
# MAILLAGE DE DEPART: MA[num_calc]
# MAILLAGE D'ARRIVE: MA[num_calc1]
MACR_ADAP_MAIL(
ADAPTATION=_F(
UNIFORME = 'RAFFINEMENT',
MAILLAGE_N = MA[num_calc],
MAILLAGE_NP1 = MA[num_calc1],),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
Observons les résultats obtenus, en comparant un maillage linéaire (TRIA3) et un maillage quadratique
(TRIA6), le maillage initial étant présenté sur la [Figure 6.1.2-a]. Sur les courbes présentant l'évolution
de l'énergie et de la flèche de la poutre en fonction du nombre de raffinement, Cf. [Figure 6.1.2-b] et
[Figure 6.1.2-c], deux conclusions s'imposent :
· d'une part les éléments quadratiques démontrent leur évidente supériorité ;
· d'autre part, le remaillage (ici très simpliste puisqu'il est uniforme) prouve son intérêt : le
maillage linéaire initial étant très loin d'être suffisamment raffiné, le remaillage permet d'obtenir
de bons résultats après quelques itérations.
Figure 6.1.2-a : Maillage initial
Figure 6.1.2-b : Evolution de l'énergie avec
Figure 6.1.2-c : Evolution de la flèche avec
le nombre de raffinements
le nombre de raffinements
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 13/30
6.1.3 Utilisation
de
MACR_ADAP_MAIL option LIBRE
La première question à régler lors de l'utilisation du raffinement libre avec HOMARD est le choix de
l'indicateur d'erreur et de sa composante. Ici, suivant les principes énoncés dans le paragraphe des
conseils, le choix a été fait d'utiliser l'indicateur en résidu (même si dans ce cas, on se trouve dans le
périmètre d'utilisation des indicateurs de Zhu-Zienkiewicz). En revanche, cet exemple compare les
composantes absolue et normalisée de l'indicateur afin d'illustrer la prudence qu'impose l'utilisation de
la composante normalisée.
Le maillage est ici linéaire afin d'illustrer clairement l'effet de l'adaptation de maillage, car on a vu
précédemment que le maillage initial donne déjà des résultats de bonne qualité avec des éléments
d'ordre 2.
Le raffinement libre sur la composante absolue (pour le composante relative, il suffit de changer dans
l'extrait ci-dessous NOM_CMP_INDICA='ERREST' en NOM_CMP_INDICA='NUEST') est activé par les
commandes suivantes :
# SUBTILITE MACRO_COMMANDE VIS A VIS DES ENTREES
MA[num_calc1]=CO('MA_%d' % (num_calc1))
# RAFFINEMENT LIBRE VIA HOMARD
# MAILLAGE DE DEPART: MA[num_calc]
# MAILLAGE D'ARRIVE: MA[num_calc1]
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MA[num_calc],
MAILLAGE_NP1 = MA[num_calc1],
RESULTAT_N=DEPLA[num_calc],
INDICATEUR='ERRE_ELGA_NORE',
NOM_CMP_INDICA='ERREST',
CRIT_RAFF_PE=0.2,
CRIT_DERA_PE=0.2),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
Si l'on compare les résultats sur la flèche avec la
composante « absolue » et la composante « relative »
en fonction du nombre de noeuds (Cf. [Figure 6.1.3-a]
où l'on a ajouté la même évolution pour le raffinement
uniforme), on observe :
· le raffinement libre avec la composante
absolue converge plus vite vers la référence
que le raffinement uniforme (d'où l'intérêt de
faire du raffinement libre) ;
· le raffinement libre avec la composante
relative converge plus lentement vers la
référence que le raffinement uniforme, ce qui
est à première vue surprenant.
Figure 6.1.3-a : Evolution de l'énergie en
fonction du nombre de noeuds
Ce dernier point s'explique si l'on trace les trois champs issus de l'indicateur d'erreur, ce qui est fait sur
les [Figure 6.1.3-b]- [Figure 6.1.3-d].
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A


Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 14/30
Figure 6.1.3-b : Composante absolue
Figure 6.1.3-c : Norme de la contrainte de normalisation
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A

Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 15/30
Figure 6.1.3-d : Composante normalisée
Il apparaît clairement que le fait que la norme de la contrainte normalisée soit faible dans une zone
(fibre neutre de la poutre en particulier) où le raffinement est moins nécessaire qu'ailleurs (voir l'erreur
K
absolue) rend le résultat de la normalisation rel (K )
( )
= 100×
aléatoire. En effet,
(K )2
2
+ h
0,K
on rappelle que des zones à contrainte de normalisation nulle seront considérées comme ayant une
erreur de 100% : s'il faut raffiner dans cette zone, cela sera bon (quoique cela masquera les autres
zones à raffiner), si le raffinement est moins nécessaire, cela sera mauvais. Il faut donc bien analyser
son problème avant d'utiliser la composante relative de l'indicateur d'erreur, la composante absolue
pouvant être considérée comme plus sûre. En particulier, il nous semble que l'utilisation de l'erreur
normalisée n'est possible qu'après analyse par l'utilisateur de la carte de contrainte de normalisation.
6.2
Exemple thermoélastique (culasse simplifiée)
On considère la structure suivante :
Y
3
8
4
20
3
10
3
6
3
x
55
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 16/30
soumise aux chargements suivants :
GM33
FLUX SORTANT
2
=-400 W/m
GM36
GM34
2
ECHANGE=(1000 W/m °C,350°C)
PRES_REP= 0.1N
Y
GM35
x
GM37 2
ECHANGE=(5000 W/m °C, 150°C)
GM39/GM40
DX=DY=0
Dans un premier temps, on s'intéresse à la thermique seule pour souligner la possibilité d'utiliser la
décomposition des différents termes d'erreur. En effet, dans le cadre d'une utilisation « standard »
(c'est-à-dire quand tous les termes d'erreur intéressent l'utilisateur), il faudra choisir l'erreur totale
(`ERTABS' ou `ERTREL') ; en revanche, si l'utilisateur est particulièrement intéressé par une bonne
prise en compte des conditions aux limites, il peut ainsi orienter le raffinement en utilisant les différents
termes (de flux ou d'échange dans ce cas). Par exemple, en partant du maillage [Figure 6.2-a] - on
notera que ce maillage vérifie l'un de nos conseils qui est de partir d'un maillage « raisonnable » - on
réalise un raffinement sur l'erreur totale relative, Cf. le résultat [Figure 6.2-b] :
# MAILLAGE DE DEPART: MAT[num_calc]
# MAILLAGE D'ARRIVE: MAT[num_calc1]
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MAT[num_calc],
MAILLAGE_NP1 = MAT[num_calc1],
RESULTAT_N=TEMP[num_calc],
INDICATEUR='ERTH_ELEM_TEMP',
NOM_CMP_INDICA='ERTREL',
CRIT_RAFF_PE=0.1,
CRIT_DERA_PE=0.1,
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
et un raffinement sur le terme d'échange, Cf. le résultat figure (10) :
# MAILLAGE DE DEPART: MAT[num_calc]
# MAILLAGE D'ARRIVE: MAT[num_calc1]
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MAT[num_calc],
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 17/30
MAILLAGE_NP1 = MAT[num_calc1],
RESULTAT_N=TEMP[num_calc],
INDICATEUR='ERTH_ELEM_TEMP',
NOM_CMP_INDICA='TERME2',
CRIT_RAFF_PE=0.1,
CRIT_DERA_PE=0.1,
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
On observe bien évidemment que les maillages adaptés diffèrent fortement. Dans le second cas de
figure, le raffinement a bien été orienté vers les perçages, sièges des conditions d'échanges.
Figure 6.2-a : Maillage initial
Figure 6.2-b : Maillage raffiné à partir de l'erreur totale relative
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 18/30
Figure 6.2-c : Maillage raffiné à partir de l'erreur relative sur le terme d'échange
On s'intéresse maintenant au calcul thermo-élastique couplé. Ce problème reste assez simple puisqu'il
n'y a qu'un seul pas de temps. Suivant les conseils donnés précédemment, on effectue ce calcul
couplé sur deux maillages différents : un maillage « thermique » linéaire sur lequel s'appuieront des
éléments lumpés et un maillage « mécanique » quadratique, le passage de l'un à l'autre s'effectuant
par l'opérateur `PROJ_CHAMP'.
Plus précisément : à chaque étape de la boucle de raffinement, on commence par calculer la
température sur le maillage thermique :
TEMP[num_calc]=THER_LINEAIRE(
MODELE=MOT[num_calc],
CHAM_MATER=CHMATT[num_calc],
EXCIT=(
_F(CHARGE = CHT[num_calc]),
_F(CHARGE = CLIMT[num_calc],),)
)
puis on projette cette température sur le maillage mécanique (on a préalablement créé un modèle
thermique MOT2 lié au maillage mécanique) :
TEMP2[num_calc]=PROJ_CHAMP(
METHODE='ELEM',
RESULTAT=TEMP[num_calc],
MODELE_1=MOT[num_calc],
MODELE_2=MOT2[num_calc],
TOUT_ORDRE='OUI')
On utilise cette température dans les conditions aux limites du calcul mécanique :
CLIMM[num_calc]=AFFE_CHAR_MECA(
MODELE=MOM[num_calc],
TEMP_CALCULEE=TEMP2[num_calc],
DDL_IMPO=(_F(GROUP_NO='GM39',DX=0.0,DY=0.0),
_F(GROUP_NO='GM40',DX=0.0,DY=0.0),),)
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 19/30
on effectue le calcul mécanique :
DEPLA[num_calc]=STAT_NON_LINE(MODELE=MOM[num_calc],
CHAM_MATER=CHMATM[num_calc],
EXCIT=(_F(CHARGE=CLIMM[num_calc],),
_F(CHARGE=CHM[num_calc],
FONC_MULT=F_INST,),),
COMP_INCR=(_F(RELATION='ELAS',
TOUT='OUI',), ),
INCREMENT=_F(LIST_INST=L_INST),)
On calcule les indicateurs d'erreur thermique et mécanique :
TEMP[num_calc]=CALC_ELEM(reuse=TEMP[num_calc],
RESULTAT=TEMP[num_calc],
MODELE=MOT[num_calc],
TOUT='OUI',
TOUT_ORDRE='OUI',
CHAM_MATER=CHMATT[num_calc],
EXCIT=(
_F(CHARGE = CHT[num_calc]),
_F(CHARGE = CLIMT[num_calc],),),
OPTION=(
'FLUX_ELNO_TEMP',
'ERTH_ELEM_TEMP',
'ERTH_ELNO_ELEM',),)
DEPLA[num_calc]=CALC_ELEM(reuse=DEPLA[num_calc],
RESULTAT=DEPLA[num_calc],
MODELE=MOM[num_calc],
TOUT='OUI',
CHAM_MATER=CHMATM[num_calc],
EXCIT=(_F(CHARGE=CLIMM[num_calc],),
_F(CHARGE=CHM[num_calc],),),
TOUT_ORDRE='OUI',
OPTION=(
'SIEF_ELNO_ELGA',
'ERRE_ELGA_NORE',),)
puis on enchaîne avec l'adaptation des maillages thermiques et mécaniques
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MAT[num_calc],
MAILLAGE_NP1 = MAT[num_calc1],
RESULTAT_N=TEMP[num_calc],
INDICATEUR='ERTH_ELEM_TEMP',
NOM_CMP_INDICA='ERTREL',
CRIT_RAFF_PE=0.1,
CRIT_DERA_PE=0.1,
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MAM[num_calc],
MAILLAGE_NP1 = MAM[num_calc1],
RESULTAT_N=DEPLA[num_calc],
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 20/30
INDICATEUR='ERRE_ELGA_NORE',
NOM_CMP_INDICA='NUEST',
CRIT_RAFF_PE=0.1,
CRIT_DERA_PE=0.1,
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
Avant de recommencer à l'étape suivante...
6.3 Exemple
thermo-plastique
On considère la structure de révolution suivante (modélisée en axisymétrique) :
où les parties grisées sont plastiques, le reste élastique. Le chargement est appliqué en 2 étapes :
· la première consiste en un chargement purement mécanique (pression sur la zone avec des
flèches sur le schéma), avec une phase de charge suivie d'une phase de décharge ;
· la seconde consiste en un chargement thermique transitoire (condition d'échange sur les
parties inférieures et supérieures de la structure).
6.3.1 Stratégie de remaillage et liste d'instants
Le chargement est discrétisé selon une liste d'instants, il se pose alors la question : quelle stratégie
adopter vis-à-vis du remaillage ? En effet, suivant le cas traité, on peut :
· remailler à chaque pas de calcul : le maillage est alors adapté à chaque pas de calcul
individuellement. Il faut alors projeter les champs d'un maillage sur l'autre (ce qui n'est pas
encore totalement possible en mécanique non-linéaire) ;
· remailler une seule fois, à la fin du calcul, et recommencer le calcul depuis le début avec le
nouveau maillage.
La première stratégie est à adopter dans le cas où les zones de raffinement évoluent beaucoup, nous
en verrons un exemple dans le calcul thermique suivant ; la seconde peut être adoptée dans le cas où
les zones de raffinement évoluent peu, comme dans ce cas mécanique où il s'agit de suivre la
croissance d'une zone plastique.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 21/30
6.3.2 Calcul
mécanique
Pour le calcul mécanique, on adopte donc la stratégie suivante :
1) calcul de toute la liste d'instants ;
2) remaillage
;
3) répétition de (1 & 2) jusqu'au résultat satisfaisant.
Ce n'est pas tant la mise en oeuvre dans Aster qui est intéressante dans ce cas (qui diffère des mises
en oeuvre précédentes uniquement par le fait qu'il y ait plusieurs instants de calcul) que les résultats
obtenus par adaptation de maillage sur un cas non-linéaire. Pour rappel, les appels pour le calcul
d'indicateurs d'erreur et pour remaillage sont les suivants :
V1[num_calc]=CALC_ELEM(reuse =V1[num_calc],
MODELE=MO1[num_calc],
CHAM_MATER=CM1[num_calc],
INST=-1.0,
OPTION=('ERRE_ELGA_NORE',),
RESULTAT=V1[num_calc],)
MA[num_calc+1]=CO('MA_%d' % (num_calc+1))
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFFINEMENT',
MAILLAGE_N = MA[num_calc],
MAILLAGE_NP1 = MA[num_calc+1],
RESULTAT_N = V1[num_calc],
INDICATEUR = 'ERRE_ELGA_NORE',
NOM_CMP_INDICA='ERREST',
NUME_ORDRE = 4,
CRIT_RAFF_PE = 0.1,
NIVE_MAX = 5),
QUALITE='OUI',
INTERPENETRATION='NON',
TAILLE='OUI',
CONNEXITE='OUI'
)
Pour juger de l'apport du remaillage, regardons les contraintes radiales sur le segment indiqué sur la
[Figure 6.3.2-a], qui sont comparées à une « référence » obtenue par 3 remaillages uniformes : le gain
des remaillages basés sur l'indicateur d'erreur est visible.
Ligne de post-traitement
Figure 6.3.2-a : Lieu de post-traitement
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 22/30
Figure 6.3.2-b : Profil de contrainte
On trouvera sur les figures [Figure 6.3.2-c] et [Figure 6.3.2-d] le maillage initial et le maillage après 3
remaillages basés sur l'indicateur d'erreur.
Une indication de la taille (et donc du temps) de calculs entre le calcul de référence (3 raffinements
uniformes) et le calcul avec 3 raffinements basés sur l'indicateur d'erreur est donnée dans le tableau
[Tableau 6.3.2-1].
Nombre de noeuds
Temps de Calcul
Maillage de référence
175 000
~3000 s
3 raffinements libres (soit 4 calculs)
8 500
~60 s
Tableau 6.3.2-1 : indication de performances
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 23/30
Figure 6.3.2-c : Maillage initial
Figure 6.3.2-d : Maillage après 3 remaillages
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 24/30
6.3.3 Calcul du transitoire thermique
Il s'agit dans ce cas de calculer un transitoire thermique, deux conditions d'échanges étant imposées
en bas et en haut de la structure. Comme la zone qui va présenter un fort gradient de température va
se déplacer dans la structure (avancée d'un front), la stratégie adoptée pour le remaillage va en tenir
compte : il faut réactualiser le maillage régulièrement au cours du transitoire. En pratique, on subdivise
la liste d'instants en blocs, à l'intérieur de ces blocs d'instants de calcul le maillage sera le même (et le
remaillage intervient à la fin du bloc). Il y a donc 3 boucles imbriquées :
1) la boucle sur les N blocs d'instants ;
2) la boucle sur les remaillages du bloc courant ;
3) la boucle (cachée dans THER_LINEAIRE) sur les instants du bloc.
Cela donne dans le fichier de commande :
for num_inst_raff in range(1,nb_raff-1) :
La boucle sur les blocs d'instants
num_inst_debut = (num_inst_raff-1)*pas_raff+1
num_inst_fin = (num_inst_raff)*pas_raff
for num_calc in range(1,nb_calc-1) :
La boucle sur les remaillages
if (num_calc == 1) or (num_inst_raff == 1) :
if (num_inst_raff == 1) :
S'il s'agit du premier bloc, on commence un calcul (donc pas de « reuse »)
EV[i]=THER_LINEAIRE(MODELE=MOTH[i],
CHAM_MATER=CHMAT[i],
EXCIT=(_F(CHARGE=CHBF[i],),
_F(CHARGE=CHFL[i],),),
INCREMENT=_F(LIST_INST=LIST,
NUME_INIT=num_inst_debut-1,
NUME_FIN=num_inst_fin,),)
else :
S'il s'agit du maillage initial du bloc d'instant (c'est-à-dire le dernier maillage du bloc d'instant
précédent), on n'a pas créé de nouveau maillage (on n'a donc pas effectué de PROJ_CHAMP) et il faut
aller chercher la température initiale dans le résultat du bloc précédent (dernier instant du bloc
précédent) :
EV[i]=THER_LINEAIRE(reuse=EV[i],
MODELE=MOTH[i],
CHAM_MATER=CHMAT[i],
TEMP_INIT=_F(EVOL_THER=EV[i],
NUME_INIT=num_inst_debut-1,
),
EXCIT=(_F(CHARGE=CHBF[i],),
_F(CHARGE=CHFL[i],),),
INCREMENT=_F(LIST_INST=LIST,
NUME_INIT=num_inst_debut-1,
NUME_FIN=num_inst_fin,),)
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 25/30
Enfin, s'il s'agit d'un remaillage, on va chercher la température initiale dans un CHAM_NO calculé au
moment du remaillage (Cf. plus loin le remaillage) :
else :
EV[i]=THER_LINEAIRE(
MODELE=MOTH[i],
CHAM_MATER=CHMAT[i],
TEMP_INIT = _F(CHAM_NO = CT),
EXCIT=(_F(CHARGE=CHBF[i],),
_F(CHARGE=CHFL[i],),),
INCREMENT=_F(LIST_INST=LIST,
NUME_INIT=num_inst_debut-1,
NUME_FIN=num_inst_fin,),)
if num_calc != (nb_calc-2) :
Il faut remailler ...
On commence par calculer l'indicateur d'erreur :
EV[i]=CALC_ELEM(reuse=EV[i],
NUME_ORDRE=num_inst_fin,
RESULTAT=EV[i],
MODELE=MOTH[i],
TOUT='OUI',
CHAM_MATER=CHMAT[i],
EXCIT=(_F(CHARGE=CHBF[i],),
_F(CHARGE=CHFL[i],),),
OPTION=(
'FLUX_ELNO_TEMP',
'ERTH_ELEM_TEMP',
'ERTH_ELNO_ELEM',),)
MATH[i+1]=CO('MATH_%d' % (i+1))
if (detr_ct == 1) :
DETRUIRE(CONCEPT=_F(NOM='CT',),)
if num_inst_raff == 1 :
Si on traite le premier bloc, il n'y a pas de champ de température à projeter sur le nouveau maillage :
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MATH[i],
MAILLAGE_NP1 = MATH[i+1],
RESULTAT_N=EV[i],
INDICATEUR='ERTH_ELEM_TEMP',
NUME_ORDRE = num_inst_fin,
NOM_CMP_INDICA='ERTREL',
CRIT_RAFF_PE=0.03,
CRIT_DERA_PE=0.2,
NIVE_MAX=4,
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
else :
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 26/30
si le bloc d'instant n'est pas le premier, il faut projeter la température du dernier instant de calcul du
bloc précédent dans un CHAM_NO (ici appelé `CT') afin d'utiliser ce CHAM_NO comme température
initiale sur le nouveau maillage :
MACR_ADAP_MAIL(
ADAPTATION=_F(
LIBRE = 'RAFF_DERA',
MAILLAGE_N = MATH[i],
MAILLAGE_NP1 = MATH[i+1],
RESULTAT_N=EV[i],
INDICATEUR='ERTH_ELEM_TEMP',
NUME_ORDRE = num_inst_fin,
NOM_CMP_INDICA='ERTREL',
CRIT_RAFF_PE=0.03,
CRIT_DERA_PE=0.2,
NIVE_MAX=4,
),
MAJ_CHAM=_F(
RESULTAT=('EV_%d' % (i)),
NOM_CHAM='TEMP',
NUME_ORDRE=num_inst_debut-1,
CHAM_MAJ=CO('CT'),
TYPE_CHAM='CHAM_NO_TEMP_R',
),
QUALITE='OUI',
INTERPENETRATION='OUI',
TAILLE='OUI',
CONNEXITE='OUI')
detr_ct = 1
i=i+1
On définit les concepts Aster adhérents au maillage :
MOTH[i]=AFFE_MODELE(
MAILLAGE=MATH[i],
AFFE=_F(TOUT='OUI',
PHENOMENE='THERMIQUE',
MODELISATION='AXIS_DIAG',),)
#---------------- REORIENTATION DE GROUPES DE BORD
#
MATH[i]=MODI_MAILLAGE(reuse =MATH[i],
MAILLAGE=MATH[i],
ORIE_PEAU_2D=_F(GROUP_MA=('GM58','GM42',
'GM45','GM57','GM56'),),
MODELE=MOTH[i],
INFO=1,);
#--------- AFFECTATION CARACTERISTIQUES THERMIQUES ------
#
CHMAT[i]=AFFE_MATERIAU(MAILLAGE=MATH[i],
AFFE=(_F(GROUP_MA=('GM47','GM48'),
MATER=MATHPL,
TEMP_REF=20.0,),
_F(GROUP_MA=('GM46'),
MATER=MATHBO,
TEMP_REF=20.0,),),)
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 27/30
CHFL[i]=AFFE_CHAR_THER_F(MODELE=MOTH[i],
FLUX_REP=_F(GROUP_MA=('GM57',),
FLUN=ZERO,),)
# CHARGEMENT ECHANGE SUR PLAQUE CôTé INFéRIEUR
# BRANCHE FROIDE - BRANCHE CHAUDE
#
CHBF[i]=AFFE_CHAR_THER_F(MODELE=MOTH[i],
ECHANGE=(_F(GROUP_MA=('GM45',),
COEF_H=HP,
TEMP_EXT=TBF,),
_F(GROUP_MA=('GM42','GM58'),
COEF_H=HB,
TEMP_EXT=TBF,),),)
# CHARGEMENT ECHANGE SUR PLAQUE CôTé SUPéRIEUR
# CHOC 4EME CATEGORIE
#
CHTS4[i]=AFFE_CHAR_THER_F(MODELE=MOTH[i],
ECHANGE=_F(GROUP_MA=('GM56'),
COEF_H=HS,
TEMP_EXT=TS4,),)
Si l'on regarde les résultats au dernier instant calculé, en particulier la température sur la ligne de post-
traitement déjà utilisée en mécanique, Cf. [Figure 6.3.3-c], on constate l'intérêt de l'adaptation de
maillage. Comme on pourra le constater sur les maillages initial et adapté (au dernier pas de temps),
Cf. [Figure 6.3.3-a] [Figure 6.3.3-b], le maillage n'a pas changé au voisinage proche de cette ligne de
dépouillement : l'amélioration de la température calculée provient des zones que l'on a raffiné par
ailleurs. On remarquera aussi que le maillage raffiné n'est pas très intuitif : il s'agit là aussi d'un des
intérêt de l'adaptation automatique de maillage.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 28/30
Figure 6.3.3-a : Maillage initial
Figure 6.3.3-b : Maillage raffiné au dernier
pas de temps de calcul
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 29/30
Figure 6.3.3-c : Profil de température
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Code_Aster ®
Version
6.4
Titre :
Utilisation des indicateurs d'erreur et stratégies d'adaptation Date
:
17/10/03
Auteur(s) :
P. BADEL, O. BOITEAU, V. CANO Clé
:
U2.08.01-A Page
: 30/30
Page laissée intentionnellement blanche.
Manuel d'Utilisation
Fascicule U2.08 : Fonction avancée et contrôle des calculs
HT-66/03/002/A
Document Outline