2. Les fonctions fournies et leur utilisation#
2.1. Généralité#
Pour aider à l’utilisation de ces fonctions, on s’est efforcé de codifier le nom des fonctions à partir de trois composantes:
la nature GGde la grandeur:
LB longueur en bits,
LO longueur en octets,
MA valeur positive maximale,
MI valeur positive minimale,
GA gamme de valeurs.
Le type TT de la grandeur à laquelle elle s’applique:
IS INTEGER (entier),
LS LOGICAL(logique),
R8 REAL*8(réel),
C8 COMPLEX*8(complexe).
Le suffixe EM (Environnement Machine).
Pour les paramètres de longueur (l_) les fonctions sont de type entier. Les noms de fonction sont de la forme: GGTTEM.
Pour les paramètres dont la valeur dépend du type, le type de la fonction sera celui de la valeur recherchée. Dans ce cas les noms de fonction sont de la forme: TTGGEM.
Puisque ces fonctions ne font pas partie des fonctions intrinsèques du langage, il est indispensable de déclarer leur type dans chaque unité de programme utilisatrice.
2.2. Type logique#
Type logique standard (LOGICAL)
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Plate-forme 64 bits |
Plate-forme 32 bits |
INTEGER |
Longueur en octets |
LOLSEM |
8 |
4 |
2.3. Type entier#
Type entier standard (INTEGER)
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Plate-forme 64 bits |
Plate-forme 32 bits |
INTEGER |
Longueur en octets |
LOISEM |
8 |
4 |
INTEGER |
Valeur maximale |
ISMAEM |
formule \({2}^{63}-1\) |
formule \({2}^{31}-1\) 2147483647 |
2.4. Type réel#
Type réel standard (REAL*8)
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Plate-forme 64 bits |
Plate-forme 32 bits |
REAL*8 |
Précision relative |
R8PREM |
2.220D-16 |
2.220D-16 |
REAL*8 |
Valeur maximale |
R8MAEM |
1.798D+308 |
1.798D+308 |
REAL*8 |
Valeur minimale |
R8MIEM |
2.225D-308 |
2.225D-308 |
REAL*8 |
Gamme |
R8GAEM |
1.340D+154 |
1.340D+154 |
2.5. Paramètres d’utilisation des fichiers#
Ces paramètres sont utilisés en raisons des contraintes d’exploitation sur les serveurs dont les ressources sont partagées. Les bases (fichiers glob.i et vola.i) sont en général créées sur un espace partagé limité (/tmp).
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Plate-forme 64 bits |
Plate-forme 32 bits |
INTEGER |
Longueur maximum d’un fichier en octets |
LOFIEM |
12582912 |
2048000 |
INTEGER |
Taille cumulée des fichiers en octets |
MOFIEM |
50331648 |
50331648 |
2.6. Affectation de constantes binaires#
Pour la construction de masques sur les informations numériques, il est nécessaire d’accéder rapidement aux poids des bits. Ceux-ci sont accessibles par la fonction entière ISPBEM (numéro du bit).
ISPBEM(4)= 00000000000000000000000000001000 = \({2}^{4-1}\) = 8
2.7. Affectation de constantes mathématiques ou physiques#
Les constantes particulières sont accessibles à partir du type de la variable demandée:
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Valeur |
REAL*8 |
\(\pi\) |
R8PI |
3.141592653589793D+00 |
REAL*8 |
\(2\pi\) |
R8DEPI |
6.283185307179586D+00 |
REAL*8 |
Conversion radian/degré |
R8DGRD |
1.745329251994330D-02 |
REAL*8 |
Conversion degré/radian |
R8RDDG |
5.729577951308232D+01 |
REAL*8 |
Zéro absolu (température) |
R8T0 |
273.15 |
2.8. Valeurs particulières#
Ces valeurs sont disponibles sur toutes les machines possédant une arithmétique IEEE.
Type de la fonction |
Paramètre fourni |
Fonction ENVIMA |
Valeur |
INTEGER |
Valeur provocant une erreur lors d’une opération flottante |
ISNNEM |
|
REAL*8 |
Valeur provocant une erreur lors d’une opération flottante |
R8NNEM |
NaN |
REAL*8 |
Valeur d’initialisation des structures de données |
R8VIDE |
1.797693134862316+308 |
2.9. Utilitaire#
Le sous-programme Fortran IMPVEM permet d’éditer globalement les différentes valeurs caractéristiques de la machine de traitement sur le fichier de numéro d’unité logique IUL. Un exemple est donné en annexe.
CALL IMPVEM (IUL): imprime toutes les caractéristiques des types standards.
2.10. Précautions d’emploi#
Puisque ces fonctions ne font pas partie des fonctions intrinsèques du langage, il est indispensable de déclarer leur type dans chaque unité de programme utilisatrice. Dans ce cas les noms de fonction sont TTGGEM avec TT type de la fonction et GG nature de la grandeur ( cf. exemple d’utilisation).
Remarque:
Les valeurs concernant les entiers sont dans le type implicite entier (fonctions commençant par une lettre L- ou N-).
Les fonctions ENVIMA sont disponibles dans la bibliothèque C utilitai de Code_Aster , et s’appuient pour la plupart sur les librairies standard C : fichiers d’en-tête <limits.h> et <float.h> [bib4].
Par définition toute opération de portage d’un sous ensemble de Code_Aster sur d’autres matériels nécessite le portage préalable d’ENVIMA. L’usage des en-têtes standard limite notablement une recherche approfondie dans la documentation du constructeur.