Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Conditions aux limites Forcées Sup.: Calcul des tableaux élémentaires Préc.: 3.2 Les modules THERCT et ELASCT Index Table des matières


3.3 Les modules THENEW, COFORC et COMILI

 

Généralités

Introduction

Les modules THENEW, COMILI et COFORC forment une unité de calcul. Ils permettent de calculer les tableaux élémentaires  lorsque les données physiques du problème traité (caractéristiques des matériaux, efforts appliqués ...) sont quelconques, ou encore, lorsque la bibliothèque d'éléments finis utilisée n'est ni thermique ni élastique.

Les modules COMILI et COFORC créent respectivement les S.D. MILI et FORC, chacune de ces S.D. permet de retrouver les caractéristiques des matériaux composant le domaine et les efforts exercés sur ce domaine. Les données physiques du problème peuvent être fournies sous plusieurs formes :

Nous reviendrons plus en détail sur ces différentes façons de fournir les données dans le paragraphe 3.3.3.

Le module THENEW crée les tableaux élémentaires et les stocke dans la structure de données TAE. Pour créer ces tableaux, le module récupère les données qui lui sont nécessaires dans les structures de données :

Mode de calcul

Le programme THENEW est maintenant adapté aux machines vectorielles, c'est à dire qu'au lieu de calculer un à un les tableaux élémentaires associés à chaque élément, on peut désormais calculer simultanément les tableaux élémentaires associés à un groupe composé de LVECT éléments :

Cette façon de procéder (coloriage des éléments) influence la description des données uniquement lorsque celles-ci sont décrites à l'aide des sous-programmes FORCEV  ou MILIEV  ou à l'aide des sous-programmes utilisateur.
En effet, lorsque les éléments sont coloriés, certaines données doivent être fournies pour tous les éléments appartenant à une même couleur, et non plus pour un seul élément.

Avant d'étudier en détail ces trois modules (programme d'appel - exemples d'exécution) nous allons consacrer les deux paragraphes suivants à la description des données, en particulier nous décrirons la façon de traiter les données qui a été adoptée dans Modulef, puis nous regarderons les différentes possibilités de fournir les données.

Les différents types de données physiques d'un problème

 

Généralités

  Les données physiques d'un problème sont traitées d'une manière très générale. Ces données sont classées en fonction de trois critères :
  1. les données nécessaires au calcul
  2. les données décrites :
  3. elles sont enfin classées en fonction des entités géométriques qu'elles caractérisent : un volume (), une surface (), une ligne (), un point ().
    Exemple : Dans un problème élastique tridimensionnel est une donnée volumique, est une donnée surfacique. Par contre, en 2D, est une donnée surfacique et, est une donnée linéique.

Stockage des données

En fonction de leur utilisation (calcul de la masse, de la rigidité ou du second membre - critères 1. mentionné ci-dessus), les données fournies par l'utilisateur sont stockées dans deux structures de données :

Dans ces deux S.D. on trouve aussi des informations sur la manière dont sont fournies les données :
  1. dans des tableaux,
  2. à l'aide des sous-programmes FORCEV  (pour la S.D. FORC) et MILIEV  (pour la S.D. MILI).
  3. à l'aide de sous-programmes utilisateur .
La structure des S.D. MILI et FORC est identique. Le tableau 3.1 illustre le remplissage des tableaux contenus dans ces structures de données en fonction des entités géométriques que décrivent les données physiques. Pour plus de détails sur ces deux S.D. vous pouvez consulter le [Guide Modulef - 2].

   

Option Option 1 Option 2
(par numéros de référence) (par élément)
Structure de Données FORC MILI FORC MILI
FOR3 MIL3 FOR7 MIL7
FOR4 MIL4 FOR8 MIL8
FOR5 MIL5 FOR9 MIL9
FOR6 MIL6 FORA MILA

, , , sont des tableaux qui contiennent respectivement des données qui caractérisent un volume, une surface, une ligne ou un point.


Table 3.1: Remplissage des S.D. MILI et FORC 

Description des données par l'utilisateur

Nous nous intéressons maintenant à la façon dont l'utilisateur entre ses données.
Les données dépendent de l'élément fini utilisé. Il faut donc consulter la fiche technique de l'élément utilisé, celle-ci indique :

C'est l'auteur de chaque élément fini qui fixe les modalités d'emploi après avoir lui-même fixé : L'utilisateur quand à lui se borne à indiquer de quelle manière sont fournies les données :

Pour illustrer ces propos nous allons nous appuyer sur un exemple.

Exemple

Soit à résoudre le problème thermique classique bidimensionnel suivant :

 

et frontière de ; avec :

Le schéma 3.1 nous montre sur quel domaine s'effectue l'étude du problème thermique 3.1.

 
Figure: Domaine d'étude du problème 

Maintenant, écrivons la formulation variationnelle en température associée au problème thermique 3.1 :

 

On choisit alors un élément fini : TRIA 2P1D, afin d'approcher le problème continu 3.2 par un problème discret. L'interpolation est donc de type P1 - Lagrange (cf fiche technique de l'élément). La formulation variationnelle indique que l'on calcule uniquement la matrice de rigidité et le (ou les) seconds membres élémentaires. A partir de cette remarque, une consultation de la fiche technique de l' élément indique quelles sont les données à fournir pour créer chacun des tableaux élémentaires :

Structure de donnée MILI :
Les données nécessaires au calcul de la matrice de rigidité sont
Structure de données FORC :

Le tableau 3.2 contient les renseignements techniques de l'élément TRIA 2P1D, il indique en fonction de leur type (, , , ,) toutes les données qu'il faut fournir (et leur ordre) lorsque l'on traite m cas de charge.

 

Entité MILI FORC
géométrique
rien rien
k, 0., 0. (isotrope) ou , , ...,,
(anisotrope) , ...,, ,...,
, , ,... ,
, ... ,
rien rien

, et désignent respectivement le cas de charge () de , g et .


Table: Données à fournir pour chacun des tableaux , , ,  

Il reste alors à définir en fonction de quel critère et comment sont fournies les données, les quelques lignes qui suivent indiquent quels sont les meilleurs choix à effectuer :

La possibilité de fournir les données élément par élément est essentiellement utilisée lorsque des données sont spécifiques à un seul élément.


Avant d'aborder en détail les modules COFORC, COMILI et THENEW nous donnons quelques conseils et faisons quelques remarques sur la description des données.

Remarques

Le stockage des données

  Nous regardons maintenant de quelle manière peuvent être fournies les données physiques d'un problème :

  1. dans des tableaux,
  2. à l'aide des programmes FORCEV ou MILIEV,
  3. à l'aide des sous-programmes utilisateur.

Ces tableaux ou sous-programmes ne sont pas lus ni exécutés par les modules COFORC et COMILI, mais ce sont les structures de données FORC et MILI produites par ces modules qui indiquent pour chaque donnée nécessaire au calcul des tableaux élémentaires, quel mode de stockage est choisi.

Ces tableaux ou sous-programmes sont nécessaires à l'exécution du module THENEW :

Les tableaux ou paramètres de sortie des sous-programmes doivent être déclarés, suivant la nature du problème traité, en réels simple ou double précision. En règle générale, mais il est préférable de le vérifier sur la fiche technique des Eléments Finis utilisés, dans un problème thermique on travaille avec des réels en simple précision, et l'on utilise plutôt les réels double précision pour les problèmes élastiques. Cette convention est valable sur un ordinateur avec des mots stockés sur 32 bits. Sinon, la simple précision suffit sur les ordinateurs à 64 bits.

Il est souvent utile de connaître la numérotation des faces et des arêtes des éléments en fonction de la numérotation locale des noeuds pour fournir les données surfaciques ou linéiques, c'est ce qui sera développé dans le dernier paragraphe.

Les tableaux

  Lorsque l'on choisit de fournir les données dans un tableau, il est commode d'associer ce tableau à une structure de données. Tous les modules de création de structures de données (COMACO, COFORC, THENEW ...) donnent à l'utilisateur la possibilité d'associer NTASD tableaux à la structure qui est créée. Si cette option est choisie, pour chaque tableau les informations suivantes doivent être données :
Pour I de 1 au nombre de tableaux, Fin Pour

Ce mode de stockage est essentiellement réservé à des données constantes, dans le cas contraire, on utilise le sous-programme FORCEV (respectivement MILIEV) ou les sous-programmes utilisateur.

Quelle que soit la valeur de LVECT ( 2 : plusieurs éléments sont traités simultanément), lorsque la description des données est faite par tableau, les données nécessaires à un seul élément sont fournies (cf fiches techniques). La S.D. FORC (ou MILI) contient des informations concernant le nom du tableau ainsi que l'adresse dans ce tableau des différentes données

Les sous-programmes FORCEV et MILIEV

     

Généralités :


Ces sous-programmes sont très généraux, pour tout type de problème (élastique, thermique ou autre), ils permettent de décrire toutes les données nécessaires au calcul des seconds membres élémentaires (FORCEV) et des matrices élémentaires (MILIEV).

Ces deux sous-programmes ont une stucture et une fonctionnalité identiques, toutes les informations qui sont données dans ce paragraphe sont donc valables pour chacun de ces sous-programmes.

Ils sont appelés par le module THENEW. Les paramètres d'entrées sont donc initialisés dans le programme d'appel (THENEW). Lors de leur écriture, il faut donc considérer les paramètres d'entrée comme des valeurs connues. Ces paramètres devraient permettre d'évaluer toutes les données nécessaires au calcul du (ou des) second(s) membres(s) et des matrices élémentaires. Si ce n'est pas le cas, l'utilisateur a en outre accès à tous les tableaux existants en mémoire centrale au moment de l'exécution de THENEW.

Méthode de travail :
On décrit les données par élément, face ou arête. Lorsque l'utilisateur écrit son programme, entre autres informations il connaît :

A partir de ces informations, et au vu de la fiche technique de l'élément fini choisi, il est parfois nécessaire de recalculer les coordonnées des points d'intégration numérique, lorsque ceux-ci ne correspondent pas aux points géométriques.

Nous décrivons maintenant les paramètres d'appel de ces sous-programmes.

Description des sous-programmes

FORCEV (M, LOPT, X, NDIM, NPO, TAR, LTAR, LVECT, IADR,
[4] I1, NARE, IA)
 
MILIEV (M, LOPT, X, NDIM, NPO, TAR, LTAR, LVECT, IADR,
[4] I1, NARE, IA)
 

Les paramètres d'entrée :
M :
(I) super-tableau de travail. Il permet d'accèder à n'importe quel tableau qui réside en mémoire centrale à l'aide d'un appel au sous-programme TROUVE.
LOPT :
(I) numéro d'option indiqué dans la S.D. FORC (ou la S.D. MILI). Cette option permet de décrire des données associées à des entités géomètriques différentes (, , ou ), ou encore de décrire des données associées à des sous-domaines ou à des références différents.

X(LVECT, NPO, NDIM) :
(R) tableau contenant les coordonnées des éléments en cours de traitement,
NDIM :
(I) dimension de l'espace,
NPO :
(I) nombre de points décrivant l'élément,
LTAR :
(I) nombre de mots RéSULTATS à fournir pour chaque élément, (en double précision, le nombre de variables à fournir est égal à LTAR / 2, en simple il a pour valeur LTAR).
LTAR est calculé dans THENEW en examinant le type l' élément courant.
Dans le sous-programme FORCEV, LTAR dépend aussi du nombre de cas de charge (NDSM),
LVECT :
(I) nombre d'éléments traités simultanément (nombre d'éléments dans une même couleur),
IADR :
(I) première adresse dans le tableau TAR des variables concernées ; cette valeur est contenue dans la S.D. FORC (respectivement MILI),
I1 :
(I) en utilisation standard I1 vaut zéro, sinon ce paramètre permet de faire une translation dans l'un des tableaux internes de THENEW en injectant une valeur lors de l'écriture du programme FORCEV ou MILIEV,
si IAD est l'adresse de début de , (cette valeur est contenue dans les S.D. FORC ou MILI), dans THENEW on fait IAD = IAD + I1,
NARE :
(I) numéro, dans la numérotation locale de l'élément, en cours de traitement
IA :
(I) adresse -1 du premier mot contenant les informations sur l'élément courant dans le tableau MAIL de la S.D. MAIL. Cette adresse, fournie par THENEW permet de retrouver aisément toutes les caractéristiques de l'élément en cours de traitement, ie code de la géométrie, type, nombre de noeuds et/ou de points ainsi que leurs numéros, tableau des arêtes, ...
Ce paramètre est particulièrement important lorsque les données sont calculées à partir de valeurs obtenues lors d'un précédent calcul.

