![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
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
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 :
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 :
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.
), une surface (
), une ligne (
), un
point (
).
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.
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 :
| 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 |
où
,
,
,
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
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 :
,
,
,
,
sont à fournir,
Pour illustrer ces propos nous allons nous appuyer sur un exemple.
Soit à résoudre le problème thermique classique bidimensionnel suivant :
où
et
frontière de
;
avec :
: coefficients du tenseur de conductivité thermique,
: coefficient de transfert à travers
,
: la quantité de chaleur fournie en chaque point du domaine
,
: la température du fluide dans
lequel baigne
.
:
composante de la normale à la frontière

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 :
) : K
(coefficients du tenseur de conductivité thermique), suivant la nature du milieu les données
à entrer sont différentes :

) : g
(coefficient de transfert),
) :
,
) : 
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 |
où
,
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 :
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.
), le tenseur
d'élasticité , soit E et
pour un milieu isotrope).
On fournit donc dans l'ordre les données nécessaires au calcul des matrices
élémentaires de masse (
), puis les données nécessaires au calcul des matrices
élémentaires de rigidité E et
.
,
,
,
) et à un
même numéro de référence ou
sous-domaine seront fournies de la même façon (tableau ou
sous-programmes).
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.
* L1 où
= 1
= 2
= 4
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
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 :
2) en cours de traitement,
Nous décrivons maintenant les paramètres d'appel de ces sous-programmes.
,
,
ou
), ou encore de décrire des
données associées à des sous-domaines ou à des références
différents.
internes de THENEW en injectant une
valeur lors de l'écriture du programme FORCEV ou MILIEV,
,
(cette valeur est contenue dans les S.D. FORC ou MILI), dans THENEW
on fait IAD = IAD + I1,
,
,
,
, 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é.
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.
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 :
) mnémonique indiquant les données à fournir,
(par exemple NOM a pour valeur COND lorsque l'on décrit
la matrice de conductivité thermique, SOUR
correspond au second membre
, E,
),
sinon il vaut 1 (
),
,
),
sinon il vaut 1 (
),
| 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 :
:
:
,
:
,
:
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é
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.
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
, les domaines 1 et 2 sont respectivement
composés d'aluminium et de cuivre,
,
sont les coefficients de Lamé, reliés au
module d'Young E et au coefficient de Poisson
par les relations :

: le déplacement du point courant suivant les directions x, y (i=1,2),
: les coefficients du tenseur des contraintes,
: les coefficients du tenseur des déformations linéarisés,
: le tenseur d'élasticité,
: les efforts surfaciques
appliqués sur
, k=1,2

