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.