2Transformer les valeurs d’une table ou d’une fonction en objets Python. Code_Aster Tracé de courbes
Code_Aster
Titre :
Tracé de courbes avec Code_Aster
Responsable :
Mathieu COURTOIS
Version default
Date :
01/03/2013
Page :
4/10
Clé :
U2.51.02
Révision :
10626
2 Transformer les valeurs d’une table ou d’une fonction en objets Python
Remarque
Les traitements en Python qui sont utilisés à partir de maintenant imposent d’être en
PAR_LOT=’NON’ dans POURSUITE (ou DEBUT ).
L’objet est ici de récupérer les valeurs d’une table ou d’une fonction dans un objet Python pour les manipuler ensuite. Notons qu’il est parfois pratique de produire une fonction à partir des données d’une table, en filtrant éventuellement certaines lignes de la table ; c’est une utilisation de
RECU_FONCTION [U4.32.03], que nous n’aborderons pas ici.
Sur les objets de type fonction, on dispose des méthodes :
1) Valeurs pour récupérer les abscisses et les ordonnées dans 2 listes Python de réels.
Avec les données du paragraphe précédent :
>>> lx, ly = fDY2.Valeurs()
On obtient :
>>> print lx
[1.0, 1.1, 1.2, 1.8, 2.45]
>>> print ly
[0.207127, 0.414928, 0.792728, 0.688227, 0.343029]
1) Absc et Ordo permettent de récupérer les abscisses et les ordonnées séparément.
>>> lx = fDY2.Absc()
>>> lx = fDY2.Ordo()
On peut accéder au contenu d’une cellule d’une table avec [nom_paramètre, numéro_ligne] :
>>> print tab[‘DY’, 2]
-8.14498E-2
On peut également transformer l’objet (JEVEUX) table en une instance de la classe Python Table.
>>> tabpy = tab.EXTR_TABLE()
Le document [U1.03.02] détaille les méthodes Python disponibles sur les objets de type Table. Pour l’extraction des valeurs, on dispose notamment d’un méthode values() qui retourne un dictionnaire dont les clés sont les noms de paramètres (ex ‘DY’) et les valeurs les listes des valeurs de la table.
Attention
Les listes Python sont indexées de
0
à
n−1
(pour
n
éléments), l’équivalent de tab[‘DY’, 2] est donc tabpy[‘DY’][1] !
Pour le tracé de courbes à partir de listes de réels Python, voir [§4].
3 Manipuler les valeurs en Python
On donne ici quelques exemples de manipulation des valeurs obtenues précédemment sous forme de listes ou de tableaux Numeric.
Numeric est un module Python optionnel (c’est à dire non inclus à la distribution de Python fournie sur www.python.org) mais indispensable pour utiliser Code_Aster, on peut donc faire import Numeric sur toutes installations de Code_Aster.
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
3.1
Avec des listes Python
Version default
Date :
01/03/2013
Page :
5/10
Clé :
U2.51.02
Révision :
10626
Les listes Python sont facilement manipulables en utilisant les boucles. Prenons l’exemple de la notice
[U2.51.01] pour
– 10.x 10.
en
100
pas :
y=−1.5
y=−5.
si sin x0 sinon
On cherche donc à construire deux listes de réels,
lx
et
ly
.
Comme toujours en Python, il y a plusieurs moyens de faire, plus ou moins simplement, plus ou moins
élégamment !
x0=-10.
pas=20./100 lx=[] for i in range(101):
lx.append(x0+i*pas) ou bien lx=[x0+i*pas for i in range(101)] def f(x):
if sin(x)<0.:
return -1.5
else:
return -5.
ly=map(f, lx) qui applique la fonction
f
à tous les éléments de
lx
On peut tracer cette courbe en utilisant les mots-clés ABSCISSE et ORDONNEE de IMPR_FONCTION
3.2
Avec des tableaux Numeric
La manipulation des données sous forme de tableaux Numeric est simplifiée par l’utilisation d’opérations très performantes (appelées ufunc) sur le tableau entier (dans l’exemple suivant on utilise sin()). Numeric gère également les tableaux à plusieurs dimensions.
En reprenant l’exemple précédent : from Numeric import * lx = arrayrange(-10., 10.+0.2, 0.2, Float) ly = array(map(f, lx)) ou bien sans utiliser f : ly = -1.5*less(sin(lx), 0.) + (-5.)*(1.-less(sin(lx), 0.))
Notons que map() retourne une liste et non un tableau Numeric. La deuxième expression est entre
10 et 20 fois plus rapide sur de très gros tableaux ( 10
5 peu souvent le cas des fonctions ou tables issues d’Aster.
– 10
6
termes), ce qui est cependant assez
On peut tracer cette courbe en utilisant les mots-clés ABSCISSE et ORDONNEE de IMPR_FONCTION
en prenant soin de convertir les tableaux Numeric en liste, par exemple (cf. [§4]) :
ABSCISSE = lx.tolist()
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)

公開リンクが更新されました
あなたのチャットの公開リンクが更新されました。