Télécharger machik.eso

Retour à la liste

Numérotation des lignes :

machik
  1. C MACHIK SOURCE PV 20/09/26 21:18:41 10724
  2. SUBROUTINE MACHIK(EMTK,EPRI,SPRI,EDUA,SDUA,SMTK)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C***********************************************************************
  6. C NOM : MACHIK
  7. C DESCRIPTION : Changement de nom d'inconnues primales et duales
  8. C d'une matrice (type RIGIDITE ou MATRIK)
  9. C
  10. C
  11. C LANGAGE : ESOPE
  12. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  13. C mél : gounand@semt2.smts.cea.fr
  14. C***********************************************************************
  15. C APPELES :
  16. C APPELES (E/S) : LIROBJ
  17. C APPELES (BLAS) :
  18. C APPELES (CALCUL) :
  19. C APPELE PAR :
  20. C***********************************************************************
  21. C SYNTAXE GIBIANE :
  22. C MATRIK2 = 'KOPS' 'CHANINCO' MATRIK1
  23. C LISTMOT1 LISTMOT2 LISTMOT3 LISTMOT4 ;
  24. C ENTREES : EMTK
  25. C ENTREES/SORTIES : -
  26. C SORTIES : SMTK
  27. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  28. C***********************************************************************
  29. C VERSION : v1, 04/07/2002, version initiale
  30. C HISTORIQUE : v1, 04/07/2002, création
  31. C HISTORIQUE :
  32. C HISTORIQUE :
  33. C***********************************************************************
  34. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  35. C en cas de modification de ce sous-programme afin de faciliter
  36. C la maintenance !
  37. C***********************************************************************
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC SMLMOTS
  42. POINTEUR EPRI.MLMOTS
  43. POINTEUR EDUA.MLMOTS
  44. POINTEUR SPRI.MLMOTS
  45. POINTEUR SDUA.MLMOTS
  46. POINTEUR EMTK.MATRIK
  47. POINTEUR SMTK.MATRIK
  48. POINTEUR EIMAT.IMATRI
  49. POINTEUR SIMAT.IMATRI
  50. *
  51. INTEGER IRETOU
  52. INTEGER LEPRI,LSPRI,LEDUA,LSDUA
  53. INTEGER IEPRI,IEDUA
  54. INTEGER NRIGE,NMATRI,NKID,NKMT,NBME
  55. INTEGER IRIGE,JMATRI, IBME
  56. *
  57. * Executable statements
  58. *
  59. *
  60. * Lecture des arguments
  61. *
  62. SEGACT,EPRI,SPRI,EDUA,SDUA
  63. LEPRI=EPRI.MOTS(/2)
  64. LSPRI=SPRI.MOTS(/2)
  65. LEDUA=EDUA.MOTS(/2)
  66. LSDUA=SDUA.MOTS(/2)
  67. IF (LEPRI.NE.LSPRI.OR.LEDUA.NE.LSDUA) THEN
  68. CALL ERREUR(854)
  69. RETURN
  70. ENDIF
  71. *
  72. * Initialisation du chapeau Matrik résultat et mise à zéro
  73. * de toute information de préconditionnement.
  74. *
  75. SEGACT EMTK
  76. NRIGE=EMTK.IRIGEL(/1)
  77. NMATRI=EMTK.IRIGEL(/2)
  78. NKID=EMTK.KIDMAT(/1)
  79. NKMT=EMTK.KKMMT(/1)
  80. SEGINI,SMTK
  81. DO JMATRI=1,NMATRI
  82. DO IRIGE=1,NRIGE
  83. SMTK.IRIGEL(IRIGE,JMATRI)=EMTK.IRIGEL(IRIGE,JMATRI)
  84. ENDDO
  85. * On ne sait pas si la matrice résultante est symétrique
  86. * (et on s'en fout)
  87. * mais c'est mieux de garder le type !
  88. * SMTK.IRIGEL(7,JMATRI)=3
  89. ENDDO
  90. SEGDES,EMTK
  91. *
  92. * Duplication des segments IMATRI et changement éventuel des noms
  93. * d'inconnues
  94. *
  95. DO JMATRI=1,NMATRI
  96. EIMAT=SMTK.IRIGEL(4,JMATRI)
  97. SEGINI,SIMAT=EIMAT
  98. SMTK.IRIGEL(4,JMATRI)=SIMAT
  99. NBME=SIMAT.LIZAFM(/2)
  100. DO IBME=1,NBME
  101. DO IEPRI=1,LEPRI
  102. IF (SIMAT.LISPRI(IBME)(1:4).EQ.EPRI.MOTS(IEPRI)(1:4))
  103. $ THEN
  104. SIMAT.LISPRI(IBME)(1:4)=SPRI.MOTS(IEPRI)(1:4)
  105. ENDIF
  106. ENDDO
  107. DO IEDUA=1,LEDUA
  108. IF (SIMAT.LISDUA(IBME)(1:4).EQ.EDUA.MOTS(IEDUA)(1:4))
  109. $ THEN
  110. SIMAT.LISDUA(IBME)(1:4)=SDUA.MOTS(IEDUA)(1:4)
  111. ENDIF
  112. ENDDO
  113. ENDDO
  114. SEGDES,SIMAT
  115. ENDDO
  116. SEGDES,SMTK
  117. SEGDES,EPRI,SPRI,EDUA,SDUA
  118. *
  119. * Normal termination
  120. *
  121. RETURN
  122. *
  123. * Format handling
  124. *
  125. *
  126. * End of subroutine MACHIK
  127. *
  128. END
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  

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