Télécharger excham.eso

Retour à la liste

Numérotation des lignes :

excham
  1. C EXCHAM SOURCE PV090527 25/01/07 18:18:22 12116
  2.  
  3. *--------------------------------------------------------------------*
  4. * *
  5. * Sous-programme appele par EXPIL, traitant la pile des *
  6. * nouveaux CHAMELEMs. *
  7. * *
  8. * Parametres: *
  9. * *
  10. * e ICOLAC pointeur sur le chapeau des piles *
  11. * es ITLACC pointeur de la pile examinee *
  12. * e M1 premier indice d'examen dans la pile *
  13. * e M2 dernier indice d'examen dans la pile *
  14. * e IIICHA = 1 : on change les pointeurs *
  15. * *
  16. *--------------------------------------------------------------------*
  17. SUBROUTINE EXCHAM(ICOLAC,ITLACC,M1,M2,IIICHA)
  18.  
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8(A-H,O-Z)
  21.  
  22. -INC PPARAM
  23. -INC CCOPTIO
  24. -INC SMCOORD
  25.  
  26. -INC SMCHAML
  27.  
  28. -INC TMCOLAC
  29.  
  30. CHARACTER*8 MOTIP
  31. CHARACTER*16 MOTYP
  32.  
  33. IF (M1.GT.M2) RETURN
  34.  
  35. iun=1
  36. ICO1 = KCOLA( 1)
  37. ICO33 = KCOLA(33)
  38. ICO40 = KCOLA(40)
  39. ICO48 = KCOLA(48)
  40.  
  41. c* ILISSE=ilissp
  42. c* SEGACT,ILISSE*MOD
  43.  
  44. ILISSE=ILISSG
  45. SEGACT,ILISSE*MOD
  46.  
  47. DO 10 IEL = M1, M2
  48.  
  49. MCHELM = ITLAC(IEL)
  50. IF (MCHELM.EQ.0) GO TO 10
  51. SEGACT,MCHELM*MOD
  52.  
  53. if (ichaml(/1).lt.0.or.ichaml(/1).gt.10000000) then
  54. * chelm invalide. On le supprime de la pile
  55. moterr(1:8)='MCHELM '
  56. interr(1)=itlac(iel)
  57. call erreur(861)
  58. itlac(iel)=0
  59. goto 10
  60. endif
  61. * traitement de la configuration du champ
  62. IF(MCLCNF.GT.0) THEN
  63. IVA = MCLCNF
  64. IF (IVA.GT.0) THEN
  65. CALL AJOUN(ICO33,IVA,ILISSE,iun)
  66. IF (IIICHA.EQ.1) MCLCNF = -IVA
  67. ENDIF
  68. ENDIF
  69.  
  70.  
  71.  
  72.  
  73.  
  74. DO 20 I = 1, ICHAML(/1)
  75. MCHAML = ICHAML(I)
  76. SEGACT,MCHAML*MOD
  77.  
  78. IVA = IMACHE(I)
  79. IF (IVA.GT.0) THEN
  80. CALL AJOUN(ICO1,IVA,ILISSE,iun)
  81. IF (IIICHA.EQ.1) IMACHE(I) = -IVA
  82. ENDIF
  83.  
  84. IVA = INFCHE(I,4)
  85. IF (IVA.GT.0) THEN
  86. CALL AJOUN(ICO40,IVA,ILISSE,iun)
  87. IF (IIICHA.EQ.1) INFCHE(I,4) = -IVA
  88. ENDIF
  89.  
  90. DO 30 J=1,TYPCHE(/2)
  91. MOTYP = TYPCHE(J)
  92. IF (MOTYP(1:6).NE.'REAL*8') THEN
  93. MOTIP(1:8)=MOTYP(9:16)
  94. CALL TYPFIL(MOTIP,ITYP)
  95. IF (ITYP.GT.0) THEN
  96. NUMLIS=1
  97. ilissd = ilissg
  98. IF(ITYP.EQ.24) NUMLIS=6
  99. C IF(ITYP.EQ.25) NUMLIS=4
  100. IF(ITYP.EQ.26) NUMLIS=2
  101. IF(ITYP.EQ.27) NUMLIS=5
  102. IF(ITYP.EQ.32) then
  103. NUMLIS=3
  104. ILISSD=ilissp
  105. ENDIF
  106. IF (ITYP.EQ.36) NUMLIS=7
  107. ICOTY = KCOLA(ITYP)
  108. MELVAL = IELVAL(J)
  109. SEGACT,MELVAL*MOD
  110. NAL1 = IELCHE(/1)
  111. NAL2 = IELCHE(/2)
  112. c-dbg if (nal1.eq.0.or.nal2.eq.0) then
  113. c-dbg write(6,*) 'EXCHAM : IELCHE de taille 0 !!!'
  114. c-dbg write(6,*) ' MCHELM =',mchelm,' MCHAML =',mchaml,' TYPCHE =',
  115. c-dbg & motyp,' MELVAL =',MELVAL,VELCHE(/1),VELCHE(/2)
  116. c-dbg endif
  117. DO I2 = 1, NAL2
  118. DO I1 = 1, NAL1
  119. IVA = IELCHE(I1,I2)
  120. ** if(iva.eq.2125243) write(6,*) 'excham iva ityp',
  121. ** > iva,ityp
  122.  
  123.  
  124. IF (IVA.GT.0) THEN
  125. CALL AJOUN(ICOTY,IVA,ILISSD,NUMLIS)
  126. IF (IIICHA.EQ.1) IELCHE(I1,I2) = -IVA
  127. ENDIF
  128. END DO
  129. END DO
  130.  
  131. SEGDES,MELVAL
  132. ENDIF
  133. ELSE
  134. * segment de reel. Il a sa propre pile, IELVAL
  135. IVA = IELVAL(J)
  136. ** write(6,*) ' ajout de ',iva,' dans ',ico48
  137. IF (IVA.GT.0) THEN
  138. CALL AJOUN(ICO48,IVA,ILISSE,iun)
  139. IF (IIICHA.EQ.1) IELVAL(J) = -IVA
  140. ENDIF
  141. ENDIF
  142. 30 CONTINUE
  143. * END DO
  144.  
  145. SEGDES,MCHAML
  146. 20 CONTINUE
  147. * END DO
  148.  
  149. SEGDES,MCHELM
  150. 10 CONTINUE
  151. * END DO
  152.  
  153. * SEGDES,ILISSE
  154.  
  155. RETURN
  156. END
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  

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