: les efforts linéiques appliqués sur
, k=1,2

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 :
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.
Il doit contenir les instructions suivantes :
Le module COFORC n'appelle aucun module supplémentaire (le sous-programme FORCEV et les sous-programmes utilisateur sont uniquement utilisés par THENEW).
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(
utilitaire spécifique à la machine
utilisée)
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,
* L1 où
= 1
= 2
= 4

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 (
ces tableaux correspondent aux
tableaux du même nom contenu dans la S.D. FORC) (vous pouvez aussi
consulter la figure 3.1 page
).
| 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 | | |
) 
)
)
)
)
) par élément 
) par élément
) par élément
Les données nécessaires au calcul de



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 :
,
et
sont rangés respectivement dans les
tableaux ALU2, CUI2 et ALU3,
est décrit dans le sous-programme FORCEV ;
est rangé dans le tableau ALU2,
est décrit dans le sous-programme
FORCEV,
et
sont décrits à
l'aide du sous-programme utilisateur SPUVEL ;
,
,
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 :
,
et
sont rangés respectivement dans les
tableaux ALU2, CUI2 et ALU3,
est décrit dans le sous-programme FORCEV ;
$ 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 :Lorsque l'on décrit une force linéique en 2D (ou surfacique en 3D) il est inutile d'effectuer une boucle sur LV, et de faire apparaître cette dimension dans la déclaration des tableaux, car dans ce cas le paramètre d'entrée LV a pour valeur 1. En effet, les éléments d'une même couleur ont tous le même numéro de sous-domaine mais leurs arêtes (ou faces en 3D) n'ont pas les mêmes numéros de références, donc la description des données se fait élément par élément.
Le tableau résultat est
déclaré sous la forme TAR(LTAR/2) (LTAR est divisé par deux car on travaille
en double précision sur une machine 32 bits), on peut supprimer LV car, pour cette donnée
(
), celui-ci vaut 1 ;
on aurait pu le déclarer de manière différente,
par exemple :
1) ou anisotrope (
-1) ; le paramètre ITRAIT indique comment les données seront
fournies (1 : par tableau ; 2 : par sous-programme FORCEV ; 3 : par
sous-programme utilisateur SPUVEL).
est rangé dans le tableau ALU2,
est décrit dans le sous-programme
FORCEV,
et
sont décrits à
l'aide du sous-programme utilisateur SPUVEL ;
$ 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 :
,
,
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.
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.
il doit contenir les instructions suivantes :
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).
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(
utilitaire spécifique à la machine
utilisée)
La notion de carte perd son sens lorsque le format libre est utilisé, par carte on désigne ici un ensemble logique.
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,
* L1 où
= 1
= 2
= 4

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 (
ces tableaux
correspondent aux
tableaux du même nom contenus dans la S.D. MILI) (vous pouvez aussi
consulter la figure 3.1 page
).
| 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 | | |
) 
) 
)
)
)
) par élément 
) par élément
) par élément
L'exemple développé ci-dessous correspond au
problème 3.3 qui a été décrit
page
et en annexe C.
Au regard de la fiche technique de l'élément fini ELAS TRIA
2P2D, et étant donné que
(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 :
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
}
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 :
ont
été fournies à l'aide du même tableau EMU.
Lorsque l'on décrit les caractéristiques du sous-domaine 2, on doit indiquer
où se trouvent dans le tableau EMU ses caractéristiques.
Le décalage par rapport au début du tableau doit être donné en mots (et non pas en variables).
Ce décalage est donc :
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.
$ 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.
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.
1 obligatoirement - sauvegarde sur fichier)
0 sinon
0 sinon
0 sinon
) nom du tableau associé par programme à la S.D.
TAE, il est utilisé lorsque NL est non nul (il contient L1 et L2),
) nom du tableau des couleurs. Le nombre d'éléments par couleur n'est
pas constant, il est donc nécessaire de disposer d'un tableau de couleurs. Celui-ci a été créé lorsque
le mot clé COUL a été utilisé (lors du maillage), et associé à la S.D. NOPO.
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(
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
).
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)
Si NNTAE est non nul on lira NNTAE tableaux sur des cartes de
données.
Pour I de 1 à NTTAE,
* L1 où
= 1
= 2
= 4
......
INTEGER LPAGE,IINFO,NFPOBA
CHARACTER*80 NOMFIC,KINFO
......
NOMFIC = KINFO('POBN')
LPAGE = 256
CALL TRUNIT(NFPOBA)
CALL OUVRIS(NFPOBA, NOMFIC, 'DIRECT,OLD', LPAGE*IINFO('RECL'))
NFPOBA = - NFPOBA
......
CALL THENEW(......, NFPOBA, ......)
......
CALL CLOSE(ABS(NFPOBA))
......
Ce fichier est créé lors de l'installation de la bibliothèque en exécutant la cible POBN du Makefile d'installation (cf [Guide Modulef - 1]).
Si la machine est non vectorielle LVECT peut être différent de 1 sans qu'il soit nécessaire d'utiliser lors de la création du maillage le mot clé COUL. Dans ce cas de figure, cela permet, lors de la sauvegarde de la S.D. TAE, d'effectuer moins d'accès fichier et donc, d'obtenir un gain de temps assez appréciable.
, cette donnée est transmise à l'aide de la S.D. MILI
, cette donnée est transmise
à l'aide de la S.D. FORC.
Nous reprenons l'exemple d'élasticité 2D 3.3
décrit page
.
On considère deux cas de figures :
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 :