Paramètre de retour :
TAR(LTAR/NBREMO * LVECT) :
([note] lorsque l'on travaille en double précision, sur des machines 32 bits NBREMO a pour valeur 2 !!!) (R OU D) contient les valeurs de l'un des
[4] tableaux , , , , nécessaires au calcul des seconds membres élémentaires (respectivement matrices élémentaires). L'utilisateur, tout en respectant l'ordre des données, peut dimensionner TAR à sa convenance ceci afin d'avoir des programmes faciles à lire.

Dans les cas simples, il semble que les paramètres LOPT, X(LVECT,NPO,NDIM), NARE, TAR, LTAR, LVECT soient suffisants pour écrire le sous-programme FORCEV (respectivement MILIEV).
On considère comme cas simples les cas où les données recherchées sont

La description des données doit respecter l'ordre figurant dans la fiche technique de élément fini utilisé.

Les sous-programmes utilisateur

Dans un premier temps nous énonçons les principales différences entre ce mode de stockage et les modes de stockage cités précédemment (paragraphe 3.3.3 et 3.3.3) puis, nous donnons la liste des sous-programmes utilisateur disponibles.

Principales caractéristiques de ce mode de stockage :


Ce dernier mode de stockage est plus aisé à utiliser que les précédent, il évite la gestion de tableaux ou l'emploi de sous-programmes très généraux (FORCEV ou MILIEV) dont l'utilisation se révèle parfois difficile.

Ce mode de traitement est assez différent des deux précédents :

Les sous-programmes utilisateur SPUVTH et SPUVEL :

 

Dans les tableaux 3.3 et 3.4, nous donnons une liste non exhaustive de tous les mnémoniques existants pour chacun des deux programmes, et leur signification. Ces tableaux contiennent aussi la valeur des paramètres des sous-programmes SPUVEL et SPUVTH en fonction des données décrites. Cette liste peut être complétée en fonction des besoins nouveaux.

 

Calcul de Données mnémonique LVAL1
la masse CAPA 1
la rigidité k ou COND 1 (matériau isotrope)
2 (2D anisotrope)
6 (3D anisotrope)
g ECHA 1
DEFO 1
le second membre SOUR NDSM
FLUX NDSM

SOUR NDSM

avec le coefficient de couplage thermique, et la température imposée
[4] sur (cette donnée est nécesaire lorsque l'on travaille avec des éléments finis mixtes).


Table 3.3: Les sous-programmes utilisateur en thermique 

 

Données mnémonique LVAL1 NCOMP LV
la masse ROTC 1 1 LVECT
la rigidité ou ELAS 1 LVECT
DILA 1 LVECT
le second EFOO NDSM NDIM LVECT
membre
SIGM NDSM LVECT
EFOF NDSM NDIM 1

avec :

:
le nombre de variables à entrer pour décrire :
, :
le coefficient de dilatation, et le nombre de variable permettant de le décrire :

, :
les contraintes initiales, et le nombre de variable permettant de les décrire :

Remarque :
Les valeurs des paramètres du programme SPUVEL décrites dans le tableau 3.4 correspondent à des éléments finis volumiques axisymétriques ou bidimensionnels ; si l'on travaille sur d'autres types d'éléments finis (plaques ou segments), la valeur de NCOMP pour les mnémoniques ROTC et ELAS pourra être différente de celle donnée dans le tableau 3.4.


Table: Les sous-programmes utilisateur en élasticité 

Quelques limites d'utilisation :


Lorsque l'on utilise cette méthode de description des données, il est nécessaire que dans les structures de données FORC ou MILI la valeur absolue de la variable NOPT (option indiquant si le matériau est isotrope (NOPT 1), ou anisotrope (NOPT 1)) soit supérieure ou égale à 20. Si cette condition n'est pas réalisée, les sous-programmes utilisateur ne seront jamais appelés lors de l'exécution de
[4] THENEW.

3.3.4 Exemple

Au cours des paragraphes suivants nous décrivons les modules
[4] COFORC, COMILI et THENEW. Cependant, avant d'aborder ces paragraphes, nous posons un problème sur lequel s'appuient la plupart des exemples qui sont traités par la suite.
L'exemple sur lequel nous travaillons est un problème d'élasticité bidimensionnel en contraintes planes.
La figure 3.2 représente le domaine d'étude du problème. Le domaine est composé de matériaux isotropes. En annexe C, vous trouverez les fichiers de données permettant d'effectuer les étapes de maillage et d'interpolation.

 
Figure: Domaine d'étude du problème 

Formulation du problème :

 

avec

L'élément fini ELAS TRIA 2P2D est choisi pour résoudre ce problème.

LVECT est différent de 1 (plusieurs éléments sont traités simultanément). Le maillage est colorié ceci afin de ne pas avoir des éléments de même couleur dans les deux sous-domaines. Le fichier de commande permettant de réaliser le maillage est donné en annexe C.

Nous allons maintenant décrire les modules COFORC, COMILI et THENEW ; pour chacun de ces modules nous suivons le plan suivant :

  1. but et limites d'utilisation,
  2. mise en oeuvre du module (programme d'appel - fichiers nécessaires - cartes de données),
  3. exemple d'utilisation.

3.3.5 Description du module COFORC

   

But et limites d'utilisation

Le module COFORC construit, à partir de cartes données fournies par l'utilisateur, la structure de données FORC. Cette S.D. permet de localiser les efforts, les quantités de chaleur fournies ou, plus généralement tout autre caractéristique nécessaire au calcul des seconds membres élémentaires.

L'ordre dans lequel l'utilisateur fournit les données est imposé (cf fiches techniques des Eléments Finis).

Les éléments qui ont des caractéristiques spéciales doivent intervenir dans l'ordre croissant de leur numérotation.

Mise en oeuvre du module COFORC

Le programme d'appel :


Il doit contenir les instructions suivantes :

Sous-programmes et fonctions supplémentaires :


Le module COFORC n'appelle aucun module supplémentaire (le sous-programme FORCEV et les sous-programmes utilisateur sont uniquement utilisés par THENEW).

Les fichiers et bibliothèques nécessaires :


Le fichier contenant la S.D. FORC (de support NFFORC), mais il n'est pas toujours nécessaire car cette S.D. peut rester en mémoire centrale.

Les bibliothèques Modulef utilisées par le module COFORC sont (dans l'ordre) :
COSD, UTSD, UTII, U_ xxx([note] utilitaire spécifique à la machine utilisée)

Les cartes de données :


La notion de carte perd son sens lorsque le format libre est utilisé, par carte on désigne ici un ensemble logique.
Les cartes décrivant les tableaux associés :

Si NTFORC, le nombre de tableaux associés à la S.D. FORC, est non nul on lira NTFORC tableaux sur des cartes de données.
Pour I de 1 à NTFORC,

Fin Pour

Les cartes décrivant la S.D. FORC :

  1. NDSM : le nombre de seconds membres,
  2. FOR2(I), I=1,8
    8 tableaux permettent de décrire les données : FOR3, FOR4, ..., FOR9, FORA.
    FOR2(I) indique l'existence (ou l'absence) de ces tableaux :
    où n représente le nombre de sous-domaines, de numéros de références ou d'éléments qui sont décrits dans le tableau.

    Avant de poursuivre la description des cartes de données, nous rappelons quel type de données sont décrites dans chacun des tableaux FOR3, FOR4, ..., FOR9, FORA ([note] ces tableaux correspondent aux tableaux du même nom contenu dans la S.D. FORC) (vous pouvez aussi consulter la figure 3.1 page gif).

    FOR3 : données volumiques par sous-domaine
    FOR4 : données surfaciques par numéro de référence (NDIM = 2)
    par sous-domaine (NDIM =3)
    FOR5 : données linéiques par numéro de référence
    FOR6 : données ponctuelles par numéro de référence
    FOR7 : données volumiques par élément
    FOR8 : données surfaciques par élément
    FOR9 : données les linéiques par élément
    FORA : données ponctuelles par élément

  3. description des sous-domaines volumiques ()

    si FOR2(1) = 0, aller à la séquence suivante (cette carte n'existe pas lorsque NDIM = 2)
    Boucle de 1 à FOR2(1)
    Chaque sous-domaine est décrit par deux ensembles de données : Fin de la boucle

  4. description des numéros de référence des surfaces si NDIM = 3, des sous-domaines surfaciques si NDIM = 2 ()

    si FOR2(2) = 0, aller à la séquence suivante
    Boucle de 1 à FOR2(2)
    Chaque surface est décrite par deux ensembles de données : Fin de la boucle

  5. description des numéros de référence des lignes ()

    si FOR2(3) = 0, aller à la séquence suivante
    Boucle de 1 à FOR2(3)
    Chaque ligne est décrite par deux ensembles de données : Fin de la boucle

  6. description des numéros de référence des points ()

    si FOR2(4) = 0, aller à la séquence suivante
    Boucle de 1 à FOR2(4)
    Chaque point est décrit par deux ensembles de données : Fin de la boucle

  7. description des éléments volumiques ()

    si FOR2(5) = 0, aller à la séquence suivante (cette carte n'existe pas lorsque NDIM = 3)
    Boucle de 1 à FOR2(5)
    Chaque élément est décrit par deux ensembles de données : Fin de la boucle

  8. description des surfaces () par élément

    si FOR2(6) = 0, aller à la séquence suivante
    Boucle de 1 à FOR2(6)
    Chaque surface est décrite par deux ensembles de données : Fin de la boucle

  9. description des lignes () par élément
    si FOR2(7) = 0, aller à la séquence suivante


    Boucle de 1 à FOR2(7)
    Chaque ligne est décrite par deux ensembles de données : Fin de la boucle

  10. description des points () par élément
    si FOR2(8) = 0, aller à la séquence suivante


    Boucle de 1 à FOR2(8)
    Chaque point est décrit par deux ensembles de données : Fin de la boucle

Remarque :

Les données nécessaires au calcul de

Exemple d'utilisation du module COFORC

  L'exemple développé ci-dessous correspond au problème 3.3 qui a été décrit page gif.
Au regard de la fiche technique de l'élément fini ELAS TRIA 2P2D, les données à fournir pour créer la structure de données FORC sont :

Ces données seront décrites sous-domaine par sous-domaine. sont des données constantes, on pourra donc indifféremment stocker ces données à l'aide d'un tableau ou de sous-programmes ; par contre dépend de x,y donc cette force ne pourra pas être décrite à l'aide d'un tableau. Nous allons décrire les données de trois manières différentes :

  1. Test 1
  2. Test 2
  3. Test 3
    , , et sont décrits dans le sous-programme FORCEV (respectivement avec les options 1, 2, 3 et 4).

Avertissement :
Lors de la réalisation de ces trois tests, on suppose que l'on travaille sur une machine 32 bits, c'est à dire qu'un réel double précision occupe deux mots mémoire. Par contre, sur une machine 64 bits, on assimile généralement un réel double précision à un réel simple précision donc celui-ci occupe un seul mot mémoire.

Pour chacun de ces cas test, le programme appelant le module COFORC est le programme D7FORC défini comme suit : {

     1	      PROGRAM D7FORC
     2	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     3	C  BUT : APPEL DE COFORC : CREATION D'UNE S.D. FORC
     4	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     5	C   PROGRAMMEUR : P. PATE     INRIA - SIMULOG  92
     6	C  ....................................................................
     7	      CHARACTER*72 NOMFIC
     8	      PARAMETER (LM = 30000)
     9	      COMMON M(LM)
    10	      DOUBLE PRECISION DM
    11	      EQUIVALENCE (M(1),DM)
    12	C
    13	  140 FORMAT(' -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?')          #F     
    14	  150 FORMAT(' -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. FORC ?')       #F     
    15	  160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. FORC ?')             #F     
    16	C 140 FORMAT(' -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?')          #GB     
    17	C 150 FORMAT(' -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. FORC ?')       #GB     
    18	C 160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. FORC ?')             #GB     
    19	C
    20	C    INITIALISATION
    21	C    --------------
    22	      NNN = 0
    23	      IMPRE = 5
    24	      CALL INITIS (M, LM, IMPRE, NNN)
    25	      IMPRIM = IINFO('I')
    26	C
    27	C    OUVERTURE DU FICHIER DE DONNEES
    28	C    -------------------------------
    29	    2 WRITE (IMPRIM,140)
    30	      CALL LIBCAR(NOMFIC)
    31	      CALL TRUNIT (NFDATA)
    32	      CALL OUVRIR(NFDATA,NOMFIC,'OLD',0,IOSTAT)
    33	      IF (IOSTAT.NE.0) GOTO 2 
    34	C
    35	C    NOMBRE DE TABLEAUX A ASSOCIER A LA S.D. FORC
    36	C    --------------------------------------------
    37	      WRITE (IMPRIM, 150)
    38	      CALL LIBENT(NTFORC)
    39	C
    40	C    STOCKAGE DE LA S.D. FORC SUR FICHIER
    41	C    ------------------------------------
    42	      NIFORC = 1
    43	      WRITE (IMPRIM,160)
    44	      CALL LIBCAR(NOMFIC)
    45	      CALL TRUNIT (NFFORC)
    46	      CALL OUVRIS(NFFORC,NOMFIC,'UNFORMATTED',0)
    47	C
    48	      REWIND NFDATA
    49	      CALL LECTEU(NFDATA)
    50	C
    51	C    CREATION DE LA S.D. FORC
    52	C    ------------------------
    53	      CALL COFORC(M,NFFORC,NIFORC,NTFORC)  
    54	
    55	C    IMPRESSION DE LA S.D. FORC
    56	C    --------------------------
    57	      CALL IMFORC(M,NFFORC,NIFORC,IMPRE)
    58	C
    59	C    FERMETURE DES FICHIERS
    60	C    ----------------------
    61	      CLOSE(NFFORC)
    62	      CLOSE(NFDATA)
    63	C
    64	      END
}

Remarques :

  1. Test 1 Les données à fournir sont les suivantes : {
     $  DONNEES RELATIVES A LA S.D. FORC  $
      ALU2       5      12                  $ NOM TYPE NBREMOT
           0.000000000D+00                  $ ALU2(  1)
          -0.124000000D+03                  $ ALU2(  2)
           0.000000000D+00                  $ ALU2(  3)
          -0.124000000D+03                  $ ALU2(  4)
           0.000000000D+00                  $ ALU2(  5)
          -0.124000000D+03                  $ ALU2(  6)
      ' F OMEGA ALU                                                   '  $ CONTENU
      ALU3       5      12                  $ NOM TYPE NBREMOT
           0.000000000D+00                  $ ALU3(  1)
           0.100000000D+03                  $ ALU3(  2)
           0.000000000D+00                  $ ALU3(  3)
           0.100000000D+03                  $ ALU3(  4)
           0.000000000D+00                  $ ALU3(  5)
           0.100000000D+03                  $ ALU3(  6)
      ' F GAMMA FRONTIERE 1                                           '  $ CONTENU
      CUI2       5      12                  $ NOM TYPE NBREMOT
           0.000000000D+00                  $ CUI2(  1)
          -0.230000000D+03                  $ CUI2(  2)
           0.000000000D+00                  $ CUI2(  3)
          -0.230000000D+03                  $ CUI2(  4)
           0.000000000D+00                  $ CUI2(  5)
          -0.230000000D+03                  $ CUI2(  6)
      ' F OMEGA CUIVRE                                                '  $ CONTENU
         1                                  $ NDSM 
         0     2     2     0     0     0     0     0
         1     0     1     1                $ NOSD NFRO NOPT ITRAIT 
    ALU2     1                              $ NTABL IADR 
         2     0     1     1                $ NOSD NFRO NOPT ITRAIT 
    CUI2     1                              $ NTABL IADR 
         1     0     1     1                $ NOSD NFRO NOPT ITRAIT 
    ALU3     1                              $ NTABL IADR 
         2     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         1     1                            $ LOPT IADR
    
    } Ces données peuvent être entrées au clavier, mais pour plus de commodité nous les mettons dans un fichier.

    Sous-programme FORCEV {

         1	      SUBROUTINE FORCEV(M,LOPT,X,NDIM,NPO,TAR,LTAR,LV,IADR,I1,NARE,IA)
         2	C ...................................................................
         3	C BUT : DONNER LES EFFORTS, QUANTITES DE CHALEUR, OU CARACTERISTIQUES
         4	C ---   NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES POUR
         5	C       UN PROBLEME D'ELASTICITE OU DE THERMIQUE.
         6	C ...................................................................
         7	C   PARAMETRES D'ENTREE
         8	C   -------------------
         9	C
        10	C    M     : SUPER TABLEAU DE TRAVAIL
        11	C    LOPT  : NUMERO D'OPTION  DEMANDEE DANS COFORC
        12	C    X     : TABLEAUX REEL X(LVECT,NPO,NDIM )CONTENANT LES COORDONNEES
        13	C             DES ELEMENTS EN COURS DE TRAITEMENT
        14	C    NDIM  : DIMENSION DE L'ESPACE 
        15	C    NPO   : NOMBRE DE POINTS DECRIVANT L'ELEMENT
        16	C    LTAR  : NOMBRE DE MOTS RESULTATS A FOURNIR POUR UN SEUL ELELMENT
        17	C    LVECT : NOMBRE D'ELEMENTS DANS UNE MEME COULEUR
        18	C    IADR  : ADRESSE DANS LE TABLEAU TAR DES VARIABLES CONCERNEES 
        19	C            (DEMANDE DANS COFORC)
        20	C    I1    : EN STANDARD I1 VAUT 0 
        21	C    NARE  : NUMERO DANS LA NUMEROTATION LOCALE DE L'ELEMENT DE LA 
        22	C            FACE (EN 3D), DE L'ARETE (EN 2D) OU DU POINT
        23	C    IA    : ADRESSE -1  DU PREMIER MOT CONTENANT LES INFORMATIONS 
        24	C            SUR L'ELEMENT COURANT DANS LE TABLEAU MAIL DE LA S.D. 
        25	C            MAIL
        26	C    
        27	C   PARAMETRES DE SORTIE
        28	C   --------------------
        29	C    TAR   : TABLEAU DE DIMENSION (LTAR,LVECT) CONTENANT LES DONNEES 
        30	C            NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES
        31	C
        32	C ...................................................................
        33	C
        34	C      PROGRAMMEUR             P. PATE     INRIA - SIMULOG   JUIN 92
        35	C ...................................................................
        36	C
        37	      INTEGER M(*), NDIM,NPO,LTAR,LVECT,IADR,I1,NARE,IA,LOPT
        38	      REAL X(NPO,NDIM) 
        39	      DOUBLE PRECISION TAR(LTAR/2)
        40	C    ON TRAVAILLE  SUR UNE MACHINE 32 BYITS DONC UN REEL DOUBLE
        41	C    PRECISION EST STOCKE SUR DEUX MOTS
        42	      INTEGER IP(3)
        43	      DATA IP/2,3,1/
        44	C
        45	C    ON TRAITE UN SECOND MEMBRE EN 2D  CORRESPONDANT A UNE FORCE 
        46	C    LINEIQUE (DONC LV = 1) 
        47	C    
        48	C
        49	C    LA COMPOSANTE EN Y EST NULLE DONC TAR(2) = TAR(4) = TAR(6) = 0
        50	C
        51	      DO 10 J=2,LTAR/2,2
        52	         TAR (J) = 0.
        53	 10   CONTINUE
        54	C
        55	C    LA COMPOSANTE EN X EST NON NULLE TAR(1) = TAR(3) = TAR(5) = 100*Y
        56	C    LES POINTS D'INTEGRATION SONT LES EXTREMITES DE L'ARETE ET
        57	C    SON MILIEU
        58	      TAR (1) = 100 * X(NARE,2 )
        59	      TAR (3) = 100 * X(IP(NARE),2)
        60	      TAR (5) = 50. * (X(NARE,2) + X(IP(NARE),2))
        61	C
        62	      END
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?
    test1d.dat
     ++ OPEN(10,FILE='test1d.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. FORC ?
    3
     -- NOM DU FICHIER CONTENANT LA S.D. FORC ?
    sd.forc
     ++ OPEN(11,FILE='sd.forc',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COFORC :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. FORC      ( NFFORC ET NIFORC ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTFORC) :      3
    
     NOM  ALU2 VALEURS   0.000000000000E+00 -0.124000000000E+03  0.000000000000E+00
                        -0.124000000000E+03  0.000000000000E+00 -0.124000000000E+03
    
     LE TABLEAU     1 CONTIENT :  F OMEGA ALU                                                            
     NOM  ALU3 VALEURS   0.000000000000E+00  0.100000000000E+03  0.000000000000E+00
                         0.100000000000E+03  0.000000000000E+00  0.100000000000E+03
    
     LE TABLEAU     2 CONTIENT :  F GAMMA FRONTIERE 1                                                    
     NOM  CUI2 VALEURS   0.000000000000E+00 -0.230000000000E+03  0.000000000000E+00
                        -0.230000000000E+03  0.000000000000E+00 -0.230000000000E+03
    
     LE TABLEAU     3 CONTIENT :  F OMEGA CUIVRE                                                         
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COFORC  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. FORC DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : FORC
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      3
    
     LE  TABLEAU  1 : ALU2 DE TYPE REEL2MOT    A     12 MOTS
     CONTENU DE CE TABLEAU  :    F OMEGA ALU                                                            
     NOM  :   ALU2 TYPE :  5 VALEURS : 
        0.00000000000000000E+00 -0.12400000000000000E+03  0.00000000000000000E+00
       -0.12400000000000000E+03  0.00000000000000000E+00 -0.12400000000000000E+03
     LE  TABLEAU  2 : ALU3 DE TYPE REEL2MOT    A     12 MOTS
     CONTENU DE CE TABLEAU  :    F GAMMA FRONTIERE 1                                                    
     NOM  :   ALU3 TYPE :  5 VALEURS : 
        0.00000000000000000E+00  0.10000000000000000E+03  0.00000000000000000E+00
        0.10000000000000000E+03  0.00000000000000000E+00  0.10000000000000000E+03
     LE  TABLEAU  3 : CUI2 DE TYPE REEL2MOT    A     12 MOTS
     CONTENU DE CE TABLEAU  :    F OMEGA CUIVRE                                                         
     NOM  :   CUI2 TYPE :  5 VALEURS : 
        0.00000000000000000E+00 -0.23000000000000000E+03  0.00000000000000000E+00
       -0.23000000000000000E+03  0.00000000000000000E+00 -0.23000000000000000E+03
    
     TABLEAU  F O R 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSE IGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          2      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  F O R 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : ALU2
     ADRESSE DANS CELUI-CI :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : CUI2
     ADRESSE DANS CELUI-CI :      1
    
    
     TABLEAU  F O R 5
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES LIGNES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : ALU3
     ADRESSE DANS CELUI-CI :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      1
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
    } Remarques :
  2. Test 2 Fichier de données {
     $  DONNEES RELATIVES A LA S.D. FORC  $
      ALU2       5      12                  $ NOM TYPE NBREMOT
           0.000000000D+00                  $ ALU2(  1)
          -0.124000000D+03                  $ ALU2(  2)
           0.000000000D+00                  $ ALU2(  3)
          -0.124000000D+03                  $ ALU2(  4)
           0.000000000D+00                  $ ALU2(  5)
          -0.124000000D+03                  $ ALU2(  6)
      ' F OMEGA ALU                                                '  $ CONTENU
         1                                  $ NDSM 
         0     2     2     0     0     0     0     0
         1     0     1     1                $ NOSD NFRO NOPT ITRAIT 
      ALU2     1                            $ NTABL IADR 
         2     0    21     3                $ NOSD NFRO NOPT ITRAIT 
         0     0                            $ LOPT IADR 
         1     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         1     1                            $ LOPT IADR 
         2     0    21     3                $ NOSD NFRO NOPT ITRAIT 
         0     0                            $ LOPT IADR
    
    } Sous-programme FORCEV {
         1	      SUBROUTINE FORCEV(M,LOPT,X,NDIM,NPO,TAR,LTAR,LV,IADR,I1,NARE,IA)
         2	C ...................................................................
         3	C BUT : DONNER LES EFFORTS, QUANTITES DE CHALEUR, OU CARACTERISTIQUES
         4	C ---   NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES POUR
         5	C       UN PROBLEME D'ELASTICITE OU DE THERMIQUE.
         6	C ...................................................................
         7	C   PARAMETRES D'ENTREE
         8	C   -------------------
         9	C
        10	C    M     : SUPER TABLEAU DE TRAVAIL
        11	C    LOPT  : NUMERO D'OPTION  DEMANDEE DANS COFORC
        12	C    X     : TABLEAUX REEL X(LVECT,NPO,NDIM )CONTENANT LES COORDONNEES
        13	C             DES ELEMENTS EN COURS DE TRAITEMENT
        14	C    NDIM  : DIMENSION DE L'ESPACE 
        15	C    NPO   : NOMBRE DE POINTS DECRIVANT L'ELEMENT
        16	C    LTAR  : NOMBRE DE MOTS RESULTATS A FOURNIR POUR UN SEUL ELELMENT
        17	C    LVECT : NOMBRE D'ELEMENTS DANS UNE MEME COULEUR
        18	C    IADR  : ADRESSE DANS LE TABLEAU TAR DES VARIABLES CONCERNEES 
        19	C            (DEMANDE DANS COFORC)
        20	C    I1    : EN STANDARD I1 VAUT 0 
        21	C    NARE  : NUMERO DANS LA NUMEROTATION LOCALE DE L'ELEMENT DE LA 
        22	C            FACE (EN 3D), DE L'ARETE (EN 2D) OU DU POINT
        23	C    IA    : ADRESSE -1  DU PREMIER MOT CONTENANT LES INFORMATIONS 
        24	C            SUR L'ELEMENT COURANT DANS LE TABLEAU MAIL DE LA S.D. 
        25	C            MAIL
        26	C    
        27	C   PARAMETRES DE SORTIE
        28	C   --------------------
        29	C    TAR   : TABLEAU DE DIMENSION (LTAR,LVECT) CONTENANT LES DONNEES 
        30	C            NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES
        31	C
        32	C ...................................................................
        33	C ...................................................................
        34	C
        35	C      PROGRAMMEUR             P. PATE     INRIA - SIMULOG
        36	C ...................................................................
        37	C
        38	      INTEGER M(*), NDIM,NPO,LTAR,LVECT,IADR,I1,NARE,IA,LOPT
        39	      REAL X(NPO,NDIM) 
        40	      DOUBLE PRECISION TAR(NDIM,LTAR/(2*NDIM))
        41	C    ON TRAVAILLE  SUR UNE MACHINE 32 BITS DONC UN REEL DOUBLE
        42	C    PRECISION EST STOCKE SUR DEUX MOTS
        43	C
        44	C    ON DECRIT UN EFFORT LINEIQUE (F GAMMA 1) DONC LV VAUT 1
        45	C
        46	C    NOMBRE DE POINTS D'INTEGRATION
        47	      IPLS = LTAR/(NDIM*2)
        48	C
        49	C    DESCRIPTION DE F GAMMA 1
        50	C       SA COMPOSANTE EN X VAUT 0
        51	C       SA COMPOSANTE EN Y VAUT 100
        52	      DO 20 I2=1,IPLS
        53	         TAR (1,I2) = 0.
        54	         TAR (2,I2) = 100
        55	 20   CONTINUE
        56	C
        57	C
        58	      END
        59	
        60
    
    } Sous-programme utilisateur SPUVEL {
         1	      SUBROUTINE SPUVEL(CHAINE,NUMERO,X,Y,Z,LVAL1,NCOMP,LV,VAL,NPI)
         2	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         3	C  BUT :   DESCRIPTION DES DONNEES NECESSAIRES AU CALCUL DES MATRICES
         4	C  ---     ELEMENTAIRES  POUR UN PROBLEME D'ELASTICITE
         5	C       
         6	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         7	C  PARAMETRES D'ENTREE
         8	C  ------------------
         9	C    CHAINE    : MNEMONIQUE INDIQUANT LES DONNEES A FOURNIE
        10	C    NUMERO    : NUMERO DE SOUS-DOMAINE DE L'ELEMENT, OU REFERENCE DE
        11	C                LA FRONTIERE EN COURS DE TRAITEMENT
        12	C    X,Y,Z     : COORDONNEES DES LV ELEMENTS COURANTS AUX NPI POINTS
        13	C                D'INTERRATION  
        14	C    LVAL1     : NOMBRE DE VALEURS A CALCULER
        15	C    NCOMP     ; NOMBRE DE COMPOSANTES PERMETTANT DE DECRIRE LA DONNEES
        16	C    LV        : A POUR VALEUR LVECT (NOMBRE D'ELEMENTS DANS UNE 
        17	C                COULEUR) LORSQUE LES DONNEES PEUVENT ETRE DECRITES PAR 
        18	C                GROUPE D'ELEMENTS (RHO - E - NU) SINON VAUT 1 (F GAMMA)
        19	C   NPI        : NOMBRE DE POINTS D'INTEGRATION
        20	C
        21	C  PARAMETRES DE SORTIE
        22	C  --------------------  
        23	C    VAL       : TABLEAU (LVAL, LVECT) CONTENANT POUR LES LVECT POINTS
        24	C                D'ENTREE LES  LVAL VALEURS DES DONNEES.
        25	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        26	      INTEGER NUMERO, LVAL1, NCOMP, LV, NPI
        27	      DOUBLE PRECISION VAL(LVAL1,NCOMP,NPI,LV)
        28	      DIMENSION X(LV,NPI),Y(LV,NPI),Z(LV,NPI)
        29	      CHARACTER*4 CHAINE 
        30	C
        31	  100 FORMAT(' ** ERREUR SPUVEL: SUBROUTINE A PROGRAMMER PAR L'         #F
        32	     +  ,'''UTILISATEUR')                                               #F
        33	C
        34	      IMPRIM = IINFO('I')
        35	C  MASSE
        36	C  -----
        37	      IF ( CHAINE .EQ. 'ROTC' ) THEN
        38	         WRITE(IMPRIM,100)
        39	         CALL ARRET(100)
        40	C
        41	C  RIGIDITE
        42	C  --------
        43	      ELSEIF ( CHAINE .EQ. 'ELAS' ) THEN
        44	        WRITE(IMPRIM,100)
        45	        CALL ARRET(100)
        46	C
        47	C  SECOND MEMBRE
        48	C  -------------
        49	C   F OMEGA 2 
        50	C   F = | 0
        51	C       | -230
        52	      ELSE IF ( CHAINE .EQ. 'EFOO' ) THEN
        53	         DO 20 LVV=1,LV
        54	           DO 20 NPP=1,NPI
        55	            VAL(LVAL1,1,NPP,LVV) = 0.
        56	            VAL(LVAL1,2,NPP,LVV) = -230
        57	 20         CONTINUE
        58	C
        59	C   F GAMMA 2  
        60	C   F = | 100Y
        61	C       | 0
        62	      ELSE IF ( CHAINE .EQ. 'EFOF' ) THEN
        63	         VAL(LVAL1,1,NPI,LV) = 100 * Y(LV,1)
        64	         VAL(LVAL1,2,NPI,LV) = 0.
        65	C
        66	C  COEFFICIENT DE DILATATION (THERMO-ELASTICITE)
        67	C  ---------------------------------------------
        68	      ELSE IF ( CHAINE .EQ. 'DILA' ) THEN
        69	         WRITE(IMPRIM,100)
        70	         CALL ARRET(100)
        71	C
        72	C  CONTRAINTES INITIALES
        73	C  ---------------------
        74	      ELSE IF ( CHAINE .EQ. 'SIGM' ) THEN
        75	         WRITE(IMPRIM,100)
        76	         CALL ARRET(100)
        77	C
        78	      ENDIF
        79	      END
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ? 
    test2d.dat
     ++ OPEN(10,FILE='test2d.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. FORC ?
    1
     -- NOM DU FICHIER CONTENANT LA S.D. FORC ?
    sd.forc
     ++ OPEN(11,FILE='sd.forc',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COFORC :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. FORC      ( NFFORC ET NIFORC ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTFORC) :      1
    
     NOM  ALU2 VALEURS   0.000000000000E+00 -0.124000000000E+03  0.000000000000E+00
                        -0.124000000000E+03  0.000000000000E+00 -0.124000000000E+03
    
     LE TABLEAU     1 CONTIENT :  F OMEGA ALU                                                            
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COFORC  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. FORC DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : FORC
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      1
    
     LE  TABLEAU  1 : ALU2 DE TYPE REEL2MOT    A     12 MOTS
     CONTENU DE CE TABLEAU  :    F OMEGA ALU                                                            
     NOM  :   ALU2 TYPE :  5 VALEURS : 
        0.00000000000000000E+00 -0.12400000000000000E+03  0.00000000000000000E+00
       -0.12400000000000000E+03  0.00000000000000000E+00 -0.12400000000000000E+03
    
     TABLEAU  F O R 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSE IGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          2      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  F O R 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : ALU2
     ADRESSE DANS CELUI-CI :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :     21
     TRAITEMENT PAR  SP. UTILISATEUR    
    
     TABLEAU  F O R 5
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES LIGNES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      1
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :     21
     TRAITEMENT PAR  SP. UTILISATEUR
    
    }

    Remarques :

  3. Test 3

    , , et sont décrits dans le sous-programme FORCEV (respectivement avec les options 1, 2, 3 et 4).

    Fichier de données {

     $  DONNEES RELATIVES A LA S.D. FORC  $
         1                                  $ NDSM 
         0     2     2     0     0     0     0     0
         1     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         1     1                            $ LOPT IADR 
         2     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         2     1                            $ LOPT IADR 
         1     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         3     1                            $ LOPT IADR 
         2     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         4     1                            $ LOPT IADR
    
    } Sous-programme FORCEV {
         1	      SUBROUTINE FORCEV(M,LOPT,X,NDIM,NPO,TAR,LTAR,LV,IADR,I1,NARE,IA)
         2	C ...................................................................
         3	C BUT : DONNER LES EFFORTS, QUANTITES DE CHALEUR, OU CARACTERISTIQUES
         4	C ---   NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES POUR
         5	C       UN PROBLEME D'ELASTICITE OU DE THERMIQUE.
         6	C ...................................................................
         7	C   PARAMETRES D'ENTREE
         8	C   -------------------
         9	C
        10	C    M     : SUPER TABLEAU DE TRAVAIL
        11	C    LOPT  : NUMERO D'OPTION  DEMANDEE DANS COFORC
        12	C    X     : TABLEAUX REEL X(LVECT,NPO,NDIM )CONTENANT LES COORDONNEES
        13	C             DES ELEMENTS EN COURS DE TRAITEMENT
        14	C    NDIM  : DIMENSION DE L'ESPACE 
        15	C    NPO   : NOMBRE DE POINTS DECRIVANT L'ELEMENT
        16	C    LTAR  : NOMBRE DE MOTS RESULTATS A FOURNIR POUR UN SEUL ELELMENT
        17	C    LVECT : NOMBRE D'ELEMENTS DANS UNE MEME COULEUR
        18	C    IADR  : ADRESSE DANS LE TABLEAU TAR DES VARIABLES CONCERNEES 
        19	C            (DEMANDE DANS COFORC)
        20	C    I1    : EN STANDARD I1 VAUT 0 
        21	C    NARE  : NUMERO DANS LA NUMEROTATION LOCALE DE L'ELEMENT DE LA 
        22	C            FACE (EN 3D), DE L'ARETE (EN 2D) OU DU POINT
        23	C    IA    : ADRESSE -1  DU PREMIER MOT CONTENANT LES INFORMATIONS 
        24	C            SUR L'ELEMENT COURANT DANS LE TABLEAU MAIL DE LA S.D. 
        25	C            MAIL
        26	C    
        27	C   PARAMETRES DE SORTIE
        28	C   --------------------
        29	C    TAR   : TABLEAU DE DIMENSION (LTAR,LVECT) CONTENANT LES DONNEES 
        30	C            NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES
        31	C
        32	C ...................................................................
        33	C ...................................................................
        34	C
        35	C      PROGRAMMEUR             P. PATE     INRIA - SIMULOG  JUIN 92
        36	C ...................................................................
        37	C
        38	      INTEGER M(*), NDIM,NPO,LTAR,LVECT,IADR,I1,NARE,IA,LOPT
        39	      REAL X(LV,NPO,NDIM) 
        40	      DOUBLE PRECISION TAR(NDIM,LTAR/(2*NDIM),LV)
        41	C   ON TRAVAILLE  SUR UNE MACHINE 32 BYTES DONC UN REEL DOUBLE
        42	C   PRECISION EST STOCKE SUR DEUX MOTS
        43	      INTEGER IP(3)
        44	      DATA IP/2,3,1/
        45	C 
        46	C  INITIALISATION A 0 DE TAR
        47	      DO 10 LL=1,LV
        48	       DO 10 K =1,3
        49	        DO 10 J=1,2
        50	           TAR (J,K,LL) = 0.
        51	 10      CONTINUE
        52	C
        53	      IF (LOPT .EQ. 1) THEN
        54	C      DESCRITION DE F OMEGA 1 
        55	C          COMPOSANTE EN X : 0
        56	C          COMPOSANTE EN Y : -124
        57	         DO 15 LL =1, LV
        58	          DO 15 J=1,3
        59	            TAR (2,J,LL) = -124
        60	 15         CONTINUE
        61	C
        62	      ELSE IF (LOPT .EQ. 2) THEN
        63	C      DESCRITION DE F OMEGA 2
        64	C          COMPOSANTE EN X : 0
        65	C          COMPOSANTE EN Y : -230
        66	         DO 16 LL =1, LV
        67	          DO 16 J=1,3
        68	            TAR (2,J,LL) = -230
        69	 16      CONTINUE
        70	C
        71	      ELSE IF (LOPT .EQ. 3) THEN
        72	C      DESCRITION DE F GAMMA 1      (LV = 1) 
        73	C      ON NE FAIT PAS DE BOUCLE SUR LVECT, CELUI CI VAUT 1
        74	C      CAR ON DECRIT UN FRONTIERE - ON APPELLE FORCEV
        75	C      ELEMENT PAR ELEMENT
        76	C          COMPOSANTE EN X : 0
        77	C          COMPOSANTE EN Y : -100
        78	          DO 17 J=1,3
        79	            TAR (2,J,LV) = 100
        80	 17      CONTINUE
        81	C
        82	      ELSE IF (LOPT .EQ. 4) THEN
        83	C      DESCRITION DE F GAMMA 2     (LV = 1)
        84	C          COMPOSANTE EN X : 0
        85	C          COMPOSANTE EN Y : -100*Y   
        86	C      ON NE FAIT PAS DE BOUCLE SUR LVECT, CELUI CI VAUT 1
        87	C      CAR ON DECRIT UN FRONTIERE - ON APPELLE FORCEV
        88	C      ELEMENT PAR ELEMENT
        89	C       LES POINTS D'INTEGRATION SONT LES EXTREMITES DE L'ARETE
        90	C       ET SON MILIEU ON RECALCULE DONC L'ORDONNEE DU MILIEU
        91	           TAR (1,1,LV) = 100 * X(LV,NARE,2)
        92	           TAR (1,2,LV) = 100 * X(LV,IP(NARE),2)
        93	           TAR (1,3,LV) = 50 * (X(LV,NARE,2) + X(LV,IP(NARE),2))
        94	C
        95	      ENDIF
        96	      END
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?
    test3d.dat 
    ++ OPEN(10,FILE='test3d.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. FORC ?
    0
     -- NOM DU FICHIER CONTENANT LA S.D. FORC ?
    sd.forc
     ++ OPEN(11,FILE='sd.forc',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COFORC :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. FORC      ( NFFORC ET NIFORC ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTFORC) :      0
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COFORC  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. FORC DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : FORC
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      0
    
    
     TABLEAU  F O R 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSE IGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          2      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  F O R 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      1
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      2
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
    
     TABLEAU  F O R 5
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES LIGNES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      3
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE FORCE   
     OPTION DU SOUS-PROGRAMME :      4
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
    } Remarques :

    Dans ce test toutes les données sont fournies à l'aide du sous-programme FORCEV, il faut donc faire un test sur le paramètre LOPT - défini dans le fichier de données - lorsque l'on fournit les données dans le sous-programme.

3.3.6 Description du module COMILI

  COMILI  

But et limite d'utilisation

Le module COMILI construit, à partir de cartes données fournies par l'utilisateur, la structure de données MILI. Cette S.D. permet de localiser les caractéristiques nécessaires au calcul des matrices élémentaires (masse - rigidité - contraintes).

L'ordre dans lequel l'utilisateur fournit les données est imposé (cf fiches techniques des Eléments Finis).

Les éléments qui ont des caractéristiques spéciales interviennent dans l'ordre croissant.

Mise en oeuvre du module COMILI

Le programme d'appel :


il doit contenir les instructions suivantes :

Sous-programmes et fonctions supplémentaires :


Le module COMILI n'appelle aucun module supplémentaire (le sous-programme MILIEV et les sous-programmes utilisateurs sont uniquement utilisés par
[4] THENEW).

Les fichiers et bibliothèques nécessaires :


Le fichier contenant la S.D. MILI (de support NFMILI), mais il n'est pas toujours nécessaire car cette S.D. peut rester en mémoire centrale.

Les bibliothèques Modulef utilisées par le module COMILI sont :
COSD, UTSD, UTII, U_ xxx([note] utilitaire spécifique à la machine utilisée)

Les cartes de données des sous-programmes :


La notion de carte perd son sens lorsque le format libre est utilisé, par carte on désigne ici un ensemble logique.

Les cartes décrivant les tableaux associés :

Si NTMILI, le nombre de tableaux associés à la S.D. MILI, est non nul on lira NTMILI tableaux sur des cartes de données.
Pour I de 1 à NTMILI,

Fin Pour

Les cartes décrivant la S.D. MILI :

  1. MIL2(I), I=1,8
    8 tableaux permettent de décrire les données : MIL3, MIL4, ..., MIL9, MILA.
    MIL2(I) indique l'existence (ou l'absence) de ces tableaux :

    où n représente le nombre de sous-domaines, de numéros de références ou d'éléments qui seront décrits dans le tableau.

    Avant de poursuivre la description des cartes de données, nous allons rappeler quel type de données sont décrites dans chacun des tableaux MIL3, MIL4, ..., MIL9, MILA ([note] ces tableaux correspondent aux tableaux du même nom contenus dans la S.D. MILI) (vous pouvez aussi consulter la figure 3.1 page gif).

    MIL3 : données volumiques par sous-domaine
    MIL4 : données surfaciques par numéro de référence (NDIM = 2)
    par sous-domaine (NDIM =3)
    MIL5 : données linéiques par numéro de référence
    MIL6 : données ponctuelles par numéro de référence
    MIL7 : données volumiques par élément
    MIL8 : données surfaciques par élément
    MIL9 : données les linéiques par élément
    MILA : données ponctuelles par élément

  2. description des sous-domaines volumiques ()
    si MIL2(1) = 0, aller à la séquence suivante (cette carte n'existe pas lorsque NDIM = 2)
    Boucle de 1 à MIL2(1)
    Chaque sous-domaine est décrit par deux ensembles de données : Fin de la boucle

  3. description des numéros de référence des surfaces si NDIM = 3, des sous-domaines surfaciques si NDIM = 2 ()
    si MIL2(2) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(2)
    Chaque surface est décrite par deux ensembles de données : Fin de la boucle

  4. description des numéros de référence des lignes ()
    si MIL2(3) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(3)
    Chaque ligne est décrite par deux ensembles de données : Fin de la boucle

  5. description des numéros de référence des points ()
    si MIL2(4) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(4)
    Chaque point est décrit par deux ensembles de données : Fin de la boucle

  6. description des éléments volumiques ()
    si MIL2(5) = 0, aller à la séquence suivante (cette carte n'existe pas lorsque NDIM = 3)
    Boucle de 1 à MIL2(5)
    Chaque élément est décrit par deux ensembles de données : Fin de la boucle

  7. description des surfaces () par élément
    si MIL2(6) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(6)
    Chaque surface est décrite par deux ensembles de données : Fin de la boucle

  8. description des lignes () par élément
    si MIL2(7) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(7)
    Chaque ligne est décrite par deux ensembles de données : Fin de la boucle

  9. description des points () par élément
    si MIL2(8) = 0, aller à la séquence suivante
    Boucle de 1 à MIL2(8)
    Chaque point est décrit par deux ensembles de données :
Fin de la boucle

Exemples d'utilisation du module COMILI

L'exemple développé ci-dessous correspond au problème 3.3 qui a été décrit page gif et en annexe C.
Au regard de la fiche technique de l'élément fini ELAS TRIA 2P2D, et étant donné que

les données à fournir pour créer la structure de données MILI sont E (le module d'Young) et (le coefficient de Poisson).

Ces données seront décrites sous-domaine par sous-domaine et, comme elles sont constantes sur chaque sous-domaine, on pourra indifféremment fournir ces données à l'aide d'un tableau, du sous-programme MILIEV ou du sous-programme utilisateur SPUVEL.
Nous allons décrire les données de trois manières différentes :

  1. Test 1
    les données sont fournies à l'aide d'un tableau.
  2. Test 2
    les données sont fournies à l'aide du sous-programme MILIEV
  3. Test 3
    les données sont fournies à l'aide du sous-programme utilisateur SPUVEL
Avertissement :
Lors de la réalisation de ces trois tests, on suppose que l'on travaille sur une machine 32 bits, c'est à dire qu'un réel double précision occupe deux mots mémoire. Par contre, sur une machine 64 bits, on assimile généralement un réel double précision à un réel simple précision donc celui-ci occupe un seul mot mémoire.

Remarque : Dans la pratique les données sont décrites en utilisant la première méthode (les tableaux) car, dans ce cas il est inutile de refaire une édition de lien lors de l'exécution du programme appelant le module THENEW.

Pour chacun de ces cas test, le programme appelant le module COMILI est le programme D7MILI défini comme suit : {

     1	      PROGRAM D7MILI
     2	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     3	C  BUT : APPEL  DE COMILI : CREATION D'UNE S.D. MILI
     4	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     5	C   PROGRAMMEUR : P. PATE     INRIA - SIMULOG  92
     6	C  ....................................................................
     7	      CHARACTER*72 NOMFIC
     8	      PARAMETER (LM = 30000)
     9	      COMMON M(LM)
    10	      DOUBLE PRECISION DM
    11	      EQUIVALENCE (M(1),DM)
    12	C
    13	  140 FORMAT(' -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?')          #F     
    14	  150 FORMAT(' -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. MILI ?')       #F     
    15	  160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MILI ?')             #F     
    16	C 140 FORMAT(' -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?')          #GB     
    17	C 150 FORMAT(' -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. MILI ?')       #GB     
    18	C 160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MILI ?')             #GB     
    19	C
    20	C    INITIALISATION
    21	C    -------------
    22	      NNN = 0
    23	      IMPRE = 5
    24	      CALL INITIS (M, LM, IMPRE, NNN)
    25	      IMPRIM = IINFO('I')
    26	C
    27	C    OUVERTURE DU FICHIER DE DONNEES
    28	C    -------------------------------
    29	    2 WRITE (IMPRIM,140)
    30	      CALL LIBCAR(NOMFIC)
    31	      CALL TRUNIT (NFDATA)
    32	      CALL OUVRIR(NFDATA,NOMFIC,'OLD',0,IOSTAT)
    33	      IF (IOSTAT.NE.0) GOTO 2 
    34	C
    35	C    NOMBRE DE TABLEAUX A ASSOCIER A LA S.D. MILI
    36	C    --------------------------------------------
    37	      WRITE (IMPRIM, 150)
    38	      CALL LIBENT(NTMILI)
    39	C
    40	C    STOCKAGE DE LA S.D. MILI SUR FICHIER
    41	C    ------------------------------------
    42	      NIMILI = 1
    43	      WRITE(IMPRIM,160)
    44	      CALL LIBCAR(NOMFIC)
    45	      CALL TRUNIT (NFMILI)
    46	      CALL OUVRIS(NFMILI,NOMFIC,'UNFORMATTED',0)
    47	C
    48	      REWIND NFDATA
    49	      CALL LECTEU(NFDATA)
    50	C
    51	C    CREATION DE LA S.D. MILI
    52	C    ------------------------
    53	      CALL COMILI(M,NFMILI,NIMILI,NTMILI)
    54	C
    55	C    IMPRESSION DE LA S.D. MILI
    56	C    --------------------------
    57	      CALL IMMILI(M,NFMILI,NIMILI,IMPRE)
    58	C
    59	      CLOSE(NFMILI)
    60	      CLOSE(NFDATA)
    61	C
    62	      END
}

  1. Test 1

    Les données seront fournies à l'aide d'un tableau.
    Fichier de données {

    $  DONNEES RELATIVES A LA S.D. MILI  $
    EMU         5       24                 $ NOM TYPE NBREMOT
          0.320000000D+05                  $ EMU (  1)
          0.300000000D+00                  $ EMU (  2)
          0.000000000D+00                  $ EMU (  3)
          0.000000000D+00                  $ EMU (  4)
          0.000000000D+00                  $ EMU (  5)
          0.000000000D+00                  $ EMU (  6)
          0.260000000D+05                  $ EMU (  7)
          0.250000000D+00                  $ EMU (  8)
          0.000000000D+00                  $ EMU (  9)
          0.000000000D+00                  $ EMU ( 10)
          0.000000000D+00                  $ EMU ( 11)
          0.000000000D+00                  $ EMU ( 12)
     ' VALEUR DE E ET NU POUR L ALUMINIUM ET LE CUIVRE               '  $ CONTENU
         0     2     0     0     0     0     0     0
         1     0     1     1                $ NOSD NFRO NOPT ITRAIT 
    EMU      1                              $ NTABL IADR 
         2     0     1     1                $ NOSD NFRO NOPT ITRAIT 
    EMU     13                              $ NTABL IADR
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?
    test1dm.dat
     ++ OPEN(10,FILE='test1dm.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. MILI ?
    1
     -- NOM DU FICHIER CONTENANT LA S.D. MILI ?
    sd.mili
     ++ OPEN(11,FILE='sd.mili',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COMILI :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. MILI      ( NFMILI ET NIMILI ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTMILI) :      1
    
     NOM  EMU  VALEURS   0.320000000000E+05  0.300000000000E+00  0.000000000000E+00
                         0.000000000000E+00  0.000000000000E+00  0.000000000000E+00
                         0.260000000000E+05  0.250000000000E+00  0.000000000000E+00
                         0.000000000000E+00  0.000000000000E+00  0.000000000000E+00
    
     LE TABLEAU     1 CONTIENT :  VALEUR DE E ET NU POUR L ALUMINIUM ET LE CUIVRE                        
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COMILI  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. MILI DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : MILI
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      1
    
     LE  TABLEAU  1 : EMU  DE TYPE REEL2MOT    A     24 MOTS
     CONTENU DE CE TABLEAU  :    VALEUR DE E ET NU POUR L ALUMINIUM ET LE CUIVRE                        
     NOM  :   EMU  TYPE :  5 VALEURS : 
        0.32000000000000000E+05  0.30000000000000000E+00  0.00000000000000000E+00
        0.00000000000000000E+00  0.00000000000000000E+00  0.00000000000000000E+00
        0.26000000000000000E+05  0.25000000000000000E+00  0.00000000000000000E+00
        0.00000000000000000E+00
    
     TABLEAU  M I L 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSEIGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          0      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  M I L 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : EMU 
     ADRESSE DANS CELUI-CI :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  TABLEAU            
     NOM DU TABLEAU : EMU 
     ADRESSE DANS CELUI-CI :     13
    
    } Remarques :
  2. Test 2

    Les données seront fournies à l'aide du sous-programme MILIEV
    Fichier de données {

    $  DONNEES RELATIVES A LA S.D. MILI  $
         0     2     0     0     0     0     0     0
         1     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         1     1                            $ LOPT IADR 
         2     0     1     2                $ NOSD NFRO NOPT ITRAIT 
         2     1                            $ LOPT IADR
    
    } Sous-programme MILIEV {
         1	      SUBROUTINE MILIEV(M,LOPT,X,NDIM,NPO,TAR,LTAR,LV,IADR,I1,NARE,IA)
         2	C ...................................................................
         3	C BUT : DONNER LES EFFORTS, QUANTITES DE CHALEUR, OU 
         4	C ---   CARACTERISTIQUES NECESSAIRES AU CALCUL DES MATRICES DE 
         5	C       MASSES ET RIGIDITE ELEMENTAIRES POUR UN PROBLEME
         6	C       D'ELASTICITE OU DE THERMIQUE.
         7	C   PARAMETRES D'ENTREE
         8	C   -------------------
         9	C
        10	C    M     : SUPER TABLEAU DE TRAVAIL
        11	C    LOPT  : NUMERO D'OPTION  DEMANDEE DANS COMILI
        12	C    X     : TABLEAUX REEL X(LVECT,NPO,NDIM )CONTENANT LES COORDONNEES
        13	C             DES ELEMENTS EN COURS DE TRAITEMENT
        14	C    NDIM  : DIMENSION DE L'ESPACE 
        15	C    NPO   : NOMBRE DE POINTS DECRIVANT L'ELEMENT
        16	C    LTAR  : NOMBRE DE MOTS RESULTATS A FOURNIR POUR UN SEUL ELELMENT
        17	C    LVECT : NOMBRE D'ELEMENTS DANS UNE MEME COULEUR
        18	C    IADR  : ADRESSE DANS LE TABLEAU TAR DES VARIABLES CONCERNEES 
        19	C            (DEMANDE DANS COMILI)
        20	C    I1    : EN STANDARD I1 VAUT 0 
        21	C    NARE  : NUMERO DANS LA NUMEROTATION LOCALE DE L'ELEMENT DE LA 
        22	C            FACE (EN 3D), DE L'ARETE (EN 2D) OU DU POINT
        23	C    IA    : ADRESSE -1  DU PREMIER MOT CONTENANT LES INFORMATIONS 
        24	C            SUR L'ELEMENT COURANT DANS LE TABLEAU MAIL DE LA S.D. 
        25	C            MAIL
        26	C    
        27	C   PARAMETRES DE SORTIE
        28	C   --------------------
        29	C    TAR   : TABLEAU DE DIMENSION (LTAR,LVECT) CONTENANT LES DONNEES 
        30	C            NECESSAIRES AU CALCUL DES SECONDS MEMBRES ELEMENTAIRES
        31	C
        32	C ...................................................................
        33	C
        34	C      PROGRAMMEUR             P. PATE     INRIA - SIMULOG   JUIN 92
        35	C ...................................................................
        36	C
        37	      INTEGER M(*)
        38	      REAL X(LV,NPO,NDIM) 
        39	      DOUBLE PRECISION TAR(LTAR/2,LV)
        40	C
        41	      IF (LOPT .EQ. 1) THEN
        42	C  E ET NU POUR LE S.D. NUMERO 1
        43	C
        44	          DO 10 LVV=1, LV
        45	            TAR (1,LVV) = 32000
        46	            TAR (2,LVV) = .3
        47	 10   CONTINUE
        48	C
        49	      ELSEIF (LOPT .EQ. 2) THEN
        50	C  E ET NU POUR LE S.D. NUMERO 2
        51	C
        52	          DO 15 LVV=1, LV
        53	            TAR (1,LVV) = 26000
        54	            TAR (2,LVV) = .25
        55	 15      CONTINUE
        56	C
        57	      ENDIF
        58	C
        59	      END
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?
    test2dm.dat
     ++ OPEN(10,FILE='test2dm.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. MILI ?
    0
     -- NOM DU FICHIER CONTENANT LA S.D. MILI ?
    sd.mili
     ++ OPEN(11,FILE='sd.mili',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COMILI :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. MILI      ( NFMILI ET NIMILI ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTMILI) :      0
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COMILI  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. MILI DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : MILI
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      0
    
    
     TABLEAU  M I L 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSEIGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          0      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  M I L 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE MILIEU  
     OPTION DU SOUS-PROGRAMME :      1
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :      1
     TRAITEMENT PAR  SUBROUTINE MILIEU  
     OPTION DU SOUS-PROGRAMME :      2
     ADRESSE DANS LE TABLEAU DE RETOUR DU SP :      1
    
    } Remarque :

    Dans ce test toutes les données sont fournies à l'aide du sous-programme
    [4] MILIEV, il faut donc faire un test sur le paramètre LOPT - défini dans la S.D. MILI - lorsque l'on fournit les données dans le sous-programme.

  3. Test 3
    Les données seront fournies à l'aide du sous-programme utilisateur SPUVEL
    Fichier de données {
    $  DONNEES RELATIVES A LA S.D. MILI  $
         0     2     0     0     0     0     0     0
         1     0    21     3                $ NOSD NFRO NOPT ITRAIT 
         0     0                            $ LOPT IADR 
         2     0    21     3                $ NOSD NFRO NOPT ITRAIT 
         0     0                            $ LOPT IADR
    
    } Sous-programme utilisateur SPUVEL {
         1	      SUBROUTINE SPUVEL(CHAINE,NUMERO,X,Y,Z,LVAL1,NCOMP,LV,VAL,NPI)
         2	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         3	C  BUT :   DESCRIPTION DES DONNEES NECESSAIRES AU CALCUL DES MATRICES
         4	C  ---     ELEMENTAIRES POUR  UN PROBLEME D'ELASTICITE
         5	C       
         6	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         7	C  PARAMETRES D'ENTREE
         8	C  ------------------
         9	C    CHAINE    : MNEMONIQUE INDIQUANT LES DONNEES A FOURNIE
        10	C    NUMERO    : NUMERO DE SOUS-DOMAINE DE L'ELEMENT, OU REFERENCE DE
        11	C                LA FRONTIERE EN COURS DE TRAITEMENT
        12	C    X,Y,Z     : COORDONNEES DES LV ELEMENTS COURANTS AUX NPI POINTS
        13	C                D'INTERRATION  
        14	C    LVAL1     : NOMBRE DE VALEURS A CALCULER 
        15	C    NCOMP     ; NOMBRE DE COMPOSANTES PERMETTANT DE DECRIRE LA DONNEES
        16	C    LV        : A POUR VALEUR LVECT (NOMBRE D'ELEMENTS DANS UNE 
        17	C                COULEUR) LORSQUE LES DONNEES PEUVENT ETRE DECRITES PAR 
        18	C                GROUPE D'ELEMENTS (RHO - E - NU) SINON VAUT 1 (F GAMMA)
        19	C   NPI        : NOMBRE DE POINTS D'INTEGRATION
        20	C
        21	C  PARAMETRES DE SORTIE
        22	C  --------------------  
        23	C    VAL       : TABLEAU (LVAL, LVECT) CONTENANT POUR LES LVECT POINTS
        24	C                D'ENTREE LES  LVAL VALEURS DES DONNEES.
        25	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
        26	      INTEGER NUMERO, LVAL1, NCOMP, LV, NPI
        27	      DOUBLE PRECISION VAL(LVAL1,NCOMP,NPI,LV)
        28	      DIMENSION X(LV,NPI),Y(LV,NPI),Z(LV,NPI)
        29	      CHARACTER*4 CHAINE  
        30	C
        31	  100 FORMAT(' ** ERREUR SPUVEL: SUBROUTINE A PROGRAMMER PAR L'         #F
        32	     +  ,'''UTILISATEUR')                                               #F
        33	C
        34	      IMPRIM = IINFO('I')
        35	C MASSE
        36	      IF ( CHAINE .EQ. 'ROTC' ) THEN
        37	         WRITE(IMPRIM,100)
        38	         CALL ARRET(100)
        39	C
        40	C RIGIDITE 
        41	      ELSEIF ( CHAINE .EQ. 'ELAS' ) THEN
        42	         IF (NUMERO .EQ. 1) THEN
        43	C  SOUS-DOMAINE 1 - MAERIAU ISOTROPE
        44	C       E = 32000
        45	C      NU = 0.3
        46	             DO 10 LVV = 1, LV
        47	                VAL(LVAL1,1,1,LVV) = 32000
        48	                VAL(LVAL1,2,1,LVV) = 0.3
        49	 10             CONTINUE
        50	         ELSEIF (NUMERO .EQ. 2) THEN
        51	C  SOUS-DOMAINE 1 - MAERIAU ISOTROPE
        52	C       E =  26000
        53	C      NU =  0.25
        54	             DO 15 LVV = 1, LV
        55	                VAL(LVAL1,1,1,LVV) = 26000
        56	                VAL(LVAL1,2,1,LVV) = 0.25
        57	 15             CONTINUE
        58	         ENDIF
        59	C  
        60	C SECOND MEMBRE F OMEGA
        61	      ELSE IF ( CHAINE .EQ. 'EFOO' ) THEN
        62	         WRITE(IMPRIM,100)
        63	         CALL ARRET(100)
        64	C
        65	C SECOND MEMBRE F GAMMA
        66	      ELSE IF ( CHAINE .EQ. 'EFOF' ) THEN
        67	         WRITE(IMPRIM,100)
        68	         CALL ARRET(100)
        69	C
        70	C  COEFFICIENT DE DILATATION (THERMO-ELASTICITE)
        71	      ELSE IF ( CHAINE .EQ. 'DILA' ) THEN
        72	         WRITE(IMPRIM,100)
        73	         CALL ARRET(100)
        74	C
        75	C  CONTRAINTES INITIALES
        76	      ELSE IF ( CHAINE .EQ. 'SIGM' ) THEN
        77	         WRITE(IMPRIM,100)
        78	         CALL ARRET(100)
        79	C
        80	      ENDIF
        81	      END
        82	
        83	
        84
    
    } Listing d'exécution {
     M   M    OOO    DDDD    U   U   L       EEEEE   FFFFF
     MM MM   O   O   D   D   U   U   L       E       F
     M M M   O   O   D   D   U   U   L       EEEE    FFFF
     M   M   O   O   D   D   U   U   L       E       F
     M   M    OOO    DDDD     UUU    LLLLL   EEEEE   F      VERSION 92
    
     DATE   : 19/02/93
     AUTEUR : pate                    
     -- NOM DU FICHIER CONTENANT LES DONNEES (A) ?
    test3dm.dat
     ++ OPEN(10,FILE='test3dm.dat',SPEC='OLD',RECL=0)
     -- NOMBRE DE TABLEAUX ASSOCIEES A LA S.D. MILI ?
    0
     -- NOM DU FICHIER CONTENANT LA S.D. MILI ?
    sd.mili
     ++ OPEN(11,FILE='sd.mili',SPEC='UNFORMATTED',RECL=0)
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     MODULE COMILI :                                                                                 
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     S.D.S. MILI      ( NFMILI ET NIMILI ) :     11     1
     NOMBRE DE TABLEAUX ASSOCIES ( NTMILI) :      0
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     FIN DU MODULE COMILI  
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    
         IMPRESSION DE LA S.D. MILI DE NIVEAU  1
    
     &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
     TITRE                           :                                                                                 
     DATE ET NOM UTILISATEUR         : 19/02/93  pate                    
     TYPE DE LA STRUCTURE DE DONNEES : MILI
     NIVEAU ET NUMERO D'ETAT         :      1     0
     NOMBRE DE TABLEAUX ASSOCIES     :      0
    
    
     TABLEAU  M I L 2
     ----------------
       PRESENCE ( NOMBRE DE GROUPES ) OU ABSENCE ( 0 ) DE RENSEIGNEMENT
    
                   --------------------------------------------------
                   |            |                 |                 |
                   |            |  SOUS-DOMAINES  |     ELEMENTS    |
                   |            |                 |                 |
                   --------------------------------------------------
                   |  VOLUMES   |          0      |          0      |
                   |  SURFACES  |          2      |          0      |
                   |  LIGNES    |          0      |          0      |
                   |  POINTS    |          0      |          0      |
                   --------------------------------------------------
    
    
     TABLEAU  M I L 4
     ----------------
      DESCRIPTION DES NUMEROS DE REFERENCE DES SURFACES
    
    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      1
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :     21
     TRAITEMENT PAR  SP. UTILISATEUR    
     NUMERO DE REFERENCE ( OU DE SOUS-DOMAINE ) :      2
     TYPE DE L'ELEMENT ( > 0 : ISOTROPE, < 0 : ANISOTROPE ) :     21
     TRAITEMENT PAR  SP. UTILISATEUR
    
    } Remarque :

    L'instruction CALL ARRET(100) utilisé dans le sous-programme SPUVEL a pour but d'interrompre l'exécution du programme en imprimant un code d'erreur égal à 100.

3.3.7 Description du module THENEW

   

But et limite d'utilisation

Le module THENEW permet de créer la S.D. TAE à partir des sous-programmes de calcul des matrices et des seconds membres élémentaires. Ces sous-programmes peuvent être contenus dans la bibliothèque d'éléments finis pour un problème d'élasticité ou de thermique ou bien, ils peuvent être des nouveaux programmes de calculs fournis par l'utilisateur.

Ce module crée la S.D. TAE à patir de S.D. d'entrée MAIL, COOR, MILI et FORC et sauvegarde la S.D. TAE sur mémoire secondaire (le support NFTAE de la S.D. TAE doit être strictement positif).

Tous les tableaux cités lors de la création des S.D. MILI et FORC doivent être présent lors de l'exécution de THENEW, ils doivent donc :

Les sous-programmes utilisateurs (SPUVEL - SPUVTH), FORCEV et MILIEV doivent être présents lors de l'édition de lien du programme exécutable qui appelle le module THENEW dès que MILI et/ou FORC les mentionnent.

Sur des calculateurs vectoriels, cette étape de calcul est vectorisable, cela suppose cependant d'avoir utilisé le mot clé COUL lors de la réalisation du maillage.

Mise en oeuvre du module THENEW

Le programme d'appel :


Sous-programmes et fonctions supplémentaires :


La présence (ou l'absence) de sous-programmes supplémentaires est indiquée dans les S.D. MILI et FORC ; en fonction de la valeur du paramètre ITRAIT les sous-programmes suivants seront demandés :
ITRAIT = 2 :

la S.D. MILI indique que des données sont décrites à l'aide du sous-programme MILIEV, la S.D. FORC indique que des données sont décrites à l'aide du sous-programme FORCEV.
ITRAIT = 3:

les sous-programmes utilisateurs SPUVEL ou SPUVTH sont utilisés pour décrire des données.

Tous ces sous-programmes doivent être programmés par l'utilisateur et édités avec le programme d'appel THENEW.

Les fichiers et bibliothèques nécessaires

:  

Les fichiers contenant les structures de données (ils ne sont pas tous nécessaires car ils peuvent résider en mémoire centrale) : NFMAIL, NFCOOR, NFMILI, NFFORC, NFNDL1, NFB0

Le fichier contenant la S.D. de sortie NFTAE (1)

Le fichier POBA([note] nommé pobn.direct sous UNIX) si il est utilisé par les éléments finis avec lesquels on travaille (pour plus de détails consultez le paragraphe 3.3.7 page gif).

Les bibliothèques Modulef utilisées par ce module sont :

Pour effectuer une édition de lien avec le module THENEW, il est nécessaire, sur certaines machines, d'ordonner les bibliothèques de la façon suivante :
cosd - elas - elcp - ther - ela2 - ela3 - utsd - zzzz_mod -
[4] utii - u_ nom de la machine,
(ceci afin de respecter les appels des modules entre les différentes bibliothèques)

Les tableaux associés :


Si NNTAE est non nul on lira NNTAE tableaux sur des cartes de données.
Pour I de 1 à NTTAE,

Fin Pour

Conseils d'utilisation

 

Exemple d'utilisation de THENEW

Nous reprenons l'exemple d'élasticité 2D 3.3 décrit page gif.

On considère deux cas de figures :

et on compare les résultats (temps de calcul).

Le programme d'appel est le suivant : {

     1	      PROGRAM TEENE
     2	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     3	C   BUT : CREATION D'UNE S.D. TAE
     4	C  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     5	C   PROGRAMMEUR : P. PATE     INRIA - SIMULOG  92
     6	C  ....................................................................
     7	      CHARACTER*72 NOMFIC,NOMCOU*4
     8	      INTEGER IOPT(4),NZNOPO(19)
     9	      DOUBLE PRECISION DM,L1(1),L2(1)
    10	      PARAMETER (LM = 200000)
    11	      COMMON M(LM)
    12	      EQUIVALENCE (M(1),DM)
    13	      EXTERNAL ENMASS,ENRAID,ENSECM,ENCNTR,FORCEV,MILIEV
    14	C
    15	  140 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. COOR ?')             #F     
    16	  150 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MAIL ?')             #F     
    17	  160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MILI ?')             #F     
    18	  170 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. FORC ?')             #F     
    19	  180 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. TAE  ?')             #F     
    20	  190 FORMAT(' -- NOM DU TABLEAU DES COULEURS (NOMCOU) OU VIDE ',/      #F
    21	     +       '     ET LONG MAX DES VECTEURS (LVECT)')                   #F
    22	C
    23	C 140 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. COOR ?')             #GB     
    24	C 150 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MAIL ?')             #GB     
    25	C 160 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. MILI ?')             #GB     
    26	C 170 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. FORC ?')             #GB     
    27	C 180 FORMAT(' -- NOM DU FICHIER CONTENANT LA S.D. TAE  ?')             #GB     
    28	C 190 FORMAT(' -- NOM DU TABLEAU DES COULEURS (NOMCOU) OU VIDE ',/      #GB
    29	C    +       '     ET LONG MAX DES VECTEURS (LVECT)')                   #GB
    30	C
    31	C    INITIALISATION
    32	C    --------------
    33	      NNN = 0
    34	      IMPRE = 3
    35	      CALL INITIS(M,LM,IMPRE,NNN)
    36	      IMPRIM = IINFO('I')
    37	C
    38	C    OUVERTURE DES FICHIERS CONTENANT LES S.D.E COOR MAIL MILI FORC
    39	C    --------------------------------------------------------------
    40	 2    WRITE (IMPRIM,140)
    41	      CALL LIBCAR(NOMFIC)
    42	      CALL TRUNIT (NFCOOR)
    43	      CALL OUVRIR(NFCOOR,NOMFIC,'OLD,UNFORMATTED',0,IOSTAT)
    44	      IF (IOSTAT.NE.0) GOTO 2 
    45	      NICOOR = 1
    46	C
    47	 3    WRITE (IMPRIM,150)
    48	      CALL LIBCAR(NOMFIC)
    49	      CALL TRUNIT (NFMAIL)
    50	      CALL OUVRIR(NFMAIL,NOMFIC,'OLD,UNFORMATTED',0,IOSTAT)
    51	      IF (IOSTAT.NE.0) GOTO 3
    52	      NIMAIL = 1
    53	C
    54	 4    WRITE (IMPRIM,160)
    55	      CALL LIBCAR(NOMFIC)
    56	      CALL TRUNIT (NFMILI)
    57	      CALL OUVRIR(NFMILI,NOMFIC,'OLD,UNFORMATTED',0,IOSTAT)
    58	      IF (IOSTAT.NE.0) GOTO 4
    59	      NIMILI = 1
    60	      IEMILI = 1
    61	C
    62	 5    WRITE (IMPRIM,170)
    63	      CALL LIBCAR(NOMFIC)
    64	      CALL TRUNIT (NFFORC)
    65	      CALL OUVRIR(NFFORC,NOMFIC,'OLD,UNFORMATTED',0,IOSTAT)
    66	      IF (IOSTAT.NE.0) GOTO 5
    67	      NIFORC = 1
    68	      IEFORC = 1
    69	C     
    70	C    OUVERTURE DU FICHIER CONTENANT LA S.D.S. TAE 
    71	C    --------------------------------------------
    72	 6    WRITE (IMPRIM,180)
    73	      CALL LIBCAR(NOMFIC)
    74	      CALL TRUNIT (NFTAE)
    75	      CALL OUVRIR(NFTAE,NOMFIC,'UNFORMATTED',0,IOSTAT)
    76	      IF (IOSTAT.NE.0) GOTO 6
    77	      NITAE = 1
    78	      NTTAE = 0
    79	C
    80	      WRITE (IMPRIM,190)
    81	      CALL LIBCAR(NOMCOU)
    82	      CALL LIBENT(LVECT)
    83	C
    84	C
    85	C    ON CALCULE LA MATRICE DE RIGIDITE  ELEMENTAIRE
    86	C    ET LE SECOND MEMBRE  - PAS DE 2 COMBINAISON LINEAIRE
    87	C    MASSE RAIDEUR
    88	      IOPT(1) = 0
    89	      IOPT(2) = 1
    90	      IOPT(3) = 1
    91	      IOPT(4) = 0
    92	      NL = 0
    93	C
    94	C    PROBLEME D'ELASTICITE CLASSIQUE
    95	      NTHELA = 0
    96	      NPROV = 2
    97	C
    98	      NFPOBA = 0
    99	      NFB0   = 0
   100	      NIB0   = 0
   101	      NFNDL1 = 0
   102	      NINDL1 = 0
   103	C      
   104	      CALL THENEW(M,M,M,NFMAIL,NIMAIL,NFCOOR,NICOOR,IEMILI,
   105	     +            NFMILI,NIMILI,IEFORC,NFFORC,NIFORC,NFTAE,
   106	     +            NITAE,NTTAE,IOPT,NL,L1,L2,NNTAE,NPROV,NFPOBA,
   107	     +            NTHELA,NFB0,NIB0,NFNDL1,NINDL1,LVECT,NOMCOU,
   108	     +            ENMASS,ENRAID,ENSECM,ENCNTR,FORCEV,MILIEV)
   109	C
   110	C    IMPRESSION DE LA S.D. TAE
   111	C    -------------------------
   112	      CALL IMTAE(M,NFTAE,NITAE,3)
   113	C
   114	C    FERMETURE DE FICHIERS
   115	C    ---------------------
   116	      CLOSE(NFMAIL)
   117	      CLOSE(NFCOOR)
   118	      IF ( IEMILI .NE. 0 ) CLOSE(NFMILI)
   119	      IF ( IEFORC .NE. 0 ) CLOSE(NFFORC)
   120	      CLOSE(NFTAE)
   121	      IF ( NFB0 .NE. 0 ) CLOSE(NFB0)
   122	      IF ( NFPOBA .NE. 0 ) CLOSE(ABS(NFPOBA))
   123	      IF ( NFNDL1 .NE. 0 ) CLOSE(NFNDL1)
   124	      END
} Quelques remarques sur ce programme : Sur Sun4, pour un maillage assez fin (456 éléments), on remarque que, lorsque l'on travaille avec LVECT différent de 1, le temps de calcul est environ 3 à 4 fois moins important.
Sur Cray 2, on peut obtenir un temps de calcul 15 à 20 fois plus petit.


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Suiv.: Conditions aux limites Forcées Sup.: Calcul des tableaux élémentaires Préc.: 3.2 Les modules THERCT et ELASCT Index Table des matières