Télécharger dyvois.eso

Retour à la liste

Numérotation des lignes :

dyvois
  1. C DYVOIS SOURCE BP208322 20/09/18 21:16:28 10718
  2. SUBROUTINE DYVOIS(IPALB,IPLIB,XPALB,XPTB,IND,I,NLIAB,NPLB,
  3. & ILOCAL,IROLE)
  4. IMPLICIT INTEGER(I-N)
  5. IMPLICIT REAL*8(A-H,O-Z)
  6. *-----------------------------------------------------------------------*
  7. * *
  8. * Opérateur DYNE : algorithme de Fu - de Vogelaere *
  9. * ________________________________________________ *
  10. * *
  11. * Pour la liaison Ligne_Ligne ,ligne_cercle *
  12. * Donne le noeud du maillage maitre ,le plus proche de chaque , *
  13. * point esclave *
  14. * *
  15. * Paramètres *
  16. * *
  17. * e IPALB Renseigne sur la liaison. *
  18. * e IPLIB Tableau contenant les numéros "DYNE" de la liaison. *
  19. * e XPALB Tableau contenant les paramètres de la liaison. * *
  20. * e XPTB Tableau des d{placements des points *
  21. * e NLIAB Nombre de liaisons sur la base B. *
  22. * e NPLB Nombre total de points intervenant dans les liaisons. *
  23. * e IND Indice du pas. *
  24. * e I numéro de la liaison. *
  25. * e ILOCAL Indicateur d'une recherche locale (0) ou globale (1) sur *
  26. * les noeuds du maillage. *
  27. * e IROLE Indique quel est le maillage maitre et le maillage *
  28. * esclave *
  29. * *
  30. * *
  31. * Auteur, date de création: *
  32. * *
  33. * Samuel DURAND : le 08 Aout 1996 : Création *
  34. * Ibrahim Pinto, 05/97 , liaisons ligne_cercle *
  35. *-----------------------------------------------------------------------*
  36. *************************************************************************
  37. * *
  38. INTEGER IPALB(NLIAB,*),IPLIB(NLIAB,*)
  39. REAL*8 XPTB(NPLB,2,*),XPALB(NLIAB,*)
  40. REAL*8 XPCOM(3),XPCOB(3)
  41.  
  42. *
  43. ITYP = IPALB(I,1)
  44. IDIM = IPALB(I,3)
  45. IF (ITYP.EQ.35 .OR. ITYP.EQ.37 .OR. ITYP.EQ.39) THEN
  46. ID1 = 6
  47. ELSE
  48. ID1 = 7
  49. ENDIF
  50. IF (IROLE.EQ.0) THEN
  51. KMAI = 0
  52. IMAI = ID1 +4*IDIM
  53. IBUT = IMAI + (IPALB(I,21))*IDIM
  54. NNOEMA = IPALB(I,21)
  55. NNOEES = IPALB(I,22)
  56. IFERMA = IPALB(I,24)
  57. KBUT = IPALB(I,21)
  58. JVOI = 26
  59. ELSE
  60. KMAI = IPALB(I,21)
  61. IBUT = ID1 + 4*IDIM
  62. IMAI = IBUT + (IPALB(I,21))*IDIM
  63. NNOEMA = IPALB(I,22)
  64. NNOEES = IPALB(I,21)
  65. IFERMA = IPALB(I,25)
  66. KBUT = 0
  67. JVOI = 26+IPALB(I,22)
  68. ENDIF
  69. *
  70. IF (ILOCAL.EQ.0) THEN
  71. *
  72. DO 100 IESC=1,NNOEES
  73. *
  74. IDESC = IBUT+(IESC-1)*IDIM
  75. IFMOIN = 1
  76. IFPLUS = 1
  77. * Recherche locale
  78. IM = IPALB(I,JVOI+IESC)
  79. XPOS = 0.D0
  80. DO 400 ID=1,IDIM
  81. IDM = IMAI + (IM-1)*IDIM + ID
  82. XPCOM(ID) = XPALB(I,IDM) +XPTB(IPLIB(I,KMAI+IM),1,ID)
  83. XPCOB(ID) = XPALB(I,IDESC+ID)+XPTB(IPLIB(I,KBUT+IESC),1,ID)
  84. XPOS = XPOS +(XPCOM(ID)-XPCOB(ID))*(XPCOM(ID)-XPCOB(ID))
  85. 400 CONTINUE
  86. XPOS = SQRT(XPOS)
  87. XREF = XPOS
  88. IREF = IM
  89. IPLUS = IM+1
  90. IMOIN = IM-1
  91. 410 CONTINUE
  92. IF (IMOIN.EQ.0) THEN
  93. IF (IFERMA.EQ.0) THEN
  94. IFMOIN = 0
  95. ELSE
  96. IMOIN = NNOEMA
  97. ENDIF
  98. ENDIF
  99. IF (IPLUS.EQ.(NNOEMA+1)) THEN
  100. IF (IFERMA.EQ.0) THEN
  101. IFPLUS = 0
  102. ELSE
  103. IPLUS = 1
  104. ENDIF
  105. ENDIF
  106. IF (IFMOIN.NE.0) THEN
  107. XPOS = 0.D0
  108. DO 412 ID=1,IDIM
  109. IDL = IMAI + (IMOIN-1)*IDIM + ID
  110. XPCOM(ID) = XPALB(I,IDL)
  111. &+XPTB(IPLIB(I,KMAI+IMOIN),1,ID)
  112. XPCOB(ID) = XPALB(I,IDESC+ID)
  113. &+XPTB(IPLIB(I,KBUT+IESC),1,ID)
  114. XPOS = XPOS +(XPCOM(ID)-XPCOB(ID))*
  115. &(XPCOM(ID)-XPCOB(ID))
  116. 412 CONTINUE
  117. XPOS = SQRT(XPOS)
  118. IF (XPOS.LT.XREF) THEN
  119. XREF = XPOS
  120. IREF = IMOIN
  121. IMOIN = IMOIN-1
  122. ELSE
  123. IFMOIN = 0
  124. ENDIF
  125. ENDIF
  126. IF (IFPLUS.NE.0) THEN
  127. XPOS = 0.D0
  128. DO 414 ID=1,IDIM
  129. IDN = IMAI + (IPLUS-1)*IDIM + ID
  130. XPCOM(ID) = XPALB(I,IDN)
  131. &+XPTB(IPLIB(I,KMAI+IPLUS),1,ID)
  132. XPCOB(ID) = XPALB(I,IDESC+ID)
  133. &+XPTB(IPLIB(I,KBUT+IESC),1,ID)
  134. XPOS = XPOS +(XPCOM(ID)-XPCOB(ID))*
  135. &(XPCOM(ID)-XPCOB(ID))
  136. 414 CONTINUE
  137. XPOS = SQRT(XPOS)
  138. IF (XPOS.LT.XREF) THEN
  139. XREF = XPOS
  140. IREF = IPLUS
  141. IPLUS = IPLUS+1
  142. ELSE
  143. IFPLUS = 0
  144. ENDIF
  145. ENDIF
  146. IF ((IFMOIN.EQ.0).AND.(IFPLUS.EQ.0)) GOTO 420
  147. GOTO 410
  148. 420 CONTINUE
  149. IPALB(I,JVOI+IESC) = IREF
  150. *
  151. 100 CONTINUE
  152. ELSE
  153. DO 200 IESC=1,NNOEES
  154. * Recherche globale
  155. XPOS = 0.D0
  156. * Premier noeud du maillage
  157. IDESC = IBUT+(IESC-1)*IDIM
  158. DO 422 ID=1,IDIM
  159. IDM = IMAI + ID
  160. XPCOM(ID) = XPALB(I,IDM) +XPTB(IPLIB(I,KMAI+1),1,ID)
  161. XPCOB(ID) = XPALB(I,IDESC+ID)+XPTB(IPLIB(I,KBUT+IESC),1,ID)
  162. XPOS = XPOS +(XPCOM(ID)-XPCOB(ID))*(XPCOM(ID)-XPCOB(ID))
  163. 422 CONTINUE
  164. XREF = XPOS
  165. IREF = 1
  166. DO 424 IM=2,NNOEMA
  167. XPOS = 0.D0
  168. DO 426 ID=1,IDIM
  169. IDM = IMAI + (IM-1)*IDIM + ID
  170. XPCOM(ID) = XPALB(I,IDM) +XPTB(IPLIB(I,KMAI+IM),1,ID)
  171. XPCOB(ID) = XPALB(I,IDESC+ID)
  172. &+XPTB(IPLIB(I,KBUT+IESC),1,ID)
  173. XPOS = XPOS +(XPCOM(ID)-XPCOB(ID))*
  174. &(XPCOM(ID)-XPCOB(ID))
  175. 426 CONTINUE
  176. XPOS = SQRT(XPOS)
  177. IF (XPOS.LT.XREF) THEN
  178. XREF = XPOS
  179. IREF = IM
  180. ENDIF
  181. 424 CONTINUE
  182. IPALB(I,JVOI+IESC) = IREF
  183. 200 CONTINUE
  184. ENDIF
  185. *
  186.  
  187. END
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  

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