Télécharger chanli.eso

Retour à la liste

Numérotation des lignes :

chanli
  1. C CHANLI SOURCE GOUNAND 14/01/31 21:15:01 7924
  2. SUBROUTINE CHANLI
  3. *
  4. * ce sub fait passer tous les elemnts quadratique en lineaire,
  5. * il conserve le nombre d'elements
  6. * modif SG 01/2014 : passage des QUAFs aux linéaires
  7.  
  8. IMPLICIT INTEGER(I-N)
  9.  
  10. -INC PPARAM
  11. -INC CCOPTIO
  12. -INC SMELEME
  13. logical ltelq
  14. SEGMENT INOO
  15. INTEGER INOU(NA)
  16. ENDSEGMENT
  17.  
  18. CALL LIROBJ('MAILLAGE',IPT1,1,IRETOU)
  19. IF(IERR.NE.0) RETURN
  20. SEGACT IPT1
  21. MELEME=IPT1
  22. NBNN= NUM(/1)
  23. NBELEM=NUM(/2)
  24. NBSOUS=LISOUS(/1)
  25. NBREF=0
  26. NA= MAX(NBSOUS,1)
  27. SEGINI INOO
  28. DO 100 I=1,MAX(IPT1.LISOUS(/1),1)
  29. IF( IPT1.LISOUS(/1).NE.0) THEN
  30. MELEME=IPT1.LISOUS(I)
  31. SEGACT MELEME
  32. ENDIF
  33. NBELEM=NUM(/2)
  34. NBSOUS=0
  35. NBREF=0
  36. IF( ITYPEL.EQ.3)THEN
  37. * cas des seg3 ---> seg2
  38. NBNN=2
  39. SEGINI IPT2
  40. IPT2.ITYPEL=2
  41. INOU(I) = IPT2
  42. DO 1 K=1,NBELEM
  43. IPT2.NUM(1,K)=NUM(1,K)
  44. IPT2.NUM(2,K)=NUM(3,K)
  45. IPT2.ICOLOR(K)=ICOLOR(K)
  46. 1 CONTINUE
  47. SEGDES IPT2
  48. ELSEIF( ITYPEL.EQ.6. OR. ITYPEL.EQ.7) THEN
  49. * cas des tri6,tri7 ---> tri3
  50. NBNN=3
  51. SEGINI IPT2
  52. IPT2.ITYPEL=4
  53. INOU(I) = IPT2
  54. DO 2 K=1,NBELEM
  55. IPT2.NUM(1,K)=NUM(1,K)
  56. IPT2.NUM(2,K)=NUM(3,K)
  57. IPT2.NUM(3,K)=NUM(5,K)
  58. IPT2.ICOLOR(K)=ICOLOR(K)
  59. 2 CONTINUE
  60. SEGDES IPT2
  61. ELSEIF( ITYPEL.EQ.10 . OR. ITYPEL.EQ.11) THEN
  62. * cas des qua8,qua9-----> qua4
  63. NBNN=4
  64. SEGINI IPT2
  65. IPT2.ITYPEL=8
  66. INOU(I) = IPT2
  67. DO 3 K=1,NBELEM
  68. IPT2.NUM(1,K)=NUM(1,K)
  69. IPT2.NUM(2,K)=NUM(3,K)
  70. IPT2.NUM(3,K)=NUM(5,K)
  71. IPT2.NUM(4,K)=NUM(7,K)
  72. IPT2.ICOLOR(K)=ICOLOR(K)
  73. 3 CONTINUE
  74. SEGDES IPT2
  75. ELSEIF( ITYPEL.EQ.13) THEN
  76. *4 cas des rac3 ---> rac2
  77. NBNN=4
  78. SEGINI IPT2
  79. IPT2.ITYPEL=12
  80. INOU(I) = IPT2
  81. DO 4 K=1,NBELEM
  82. IPT2.NUM(1,K)=NUM(1,K)
  83. IPT2.NUM(2,K)=NUM(3,K)
  84. IPT2.NUM(3,K)=NUM(4,K)
  85. IPT2.NUM(4,K)=NUM(6,K)
  86. IPT2.ICOLOR(K)=ICOLOR(K)
  87. 4 CONTINUE
  88. SEGDES IPT2
  89. ELSEIF( ITYPEL.EQ.15.OR.ITYPEL.EQ.33) THEN
  90. *5 cas des cu20, cu27 ---> cub8
  91. NBNN=8
  92. SEGINI IPT2
  93. IPT2.ITYPEL=14
  94. INOU(I) = IPT2
  95. DO 5 K=1,NBELEM
  96. IPT2.NUM(1,K)=NUM(1,K)
  97. IPT2.NUM(2,K)=NUM(3,K)
  98. IPT2.NUM(3,K)=NUM(5,K)
  99. IPT2.NUM(4,K)=NUM(7,K)
  100. IPT2.NUM(5,K)=NUM(13,K)
  101. IPT2.NUM(6,K)=NUM(15,K)
  102. IPT2.NUM(7,K)=NUM(17,K)
  103. IPT2.NUM(8,K)=NUM(19,K)
  104. IPT2.ICOLOR(K)=ICOLOR(K)
  105. 5 CONTINUE
  106. SEGDES IPT2
  107. ELSEIF( ITYPEL.EQ.17.OR.ITYPEL.EQ.34) THEN
  108. *6 cas des pr15, pr21 ---> pri6
  109. NBNN=6
  110. SEGINI IPT2
  111. IPT2.ITYPEL=16
  112. INOU(I) = IPT2
  113. DO 6 K=1,NBELEM
  114. IPT2.NUM(1,K)=NUM(1,K)
  115. IPT2.NUM(2,K)=NUM(3,K)
  116. IPT2.NUM(3,K)=NUM(5,K)
  117. IPT2.NUM(4,K)=NUM(10,K)
  118. IPT2.NUM(5,K)=NUM(12,K)
  119. IPT2.NUM(6,K)=NUM(14,K)
  120. IPT2.ICOLOR(K)=ICOLOR(K)
  121. 6 CONTINUE
  122. SEGDES IPT2
  123. ELSEIF( ITYPEL.EQ.20. OR. itypel.eq.21) THEN
  124. *7 cas des lia6,lia8 ---> lia3,lia4
  125. NBNN=6
  126. IF(ITYPEL.EQ.21) NBNN=8
  127. SEGINI IPT2
  128. IPT2.ITYPEL=18
  129. IF(ITYPEL.EQ.21)IPT2.ITYPEL=19
  130. INOU(I) = IPT2
  131. DO 7 K=1,NBELEM
  132. IPT2.NUM(1,K)=NUM(1,K)
  133. IPT2.NUM(2,K)=NUM(3,K)
  134. IPT2.NUM(3,K)=NUM(5,K)
  135. IPT2.NUM(4,K)=NUM(7,K)
  136. IPT2.NUM(5,K)=NUM(9,K)
  137. IPT2.NUM(6,K)=NUM(11,K)
  138. IPT2.ICOLOR(K)=ICOLOR(K)
  139. IF( ITYPEL.EQ.21) THEN
  140. IPT2.NUM(7,K)=NUM(13,K)
  141. IPT2.NUM(8,K)=NUM(15,K)
  142. ENDIF
  143. 7 CONTINUE
  144. SEGDES IPT2
  145. ELSEIF( ITYPEL.EQ.24.OR.ITYPEL.EQ.35) THEN
  146. *8 cas des te10, te15 ---> te4
  147. NBNN=4
  148. SEGINI IPT2
  149. IPT2.ITYPEL=23
  150. INOU(I) = IPT2
  151. DO 8 K=1,NBELEM
  152. IPT2.NUM(1,K)=NUM(1,K)
  153. IPT2.NUM(2,K)=NUM(3,K)
  154. IPT2.NUM(3,K)=NUM(5,K)
  155. IPT2.NUM(4,K)=NUM(10,K)
  156. IPT2.ICOLOR(K)=ICOLOR(K)
  157. 8 CONTINUE
  158. SEGDES IPT2
  159. ELSEIF( ITYPEL.EQ.26.OR.ITYPEL.EQ.36) THEN
  160. *9 cas des py13, py19 ---> pyr5
  161. NBNN=5
  162. SEGINI IPT2
  163. IPT2.ITYPEL=25
  164. INOU(I) = IPT2
  165. DO 9 K=1,NBELEM
  166. IPT2.NUM(1,K)=NUM(1,K)
  167. IPT2.NUM(2,K)=NUM(3,K)
  168. IPT2.NUM(3,K)=NUM(5,K)
  169. IPT2.NUM(4,K)=NUM(7,K)
  170. IPT2.NUM(5,K)=NUM(13,K)
  171. IPT2.ICOLOR(K)=ICOLOR(K)
  172. 9 CONTINUE
  173. SEGDES IPT2
  174. ELSE
  175. *tous les autres elements : on engrange
  176. INOU(I) = MELEME
  177. ENDIF
  178. SEGDES MELEME
  179. 100 CONTINUE
  180. SEGDES IPT1
  181. * on fusionne les sous parties
  182. II=INOU(/1)
  183. IRETOU=INOU(1)
  184. IF(II.EQ.1) GO TO 15
  185. DO 16 J=2,II
  186. INN=INOU(J)
  187. ltelq=.false.
  188. CALL FUSE( IRETOU,INN,IPT5,ltelq)
  189. IRETOU=IPT5
  190. 16 CONTINUE
  191. 15 CONTINUE
  192. CALL ECROBJ('MAILLAGE',IRETOU)
  193. RETURN
  194. END
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  

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