Télécharger q4org2.eso

Retour à la liste

Numérotation des lignes :

q4org2
  1. C Q4ORG2 SOURCE CB215821 26/10/26 21:16:02 12682
  2. C
  3. C
  4. SUBROUTINE Q4ORG2(ITRNO1,NBNMX1,ITRTR1,NBCMX1,NBE1,
  5. > ITRNO2,NBNMX2,ITRTR2,NBCMX2,NBE2,N1,N2,
  6. > COORD,NBCOOR,IDIMC,
  7. > ITVL,NITMAX,
  8. > IGR1,NGRMX1,IGR2,NGRMX2,ICOIN,NBNL,ITRACE,iarr)
  9. C **********************************************************************
  10. C OBJET Q4ORG2 : TRANSFORME 2 MAILLAGES Q4 EN 2 GRILLES COMPATIBLES
  11. C
  12. C EN ENTREE :
  13. C
  14. C ITRNOE1 : INDICE DES NOEUDS DES ELEMENTS DU PREMIER MAILLAGE
  15. C NBNMX1 : NOMBRE MAX. DE NOEUDS PAR ELEMENTS (4 OU +)
  16. C NBE1 : NOMBRE D'ELEMENTS DU PREMIER MAILLAGE
  17. C
  18. C ITRNOE2,NBNMX2,NBE2 : DEUXIEME MAILLAGE
  19. C
  20. C N1,N2 : N1 EST LE NUMERO DU NOEUD DU PREMIER MAILLAGE QUI DOIT
  21. C ETRE CONNECTE AU NOEUD N2 DANS LE DEUXIEME MAILLAGE
  22. C
  23. C COORD : COORDONNEES DES NOEUDS
  24. C IDIMC : DIMENSION DE L'ESPACE
  25. C NBCOOR : NOMBRE DE NOEUDS
  26. C
  27. C ITVL : TABLEAU D'ENTIERS POUR LES CALCULS
  28. C NTIMAX : TAILLE DU TABLEAU ITVL
  29. C ON A BESOIN DU TABLEAU DE TRAVAIL SEULEMENT SI ON CHANGE
  30. C SIMULTANEMENT L'ORIGINE ET L'ORIENTATION DU MAILLAGE.
  31. C LA PLACE NECESSAIRE EST ALORS DE : NBCOL*NBLIG = NBN
  32. C QUI EST TOUJOURS INFERIEUR A : 3+2*MAX(NBE1,NBE2)
  33. C
  34. C EN SORTIE :
  35. C
  36. C IGR1 : GRILLE ORIGINE
  37. C IGR2 : GRILLE DESTINATION
  38. C ICOIN : LES INDICES DES COINS DES 2 GRILLES
  39. C NBNL : NOMBRE DE COLONNES ET DE LIGNES DES 2 GRILLES
  40. C iarr : CODE D'ERREUR -1 SI DONNEES INCORRECTES
  41. C -2 SI TABLEAUX INSUFFISANTS
  42. C
  43. C REMARQUES : LES GRILLES IGR1 ET IGR2 SONT ORIENTEES DE LA MEME FACON
  44. C AVEC UNE ORIGINE COMPATIBLE,
  45. C AVEC NBCOL2 >= NBCOL1 ET NBLIG2 <= NBLIG1
  46. C
  47. C **********************************************************************
  48. IMPLICIT INTEGER(I-N)
  49. INTEGER ITRNO1(*),NBNMX1,ITRTR1(*),NBCMX1,NBE1
  50. INTEGER ITRNO2(*),NBNMX2,ITRTR2(*),NBCMX2,NBE2,N1,N2
  51. REAL*8 COORD(*)
  52. INTEGER IDIMC,NBCOOR,ITVL(*),NITMAX
  53. INTEGER IGR1(*),NGRMX1,IGR2(*),NGRMX2
  54. INTEGER ICOIN(*),NBNL(*),ITRACE,iarr
  55. C
  56. REAL*8 VK(3),XNVK,ZERO
  57. INTEGER NBLIG1,NBCOL1,NBLIG2,NBCOL2,NBCOL,NBLIG
  58. INTEGER I,IOP,ITAMPO
  59. EXTERNAL XNORVE
  60. REAL*8 XNORVE
  61. C
  62. IF(ITRACE.GT.0)
  63. > CALL ESECHA(1,'* PRETRAITEMENT : ',
  64. > ' CALCUL DES GRILLES SURFACIQUES ')
  65. C
  66. DO 10 I=1,8
  67. ICOIN(I) = 0
  68. 10 CONTINUE
  69. DO 20 I=1,4
  70. NBNL(I) = 0
  71. 20 CONTINUE
  72. C
  73. C =========================
  74. C --- CALCUL DE L'ORIENTATION ---
  75. C =========================
  76. C
  77. ZERO = 1.E-6
  78. C CALL DIFFVE(COORD((N2-1)*IDIMC+1),
  79. C > COORD((N1-1)*IDIMC+1),
  80. C > IDIMC,VK)
  81. DO 730 JG=1,IDIMC
  82. VK(JG)=COORD((N2-1)*IDIMC+JG) - COORD((N1-1)*IDIMC+JG)
  83. 730 CONTINUE
  84. XNVK = XNORVE(VK,IDIMC)
  85. IF( XNVK.LT.ZERO )THEN
  86. iarr = -1
  87. CALL DSERRE(1,iarr,'Q4ORG2',
  88. > ' LES NOEUDS (N1,N2) SONT CONFONDUS ')
  89. GOTO 9999
  90. ENDIF
  91. C CALL MUSCVE( VK,XNVK,IDIMC, VK )
  92. DO 710 JG=1,IDIMC
  93. VK(JG)=VK(JG)*XNVK
  94. 710 CONTINUE
  95. C
  96. C ===========================
  97. C --- CALCUL DE LA 1IERE GRILLE ---
  98. C ===========================
  99. C
  100. CALL G2ORQ4(ITRNO1,NBNMX1,ITRTR1,NBCMX1,NBE1,
  101. > COORD,IDIMC,N1,VK,
  102. > ITVL,NITMAX,
  103. > IGR1,NBCOL1,NBLIG1,NGRMX1,
  104. > ICOIN,iarr )
  105. C
  106. NBNL(1) = NBCOL1
  107. NBNL(2) = NBLIG1
  108. C
  109. IF(ITRACE.GT.0)THEN
  110. CALL ESECHA(1,'-> DU MAILLAGE 1 A LA GRILLE 1',' ')
  111. CALL ESEINT(1,'NUMERO DES COINS : ',ICOIN(1),4)
  112. CALL ESEINT(1,'COLONNES,LIGNES : ',NBNL(1),2)
  113. ENDIF
  114. IF( iarr.NE. 0 )THEN
  115. CALL DSERRE(1,iarr,'Q4ORG2',' APPEL G2ORQ4')
  116. CALL DSERRE(1,iarr,'Q4ORG2',
  117. > ' PASSAGE PREMIER MAILLAGE EN GRILLE ')
  118. GOTO 9999
  119. ENDIF
  120. C
  121. C ===========================
  122. C --- CALCUL DE LA 2IERE GRILLE ---
  123. C ===========================
  124. C
  125. CALL G2ORQ4(ITRNO2,NBNMX2,ITRTR2,NBCMX2,NBE2,
  126. > COORD,IDIMC,N2,VK,
  127. > ITVL ,NITMAX,
  128. > IGR2,NBCOL2,NBLIG2,NGRMX2,
  129. > ICOIN(5),iarr )
  130. C
  131. NBNL(3) = NBCOL2
  132. NBNL(4) = NBLIG2
  133. C
  134. IF(ITRACE.GT.0)THEN
  135. CALL ESECHA(1,'-> DU MAILLAGE 2 A LA GRILLE 2',' ')
  136. CALL ESEINT(1,'NUMERO DES COINS : ',ICOIN(5),4)
  137. CALL ESEINT(1,'COLONNES,LIGNES : ',NBNL(3),2)
  138. ENDIF
  139. IF( iarr.NE. 0 )THEN
  140. CALL DSERRE(1,iarr,'Q4ORG2',' APPEL G2ORQ4')
  141. CALL DSERRE(1,iarr,'Q4ORG2',
  142. > ' PASSAGE DU DEUXIEME MAILLAGE EN GRILLE ')
  143. GOTO 9999
  144. ENDIF
  145. C
  146. C ====================================================
  147. C ---- INVERSION DES LIGNES ET DES COLONNES DES 2 GRILLES ----
  148. C ====================================================
  149. C
  150. IF((NBCOL1.GT.NBCOL2 ).AND.(NBLIG1.GT.NBLIG2))THEN
  151. iarr = -1
  152. NBNL(1) = NBCOL1
  153. NBNL(2) = NBLIG1
  154. NBNL(3) = NBCOL2
  155. NBNL(4) = NBLIG2
  156. GOTO 9999
  157. ENDIF
  158. C
  159. IF((NBCOL1.GT.NBCOL2 ).OR.(NBLIG2.GT.NBLIG1))THEN
  160. C
  161. IF(ITRACE.GT.0)
  162. > CALL ESECHA(1,' REORIENTATION : ',
  163. > ' ROTATION DES GRILLES SURFACIQUES ')
  164. C
  165. IF( ( (NITMAX - NBCOL1*NBLIG1).LT.0 ).OR.
  166. > ( (NITMAX - NBCOL2*NBLIG2).LT.0 ) )THEN
  167. iarr = -2
  168. CALL DSERRE(1,iarr,'Q4ORG2',
  169. > ' POUR LA REORIENTATION DES GRILLES ')
  170. GOTO 9999
  171. ENDIF
  172. C
  173. IOP = 2
  174. CALL G2COPY(IGR1,NBCOL1,NBLIG1,IOP,
  175. > ITVL,NBCOL,NBLIG )
  176. IOP = 1
  177. CALL G2COPY(ITVL,NBCOL,NBLIG,IOP,
  178. > IGR1,NBCOL1,NBLIG1 )
  179. ITAMPO = ICOIN(1)
  180. ICOIN(1) = ICOIN(4)
  181. ICOIN(4) = ICOIN(3)
  182. ICOIN(3) = ICOIN(2)
  183. ICOIN(2) = ITAMPO
  184. NBNL(1) = NBCOL1
  185. NBNL(2) = NBLIG1
  186. C
  187. IOP = 2
  188. CALL G2COPY(IGR2,NBCOL2,NBLIG2,IOP,
  189. > ITVL,NBCOL,NBLIG )
  190. IOP = 1
  191. CALL G2COPY(ITVL,NBCOL,NBLIG,IOP,
  192. > IGR2,NBCOL2,NBLIG2 )
  193. ITAMPO = ICOIN(5)
  194. ICOIN(5) = ICOIN(8)
  195. ICOIN(8) = ICOIN(7)
  196. ICOIN(7) = ICOIN(6)
  197. ICOIN(6) = ITAMPO
  198. NBNL(3) = NBCOL2
  199. NBNL(4) = NBLIG2
  200. C
  201. IF(ITRACE.GT.0)THEN
  202. CALL ESECHA(1,'-> GRILLE 1 REOREINTEE ',' ')
  203. CALL ESEINT(1,'COLONNES,LIGNES : ',NBNL(1),2)
  204. CALL ESECHA(1,'-> GRILLE 2 REORIENTEE ',' ')
  205. CALL ESEINT(1,'COLONNES,LIGNES : ',NBNL(3),2)
  206. ENDIF
  207. ENDIF
  208. C
  209. 9999 END
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  

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