C LDMT1 SOURCE JC220346 13/12/16 21:15:55 7884 SUBROUTINE LDMT1(KRIGI,PREC) C======================================================================= C ASSEMBLE LES PETITES MATRICES de RIGIDITE ET LES MET SOUS LA FORME C t C L.D.M C IL LE POINTEUR DE LA MATRICE RESULTANTE DANS ICHOLE (segment MRIGID) C C Cette subroutine est équivalente à TRIANG dans le cas de C l'inversion des matrices symétrique C C Appelée par : LDMT C C Auteur : Michel BULIK C C Date : Printemps '95 C C Langage : ESOPE + FORTRAN77 C C======================================================================= C IMPLICIT INTEGER(I-N) REAL*8 XKT,PREC -INC SMRIGID -INC SMMATRI -INC CCOPTIO C ... Ces variables ont pour but, de diriger le comportement de LDMT2 ... C TRSUP - TRiangle SUPérieur C MENAGE - évident C LDIAG - initialisation et remplissage de MDIAG et MDNOR demandés LOGICAL TRSUP,MENAGE,LDIAG IF(IIMPI.EQ.1)THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) ENDIF IF(IIMPI.EQ.1)WRITE(IOIMP,10) 10 FORMAT(' L''IMPRESSION PRECDENTE EST AVANT ASSEM1 ') C ... MMATRI est initialisé dans ASSEM1 et renvoyé en tant que résultat C dans la variable MMATRX, il est désactivé à la sortie ... CALL ASNS1(KRIGI,MMATRX,INUINX,ITOPOX,IMINIX,IPOX,INCTRX,INCTRZ, & IITOPX,ITOPOD,IITOPD,IPODD) IF(IERR.NE.0) RETURN IF(IIMPI.EQ.1) THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) ENDIF IF(IIMPI.EQ.1)WRITE(IOIMP,11) 11 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT2') C ... On initialise IJMAX ici et non dans LDMT2, car celui-ci est C appelé deux fois ... MMATRI=MMATRX SEGACT,MMATRI*MOD IJMAX=0 SEGDES,MMATRI TRSUP =.FALSE. MENAGE=.FALSE. LDIAG =.TRUE. njtot=0 * write(6,*) ' premier appel' CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ, & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1) IF(IERR.NE.0) RETURN TRSUP =.TRUE. MENAGE=.TRUE. LDIAG =.FALSE. * write(6,*) ' deucxieme appel' CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ, & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1) IF(IERR.NE.0) RETURN IF(IIMPI.EQ.1)THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) ENDIF IF(IIMPI.EQ.1) WRITE(IOIMP,12) 12 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT3') IF(IERR.NE.0) GO TO 5000 CALL LDMT3(MMATRX,PREC) IF(IERR.NE.0) RETURN IF(IIMPI.EQ.1)THEN CALL GIBTEM(XKT) INTERR(1)=XKT CALL ERREUR(-259) ENDIF IF(IERR.NE.0) GO TO 5000 IF(IIMPI.EQ.1) WRITE(IOIMP,13) 13 FORMAT(' L''IMPRESSION PRECEDENTE EST APRES LDMT3') MRIGID=KRIGI SEGACT MRIGID*MOD ICHOLE=MMATRX SEGDES MRIGID 5000 CONTINUE RETURN END