1 : C LDMT1 SOURCE JC220346 13/12/16 21:15:55 7884 2 : SUBROUTINE LDMT1(KRIGI,PREC) 3 : C======================================================================= 4 : C ASSEMBLE LES PETITES MATRICES de RIGIDITE ET LES MET SOUS LA FORME 5 : C t 6 : C L.D.M 7 : C IL LE POINTEUR DE LA MATRICE RESULTANTE DANS ICHOLE (segment MRIGID) 8 : C 9 : C Cette subroutine est équivalente à TRIANG dans le cas de 10 : C l'inversion des matrices symétrique 11 : C 12 : C Appelée par : LDMT 13 : C 14 : C Auteur : Michel BULIK 15 : C 16 : C Date : Printemps '95 17 : C 18 : C Langage : ESOPE + FORTRAN77 19 : C 20 : C======================================================================= 21 : C 22 : IMPLICIT INTEGER(I-N) 23 : REAL*8 XKT,PREC 24 : -INC SMRIGID 25 : -INC SMMATRI 26 : -INC CCOPTIO 27 : 28 : C ... Ces variables ont pour but, de diriger le comportement de LDMT2 ... 29 : C TRSUP - TRiangle SUPérieur 30 : C MENAGE - évident 31 : C LDIAG - initialisation et remplissage de MDIAG et MDNOR demandés 32 : 33 : LOGICAL TRSUP,MENAGE,LDIAG 34 : 35 : 36 : IF(IIMPI.EQ.1)THEN 36 : CALL GIBTEM(XKT) 37 : INTERR(1)=XKT 37 : CALL ERREUR(-259) 38 : ENDIF 39 : IF(IIMPI.EQ.1)WRITE(IOIMP,10) 40 : 10 FORMAT(' L''IMPRESSION PRECDENTE EST AVANT ASSEM1 ') 41 : 42 : C ... MMATRI est initialisé dans ASSEM1 et renvoyé en tant que résultat 43 : C dans la variable MMATRX, il est désactivé à la sortie ... 43 : CALL ASNS1(KRIGI,MMATRX,INUINX,ITOPOX,IMINIX,IPOX,INCTRX,INCTRZ, 44 : & IITOPX,ITOPOD,IITOPD,IPODD) 45 : IF(IERR.NE.0) RETURN 46 : 47 : IF(IIMPI.EQ.1) THEN 47 : CALL GIBTEM(XKT) 48 : INTERR(1)=XKT 48 : CALL ERREUR(-259) 49 : ENDIF 50 : IF(IIMPI.EQ.1)WRITE(IOIMP,11) 51 : 11 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT2') 52 : 53 : C ... On initialise IJMAX ici et non dans LDMT2, car celui-ci est 54 : C appelé deux fois ... 55 : MMATRI=MMATRX 56 : SEGACT,MMATRI*MOD 57 : IJMAX=0 58 : SEGDES,MMATRI 59 : 60 : TRSUP =.FALSE. 61 : MENAGE=.FALSE. 62 : LDIAG =.TRUE. 63 : njtot=0 64 : * write(6,*) ' premier appel' 64 : CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ, 65 : & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1) 66 : IF(IERR.NE.0) RETURN 67 : TRSUP =.TRUE. 68 : MENAGE=.TRUE. 69 : LDIAG =.FALSE. 70 : * write(6,*) ' deucxieme appel' 70 : CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ, 71 : & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1) 72 : IF(IERR.NE.0) RETURN 73 : 74 : IF(IIMPI.EQ.1)THEN 74 : CALL GIBTEM(XKT) 75 : INTERR(1)=XKT 75 : CALL ERREUR(-259) 76 : ENDIF 77 : IF(IIMPI.EQ.1) WRITE(IOIMP,12) 78 : 12 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT3') 79 : 80 : IF(IERR.NE.0) GO TO 5000 81 : 81 : CALL LDMT3(MMATRX,PREC) 82 : IF(IERR.NE.0) RETURN 83 : 84 : IF(IIMPI.EQ.1)THEN 84 : CALL GIBTEM(XKT) 85 : INTERR(1)=XKT 85 : CALL ERREUR(-259) 86 : ENDIF 87 : IF(IERR.NE.0) GO TO 5000 88 : 89 : IF(IIMPI.EQ.1) WRITE(IOIMP,13) 90 : 13 FORMAT(' L''IMPRESSION PRECEDENTE EST APRES LDMT3') 91 : 92 : MRIGID=KRIGI 93 : SEGACT MRIGID*MOD 94 : ICHOLE=MMATRX 95 : SEGDES MRIGID 96 : 97 : 5000 CONTINUE 98 : RETURN 99 : END 100 : 101 : 102 : 103 : 104 : 105 : 106 : 107 : 108 : 109 : 110 : 111 : 112 : 113 :
© Cast3M 2003 - All rights reserved.
Disclaimer