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.
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 :
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 :
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 :
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 |
![]() ![]() ![]() |
![]() | ![]() ![]() ![]() ![]() | |
![]() | ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() | ||
![]() | 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.
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.
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 :
Nous décrivons maintenant les paramètres d'appel de ces sous-programmes.
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 :
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é | ![]() ![]() | 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
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,
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 | ![]() |
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 :
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 :
$ 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 :
$ 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 :
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,
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 | ![]() |
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
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 :
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.
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,
...... 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.
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 :