Suiv.: 4.3 Le module COBDCL
Sup.: Conditions aux limites Forcées
Préc.: Généralités
Index
Table des matières
Le but de ce module est de créer la structure de données BDCL ( Blocage Des Conditions aux Limites ).
Deux types de conditions aux limites sont admis (cf paragraphe 4.1) :
Le module COBDC1 est utilisé lorsque la valeur de blocage est :
Le fichier support de la S.D. BDCL doit être en accès séquentiel (l'accès direct n'est pas programmé).
Certaines limites d'utilisation existent lorsque l'on décrit des conditions aux limites en relation linéaire, pour plus de détails consultez le paragraphe 4.2.3
Lors d'une utilisation standard les S.D. TYNO et MPLR n'existent pas et donc, IEMAIL = 1 IETYNO = IEMPLR = 0
Considérons deux cas test :
Des sous-programmes ou fonctions supplémentaires sont nécessaires lorsque : ICONST = 2 ou NCLRL = -1
REAL FUNCTION VALCLR (I, X, Y, Z)
DOUBLE PRECISION FUNCTION VALCLD (I, X, Y, Z)
COMPLEX FUNCTION VALCLC (I, X, Y, Z)
DOUBLE PRECISION FUNCTION VALCLD (I, X, Y, Z) REAL X, Y, Z INTEGER I IF (I .EQ. 1) THEN VALCLD = 3*X + 5*Y ELSE IF (I .EQ. 2) THEN VALCLD = 0 ENDIF END
SUBROUTINE SPCLRL(M, NOEFF, NOFR, NNR, NBNOE, NUNOE,
[4] COO4, NDIM, NCLRL,
NMTRL, BDC5, LB5, BDC6, LB6, EPS)
Dans le paragraphe 4.2.3 nous donnons plus de détails sur la façon de traiter les conditions aux limites en relation linéaire ainsi qu'un exemple d'utilisation du sous-programme SPCLRL.
Les fichiers contenant les S.D. d'entrée et sortie, ils ne sont pas
tous nécessaires car les S.D. peuvent rester en mémoire centrale :
NFMAIL, NFTYNO, NFMPLR, NFNDL1, NFCOOR, NFBDCL
Les bibliothèques Modulef utilisées par le module COBDC1 sont dans
l'ordre :
COSD, UTSD, ZZZZ_MOD, UTII, U_xxx( utilitaires
spécifiques à une machine)
Comme tous les modules
de création de structures de données (COMACO, COFORC, THENEW
...) le module COBDC1 donne à l'utilisateur la possibilité
d'associer NTASD tableaux à la structure qui est créée.
Si cette option est choisie, pour chaque
tableau les
informations suivantes doivent être données :
Pour I de 1 au nombre de tableaux,
Le traitement d'une relation linéaire entre plusieurs degrés de liberté du type :
Si plusieurs relations linéaires entre coefficients apparaissent il est possible de distinguer deux cas :
Exemple : Conditions aux limites équipotentielles :
Les relations linéaires seront utilisés afin d'indiquer que la
valeur de la solution doit être constante en tous les noeuds d'une
frontière mais, la valeur de la constante n'est pas
connue.
Supposons que les noeuds sur cette frontière soient numérotés
de 1 à m.
Parmi les différentes façons de formuler le type de conditions
il y a :
La formulation 4.1 est incorrecte ( est pivot de
m-1 relations linéaires), alors que la formulation 4.2
est juste.
Un problème thermique contenant des conditions aux limites en relation linéaire est donné en exemple paragraphe 4.2.4.
Dans ce programme nous donnons deux exemples d'appel du module
COBDC1.
Dans le premier exemple (paragraphe 4.2.4), nous décrivons des conditions aux limites de
type Dirichlet, nous donnons dans ce cadre un exemple de
programmation de la fonction VALCLR.
Dans le second exemple (paragraphe 4.2.4), nous
décrivons des conditions en limites aux
relations linéaires (ces conditions sont de type équipotentiel),
nous donnons un exemple de programmation du sous-programme SPCLRL.
Ces deux exemples s'appuient sur le même domaine d'étude ; ce
domaine est donné figure 4.1.
Figure: Le problème thermique bidimensionnel
Ce problème admet une solution exacte :
Une formulation variationnelle en température est utilisée. On choisit une interpolation de type P3 Hermite, l'élément fini correspondant est TRIA 2P3D, l'inconnue variationnelle est u la température. Il y a trois degrés de liberté de mnémonique VN, DX, DY et, les points et les noeuds coïncident. Et, les conditions aux limites forcées sont :
Le programme appelant le module COBDC1 est défini comme suit : {
1 PROGRAM T1BDCL 2 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 C BLOCAGE DES CONDITIONS AUX LIMITES - ELEMENT THER TRIA 2P3D 4 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 C S.D.E. : MAIL COOR DE NOM RESPECTIF T4MAIL ET T4COOR 6 C 7 C S.D.S. : BDCL 8 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 C 10 C PROGRAMMEUR P. PATE INRIA - SIMULOG JUIN 92 11 C 12 C ................................................................... 13 C 14 PARAMETER ( LM = 45000 ) 15 COMMON M(LM) 16 DOUBLE PRECISION DM 17 EQUIVALENCE (M(1),DM) 18 C 19 INTEGER NNN, IMPRE 20 CHARACTER*80 NOMFIC 21 DIMENSION NOFR(3,3),VAL(3) 22 REAL VAL, VALCLR 23 DOUBLE PRECISION VALCLD 24 EXTERNAL VALCLR, VALCLD 25 C 26 100 FORMAT('NOM DE LA S.D.E MAIL') #F 27 110 FORMAT('NOM DE LA S.D.E COOR') #F 28 120 FORMAT('NOM DE LA S.D.S BDCL') #F 29 C100 FORMAT('NAME OF THE INPUT D.S. MAIL') #GB 30 C110 FORMAT('NAME OF THE INPUT D.S. COOR') #GB 31 C120 FORMAT('NAME OF THE OUTPUT D.S. BDCL') #GB 32 C 33 C INITIALISATION 34 C -------------- 35 NNN = 0 36 IMPRE = 5 37 CALL INITIS(M,LM,IMPRE,NNN) 38 IMPRIM = IINFO('I') 39 C 40 C OUVERTURE DES FICHIERS CONTENANT LES S.D. D'ENTREE MAIL ET COOR 41 C ---------------------------------------------------------------- 42 WRITE(IMPRIM,100) 43 CALL LIBCAR(NOMFIC) 44 CALL TRUNIT(NFMAIL) 45 CALL OUVRIS(NFMAIL,NOMFIC,'OLD,UNFORMATTED',0) 46 NIMAIL = 1 47 C 48 WRITE(IMPRIM,110) 49 CALL LIBCAR(NOMFIC) 50 CALL TRUNIT(NFCOOR) 51 CALL OUVRIS(NFCOOR,NOMFIC,'OLD,UNFORMATTED',0) 52 NICOOR = 1 53 C 54 C OUVERTURE DU FICHIER CONTENANT LA S.D. DE SORTIE BDCL 55 C ------------------------------------------------------ 56 WRITE(IMPRIM,120) 57 CALL LIBCAR(NOMFIC) 58 CALL TRUNIT(NFBDCL) 59 CALL OUVRIS(NFBDCL,NOMFIC,'UNFORMATTED',0) 60 NIBDCL = 1 61 NTBDCL = 0 62 C 63 C S.D. NDL1 64 C --------- 65 C IL EST INUTILE DE CREER LA S.D. NDL1 CAR LE NOMBRE DE DEGRE 66 C DE LIBERTE PAR NOEUD EST CONSTANT (1) 67 C 68 NFNDL1 = 0 69 NINDL1 = 0 70 C 71 C APPEL DU MODULE COBDC1 => S.D. BDCL 72 C ---------------------- 73 C LES INCONNUES BLOQUEES SONT DECRITES SOUS FORME DE TRIPLET 74 NBFR = 3 75 DO 1 I=1,3 76 NOFR(I,1) = 2 77 NOFR(I,2) = 1 78 1 CONTINUE 79 NOFR(1,3) = ICHAR4('VN ') 80 NOFR(2,3) = ICHAR4('DX ') 81 NOFR(3,3) = ICHAR4('DY ') 82 C 83 C ON TRAVAILLE EN SIMPLE PRECISION 84 NTY = 2 85 IEMAIL = 1 86 IETYNO = 0 87 NFTYNO = 0 88 NITYNO = 1 89 IEMPLR = 0 90 NFMPLR = 0 91 NIMPLR = 1 92 NOPFI = 0 93 C 94 ICONST = 2 95 C 96 NCLRL = 0 97 NMTRL = 0 98 ITA5 = 0 99 ITA6 = 0 100 C 101 FONINT = .FALSE. 102 C 103 C APPEL DE COBDC1 104 C --------------- 105 CALL COBDC1(M,ICONST,NBFR,NOFR,NTY,VAL,NCLRL,NMTRL,ITA5,ITA6, 106 + IEMAIL,NFMAIL,NIMAIL,IETYNO,NFTYNO,NITYNO,IEMPLR,NFMPLR, 107 + NIMPLR,NFNDL1,NINDL1,NFCOOR,NICOOR,NFBDCL,NIBDCL,NTBDCL, 108 + NOPFI,FONINT,VALCLR,VALCLD) 109 C 110 C IMPRESSION DE LA S.D. BDCL 111 C -------------------------- 112 CALL IMBDCL(M,NFBDCL,NIBDCL,IMPRE) 113 C 114 C FERMETURE DE FICHIERS 115 C --------------------- 116 CLOSE(NFMAIL) 117 CLOSE(NFBDCL) 118 END 119 C}
Remarques :
Puisque les points et les noeuds coïncident partout, la S.D.
d'entrée COOR du module COBDC1
est la même que celle issue du module COMACO, il est donc inutile
d'appeler le module CORNOE.
1 REAL FUNCTION VALCLR(I,X,Y,Z) 2 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 C BUT : DESCRIPTION DES CONDITIONS AUX LIMITES BLOQUEES 4 C ................................................................... 5 C PARAMETRES D'ENTREE 6 C ------------------- 7 C I : NUMERO DE LA LIGNE DU TABLEAU NOFR DECRIVANT LE TRIPLET 8 C X, Y, Z : COORDONNEES DU NOEUD 9 C 10 C PARAMETRES DE SORTIE 11 C -------------------- 12 C VALCLR : VALEUR DE BLOCAGE 13 C ................................................................... 14 C 15 C PROGRAMMEUR P. PATE INRIA - SIMULOG JUIN 92 16 C ................................................................... 17 INTEGER I 18 REAL X, Y, Z 19 C 20 IF ( I .EQ. 1) THEN 21 VALCLR = X*X +(Y-1)*(Y-1) 22 ELSE IF ( I .EQ. 2) THEN 23 VALCLR = 2*X 24 ELSE IF ( I .EQ. 3) THEN 25 VALCLR = 2*(Y-1) 26 ENDIF 27 END} Le listing d'exécution du programme t1bdcl est donné ci-dessous : {
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 DE LA S.D.E MAIL t4mail1 ++ OPEN(10,FILE='t4mail1',SPEC='OLD,UNFORMATTED',RECL=0) NOM DE LA S.D.E COOR t4coor1 ++ OPEN(11,FILE='t4coor1',SPEC='OLD,UNFORMATTED',RECL=0) NOM DE LA S.D.S BDCL t4bdcl1 ++ OPEN(12,FILE='t4bdcl1',SPEC='UNFORMATTED',RECL=0) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE COBDC1 : &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE COTYNO : FIN DU MODULE COTYNO &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE CALMAI : FIN DU MODULE CALMAI &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FIN DU MODULE COBDC1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& IMPRESSION DE LA S.D. BDCL DE NIVEAU 1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TITRE : DATE ET NOM UTILISATEUR : 19/02/93 pate TYPE DE LA STRUCTURE DE DONNEES : BDCL NIVEAU ET NUMERO D'ETAT : 1 0 NOMBRE DE TABLEAUX ASSOCIES : 0 TABLEAU B D C 2 ---------------- TYPE DES VALEURS DE BLOCAGE (NTYB) : 2 NOMBRE DE CARTES DECRIVANT LES BLOCAGES (NCART) : 81 NOMBRE DE RELATIONS LINEAIRES DE BLOCAGE (NCLRL) : 0 NUMERO D'OPTION DE STOCKAGE (NOPTFI) : 0 NOMBRE DE MOTS DU TABLEAU BDC3 (NMMAT3) : 243 NOMBRE DE MOTS DU TABLEAU BDC4 (NMMAT4) : 81 NOMBRE DE MOTS DU TABLEAU BDC5 (NMMAT5) : 0 NOMBRE DE MOTS DU TABLEAU BDC6 (NMMAT6) : 0 TABLEAUX B D C 3 B D C 4 ----------------------------- BLOCAGE TYPE : 1 : NOEUD : 1 , D.L. : 1 A LA VALEUR : 0.2000000E+01 BLOCAGE TYPE : 1 : NOEUD : 1 , D.L. : 2 A LA VALEUR : -0.2000000E+01 BLOCAGE TYPE : 1 : NOEUD : 1 , D.L. : 3 A LA VALEUR : -0.2000000E+01 BLOCAGE TYPE : 1 : NOEUD : 2 , D.L. : 1 A LA VALEUR : 0.1000000E+01 BLOCAGE TYPE : 1 : NOEUD : 2 , D.L. : 2 A LA VALEUR : -0.2000000E+01 BLOCAGE TYPE : 1 : NOEUD : 2 , D.L. : 3 A LA VALEUR : 0.0000000E+00 BLOCAGE TYPE : 1 : NOEUD : 3 , D.L. : 1 A LA VALEUR : 0.1765625E+01 BLOCAGE TYPE : 1 : NOEUD : 3 , D.L. : 2 A LA VALEUR : -0.1750000E+01 BLOCAGE TYPE : 1 : NOEUD : 3 , D.L. : 3 A LA VALEUR : -0.2000000E+01 BLOCAGE TYPE : 1 : NOEUD : 5 , D.L. : 1 A LA VALEUR : 0.1765625E+01}
Notre exemple est un problème de thermique bidimensionnel, le domaine d'étude est représenté figure 4.1.
Le problème est posé de la façon suivante :
Trouvez u(x) (la température) telle que,
Nous choisissons une formulation variationnelle en température, les conditions aux limites forcées sont de type conditions aux limites en relation linéaire, elles peuvent encore s'écrire :
Pour résoudre ce problème, on choisit une interpolation de type P2 Lagrange droit et
isoparamétrique, les éléments finis correspondants sont TRIA 2P2D et TRIA 2P2C, l'inconnue variationnelle est u
la température. Il y a un seul degré de liberté de mnémonique VN
et les points et les noeuds ne coïncident pas partout (cf
éléments TRIA 2P2D -TRIA 2P2C).
La S.D. NOPO est pratiquement identique à celle du test 4 décrit
[4] dans [Guide Modulef - 1], il suffit d'ajouter des noeuds au
au milieu de chacune des arêtes des triangles.
La construction des S.D. MAIL et COOR est donnée en annexe D.
Le programme appelant le module COBDC1 est défini comme suit : {
1 PROGRAM T2BDCL 2 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 C BUT : BLOCAGE DES CONDITIONS AUX LIMITES EN RELATIONS LINEAIRES 4 C ................................................................... 5 C ELEMENT 2P2D ET 2P2C 6 C 7 C S.D.E. : MAIL COOR DE NOM RESPECTIF T4MAIL ET T4COOR 8 C 9 C S.D.S. : BDCL 10 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 C 12 C PROGRAMMEUR P. PATE INRIA - SIMULOG JUIN 92 13 C ................................................................... 14 C 15 PARAMETER ( LM = 45000 ) 16 COMMON M(LM) 17 DOUBLE PRECISION DM 18 EQUIVALENCE (M(1),DM) 19 C 20 INTEGER NNN, IMPRE 21 CHARACTER*80 NOMFIC 22 DIMENSION NOFR(1,1),VAL(1) 23 REAL VAL, VALCLR 24 DOUBLE PRECISION VALCLD 25 EXTERNAL VALCLR, VALCLD 26 C 27 100 FORMAT('NOM DE LA S.D.E MAIL') #F 28 110 FORMAT('NOM DE LA S.D.E COOR') #F 29 120 FORMAT('NOM DE LA S.D.S BDCL') #F 30 C 100 FORMAT('NAME OF THE INPUT D.S. MAIL') #GB 31 C 110 FORMAT('NAME OF THE INPUT D.S. COOR') #GB 32 C 120 FORMAT('NAME OF THE OUTPUT D.S. BDCL') #GB 33 C 34 C INITIALISATION 35 C -------------- 36 NNN = 0 37 IMPRE = 5 38 CALL INITIS(M,LM,IMPRE,NNN) 39 IMPRIM = IINFO('I') 40 C 41 C OUVERTURE DES FICHIERS CONTENANT LES S.D. D'ENTREE MAIL ET COOR 42 C ---------------------------------------------------------------- 43 WRITE(IMPRIM,100) 44 CALL LIBCAR(NOMFIC) 45 CALL TRUNIT(NFMAIL) 46 CALL OUVRIS(NFMAIL,NOMFIC,'OLD,UNFORMATTED',0) 47 NIMAIL = 1 48 C 49 WRITE(IMPRIM,110) 50 CALL LIBCAR(NOMFIC) 51 CALL TRUNIT(NFCOOR) 52 CALL OUVRIS(NFCOOR,NOMFIC,'OLD,UNFORMATTED',0) 53 NICOOR = 1 54 C 55 C OUVERTURE DU FICHIER CONTENANT LA S.D. DE SORTIE BDCL 56 C ------------------------------------------------------ 57 WRITE(IMPRIM,120) 58 CALL LIBCAR(NOMFIC) 59 CALL TRUNIT(NFBDCL) 60 CALL OUVRIS(NFBDCL,NOMFIC,'UNFORMATTED',0) 61 NIBDCL = 1 62 NTBDCL = 0 63 C 64 C S.D. NDL1 65 C --------- 66 C IL EST INUTILE DE CREER LA S.D. NDL1 CAR LE NOMBRE DE DEGRE 67 C DE LIBERTE PAR NOEUD EST CONSTANT (1) 68 C 69 NFNDL1 = 0 70 NINDL1 = 0 71 C 72 C APPEL DU MODULE CORNOE => CREATION DE LA S.D. COOR CONTENANT 73 C ---------------------- LES COORDONNEES DES NOEUDS 74 C 75 NFCOOS = 0 76 NICOOS = 2 77 NTCOOS = 0 78 CALL CORNOE(M,NFMAIL,NIMAIL,NFCOOR,NICOOR,NFCOOS,NICOOS, 79 + NTCOOS) 80 C 81 C INITIALISATION DES PARAMETRES DU MODULE COBDC1 82 C ---------------------------------------------- 83 C 84 C LES INCONNUES BLOQUEES NE SONT PAS DECRITES SOUS FORME DE TRIPLET 85 NBFR = 0 86 C ON TRAVAILLE EN SIMPLE PRECISION 87 NTY = 2 88 C ON INDIQUE SI LES S.D. MAIL TYNO MPLR EXISTE OU NON 89 IEMAIL = 1 90 IETYNO = 0 91 NFTYNO = 0 92 NITYNO = 1 93 IEMPLR = 0 94 NFMPLR = 0 95 NIMPLR = 1 96 NOPFI = 0 97 C 98 C 99 ICONST = 0 100 C 101 C LES CONDITIONS AUX LIMITES EN RELATIONS LINEAIRES SONT 102 C FOURNIES A L'AIDE DU SOUS-PROGRAMME SPCLRL 103 NCLRL = -1 104 NMTRL = 0 105 ITA5 = 1 106 ITA6 = 1 107 FONINT = .FALSE. 108 C 109 C APPEL DE COBDC1 110 C --------------- 111 CALL COBDC1(M,ICONST,NBFR,NOFR,NTY,VAL,NCLRL,NMTRL,ITA5,ITA6, 112 + IEMAIL,NFMAIL,NIMAIL,IETYNO,NFTYNO,NITYNO,IEMPLR,NFMPLR, 113 + NIMPLR,NFNDL1,NINDL1,NFCOOS,NICOOS,NFBDCL,NIBDCL,NTBDCL, 114 + NOPFI,FONINT,VALCLR,VALCLD) 115 C 116 C IMPRESSION DE LA S.D. BDCL 117 C -------------------------- 118 CALL IMBDCL(M,NFBDCL,NIBDCL,IMPRE) 119 C 120 C FERMETURE DE FICHIERS 121 C --------------------- 122 CLOSE(NFMAIL) 123 CLOSE(NFCOOR) 124 CLOSE(NFBDCL) 125 END 126 C} Remarques
{
1 SUBROUTINE SPCLRL(M,NOEFF,NOFR,NNR,NBNOE,NUNOE,COO4,NDIM,NCLRL, 2 + NMTRL,BDC5,LB5,BDC6,LB6,EPS) 3 C +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 C BUT : ECRIRE LES CONDITIONS AUX LIMITES EN RELATION LINEAIRE 5 C -- 6 C LA TEMPERATURE EST CONSTANTE SUR LA REFERENCE 2 7 C .................................................................... 8 C 9 C PARAMETRES D'ENTREE : 10 C 11 C M : SUPER TABLEAU M 12 C NOEFF : NOMBRE DE NOEUDS REFERENCES 13 C NOFR(NNR) : LISTE DE TOUS LES NUMEROS DE REFERENCE ( NOFR(I) = I ) 14 C NBNOE(NNR) : NBNOE(I) = NOMBRE DE NOEUDS SUR LA REFERENCE I 15 C NUNOE(NOEFF): LISTE DES NOEUDS POUR CHAQUE REFERENCE 16 C COO4 : TABLEAU DES COORDONNEES 17 C NDIM : DIMENSION DE L'ESPACE 18 C 19 C PARAMETRES DE SORTIE : 20 C 21 C 1-ERE PASSAGE : NCLRL = -1 22 C NCLRL : NOMBRE DE CONDITIONS AUX LIMITES EN RELATIONS LINEAIRES 23 C NMTRL : NOMBRE MAXIMUM DE TERME EN RELATION LINEAIRE 24 C EPS : EPSILON POUR TRIER LES NOEUDS (EPS < 0. => PAS DE TRIE) 25 C 2-EME PASSAGE 26 C ON REMPLIT LE TABLEAU BDC5 ET BDC6 DE LA S.D.S. BDCL 27 C LB5 = 0 28 C LB6 = 0 29 C BOUCLE I SUR NCLRL 30 C LB5 = LB5 + 1 31 C BDC5(LB5) = NOMBRE DE TERME DE LA I-EME RELATION LINEAIRE 32 C LB6 = LB6 + 1 33 C BDC6(LB6) = VALEUR FINALE DE LA I-EME RELATION LINEAIRE 34 C BOUCLE J SUR LE NOMBRE DE TERME DE LA I-EME RELATION LINEAIRE 35 C LB5 = LB5 + 1 36 C BDC5(LB5) = NUMERO DU NOEUD 37 C LB5 = LB5 + 1 38 C BDC5(LB5) = DEGRE DE LIBERTE ASSOCIE 39 C LB6 = LB6 + 1 40 C BDC6(LB6) = VALEUR DU COEFFICIENT ASSOCIE AU J-EME TERME 41 C FIN BOUCLE SUR J 42 C FIN BOUCLE SUR I 43 C LB6 = LB6 * NBREMO 44 C .................................................................... 45 INTEGER M(*), NOEFF, NOFR(NNR), NNR, NBNOE(NNR), NUNOE(*), NDIM, 46 + NCLRL, NMTRL, BDC5(*), LB5, LB6 47 INTEGER NUMREF, IA, I 48 REAL COO4(NDIM,*), EPS, BDC6(*) 49 C 50 NUMREF = 2 51 IF(NCLRL .EQ. -1) THEN 52 C -- ON CALCULE LE NCLRL 53 NMTRL = 2 54 NCLRL = NBNOE(NUMREF) - 1 55 C ON NE FAIT PAS DE TRI SUR LES NOEUDS REFERENCES 56 EPS = - 0.001 57 C 58 ELSEIF(NCLRL .GT. 0) THEN 59 C --- ON REMPLIT LES TABLEAUX BDC5 CONTENANT : 60 LB5 = 0 61 LB6 = 0 62 C 63 C ON RECHERCHE A L'AIDE DU TABLEAU NBNOE LE DEBUT DE LA LISTE 64 C DES NOEUDS DE REFERENCE NUMREF DANS LE TABLEAU NUNOE 65 C 66 IA = 1 67 DO 2 I = 1 , NUMREF -1 68 IA = IA + NBNOE(I) 69 2 CONTINUE 70 C 71 C ON REMPLIT LES TABLEAUX BDC5 ET BDC6 72 C 73 DO 3 I = 1 , NCLRL 74 BDC5(LB5+1) = 2 75 BDC6(LB6+1) = 0. 76 C 77 C -- NOEUD1 , DL1 , APHA1 78 BDC5(LB5+2) = NUNOE(IA) 79 BDC5(LB5+3) = 1 80 BDC6(LB6+2) = 1. 81 C 82 C -- NOEUD2 , DL2 , APHA2 83 BDC5(LB5+4) = NUNOE(IA+1) 84 BDC5(LB5+5) = 1 85 BDC6(LB6+3) = -1. 86 C 87 C -- REMISE A JOUR DES COMPTEURS 88 LB5 = LB5 + 5 89 LB6 = LB6 + 3 90 IA = IA +1 91 3 CONTINUE 92 END IF 93 END}
Nous faisons maintenant quelques remarques sur ce sous-programme :
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 DE LA S.D.E MAIL t4mail ++ OPEN(10,FILE='t4mail',SPEC='OLD,UNFORMATTED',RECL=0) NOM DE LA S.D.E COOR t4coor ++ OPEN(11,FILE='t4coor',SPEC='OLD,UNFORMATTED',RECL=0) NOM DE LA S.D.S BDCL t4bdcl ++ OPEN(12,FILE='t4bdcl',SPEC='UNFORMATTED',RECL=0) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE CORNOE : FIN DU MODULE CORNOE &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE COBDC1 : &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MODULE CALMAI : FIN DU MODULE CALMAI &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& FIN DU MODULE COBDC1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& IMPRESSION DE LA S.D. BDCL DE NIVEAU 1 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& TITRE : DATE ET NOM UTILISATEUR : 19/02/93 pate TYPE DE LA STRUCTURE DE DONNEES : BDCL NIVEAU ET NUMERO D'ETAT : 1 0 NOMBRE DE TABLEAUX ASSOCIES : 0 TABLEAU B D C 2 ---------------- TYPE DES VALEURS DE BLOCAGE (NTYB) : 2 NOMBRE DE CARTES DECRIVANT LES BLOCAGES (NCART) : 0 NOMBRE DE RELATIONS LINEAIRES DE BLOCAGE (NCLRL) : 52 NUMERO D'OPTION DE STOCKAGE (NOPTFI) : 0 NOMBRE DE MOTS DU TABLEAU BDC3 (NMMAT3) : 0 NOMBRE DE MOTS DU TABLEAU BDC4 (NMMAT4) : 0 NOMBRE DE MOTS DU TABLEAU BDC5 (NMMAT5) : 260 NOMBRE DE MOTS DU TABLEAU BDC6 (NMMAT6) : 156 TABLEAUX B D C 5 B D C 6 ----------------------------- NOMBRE DE TERMES : 2 TERME 1 NOEUD 2 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 3 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 3 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 4 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 4 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 5 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 5 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 7 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 7 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 8 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 8 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 9 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 9 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 10 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 10 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 11 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 11 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 16 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00 NOMBRE DE TERMES : 2 TERME 1 NOEUD 16 D.L. 1 COEFFICIENT 0.1000000E+01 TERME 2 NOEUD 17 D.L. 1 COEFFICIENT -0.1000000E+01 SECOND MEMBRE DE LA COMBINAISON : 0.0000000E+00}