Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
1/6
Organisme(s) : EDF-R&D/AMA
Manuel d'Utilisation
Fascicule U4.3- : Fonction
Document : U4.31.05
Opérateur FORMULE
1 But
Définir une formule réelle à partir de son expression mathématique.
La formule sera utilisable dans une commande ultérieure comme argument de type fonction/formule
ou évaluée avec des valeurs particulières des variables.
Dans de nombreuses applications, on peut tabuler cette formule pour des valeurs particulières par la
commande CALC_FONC_INTERP [U4.32.01] qui produit un concept de type fonction comme
DEFI_FONCTION [U4.31.02] ou DEFI_NAPPE [U4.31.03].
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
2/6
2 Syntaxe
F = FORMULE (
NOM_PARA
=
nom
des
paramètres
[l_K8]
VALE
= """ définition de la fonction """
[K]
)
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
3/6
3 Opérandes
3.1
Définition de la fonction, mot clé VALE
Le corps de la fonction est une expression algébrique PYTHON représentée par une chaîne de
caractères. Elle doit être évaluable dans le contexte : donc respecter la syntaxe PYTHON et n'utiliser
que des fonctions, méthodes ou constantes définies préalablement au moment de son évaluation.
En cas d'erreur de syntaxe, c'est le langage PYTHON qui émet le message d'erreur et non
Code_Aster lui-même.
3.2 Fonctions
standards
Pour une formule représentée par une fonction algébrique ordinaire, se référer à :
« Using PYTHON as a calculator », paragraphe [§3.1.1]
http://docs.python.org/tut/tut.html
Outre les signes algébriques ordinaires + - / * **, sont aussi disponibles des fonctions standards
(buildins) : min, max, abs, float ...
Attention, le signe de division désigne ici la division réelle :
1 / 2 = 0.5
Si on souhaite faire une opération en division entière, il faut utiliser l'opérateur // :
1 // 2 = 0
3.3 Fonctions
mathématiques
Les fonctions principales du module math de PYTHON sont importées par défaut. Elles sont donc
directement utilisables dans le corps des formules.
http://docs.python.org/lib/module-math.html
sin sinh
cos cosh
tan tanh
atan sqrt
atan2 log
asin log10
acos exp
De plus, la constante pi, du même module, est également disponible.
Attention :
Les fonctions trigonométriques sont donc celles de PYTHON et attendent des angles exprimés en
radians. Il faut être vigilant sur la cohérence avec les mots clés simples ANGL_* du langage de
commande qui requièrent en général des angles en degrés.
On peut en utiliser d'autres en prenant soin de les importer préalablement à la déclaration de la
formule. Exemple de redéfinition de l'exponentielle :
from math import e,pow
f_exp = FORMULE(NOM_PARA='X',VALE='pow(e,X)')
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
4/6
4 Exemples
d'utilisation
Pour différents exemples on se reportera au cas test ZZZZ100A.
4.1
Une formule s'utilise comme une fonction tabulée
Définition de la formule Sia :
SIa = FORMULE(NOM_PARA='X',VALE='sin(X)')
LR = DEFI_LIST_REEL( DEBUT = 0.,
INTERVALLE = _F( JUSQU_A = pi , PAS = 0.01 ) )
Fonction tabulée équivalente SI :
SI = CALC_FONC_INTERP( FONCTION = SIa,
LIST_PARA = LR,
NOM_PARA = 'X',
NOM_RESU = 'DEPL', )
Pour définir ainsi une fonction tabulée à partir d'une formule interprétable, voir CALC_FONC_INTERP
[U4.32.01].
Usage de SI ou de SIa dans un mot clé simple attendant une fonction ou une formule :
champ=CREA_CHAMP( ... AFFE = _F( ... VALE_F = SI ou SIa, ) )
4.2
Une formule peut être évaluée comme un réel
Dans le corps du fichier de commande :
SIa = FORMULE(NOM_PARA='X',VALE='sin(X)')
X = SIa(1.57)
print SIa(1.57)
Derrière un mot clé simple attendant un réel :
LR = DEFI_LIST_REEL( DEBUT = SIa(0.),
INTERVALLE = _F( JUSQU_A = SIa(pi/2.) , PAS = 0.01 ) )
Dans une autre formule :
SIb = FORMULE(NOM_PARA='X',VALE='X*SIa(5.)')
4.3
Invoquer une formule dans une autre formule
SIa = FORMULE(NOM_PARA='X',VALE='sin(X)')
SIb = FORMULE(NOM_PARA='X',VALE='X*SIa(X)')
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
5/6
4.4
Formule à plusieurs paramètres
NAP = FORMULE( NOM_PARA = ('FREQ','AMOR'),
VALE = ''' (1./((2.*pi*FREQ)**2 - OMEGA**2 )**2
+(2.*AMOR*2.*pi*FREQ*OMEGA)**2) ''')
Dans cet exemple, on définit une formule à 3 paramètres. Compte tenu de la longueur de l'expression,
elle est écrite pour plus de commodité sur plusieurs lignes avec des triples cotes pour la délimiter. La
constante pi est une constante standard (cf paragraphe [§3.2]), la constante OMEGA aura été définie
plus haut par l'utilisateur.
Dans l'état actuel, seules les formules de Rn dans R sont possibles : un seul réel produit.
4.5
Formule issue de programmation d'une fonction PYTHON
On peut faire référence dans une formule à des fonctions programmées en PYTHON, ce qui autorise
des formules beaucoup plus complexes que de simples expressions algébriques.
Par exemple une fonction de Heavyside :
0 si x
.
<
0
HEAVYSIDE ( x) =
1 si x
.
0
La méthode python se programme ainsi :
def HEAVYSIDE(x) :
if x<0. : return 0.
If x>=0. : return 1.
F_HVS = FORMULE( NOM_PARA = 'INST',
VALE = 'HEAVYSIDE(INST)')
Attention :
L'usage de programmation PYTHON dans le fichier de commandes (ici la méthode HEAVYSIDE)
est incompatible avec l'édition de ce fichier avec EFICAS.
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Code_Aster ®
Version
8.2
Titre :
Opérateur FORMULE
Date :
31/01/06
Auteur(s) :
C. DURAND Clé
:
U4.31.05-G1 Page :
6/6
Page laissée intentionnellement blanche.
Manuel d'Utilisation
Fascicule U4.3- : Fonction
HT-62/06/004/A
Document Outline