u4.31.03 Opérateur DEFI_NAPPE#
Syntaxe#
Détail de la syntaxe
nappe = DEFI_NAPPE(
◆ NOM_PARA = / "DX",
/ "DY",
/ "DZ",
/ "DRX",
/ "DRY",
/ "DRZ",
/ "DTAN",
/ "TEMP",
/ "TSEC",
/ "INST",
/ "X",
/ "Y",
/ "Z",
/ "EPSI",
/ "META",
/ "FREQ",
/ "PULS",
/ "DSP",
/ "AMOR",
/ "ABSC",
/ "SIGM",
/ "HYDR",
/ "SECH",
/ "PORO",
/ "SAT",
/ "IRRA",
/ "PGAZ",
/ "PCAP",
/ "PLIQ",
/ "PVAP",
/ "PAD",
/ "VITE",
/ "ENDO",
/ "NORM",
/ "EPAIS",
/ "EXCENT",
/ "NEUT1",
/ "NEUT2",
/ "NEUT3",
/ "NEUT4",
/ "XF",
/ "YF",
/ "ZF",
/ "NUME_ORDRE",
◇ NOM_RESU = text (défaut: "TOUTRESU"),
◆ PARA = float,
/ FONCTION = fonction,
◆ / DEFI_FONCTION = _F(
◆ VALE = float,
◇ INTERPOL = / "LIN" (par défaut),
/ "LOG",
◇ PROL_DROITE = / "CONSTANT",
/ "LINEAIRE",
/ "EXCLU" (par défaut),
◇ PROL_GAUCHE = / "CONSTANT",
/ "LINEAIRE",
/ "EXCLU" (par défaut),
),
◇ / NOM_PARA_FONC = / "DX",
/ "DY",
/ "DZ",
/ "DRX",
/ "DRY",
/ "DRZ",
/ "DTAN",
/ "TEMP",
/ "TSEC",
/ "INST",
/ "X",
/ "Y",
/ "Z",
/ "EPSI",
/ "META",
/ "FREQ",
/ "PULS",
/ "DSP",
/ "AMOR",
/ "ABSC",
/ "SIGM",
/ "HYDR",
/ "SECH",
/ "PORO",
/ "SAT",
/ "IRRA",
/ "PGAZ",
/ "PCAP",
/ "PLIQ",
/ "PVAP",
/ "PAD",
/ "VITE",
/ "ENDO",
/ "NORM",
/ "EPAIS",
/ "EXCENT",
/ "NEUT1",
/ "NEUT2",
/ "NEUT3",
/ "NEUT4",
/ "XF",
/ "YF",
/ "ZF",
/ "NUME_ORDRE",
◇ INTERPOL = / "LIN" (par défaut),
/ "LOG",
◇ PROL_DROITE = / "CONSTANT",
/ "LINEAIRE",
/ "EXCLU" (par défaut),
◇ PROL_GAUCHE = / "CONSTANT",
/ "LINEAIRE",
/ "EXCLU" (par défaut),
◇ INFO = / 1 (par défaut),
/ 2,
◇ VERIF = "CROISSANT" (ou non renseigné),
◇ TITRE = text,
)
◆ : obligatoire
◇ : optionnel
⟐ : présent par défaut
& : ensemble
/ : un seul parmi
| : plusieurs choix possibles
Opérandes#
Opérande NOM_PARA#
♦ NOM_PARA = np
Désigne le nom du paramètre de la nappe (deuxième variable) cf. exemple au [§4.1].
Les valeurs autorisées sont listées sont les mêmes que dans DEFI_FONCTION [U4.31.02].
Opérande NOM_RESU#
◊ NOM_RESU = nr
Nom du résultat, des valeurs de la nappe. Il doit être identique au NOM_RESU de chacune des fonctions composant la nappe.
En fait, cet opérande ne sert pas systématiquement pour des vérifications de cohérence, dans l’exécution du code. Ces vérifications de cohérence sont faites par la commande CALC_FONCTION [U4.32.04].
Opérande PARA#
♦ PARA = lp
Liste des valeurs du paramètre caractéristique de la nappe : para1, para2, … Le cardinal de cette liste doit être égal au nombre de fonctions définies ensuite.
Opérandes PROL_DROITE et PROL_GAUCHE#
◊ PROL_DROITE et PROL_GAUCHE =
Définissent le type de prolongement à droite (à gauche) du domaine de définition de la variable :
“CONSTANT” |
pour un prolongement avec la dernière (ou première) valeur de la nappe, |
“LINEAIRE” |
pour un prolongement le long du premier segment défini (PROL_GAUCHE) ou du dernier segment défini (PROL_DROITE), ce prolongement ne tient pas compte d’une éventuelle interpolation logarithmique, |
“EXCLU” |
si l’extrapolation des valeurs en dehors du domaine de définition du paramètre npest interdite (dans ce cas si un calcul demande une valeur de la fonction hors du domaine de définition, le code s’arrêtera en erreur fatale). |
Opérande INTERPOL#
◊ INTERPOL=
Type d’interpolation de la nappe : un type pour l’interpolation de la deuxième variable et un pour l’interpolation entre deux fonctions. Ceci est obtenu en fournissant une liste de 2 textes parmi:
INTERPOL = (“LIN”, “LOG”)
“LIN”: |
linéaire, |
“LOG”: |
logarithmique, |
Remarque:
Si une seule valeur est précisée, elle est prise en compte à la fois par l’interpolation du paramètre et de la fonction. INTERPOL = “LOG’équivaut à (“LOG”, “LOG”).
Opérande INFO#
◊ INFO =
Précise les options d’impression sur le fichier message (unité 6).
1 : |
pas d’impression (option par défaut) |
2 : |
impression des paramètres plus la liste des 10 premières valeurs de chaque fonction dans l’ordre croissant des 10 premiers paramètre |
Opérande VERIF#
◊ VERIF =
L’opérateur DEFI_NAPPE réordonne les valeurs des paramètres np dans l’ordre croissant. Si VERIF vaut “Croissant” l’opérateur arrête l’exécution si les valeurs du paramètre np n’ont pas été données dans cet ordre.
Définition des fonctions de la nappe#
Deux modes de définition de la nappe sont possibles :
à partir d’une liste de fonctions existantes [§3.8.1],
en définissant directement les différentes fonctions de la nappe [§3.8.2].
Opérande FONCTION#
FONCTION = lf
Liste de concepts du type fonction créés par des commandes DEFI_Fonction [U4.31.02], DEFI_CONSTANTE [U4.31.01], CALC_FONC_INTERP [U4.32.01], …
lf est la liste des noms de concepts du type fonction correspondant aux valeurs du paramètre.
Toutes les fonctions de la liste doivent avoir le même nom de variable (NOM_PARA de DEFI_FONCTION, que nous appellerons npf) et avoir le même nom nr pour nom de résultat.
nf est une nappe de la variable de nom np et de la variable de nom npf et dont la valeur est de nom nr.
Définition directe des fonctions#
Opérande NOM_PARA_FONC#
♦ NOM_PARA_FONC = npf
Nom du paramètre caractéristique des fonctions constituant la nappe.
Les valeurs autorisées sont listées sont les mêmes que pour NOM_PARA.
Mot clé DEFI_FONCTION#
DEFI_FONCTION =
Définition directe des fonctions constituant la nappe.
Opérande VALE#
♦ VALE =lv
lv est la liste de valeur (x1, y1, …, xn, yn) avec dans l’ordre :
x1, y1 (la première valeur du paramètre et la valeur correspondante du résultat),
…
xn, yn (la dernière valeur du paramètre et la valeur correspondante du résultat).
Opérandes PROL_DROITE et PROL_GAUCHE#
◊ PROL_DROITE et PROL_GAUCHE=
Définissent le type de prolongement à droite (à gauche) du domaine de définition de la variable :
“CONSTANT” |
pour un prolongement avec la dernière (ou première) valeur de la fonction, |
“LINEAIRE” |
pour un prolongement le long du premier segment défini (PROL_GAUCHE) ou du dernier segment défini (PROL_DROITE), |
“EXCLU” |
si l’extrapolation des valeurs en dehors du domaine de définition du paramètre npfest interdite (dans ce cas si un calcul demande une valeur de la fonction hors du domaine de définition, le code s’arrêtera en erreur fatale). |
Opérande INTERPOL#
◊ INTERPOL=
Type d’interpolation de la fonction entre les valeurs du domaine de définition de la fonction : un type pour l’interpolation des abscisses et un pour l’interpolation des ordonnées de la fonction. Ceci est obtenu en fournissant une liste de textes parmi:
INTERPOL = (“LIN”, “LOG”)
“LIN”: |
linéaire, |
“LOG”: |
logarithmique, |
“NON”: |
on n’interpole pas (et donc le programme s’arrêtera si l’on demande la valeur de la fonction pour une valeur du paramètre où elle n’a pas été définie). |
Remarque:
Si une seule valeur est précisée, elle est prise en compte à la fois par l’interpolation du paramètre et de la fonction. INTERPOL = “LOG’équivaut à (“LOG”, “LOG”).
Opérande TITRE#
◊ TITRE = ti
Titre attaché au concept produit par cet opérateur [U4.03.01].
Évaluation d’une nappe#
Soit une nappe \(N\) dont le paramètre est NOM_PARA= \(y\) et composé de fonctions dont NOM_PARA_FONC= \(x\) , de valeurs NOM_RESU= \(z=f(x)\) .
Pour évaluer \(N(x,y)\) :
On cherche \(i\) tel que \({y}_{i}\le y<{y}_{i+1}\) ,
On évalue les deux fonctions \({f}_{i}\) et \({f}_{i+1}\) en \(x\) . Pour cela, on utilise les prolongements et les types d’interpolation de chaque fonction (définis dans la commande DEFI_FONCTION ou sous le mot-clé facteur DEFI_FONCTION de DEFI_NAPPE).
On évalue ensuite \(N(x,y)\) en interpolant à partir des valeurs \(({y}_{i},{y}_{i+1})\) et \(({f}_{i}(x),{f}_{i+1}(x))\) . On utilise alors les prolongements et types d’interpolation définis par les mots-clés simples PROL_GAUCHE, PROL_DROITE, INTERPOL de DEFI_NAPPE.
On écrirait :
nappe = DEFI_NAPPE( NOM_PARA = “y”,
NOM_RESU = “z”,
NOM_PARA_FONC = “x”,
INTERPOL = (a, b),
DEFI_FONCTION = (_F( VALE=…,
INTERPOL = (c, d),),
autres fonctions… ),)
Les types d’interpolation utilisés sont:
c entre deux valeurs x,
d quand on évalue les fonctions en x,
a entre deux valeurs de y,
b entre deux fonctions différentes (évaluées en x).
Exemples#
Définition de la nappe après définition de la fonction#
FCT2 = DEFI_FONCTION (NOM_PARA = “EPSI”, PROL_DROITE = “LINEAIRE”, PROL_GAUCHE = “LINEAIRE”, VALE = (1.25E-5, 3.75, 3.75E-5, 7.5,), )
FCT3 = DEFI_FONCTION (NOM_PARA = “EPSI”, PROL_DROITE = “LINEAIRE”, PROL_GAUCHE = “LINEAIRE”, VALE = (1.25E-5, 2.50, 3.75E-5, 5.0,), )
SIG = DEFI_NAPPE (NOM_PARA = “TEMP”, PROL_DROITE = “CONSTANT”, PROL_GAUCHE = “CONSTANT”, PARA = (20.0, 30.0,), FONCTION = (FCT3, FCT2,) , )
Définition directe de la nappe et des fonctions constitutives#
FCT2 = DEFI_NAPPE ( NOM_PARA = “TEMP”, PROL_DROITE = “CONSTANT”, PROL_GAUCHE = “CONSTANT”, PARA = (20.0, 30.0,), NOM_PARA_FONC = “EPSI”, DEFI_FONCTION = (
_F( PROL_DROITE = “LINEAIRE”,
PROL_GAUCHE = “LINEAIRE”, VALE =(1.25E-5, 3.75, 3.75E-5, 7.5,), ),
_F( PROL_DROITE = “LINEAIRE”, PROL_GAUCHE = “LINEAIRE”, VALE =(1.25E-5, 2.5, 3.75E-5, 5.0,), ),
),
)