Télécharger hexos.eso

Retour à la liste

Numérotation des lignes :

hexos
  1. C HEXOS SOURCE PV 22/04/26 21:15:04 11344
  2. SUBROUTINE HEXOS(ITR1,NBE1,NBN1,ITR2,NBE2,NBN2,COORD,NBCOOR,
  3. > N1,N2,DEN1,DEN2,NBCOUC,
  4. > ITVL,NITMAX,NOSUPR,
  5. > ITR3,NBE3,NBEMAX,NBPMAX,NBNL,ICOIN,ITRACE,
  6. > IERCOD,iarr,RAISON)
  7. C **********************************************************************
  8. C OBJET HEXOS : MAILLAGE H8 RACCORDANT 2 MAILLAGE GRILLES COMPATIBLES
  9. C
  10. C EN ENTREE :
  11. C
  12. C --------- MAILLAGES A RACCORDER --------------------------
  13. C ITR1 : DEFINITION DE LA CONNECTIQUE DU MAILLAGE
  14. C ITR1((I-1)*4+J = JIEME NOEUD DU IIEME ELEMENT
  15. C LES ELEMENTS SONT DES QUADRANGLES A 4 NOEUDS
  16. C NBE1 : NOMBRE DE QUADRANGLES DANS LE MAILLAGE ITR1
  17. C NBN1 : NOMBRE DE NOEUDS DU MAILLAGE ITR1
  18. C
  19. C ITR2,NBE2,NBN2 : DEFINITION DU DEUXIEME MAILLAGE
  20. C
  21. C COORD : TABLEAU DES COORDONNEES DES POINTS
  22. C COORD((I-1)*3+J) = LA JIEME COORDONNE DU IEME NOEUD
  23. C NBCOOR : NOMBRE DE POINTS DANS LE TABLEAU COORD
  24. C
  25. C --------- PARAMETRES POUR LE RACCORD -----------------------
  26. C N1 : NUMERO DU NOEUD DE ITR1 A CONNECTER A N2 DE ITR2
  27. C N2 : " " " " " ITR2 " " " A N1 DE ITR1
  28. C DEN1 : TAILLE SOUHAITEE POUR LES ELEMENTS S'APPUYANT SUR ITR1
  29. C DEN2 : " " " " " " " " " " " SUR ITR2
  30. C NBCOUC : NOMBRE DE COUCHES SUPPLEMENTAIRES(PAR DEFAUT 1 SEULE COUCHE)
  31. C
  32. C --------- LES TABLEAUX VIDES ------------------------------
  33. C ITVL : TABLEAU D'ENTIERS POUR LES CALCULS
  34. C NITMAX : TAILLE DE ITVL, LA PLACE DEMANDEE EST DE :
  35. C T1 =(NBE2+NBE1)*4 +NBCOOR POUR LA STRUCTURE MAILLAGE (T2=3*NBCOOR)
  36. C T3 = NBN1 + NBN2 POUR LES GRILLES (T4 = MAX(NBN1,NBN2))
  37. C T5 = 2*NBLIG1*NBCOL2 POUR LA GRILLE INTERMEDIAIRE (2 COUCHES)
  38. C T5 = 0 SI UNE COUCHE
  39. C T6 = 2*NBLIG1*NBCOL2*(NBRAN-1) + NBCOOR
  40. C NITMAX >= T1+T3+ MAX(T2,T4,T5+T6)
  41. C AVEC NBRAN = (3+NBCOUC+NBCOL2+NBLIG2-NBCOL1-NBLIG1)
  42. C AVEC NBN1 = NBNL(1)*NBNL(2) ; NBN1 <= 3 + 2*NBE1
  43. C NBN2 = NBNL(3)*NBNL(4) ; NBN2 <= 3 + 2*NBE2
  44. C AVEC NBLIG1 = MAX(NBNL(2),NBNL(4))
  45. C NBCOL2 = MAX(NBNL(1),NBNL(3))
  46. C
  47. C ITR3 : TABLEAU DES HEXAEDRES (A REMPLIR)
  48. C NBEMAX : NOMBRE MAXIMUM D'ELEMENTS (LIE A LA TAILLE DE ITR3)
  49. C = 0 SI L'ON SOUHAITE SEULEMENT UNE IDENTIFICATION DES
  50. C GRILLE : NBNL, ICOIN
  51. C NBPMAX : NOMBRE MAXIMUM DE NOEUDS (LIE A LA TAILLE DE COORD)
  52. C
  53. C NOSUPR : NOSUPR = 1 SUPPRESSION DES NOEUDS ISOLES
  54. C NOSUPR = 0 PAS DE SUPPRESSION DE NOEUD
  55. C (LA SUPPRESSION DES NOEUDS POSE UN PROBLEME
  56. C QUAND IL Y A DES NOEUDS MILIEU)
  57. C
  58. C EN SORTIE :
  59. C
  60. C ITR3 : DEFINITION DE LA CONNECTIQUE DU MAILLAGE
  61. C ITR3((I-1)*8+J = JIEME NOEUD DU IIEME ELEMENT
  62. C LES ELEMENTS SONT DES HEXAEDRES A 8 NOEUDS
  63. C NBE3 : NOMBRE D'HEXAEDRES DANS LE MAILLAGE ITR3
  64. C COORD : TABLEAU DES POINTS CONTENANT LES POINTS AJOUTES
  65. C NBCOOR : NOMBRE DE POINTS APRES AJOUT
  66. C
  67. C NBNL : NOMBRE DE LIGNES ET DE COLONNES DES MAILLAGES ITR1 ET ITR2
  68. C NBNL(1) = NOMBRE DE COLONNES DE ITR1
  69. C NBNL(2) = NOMBRE DE LIGNES DE ITR1
  70. C NBNL(3) = NOMBRE DE COLONNES DE ITR2
  71. C NBNL(4) = NOMBRE DE LIGNES DE ITR2
  72. C ICOIN : LES NUMEROS DES NOEUDS DES COINS DE ITR1 ET ITR2
  73. C ICOIN(1) = PREMIER COIN DE ITR1....
  74. C ICOIN(4) = PREMIER COIN DE ITR2 ....
  75. C iarr : TYPE D'ERREUR -1 SI DONNEES INCORRECTES
  76. C -2 SI TABLEAUX INSUFFISANTS
  77. C IERCOD : CODE DETAILLE DE L'ERREUR
  78. C -100 : ERREUR NON REPERTORIEE
  79. C -101 : LES NUMEROS DES DEUX NOEUDS SONT INCORRECTS
  80. C -102 : LES DEUX NOEUDS SONT CONFONDUS
  81. C -103 : LES DENSITES SONT INCORRECTES
  82. C -104 : LE NOMBRE DE COUCHES DOIT ETRE POSITIF OU NUL
  83. C -105 : CONNECTIQUE NON VALIDE POUR LE PREMIER MAILLAGE
  84. C -106 : CONNECTIQUE NON VALIDE POUR LE DEUXIEME MAILLAGE
  85. C -107 : LES DEUX MAILLAGES PARTAGENT UN NOEUD
  86. C -108 : LE NOMBRE TOTAL DE LIGNES OU DE COLONNES EST IMPAIR
  87. C -109 : LA TAILLE SOUHAITEE EST SUPERIEURE A LA TAILLE DISPONIBLE
  88. C -110 : LE PREMIER MAILLAGE N'EST PAS UNE GRILLE
  89. C -111 : ORIENTATION DU PREMIER MAILLAGE IMPOSSIBLE
  90. C LES NOEUDS ET LE MAILLAGE SONT COPLANAIRES
  91. C -112 : LE DEUXIEME MAILLAGE N'EST PAS UNE GRILLE
  92. C -113 : ORIENTATION DU DEUXIEME MAILLAGE IMPOSSIBLE
  93. C LES NOEUDS ET LE MAILLAGE SONT COPLANAIRES
  94. C **********************************************************************
  95. IMPLICIT INTEGER(I-N)
  96. -INC CCREEL
  97. INTEGER ITR1(*),NBE1,NBN1,ITR2(*),NBE2,NBN2
  98. REAL*8 COORD(*),DEN1,DEN2
  99. INTEGER NBCOOR,N1,N2,NBCOUC,ITVL(*),NITMAX,NOSUPR
  100. INTEGER ITR3(*),NBE3
  101. INTEGER NBNL(*),ICOIN(*)
  102. INTEGER NBEMAX,NBPMAX,ITRACE,IERCOD,iarr
  103. C
  104. INTEGER NCC1,NCC2,NBNMX1,NBNMX2,NBCMX1,NBCMX2
  105. INTEGER ITRTR1,ITRTR2,INOET1,INOET2,ITRAV,ITRVMX
  106. INTEGER IDE,IDIMC
  107. C
  108. INTEGER IGR1,NGRMX1,IGR2,NGRMX2,NBCOL3,NBLIG3,NBRAN3
  109. INTEGER ICOMPR,NBENUL,NBISOL,NBN3,I,IOP
  110. INTEGER NBEGEN,NBPGEN,NBCMAX,NBNMAX,ITRTRI,NOEMAX,NOETRI(1)
  111. dimension itrtri(1)
  112. C
  113. REAL*8 DLONG,RAISON,VK(3)
  114. * SAVE RAISON
  115. C
  116. C COMMON /CGEPSI/ XYZHUG,XYZMIN,XYZEPS
  117. C REAL*8 XYZHUG,XYZMIN,XYZEPS
  118. C
  119. IERCOD = -100
  120. ICOMPR = 0
  121. NBE3 = 0
  122. IF((N1.LE.0).OR.(N2.LE.0).OR.(N1.GT.NBCOOR).OR.
  123. > (N2.GT.NBCOOR))THEN
  124. iarr = -1
  125. IERCOD = -101
  126. CALL DSERRE(1,iarr,'HEXOS','IL FAUT DONNER LES COINS')
  127. GOTO 9999
  128. ENDIF
  129. C ---------------------------
  130. C --- CALCUL DE LA PROGRESSION ---
  131. C ---------------------------
  132. C
  133. IDIMC = 3
  134. DLONG = 0.0
  135. DO 5 I=1,IDIMC
  136. DLONG=(COORD((N1-1)*IDIMC+I)-COORD((N2-1)*IDIMC+I))**2 +DLONG
  137. 5 CONTINUE
  138. IF( DLONG.GT.XPETIT )DLONG = SQRT(DLONG)
  139. IF( DLONG.LE.XPETIT )THEN
  140. iarr = -1
  141. IERCOD = -102
  142. CALL DSERRE(1,iarr,'HEXOS',' COINS CONFONDUS')
  143. GOTO 9999
  144. ENDIF
  145. IF((DEN1.LT.0.0 ).OR.(DEN2.LT.0.0))THEN
  146. iarr = -1
  147. IERCOD = -103
  148. CALL DSERRE(1,iarr,'ESHEXO',
  149. > ' LA DENSITE DOIT ETRE POSITIVE OU NULLE')
  150. GOTO 9999
  151. ENDIF
  152. C IF((DEN1.GT.(DLONG+XPETIT) ).OR.(DEN2.GT.(DLONG+XPETIT)))THEN
  153. C iarr = -1
  154. C IERCOD = -109
  155. C CALL DSERRE(1,iarr,'ESHEXO',
  156. C > ' LA TAILLE SOUHAITEE EST SUPERIEURE A LA TAILLE DISPONIBLE')
  157. C GOTO 9999
  158. C ENDIF
  159. C IF(NBCOUC.LT.0)THEN
  160. C iarr = -1
  161. C IERCOD = -104
  162. C CALL DSERRE(1,iarr,'ESHEXO',
  163. C > ' LE NOMBRE DE COUCHES DOIT ETRE POSITIF OU NUL')
  164. C GOTO 9999
  165. C ENDIF
  166. C
  167. IF(NBEMAX.EQ.0)CALL SUGEGE(DEN1,DEN2,DLONG,RAISON,NBCOUC,iarr)
  168. C
  169. IF( iarr.NE.0 )THEN
  170. iarr = -1
  171. IERCOD = -103
  172. CALL DSERRE(1,iarr,'HEXOS',' APPEL SUGEGE')
  173. GOTO 9999
  174. ENDIF
  175. C
  176. C -------------------------
  177. C --- CALCUL DE LA STRUCTURE ---
  178. C -------------------------
  179. C
  180. IDE = 2
  181. NCC1 = 1
  182. NCC2 = 1
  183. NBNMX1 = 4
  184. NBNMX2 = 4
  185. NBCMX1 = 4
  186. NBCMX2 = 4
  187. C
  188. IF(NITMAX.LT.(((NBE1+NBE2)+ NBCOOR)*4))THEN
  189. iarr = -2
  190. CALL DSERRE(1,iarr,'HEXOS',' CREATION DES MAILLAGES')
  191. GOTO 9999
  192. ENDIF
  193. C
  194. ITRTR1 = 1
  195. INOET1 = (NBCMX1 * NBE1) + ITRTR1
  196. ITRAV = NBCOOR + INOET1
  197. ITRVMX = NITMAX - ITRAV
  198. CALL SMAOCR(IDE,ITR1,NBE1,COORD,
  199. > NBCOOR,IDIMC,
  200. > ITR1,NBNMX1,ITVL(ITRTR1),
  201. > NBCMX1,ITVL(INOET1),NBCOOR,
  202. > ITVL(ITRAV),ITRVMX,NCC1,iarr)
  203. IF(iarr.NE.0)THEN
  204. IERCOD = -105
  205. CALL DSERRE(1,iarr,'HEXOS',' APPEL SMAOCR')
  206. GOTO 9999
  207. ENDIF
  208. C
  209. C -------------------------
  210. C
  211. ITRTR2 = ITRAV
  212. INOET2 = (NBE2 * NBCMX2) + ITRTR2
  213. ITRAV = NBCOOR + INOET2
  214. ITRVMX = NITMAX - ITRAV
  215. CALL SMAOCR(IDE,ITR2,NBE2,COORD,
  216. > NBCOOR,IDIMC,
  217. > ITR2,NBNMX2,ITVL(ITRTR2),
  218. > NBCMX2,ITVL(INOET2),NBCOOR,
  219. > ITVL(ITRAV),ITRVMX,NCC2,iarr)
  220. IF(iarr.NE.0)THEN
  221. IERCOD = -106
  222. CALL DSERRE(1,iarr,'HEXOS',' APPEL SMAOCR')
  223. GOTO 9999
  224. ENDIF
  225. C ----------- FUSION DE INOETRI ------
  226. C CALL ESEINT(1,' ITR1 ',ITR1,NBE1*4)
  227. C CALL ESEINT(1,' ITR2 ',ITR2,NBE2*4)
  228. C CALL ESEINT(1,'INOET1 ',ITVL(INOET1),NBCOOR)
  229. C CALL ESEINT(1,'INOET2 ',ITVL(INOET2),NBCOOR)
  230. DO 10 I=1,NBCOOR
  231. IF(ITVL(I-1+INOET1).EQ.0)THEN
  232. ITVL(I-1+INOET1) = ITVL(I-1+INOET2) + NBE1
  233. ELSE
  234. IF( ITVL(I-1+INOET2).NE.0 )THEN
  235. iarr = -1
  236. IERCOD = -107
  237. CALL DSERRE(1,iarr,'HEXOS',
  238. > ' LES 2 MAILLAGES PARTANGENT 1 NOEUD')
  239. CALL ESEINT(1,'LE NOEUD ',I,1)
  240. GOTO 9999
  241. ENDIF
  242. ENDIF
  243. 10 CONTINUE
  244. C
  245. C ===========================================
  246. C ---- 2. CONSTRUCTION DES 2 GRILLES SURFACIQUES ----
  247. C ===========================================
  248. IF(ITRACE.GT.0)
  249. > CALL ESECHA(1,'-> CONTRUCTION DES 2 GRILLES',' ')
  250. C
  251. IGR1 = ITRAV
  252. NGRMX1 = NBN1
  253. IGR2 = IGR1 + NGRMX1
  254. NGRMX2 = NBN2
  255. ITRAV = IGR2 + NGRMX2
  256. ITRVMX = NITMAX - ITRAV
  257. IF( ITRVMX.LT. 0)THEN
  258. iarr = -2
  259. CALL DSERRE(1,iarr,'HEXOS',' CREATION DES GRILLES')
  260. GOTO 9999
  261. ENDIF
  262. DO 20 I=1,4
  263. NBNL(I) = 0
  264. ICOIN(I) = 0
  265. ICOIN(I+4) = 0
  266. 20 CONTINUE
  267. CALL Q4ORG2(ITR1,NBNMX1,ITVL(ITRTR1),NBCMX1,NBE1,
  268. > ITR2,NBNMX2,ITVL(ITRTR2),NBCMX2,NBE2,N1,N2,
  269. > COORD,NBCOOR,IDIMC,
  270. > ITVL(ITRAV),ITRVMX,
  271. > ITVL(IGR1),NGRMX1,ITVL(IGR2),NGRMX2,
  272. > ICOIN,NBNL,0,iarr)
  273. C
  274. C
  275. C
  276. IF(iarr.EQ.-1)THEN
  277. C
  278. C ----- PREMIER MAILLAGE ----
  279. C
  280. IF((NBNL(1).EQ.0).OR.(NBNL(2).EQ.0))THEN
  281. IERCOD = -110
  282. CALL DSERRE(1,iarr,'HEXOS',' APPEL Q4ORG2')
  283. CALL DSERRE(1,iarr,'HEXOS',
  284. > ' LE PREMIER MAILLAGE N EST PAS UNE GRILLE')
  285. GOTO 9999
  286. ENDIF
  287. IF((ICOIN(1).NE.N1).AND.(ICOIN(2).NE.N1).AND.
  288. > (ICOIN(3).NE.N1).AND.(ICOIN(4).NE.N1))THEN
  289. IERCOD = -118
  290. CALL DSERRE(1,iarr,'HEXOS',' APPEL Q4ORG2')
  291. CALL DSERRE(1,iarr,'HEXOS',
  292. > ' LE PREMIER NOEUD N EST PAS DANS LE PREMIER MAILLAGE')
  293. GOTO 9999
  294. ENDIF
  295. C ----- ORIENTATION DE IGR1 ----
  296. C
  297. DO 25 I=1,IDIMC
  298. VK(I)=(COORD((N2-1)*IDIMC+I)-COORD((N1-1)*IDIMC+I))
  299. 25 CONTINUE
  300. CALL G2ORIE(ITVL(IGR1),NBNL(1),NBNL(2),IDIMC,COORD,VK,IOP )
  301. IF( IOP.EQ. 0)THEN
  302. IERCOD = -111
  303. CALL DSERRE(1,iarr,'HEXOS',
  304. > ' ORIENTATION DE LA PREMIERE GRILLE IMPOSSIBLE')
  305. GOTO 9999
  306. ENDIF
  307. C
  308. C ----- DEUXIEME MAILLAGE ----
  309. C
  310. IF((NBNL(3).EQ.0).OR.(NBNL(4).EQ.0))THEN
  311. IERCOD = -112
  312. CALL DSERRE(1,iarr,'HEXOS',' APPEL Q4ORG2')
  313. CALL DSERRE(1,iarr,'HEXOS',
  314. > ' LE DEUXIEME MAILLAGE N EST PAS UNE GRILLE')
  315. GOTO 9999
  316. ENDIF
  317. IF((ICOIN(5).NE.N2).AND.(ICOIN(6).NE.N2).AND.
  318. > (ICOIN(7).NE.N2).AND.(ICOIN(8).NE.N2))THEN
  319. IERCOD = -122
  320. CALL DSERRE(1,iarr,'HEXOS',' APPEL Q4ORG2')
  321. CALL DSERRE(1,iarr,'HEXOS',
  322. > ' LE DEUXIEME NOEUD N EST PAS DANS LE DEUXIEME MAILLAGE')
  323. GOTO 9999
  324. ENDIF
  325. C
  326. CALL G2ORIE(ITVL(IGR2),NBNL(3),NBNL(4),IDIMC,COORD,VK,IOP )
  327. IF( IOP.EQ. 0)THEN
  328. IERCOD = -113
  329. CALL DSERRE(1,iarr,'HEXOS',
  330. > ' ORIENTATION DE LA DEUXIEME GRILLE IMPOSSIBLE')
  331. GOTO 9999
  332. ENDIF
  333. C
  334. IF((NBNL(1).GT.NBNL(3)).AND.(NBNL(2).GT.NBNL(4)))THEN
  335. C
  336. C --- ON INVERSE IGR1 ET IGR2 ---
  337. C
  338. CALL ESECHA(1,'-> ON INVERSE L ORDRE DES GRILLES ',' ')
  339. iarr = 0
  340. NGRMX1 = NBN2
  341. IGR2 = IGR1 + NGRMX1
  342. NGRMX2 = NBN1
  343. ITRAV = IGR2 + NGRMX2
  344. CALL Q4ORG2(ITR2,NBNMX2,ITVL(ITRTR2),NBCMX2,NBE2,
  345. > ITR1,NBNMX1,ITVL(ITRTR1),NBCMX1,NBE1,N2,N1,
  346. > COORD,NBCOOR,IDIMC,
  347. > ITVL(ITRAV),ITRVMX,
  348. > ITVL(IGR1),NGRMX1,ITVL(IGR2),NGRMX2,
  349. > ICOIN,NBNL,0,iarr)
  350. ENDIF
  351. C
  352. ENDIF
  353. C
  354. IF(ITRACE.GT.0)THEN
  355. CALL ESECHA(1,'-> GRILLE 1 ',' ')
  356. CALL ESEINT(1,'COLONNES LIGNES : ',NBNL(1),2)
  357. CALL ESEINT(1,'LES COINS : ',ICOIN(1),4)
  358. CALL ESECHA(1,'-> GRILLE 2 ',' ')
  359. CALL ESEINT(1,'COLONNES LIGNES : ',NBNL(3),2)
  360. CALL ESEINT(1,'LES COINS : ',ICOIN(5),4)
  361. ENDIF
  362. C
  363. IF(iarr.NE.0)THEN
  364. CALL DSERRE(1,iarr,'HEXOS',' APPEL Q4ORG2')
  365. GOTO 9999
  366. ENDIF
  367. C
  368. IF( (MOD(NBNL(1)+NBNL(3),2).NE.0).OR.
  369. > (MOD(NBNL(2)+NBNL(4),2).NE.0))THEN
  370. IERCOD = -108
  371. iarr = -1
  372. GOTO 9999
  373. ENDIF
  374. C
  375. IF(NBEMAX.EQ.0)THEN
  376. NBE3 = 0
  377. GOTO 9999
  378. ENDIF
  379. C
  380. C ===========================================
  381. C ---- 3. MAILLAGE 3D RACCORDANT LES 2 GRILLES ----
  382. C ===========================================
  383. IF(ITRACE.GT.0)
  384. > CALL ESECHA(1,'**** RACCORD 3D ****',' ')
  385. C ==========================================
  386. C --- RACCORD EN DEUX COUCHES
  387. C ==========================================
  388. IF((NBNL(3).GT.NBNL(1)).AND.(NBNL(4).GT.NBNL(2)))THEN
  389. IF(ITRACE.GT.0)
  390. > CALL ESECHA(1,' RACCORD EN 2 COUCHES : ',
  391. > ' MAILLAGE SURFACIQUE INTERMEDIAIRE ')
  392. C -----------------------------------
  393. C --- EVALUATION DE LA PLACE NECESSAIRE ---
  394. C -----------------------------------
  395. NBLIG3 = NBNL(1)
  396. NBCOL3 = (NBNL(4)-NBNL(2))/2 +2+NBCOUC-1
  397. NBRAN3 = NBNL(4)
  398. C
  399. NBEGEN = (NBLIG3-1)*(NBCOL3-1)*(NBRAN3-1)
  400. NBPGEN = NBLIG3*NBCOL3*NBRAN3
  401. C
  402. NBLIG3 = NBNL(3)
  403. NBCOL3 = (NBNL(3)-NBNL(1))/2 +2+NBCOUC-1
  404. NBRAN3 = NBNL(4)
  405. C
  406. NBEGEN = (NBLIG3-1)*(NBCOL3-1)*(NBRAN3-1) + NBEGEN
  407. NBPGEN = NBLIG3*NBCOL3*NBRAN3 + NBPGEN
  408. C
  409. C --- ON PEUT COMPRIMER EN SUPPRIMANT LES 2 MAILLAGES : ITRINO1...
  410. C
  411. C --- MAILLAGE EN H8 ---
  412. C
  413. NBNMAX = 8
  414. C
  415. CALL H8RCGG(ITVL(IGR1),NBNL(2),NBNL(1),
  416. > ITVL(IGR2),NBNL(4),NBNL(3),
  417. > COORD,NBCOOR,IDIMC,NBCOUC,RAISON,
  418. > ITVL(ITRAV),ITRVMX,
  419. > ITR3,NBNMAX,NBE3,NBN3,
  420. > NBEMAX,NBPMAX,ICOMPR,ITRACE,iarr)
  421. IF(iarr.NE.0)THEN
  422. CALL DSERRE(1,iarr,'HEXOS',' APPEL H8RCGG')
  423. GOTO 9999
  424. ENDIF
  425. C
  426. ELSE
  427. C ==========================================
  428. C --- RACCORD EN UNE COUCHE
  429. C ==========================================
  430. IF(ITRACE.GT.0)
  431. > CALL ESECHA(1,' RACCORD EN 1 COUCHES : ',
  432. > ' MAILLAGE HEXAEDRIQUE ')
  433. C
  434. C -----------------------------------
  435. C --- EVALUATION DE LA PLACE NECESSAIRE ---
  436. C -----------------------------------
  437. NBLIG3 = NBNL(3)
  438. NBCOL3 = (NBNL(3)-NBNL(1)+NBNL(2)-NBNL(4))/2 +2+NBCOUC-1
  439. NBRAN3 = NBNL(2)
  440. C
  441. NBEGEN = (NBLIG3-1)*(NBCOL3-1)*(NBRAN3-1)
  442. NBPGEN = NBLIG3*NBCOL3*NBRAN3
  443. C
  444. C --- ON PEUT COMPRIMER EN SUPPRIMANT LES 2 MAILLAGES : ITRINO1...
  445. C
  446. C --- MAILLAGE EN H8 ---
  447. C
  448. NBNMAX = 8
  449. C
  450. CALL H8RCG2(ITVL(IGR1),NBNL(2),NBNL(1),
  451. > ITVL(IGR2),NBNL(4),NBNL(3),
  452. > COORD,NBCOOR,IDIMC,NBCOUC,RAISON,
  453. > ITVL(ITRAV),ITRVMX,
  454. > ITR3,NBNMAX,NBE3,NBN3,
  455. > NBEMAX,NBPMAX,ICOMPR,ITRACE,iarr)
  456. ENDIF
  457. C
  458. IF(iarr.NE.0)THEN
  459. CALL DSERRE(1,iarr,'HEXOS',' APPEL H8RCG2')
  460. GOTO 9999
  461. ENDIF
  462. C
  463. C ===================================================
  464. C --- 3. COMPRESSION DU MAILLAGE ---
  465. C ===================================================
  466. C
  467. 30 CONTINUE
  468. C
  469. IF((NBNL(2).NE.NBNL(4)).OR.(NBNL(1).NE.NBNL(3)).OR.
  470. > (NOSUPR.EQ.1) )THEN
  471. C
  472. IF(ITRACE.GT.0)THEN
  473. CALL ESECHA(1,'**** POST-TRAITEMENT ****',' ')
  474. CALL ESECHA(1,'-> COMPRESSION DU MAILLAGE 3D',' ')
  475. ENDIF
  476. C
  477. C --- LA SUPPRESSION DES NOEUDS POSE UN PROBLEME
  478. C QUAND IL Y A DES NOEUDS MILIEU : IDIMC6 = 0
  479. C
  480. IDIMC6 = 0
  481. C
  482. IDE = 3
  483. NBCMAX = 0
  484. ITRTRI(1) = 0
  485. NOEMAX = 0
  486. NOETRI(1) = 0
  487. NBENUL = NBE3
  488. NBISOL = NBCOOR
  489. CALL NUGCNU(IDE,ITR3,NBNMAX,ITRTRI,NBCMAX,
  490. > NOETRI,NOEMAX,NBE3,COORD,IDIMC6,NBCOOR,
  491. > ITVL(ITRAV),ITRVMX,iarr)
  492. C
  493. IF(ITRACE.GT.0)THEN
  494. CALL ESEINT(1,'NOMBRE D ELEMENTS SUPPRIMES : ',NBENUL-NBE3,1)
  495. CALL ESEINT(1,'NOMBRE DE POINTS SUPPRIMES : ',NBISOL-NBCOOR,1)
  496. ENDIF
  497. ENDIF
  498. C
  499. C CALL ESEINT(1,' ITR3 ',ITR3,NBE3*8)
  500. C
  501. 9999 END
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  

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