1Extraire les données à l’aide des commandes Aster. Code_Aster Tracé de courbes
Code_Aster
Titre :
Tracé de courbes avec Code_Aster
Responsable :
Mathieu COURTOIS
Version default
Date :
01/03/2013
Page :
2/10
Clé :
U2.51.02
Révision :
10626
Remarque préliminaire
Le post-traitement doit être effectué en POURSUITE et non pas à la suite du calcul.
Plusieurs raisons à cela :
1) en cas d’erreur, on ne perd pas les heures de calcul qui ont permis d’atteindre le résultat,
2) on peut effectuer de nombreux post-traitements directement en lançant
Stanley sur la base résultat du calcul (voir astk [U1.04.00] ou STANLEY
[U4.81.31]),
3) pour simplifier le post-traitement, on peut utiliser les possibilités offertes par
Python qui nécessitent d’être en PAR_LOT=’NON’ dans POURSUITE ce qui
empêche l’utilisation d’eficas pour ce type de post-traitement, alors qu’il est
plus simple d’utiliser eficas pour construire le jeu de données principal.
1 Extraire les données à l’aide des commandes Aster
On suppose que l’utilisateur dispose d’un résultat de calcul obtenu à partir, par exemple, de la commande MODE_ITER_SIMULT pour un calcul de modes propres, STAT_NON_LINE pour un calcul statique non linéaire, ou DYNA_NON_LINE pour un calcul dynamique non linéaire…
On dispose dans tous les cas d’un concept résultat qui sera par exemple de type mode_meca, mode_flamb, dyna_trans, tran_gene, evol_elas, evol_noli, evol_ther, etc. selon la commande utilisée et qui contient des champs de valeurs que l’on souhaite représenter sous forme de courbes.
1.1
Produire une fonction ou une table
Rappel
Une fonction est composée de deux listes de valeurs, abscisses et ordonnées ; les abscisses sont nécessairement monotones.
Une table est un agglomérat de valeurs non nécessairement de même type auxquelles on accède via un paramètre, « nom de colonne ». Dans l’utilisation des tables qui nous intéresse ici, on produira généralement des colonnes de nombres réels ; leur variation est quelconque.
Pour plus de détails sur ce qu’est une table, on pourra consulter la documentation de
IMPR_TABLE [U4.91.03].
Les valeurs peuvent être extraites en utilisant les commandes suivantes :
•
RECU_FONCTION [U4.32.03] : produit une fonction à partir d’un résultat, d’un champ, d’une table… Exemple : évolution temporelle d’une composante d’un champ en un point particulier.
•
POST_RELEVE_T [U4.81.21] : produit une table à partir d’un résultat ou d’un champ. On peut extraire une quantité associée aux composantes d’un champ (une composante, un invariant…) en certains points particuliers ou le long d’un chemin non nécessairement rectiligne.
•
MACR_LIGN_COUPE [U4.81.13] : produit une table à partir d’un résultat ou d’un champ le long d’une ligne de coupe (ligne droite composée de segments réguliers).
•
RECU_TABLE [U4.71.02] : produit une table à partir des valeurs d’un ou plusieurs paramètres d’un résultat. Par exemple : l’évolution du paramètre de pilotage au cours d’un calcul. On peut aussi extraire une table de quelques structures de données particulières.
•
CREA_CHAMP [U4.72.04] : permet d’extraire un champ d’une structure de données résultat.
Ceci peut être utile quand une commande ne sait pas traiter certains résultats. On peut par exemple ensuite récupérer une fonction via RECU_FONCTION/CHAM_GD.
Manuel d'utilisation Fascicule u2.51 : Outils de post-traitement
Copyright 2015 EDF R&D - Document diffusé sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)
Code_Aster
Titre :
Tracé de courbes avec Code_Aster
Responsable :
Mathieu COURTOIS
1.2
Traiter des blocs de données
Version default
Date :
01/03/2013
Page :
3/10
Clé :
U2.51.02
Révision :
10626
Un bloc de données est simplement un tableau de valeurs à N lignes, P colonnes.
Dans certains cas, on dispose d’un ou plusieurs fichiers composés chacun d’un ou plusieurs blocs de données, séparés par des lignes de texte. Pour construire des fonctions à partir de tels fichiers, on peut utiliser LIRE_FONCTION [U4.32.02].
Par exemple, on effectue une étude paramétrique, chaque calcul produit un tableau qui vient enrichir un fichier de résultat ; le fichier peut aussi avoir été construit par un calcul unique ou encore manuellement, peu importe. Un tel fichier pourrait ressembler à cela :
AVEC PARA=1.23
INST COOR_X DY
1.00000E+00 1.00000E+01 -3.02717E-2
1.20000E+00 1.00000E+01 -8.14498E-2
1.40000E+00 1.00000E+01 -7.97278E-2
1.60000E+00 1.00000E+01 -3.86827E-2
1.80000E+00 1.00000E+01 -8.48309E-2
2.00000E+00 1.00000E+01 -9.37561E-2
2.20000E+00 1.00000E+01 7.18293E-2
2.40000E+00 1.00000E+01 6.05322E-2
AVEC PARA=1.98
INST COOR_X COOR_Y DX DY
1.00000E+00 1.00000E+01 0.00000E+00 -3.02717E-2 2.07127E-01
1.10000E+00 1.00000E+01 0.00000E+00 -8.14498E-2 4.14928E-01
1.20000E+00 1.00000E+01 0.00000E+00 -7.97278E-2 7.92728E-01
1.80000E+00 1.00000E+01 0.00000E+00 -7.86827E-2 6.88227E-01
2.45000E+00 1.00000E+01 0.00000E+00 8.48309E-2 3.43029E-01
On a plusieurs blocs qui n’ont pas forcément le même nombre de colonnes.
Supposons que l’on veuille comparer le déplacement DY obtenus avec les deux valeurs de PARA, on utilisera par exemple : fDY1=LIRE_FONCTION(
TYPE='FONCTION',
INDIC_PARA=(1,1,), # les abscisses sont prises dans le bloc 1, colonne 1
INDIC_RESU=(1,3,), # les ordonnées sont prises dans le bloc 1, colonne 3
UNITE=38,
NOM_PARA='INST',
NOM_RESU='DY',) fDY2=LIRE_FONCTION(
TYPE='FONCTION',
INDIC_PARA=(2,1,), # les abscisses sont prises dans le bloc 2, colonne 1
INDIC_RESU=(2,5,), # les abscisses sont prises dans le bloc 2, colonne 5
UNITE=38,
NOM_PARA='INST',
NOM_RESU='DY',)
# tracé classique de deux fonctions avec IMPR_FONCTION :
IMPR_FONCTION(FORMAT='XMGRACE',
UNITE=29,
COURBE=(_F(FONCTION=fDY1,
LEGENDE='PARA=1.23',),
_F(FONCTION=fDY2,
LEGENDE='PARA=1.98',),),
TITRE='DY=f(t)',)
Manuel d'utilisation Fascicule u2.51 : Outils de post-traitement
Copyright 2015 EDF R&D - Document diffusé sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)

Link público atualizado
O link público para o seu chat foi atualizado.