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 :
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
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
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.