Télécharger inctyp.eso

Retour à la liste

Numérotation des lignes :

inctyp
  1. C INCTYP SOURCE GOUNAND 25/03/24 21:15:03 12216
  2. SUBROUTINE INCTYP(MATRIK,IORINC,
  3. $ ATYP,ANOD,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : INCTYP
  9. C DESCRIPTION :
  10. C Ce sp initialise le vecteur inconnue primale
  11. C (i.e. x de Ax=b) avec un chpoint d'inconnues primales.
  12. C On a en vue une méthode itérative de résolution.
  13. C
  14. C Ce sp est quasiment identique à mesmbr.eso.
  15. C C'est une interface à ch2vec.
  16. C
  17. C
  18. C LANGAGE : ESOPE
  19. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  20. C mél : gounand@semt2.smts.cea.fr
  21. C***********************************************************************
  22. C APPELE : CH2VEC
  23. C***********************************************************************
  24. C ENTREES : MATRIK, MCHINI, IMPR
  25. C ENTREES/SORTIES : -
  26. C SORTIES : INCX, IRET
  27. C CODE RETOUR (IRET) : 0 si ok
  28. C <0 si problème
  29. C MATRIK : pointeur sur segment MATRIK de l'include SMMATRIK
  30. C on pioche dedans les informations nécessaires
  31. C (numérotations, inconnues, support géométriques)
  32. C pour effectuer la conversion MCHINI->INCX.
  33. C MCHINI : pointeur sur segment MCHPOI de l'include SMCHPOI
  34. C chpoint d'initialisation du vecteur INCX
  35. C IMPR : niveau d'impression
  36. C INCX : pointeur sur segment IZA de l'include SMMATRIK
  37. C vecteur x initial pour la résolution de Ax=b.
  38. C Il est initialisé à 0 si MCHINI est nul
  39. C sinon les valeurs non nulles de MCHINI
  40. C correspondant à des inconnues primales sont
  41. C chargées dans INCX.
  42. C Les valeurs non nulles de MCHINI NE correspondant
  43. C PAS à des inconnues primales donnent lieu à
  44. C l'émission d'un warning (cf. CH2VEC).
  45. C***********************************************************************
  46. C VERSION : v1, 01/04/98, version initiale
  47. C HISTORIQUE : v1, 01/04/98, création
  48. C HISTORIQUE :
  49. C HISTORIQUE :
  50. C***********************************************************************
  51. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  52. C en cas de modification de ce sous-programme afin de faciliter
  53. C la maintenance !
  54. C***********************************************************************
  55.  
  56. -INC PPARAM
  57. -INC CCOPTIO
  58. POINTEUR INCX.IZA
  59. -INC SMLENTI
  60. POINTEUR ATYP.MLENTI
  61. POINTEUR ANOD.MLENTI
  62. POINTEUR KRINC.MLENTI
  63. -INC SMLMOTS
  64. POINTEUR IORINC.MLMOTS
  65. POINTEUR IORINU.MLMOTS
  66. C
  67. IRET=0
  68. SEGACT MATRIK
  69. C Initialisation de l'inconnue à 0
  70. JG=KNTTP
  71. SEGINI ATYP
  72. SEGINI ANOD
  73. NBVA=KNTTP
  74. MINC=KMINCP
  75. SEGACT MINC
  76. NBI=LISINC(/2)
  77. JG=NBI
  78. SEGINI KRINC
  79. * WRITE(IOIMP,*) 'NBI,IORINC= ',NBI,IORINC
  80. *
  81. IF (IORINC.NE.0) THEN
  82. SEGACT IORINC
  83. SEGINI,IORINU=IORINC
  84. JGN=IORINC.MOTS(/1)
  85. JGM=IORINC.MOTS(/2)
  86. * write(ioimp,*) 'JGN,JGM=',JGN,JGM
  87. CALL CUNIQ(IORINC.MOTS,JGN,JGM,IORINU.MOTS,JGMU,IMPR,IRET)
  88. IF (IRET.NE.0) GOTO 9999
  89. IF (JGM.NE.JGMU) THEN
  90. WRITE(IOIMP,*) 'IORINC ne doit pas avoir de doublons'
  91. GOTO 9999
  92. ENDIF
  93. SEGSUP IORINU
  94. IF (JGM.NE.NBI) THEN
  95. WRITE(IOIMP,*)
  96. $ 'IORINC doit referencer toutes les inconnues de la matrice'
  97. GOTO 9999
  98. ENDIF
  99. CALL CREPER(JGN,NBI,JGM,MINC.LISINC,IORINC.MOTS,KRINC.LECT,IMPR
  100. $ ,IRET)
  101. IF (IRET.NE.0) GOTO 9999
  102. ELSE
  103. DO IBI=1,NBI
  104. KRINC.LECT(IBI)=IBI
  105. ENDDO
  106. ENDIF
  107. IF (IMPR.GT.2) THEN
  108. WRITE(IOIMP,*) 'NBI= ',NBI
  109. WRITE(IOIMP,*) 'MINC.LISINC(1..',NBI,')= '
  110. WRITE(IOIMP,*)(MINC.LISINC(II),II=1,NBI)
  111. IF (IORINC.NE.0) THEN
  112. WRITE(IOIMP,*) 'IORINC.MOTS(1..',NBI,')= '
  113. WRITE(IOIMP,*)(IORINC.MOTS(II),II=1,NBI)
  114. ENDIF
  115. WRITE(IOIMP,*) 'KRINC.LECT(1..',NBI,')= '
  116. WRITE(IOIMP,*)(KRINC.LECT(II),II=1,NBI)
  117. ENDIF
  118. *
  119. NPT=NPOS(/1)-1
  120. IDMAT=KIDMAT(1)
  121. SEGACT IDMAT
  122. DO IBI=1,NBI
  123. JBI=KRINC.LECT(IBI)
  124. DO IPT=1,NPT
  125. IF (MPOS(IPT,IBI).NE.0) THEN
  126. ATYP.LECT(NUAN(NPOS(IPT)+
  127. $ MPOS(IPT,IBI)-1))=JBI
  128. ANOD.LECT(NUAN(NPOS(IPT)+
  129. $ MPOS(IPT,IBI)-1))=IPT
  130. ENDIF
  131. ENDDO
  132. ENDDO
  133. SEGDES IDMAT
  134. SEGDES MINC
  135. SEGSUP KRINC
  136. C
  137. IF (IMPR.GT.5) THEN
  138. WRITE(IOIMP,*) 'inctyp.eso : création du pointeur ATYP=',ATYP
  139. IF (IMPR.GT.7) THEN
  140. WRITE(IOIMP,*) 'ATYP(1..',JG,')= '
  141. WRITE(IOIMP,1002)(ATYP.LECT(II),II=1,JG)
  142. ENDIF
  143. ENDIF
  144. C
  145. SEGDES ATYP
  146. SEGDES MATRIK
  147. *
  148. * Normal termination
  149. *
  150. RETURN
  151. *
  152. * Format handling
  153. *
  154. 1002 FORMAT(10(1X,I7))
  155. *
  156. * Error handling
  157. *
  158. 9999 CONTINUE
  159. WRITE(IOIMP,*) 'An error was detected in inctyp.eso'
  160. RETURN
  161. *
  162. * End of INCTYP
  163. *
  164. END
  165.  
  166.  

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