Télécharger j3fac1.eso

Retour à la liste

Numérotation des lignes :

j3fac1
  1. C J3FAC1 SOURCE CHAT 05/01/13 00:46:38 5004
  2. SUBROUTINE J3FAC1(VWORK,TOL,IRET)
  3. C----------------------------------------------------
  4. C TEST POUR LES FACES
  5. C PP 6/97
  6. C Pierre Pegon/JRC Ispra
  7. C----------------------------------------------------
  8. IMPLICIT INTEGER(I-N)
  9. IMPLICIT REAL*8(A-H,O-Z)
  10. -INC PPARAM
  11. -INC CCOPTIO
  12. SEGMENT VWORK
  13. INTEGER FWWORK(NFACE)
  14. ENDSEGMENT
  15. POINTEUR VWORK1.VWORK,VWORK2.VWORK,VWORK3.VWORK,VWORK4.VWORK
  16. C
  17. SEGMENT WWORK
  18. REAL*8 PORIG(3),VNORM(3),VI(3),VJ(3)
  19. INTEGER FWORK
  20. INTEGER TWORK(NTROU)
  21. ENDSEGMENT
  22. POINTEUR WWORK1.WWORK,WWORK2.WWORK
  23. C
  24. SEGMENT FUSE
  25. INTEGER BLFA(2,NFAMA)
  26. ENDSEGMENT
  27. C
  28. NFAMA=50
  29. SEGINI,FUSE
  30. C
  31. C ON RENTRE AVEC DES ENSEMBLE DE VWORK REPRESENTANT CHACUN
  32. C UN BLOCK COMPOSE DE FACE
  33. C
  34. NBLOCK=FWWORK(/1)
  35. C
  36. C ON BOUCLE SUR CHAQUE BLOCK ET SUR CHAQUE FACE ...
  37. C
  38. DO IE1=1,NBLOCK
  39. VWORK1=FWWORK(IE1)
  40. NFACE1=VWORK1.FWWORK(/1)
  41. C
  42. C INITIALISATION DES VALEURS DE DEBUT DE BOUCLE POUR LES
  43. C FACES DE TRAVAIL (BLFA(1,.)=DEBUT BLOCK, BLFA(2,.)=DEBUT FACE)
  44. C
  45. IF(NFACE1.GT.NFAMA)THEN
  46. NFAMA=NFAMA+50
  47. SEGADJ,FUSE
  48. ENDIF
  49. DO KE1=1,NFACE1
  50. BLFA(1,KE1)=1
  51. BLFA(2,KE1)=1
  52. ENDDO
  53. C
  54. C "DO 1 JE1=1,NFACE1"
  55. C
  56. JE1=0
  57. 1 JE1=JE1+1
  58. IF(JE1.GT.NFACE1)GOTO 2
  59. C
  60. WWORK1=VWORK1.FWWORK(JE1)
  61. C
  62. C ... QUE L'ON COMPARE AU AUTRES BLOCKS ET FACES
  63. C
  64. DO 11 IE2=BLFA(1,JE1),NBLOCK
  65. IF(IE1.EQ.IE2)GOTO 11
  66. VWORK2=FWWORK(IE2)
  67. NFACE2=VWORK2.FWWORK(/1)
  68. DO 10 JE2=BLFA(2,JE1),NFACE2
  69. WWORK2=VWORK2.FWWORK(JE2)
  70. C
  71. C ON APPEL FAFA
  72. C
  73. CALL J3FAFA(WWORK1,WWORK2,TOL,IRET,ICAS,VWORK3,VWORK4)
  74. IF(IRET.NE.0)THEN
  75. RETURN
  76. ENDIF
  77. C
  78. C ON OPERE DIFFERENTS TRAITEMENTS SELON LES CAS
  79. C
  80. IF(ICAS.EQ.1)GOTO 10
  81. C
  82. IF(ICAS.EQ.2)GOTO 1
  83. C
  84. IF(ICAS.EQ.3)THEN
  85. C
  86. C DANS LE CAS 3 ON AJOUTE 1(le trou)+N(les coalescences) FACES
  87. C LA FACE DE TRAVAIL SE RETOUVE EN JE1+1 ET DOIT CONTINUER
  88. C L'INSPECTION DES FACES A PARTIR DE LA AINSI QUE LES NOUVELLES
  89. C FACES
  90. C
  91. C CONCATENATION DES FACES
  92. NFACE10=NFACE1
  93. CALL J3VPLU(VWORK3,VWORK1)
  94. VWORK1=VWORK3
  95. CALL J3VPLU(VWORK1,VWORK4)
  96. NFACE1=VWORK1.FWWORK(/1)
  97. FWWORK(IE1)=VWORK1
  98. C
  99. IF(NFACE1.GT.NFAMA)THEN
  100. NFAMA=NFAMA+50
  101. SEGADJ,FUSE
  102. ENDIF
  103. C LES N FACES DE COALESCENCE AJOUTEE A LA FIN DOIVENT ETRE TRAITEES
  104. C A PARTIR DE LA FACE DE TEST COURRANTE
  105. IF(NFACE10+1.LT.NFACE1)THEN
  106. DO KE1=NFACE10+2,NFACE1
  107. BLFA(1,KE1)=IE2
  108. BLFA(2,KE1)=JE2+1
  109. ENDDO
  110. ENDIF
  111. C ON SHIFTE LES INDICES A PARTIR DE LA FACE COURANTE (JE1)
  112. C
  113. DO KE1=NFACE10,JE1,-1
  114. BLFA(1,KE1+1)=BLFA(1,KE1)
  115. BLFA(2,KE1+1)=BLFA(2,KE1)
  116. ENDDO
  117. C ON MODIFIE LES INDICES DE LA FUTURE FACE COURRANTE (JE1+1)
  118. C
  119. BLFA(1,JE1+1)=IE2
  120. BLFA(2,JE1+1)=JE2+1
  121. GOTO 1
  122. ENDIF
  123. C
  124. IF(ICAS.EQ.4)THEN
  125. C
  126. C DANS LE CAS 4 ON SUBSTITUE A LA FACE COURRANTE NFACE3 FACES
  127. C (intersection interne) ET ON AJOUTE NFACE4 FACES (intersection
  128. C externe et coalescence de trou). LES NFACE3 DOIVENT ETRE SAUTEES
  129. C LES NFACE4 NOUVELLES DOIVENT ETRE TRAITEES A PARTIR DES INDICES
  130. C COURRANTS.
  131. C
  132. C AJOUT DES NFACE3 FACES: SHIFT D'INDICES
  133. NFACE3=VWORK3.FWWORK(/1)
  134. NFACE=NFACE1+NFACE3-1
  135. SEGADJ,VWORK1
  136. IF(NFACE.GE.JE1+NFACE3)THEN
  137. DO KE1=NFACE,JE1+NFACE3,-1
  138. VWORK1.FWWORK(KE1)=VWORK1.FWWORK(KE1-NFACE3+1)
  139. ENDDO
  140. ENDIF
  141. C AJOUT DES NFACE3 FACES: AJOUT EFFECTIFS
  142. DO KE1=1,NFACE3
  143. VWORK1.FWWORK(JE1-1+KE1)=VWORK3.FWWORK(KE1)
  144. ENDDO
  145. SEGSUP,VWORK3
  146. C AJOUT DES NFACE3 FACES A LA FIN
  147. NFACE4=VWORK4.FWWORK(/1)
  148. CALL J3VPLU(VWORK1,VWORK4)
  149. NFACE1=VWORK1.FWWORK(/1)
  150. FWWORK(IE1)=VWORK1
  151. C GESTION DES LIMITES
  152. IF(NFACE1.GT.NFAMA)THEN
  153. NFAMA=NFAMA+50
  154. SEGADJ,FUSE
  155. ENDIF
  156. IF(NFACE.GE.JE1+NFACE3)THEN
  157. DO KE1=NFACE,JE1+NFACE3,-1
  158. BLFA(1,KE1)=BLFA(1,KE1-NFACE3+1)
  159. BLFA(2,KE1)=BLFA(2,KE1-NFACE3+1)
  160. ENDDO
  161. ENDIF
  162. DO KE1=NFACE1-NFACE4+1,NFACE1
  163. BLFA(1,KE1)=IE2
  164. BLFA(2,KE1)=JE2+1
  165. ENDDO
  166. C
  167. JE1=JE1+NFACE3-1
  168. GOTO 1
  169. ENDIF
  170. C
  171. 10 CONTINUE
  172. BLFA(2,JE1)=1
  173. 11 CONTINUE
  174. C
  175. GOTO 1
  176. 2 CONTINUE
  177. C
  178. ENDDO
  179. C
  180. SEGSUP,FUSE
  181. C
  182. RETURN
  183. END
  184.  
  185.  
  186.  

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