Télécharger ldmt1.eso

Retour à la liste

Numérotation des lignes :

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

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