![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
Suiv.: Calcul des tableaux élémentaires
Sup.: 2 Interpolation
Préc.: 2.3 Le module CORNOE
Index
Table des matières
Ce module crée une S.D. de type NDL1 . Cette S.D. permet de connaître pour chaque noeud du maillage les degrés de liberté qui lui sont associés.
Soit ND le nombre de degré de liberté par noeud.
Deux cas peuvent se présenter :
j*ND
dans le second cas, un calcul direct n'est pas possible, on utilise un
pointeur : la
S.D. NDL1.
Différents algorithmes doivent connaître les numéros des d.l. associés à un noeud, le fait que ND soit ou non égal à 0 est rendu transparent à l'utilisateur (et au programmeur de tels algorithmes) grâce à la fonction NDL, où

Quelque soit la valeur de ND les d.l. associés au noeud K
sont donc :
NDL(K) + 1
NDL(K+1)
Avant la première utilisation de NDL il est nécessaire d'initialiser le système à l'aide de la fonction LRNDL1.
Si ND est constant (non nul) la S.D. NDL1 n'existe pas, les appels des modules utilisent NFNDL1 égal à 0. Sinon, deux cas se présentent, suivant la valeur de la variable NNPSEG : nombre de noeuds par page dans la S.D. NDL1.
Cette S.D. n'est pas toujours utile ; en effet, lorsque
Cependant, pour des raisons de transparence, on suppose toujours
Lorsque l'on désire connaître le contenu de la
0
K
NOE - 1
Si NFNDL1 est strictement positif, le tableau est lu sur fichier.
0
K
NOE -1
En outre, le module CONDL1 initialise le commun associé à la S.D. NDL1, ce commun contient cinq variables :
COMMON/ALNDL1/NENDL1,NNDL1,IANDL1,LNDL1,NNPSEG
(NOE, NNSEG)
Remarque : On initialisera toujours NNPSEG à une valeur très
grande afin que toute la S.D. NDL1 réside entièrement en
mémoire centrale.
Le module CONDL1 n'appelle aucun sous-programme ou fonctions supplémentaires. Les fonctions LRNDL1 et NDL ne sont pas utilisées par le
La S.D. d'entrée MAIL ne doit pas
nécessairement être en mémoire secondaire
NFMAIL
0
La S.D. de sortie NDL1 doit résider en mémoire secondaire
uniquement si
[4]
NNPSEG < NOE, sinon elle peut rester en mémoire centrale.
Les bibliothèques Modulef utilisées par le module CONDL1 sont dans
l'ordre :
COSD UTSD UTII U_xxx(
utilitaires
spécifiques à une machine)
Eventuellement celle du module INITI :
Cet exemple est un problème de plaque, avec une formulation
variationnelle en déplacement, l'élément fini utilisé est TRIA CLOT.
Cet élément fini a deux inconnues variationnelles
et
. Les degrés de liberté définissent deux types de noeuds :
Nous donnons maintenant le listing d'un programme appelant le module CONDL1 (CALL_CONDL1),
ainsi qu'un listing d'exécution de ce programme.
Listing du programme appelant le module CONDL1 {
1 PROGRAM CALL_CONDL1
2 C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 C
4 C CREATION DE LA S.D. NDL1, CETTE S.D. DECRIT LES D.L. ASSOCIES
5 C A CHAQUE NOEUDS DU MAILLAGE
6 C
7 C++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 C
9 INTEGER M, LM
10 PARAMETER ( LM = 50 000 )
11 COMMON M(LM)
12 C
13 INTEGER IMPRE, NNN, IMPRIM, NIMAIL, NFMAIL, NFNDL1, NINDL1,
14 1 IINFO, NNSEG, LNOET, NNOMAX, ND, NDLMAX
15 CHARACTER*72 NOMSD
16
17 100 FORMAT(' -- NOM DE LA S.D.E. MAIL ')
18 C
19 C INITIALISATION
20 C --------------
21 IMPRE = 10
22 NNN = 0
23 CALL INITIS (M, LM, IMPRE, NNN)
24 C
25 IMPRIM = IINFO('I')
26 C
27 C OUVERTURE DE LA S.D.E MAIL
28 C --------------------------
29 WRITE(IMPRIM,100)
30 CALL LIBCAR(NOMSD)
31 CALL TRUNIT(NFMAIL)
32 CALL OUVRIS (NFMAIL, NOMSD, 'OLD, UNFORMATTED', 0)
33 NIMAIL = 1
34 C
35 C LA S.D. NDL1 RESIDE EN MEMOIRE CENTRALE
36 C -----------------------------------------
37 NFNDL1 = 0
38 NINDL1 = 1
39 C
40 C
41 NNSEG = 10000
42 CALL CONDL1(M, NNSEG, NFMAIL, NIMAIL, NFNDL1, NINDL1, LNOET,
43 1 NNOMAX, ND, NDLMAX)
44 C
45 C FERMETURE DU FICHIER CONTENANT LA S.D.E. MAIL
46 C ---------------------------------------------
47 CLOSE(NFMAIL)
48 END
49
}
Listing d'exécution
fletan_pate % call_lrndl1 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 : 12/10/92 AUTEUR : pate -- NOM DE LA S.D.E. MAIL T1MAIL &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE CONDL1 : NOMBRE TOTAL DE NOEUDS DES TYPES D ELEMENT (LNOET) : 6 NOMBRE MAXIMUM DE NOEUDS D UN ELEMENT (NNOMAX) : 6 NOMBRE CONSTANT DE D.L. EN TOUS LES NOEUDS OU 0 (ND) : 0 NOMBRE MAXIMUM DE D.L. EN UN NOEUD (NDLMAX) : 3 NOMBRE DE NOEUDS PAR PAGE DE NDL1 (NNPSEG) : 77 0TABLEAU DU NOMBRE DE DEGRES DE LIBERTE EN CHAQUE NOEUD NDLN( 1)= 3 NDLN( 2)= 3 NDLN( 3)= 3 NDLN( 4)= 1 NDLN( 5)= 1 NDLN( 6)= 1 NDLN( 0TABLEAU DU NUMERO DU DERNIER DEGRE DE LIBERTE EN CHAQUE NOEUD *************************************************************** NDL1( 1)= 0 NDL1( 2)= 3 NDL1( 3)= 4 NDL1( 4)= 5 NDL1( 5)= 6 NDL1( 6)= 9 NDL1( 7)= 12 NDL1( 8)= 13 NDL1( 9)= 14 NDL1( 10)= 15 NDL1( 11)= 16 NDL1( 12)= 19 NDL1( 13)= 20 NDL1( 14)= 23 NDL1( 15)= 24 NDL1( 16)= 27 NDL1( 17)= 28 NDL1( 18)= 29 NDL1( 19)= 30 NDL1( 20)= 31 NDL1( 21)= 32 NDL1( 22)= 33 NDL1( 23)= 34 NDL1( 24)= 37 NDL1( 25)= 40 NDL1( 26)= 41 NDL1( 27)= 44 NDL1( 28)= 47 NDL1( 29)= 48 NDL1( 30)= 49 NDL1( 31)= 50 NDL1( 32)= 51 NDL1( 33)= 52 NDL1( 34)= 53 NDL1( 35)= 54 NDL1( 36)= 55 NDL1( 37)= 58 NDL1( 38)= 59 NDL1( 39)= 62 NDL1( 40)= 63 NDL1( 41)= 66 NDL1( 42)= 67 NDL1( 43)= 70 NDL1( 44)= 71 NDL1( 45)= 72 NDL1( 46)= 73 NDL1( 47)= 74 NDL1( 48)= 75 NDL1( 49)= 76 NDL1( 50)= 77 NDL1( 51)= 78 NDL1( 52)= 81 NDL1( 53)= 84 NDL1( 54)= 85 NDL1( 55)= 88 NDL1( 56)= 91 NDL1( 57)= 92 NDL1( 58)= 93 NDL1( 59)= 94 NDL1( 60)= 97 NDL1( 61)= 98 NDL1( 62)= 99 NDL1( 63)= 100 NDL1( 64)= 103 NDL1( 65)= 104 NDL1( 66)= 105 NDL1( 67)= 106 NDL1( 68)= 109 NDL1( 69)= 110 NDL1( 70)= 111 NDL1( 71)= 114 NDL1( 72)= 115 NDL1( 73)= 116 NDL1( 74)= 117 NDL1( 75)= 120 NDL1( 76)= 123 NDL1( 77)= 124 NDL1( 78)= 125 FIN DU MODULE CONDL1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D'après la sortie de la fonction NDL1, nous voyons que notre problème est composé de 77 noeuds et 125 degrés de liberté.
Ces deux fonctions permettent à l'utilisateur de relire la S.D. NDL1 sans se préoccuper de sa forme ou de son existence.
La fonction LRNDL1 doit toujours être utilisée avant la fonction NDL, car celle-ci initialise les tableaux utilisés par la fonction NDL. Nous donnons maintenant les paramètres d'entrée et de sortie de ces deux fonctions.