Télécharger ldmt1.eso

Retour à la liste

Numérotation des lignes :

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

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