Télécharger ldmt1.eso

Retour à la liste

Numérotation des lignes :

ldmt1
  1. C LDMT1 SOURCE PV 20/09/26 21:18:31 10724
  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.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29.  
  30. C ... Ces variables ont pour but, de diriger le comportement de LDMT2 ...
  31. C TRSUP - TRiangle SUPérieur
  32. C MENAGE - évident
  33. C LDIAG - initialisation et remplissage de MDIAG et MDNOR demandés
  34.  
  35. LOGICAL TRSUP,MENAGE,LDIAG
  36.  
  37.  
  38. IF(IIMPI.EQ.1)THEN
  39. CALL GIBTEM(XKT)
  40. INTERR(1)=XKT
  41. CALL ERREUR(-259)
  42. ENDIF
  43. IF(IIMPI.EQ.1)WRITE(IOIMP,10)
  44. 10 FORMAT(' L''IMPRESSION PRECDENTE EST AVANT ASSEM1 ')
  45.  
  46. C ... MMATRI est initialisé dans ASSEM1 et renvoyé en tant que résultat
  47. C dans la variable MMATRX, il est désactivé à la sortie ...
  48. CALL ASNS1(KRIGI,MMATRX,INUINX,ITOPOX,IMINIX,IPOX,INCTRX,INCTRZ,
  49. & IITOPX,ITOPOD,IITOPD,IPODD)
  50. IF(IERR.NE.0) RETURN
  51.  
  52. IF(IIMPI.EQ.1) THEN
  53. CALL GIBTEM(XKT)
  54. INTERR(1)=XKT
  55. CALL ERREUR(-259)
  56. ENDIF
  57. IF(IIMPI.EQ.1)WRITE(IOIMP,11)
  58. 11 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT2')
  59.  
  60. C ... On initialise IJMAX ici et non dans LDMT2, car celui-ci est
  61. C appelé deux fois ...
  62. MMATRI=MMATRX
  63. SEGACT,MMATRI*MOD
  64. IJMAX=0
  65. SEGDES,MMATRI
  66.  
  67. TRSUP =.FALSE.
  68. MENAGE=.FALSE.
  69. LDIAG =.TRUE.
  70. njtot=0
  71. * write(6,*) ' premier appel'
  72. CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ,
  73. & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1)
  74. IF(IERR.NE.0) RETURN
  75. TRSUP =.TRUE.
  76. MENAGE=.TRUE.
  77. LDIAG =.FALSE.
  78. * write(6,*) ' deucxieme appel'
  79. CALL LDMT2(KRIGI,ITOPOX,INUINX,IMINIX,MMATRX,IPOX,INCTRX,INCTRZ,
  80. & IITOPX,TRSUP,MENAGE,LDIAG,IITOPD,ITOPOD,IPODD,njtot,1)
  81. IF(IERR.NE.0) RETURN
  82.  
  83. IF(IIMPI.EQ.1)THEN
  84. CALL GIBTEM(XKT)
  85. INTERR(1)=XKT
  86. CALL ERREUR(-259)
  87. ENDIF
  88. IF(IIMPI.EQ.1) WRITE(IOIMP,12)
  89. 12 FORMAT(' L''IMPRESSION PRECEDENTE EST AVANT LDMT3')
  90.  
  91. IF(IERR.NE.0) GO TO 5000
  92.  
  93. CALL LDMT3(MMATRX,PREC)
  94. IF(IERR.NE.0) RETURN
  95.  
  96. IF(IIMPI.EQ.1)THEN
  97. CALL GIBTEM(XKT)
  98. INTERR(1)=XKT
  99. CALL ERREUR(-259)
  100. ENDIF
  101. IF(IERR.NE.0) GO TO 5000
  102.  
  103. IF(IIMPI.EQ.1) WRITE(IOIMP,13)
  104. 13 FORMAT(' L''IMPRESSION PRECEDENTE EST APRES LDMT3')
  105.  
  106. MRIGID=KRIGI
  107. SEGACT MRIGID*MOD
  108. ICHOLE=MMATRX
  109. SEGDES MRIGID
  110.  
  111. 5000 CONTINUE
  112. RETURN
  113. END
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales