Download ldmt1.eso

Back to the list

   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