Télécharger sfrcre.eso

Retour à la liste

Numérotation des lignes :

sfrcre
  1. C SFRCRE SOURCE CHAT 06/03/29 21:33:19 5360
  2. SUBROUTINE SFRCRE(IDE,IFR,NBIFR,ITRNOE,NBNMAX,
  3. > ITVL,NTRMAX,
  4. > LTRNOE,NNFMAX,LTRTRI,NCFMAX,NBF,
  5. > LNOETR,NBFNOE,NCC,iarr)
  6. C *****************************************************************
  7. C OBJET : CREER LE MAILLAGE FRONTIERE D'UN ENSEMBLE DE MAILLES
  8. C
  9. C EN ENTREE:
  10. C IFR : IFR((I-1)*2+1) DONNE LE NUMERO DU IEME ELEMENT QUI A
  11. C UNE FACE SUR LA FRONTIERE
  12. C IFR((I-1)*2+2) DONNE LE NUMERO RELATIF DE LA FACE DU
  13. C IEME ELEMENT
  14. C NBIFR : NOMBRE D'ELEMENT DE LA FRONTIERE
  15. C
  16. C IDE : (1..3) DIMENSION DES ELEMENTS
  17. C NBNMAX : (2..8) NOMBRE DE NOEUDS MAXIMUM DES ELEMENTS
  18. C ITRNOE: ITRNOE(I,J) EST LE NOEUD J DE L'ELEMENT I
  19. C ITVL: TABLEAU DE TRAVAIL
  20. C NTRMAX: TAILLE DU TABLEAU DE TRAVAIL
  21. C SI IFR FORME 1 SEULE COMPOSANTE CONNEXE
  22. C AU MINIMUM = 2*((NBIFR*(NBCMAX-2))+2*NBCMAX)
  23. C 2D TRIANGLES = 2 * NBIFR + 12
  24. C QUAD OU TETRA = 4 * NBIFR + 16
  25. C AU MAX = (NBR MAX D'ELEMENTS EN 1 NOEUD + 1) *
  26. C NUMERO MAXI DU NOEUD DANS IFR
  27. C
  28. C NNFMAX : NOMBRE MAXIMUM DE NOEUD SUR UNE FACE DE LA FRONTIERE
  29. C NCFMAX : NOMBRE MAXIMUM DE COTE D'UNE FACE DE LA FRONTIERE
  30. C NBFNOE : TAILLE DU TABLEAU LNOETR
  31. C SI NBFNOE = 0 LNOETR NE SERA PAS REMPLI
  32. C
  33. C EN SORTIE: LE MAILLAGE DE LA FRONTIERE ET SES CARACTERISTIQUES
  34. C LTRNOE:
  35. C LTRTRI:
  36. C LNOETR:
  37. C NBF : NOMBRE DE FACES DE LA FRONTIERE
  38. C NCC : NOMBRE DE COMPOSANTES CONNEXES
  39. C iarr : CODE D'ERREUR
  40. C 0 SI OK
  41. C -1 SI LES DONNEES SONT ERRONEES
  42. C -2 SI ITVL TROP PETIT
  43. C
  44. C NIVEAU : INTERFACE UTILISATEUR
  45. C *****************************************************************
  46. IMPLICIT INTEGER(I-N)
  47. INTEGER IDE,IFR(*),NBIFR,ITRNOE(*),NBNMAX
  48. INTEGER ITVL(*),NTRMAX
  49. INTEGER LTRNOE(*),NNFMAX,LTRTRI(*),NCFMAX,NBF
  50. INTEGER LNOETR(*),NBFNOE,NCC,iarr
  51. C
  52. INTEGER I,IDEF
  53. INTEGER ITRAV,ITRAM,NBTRAV
  54. C
  55. C NOEUDS DE LA FRONTIERE
  56. C ----------------------
  57. C
  58. IF( (NCFMAX * NBIFR).GT.NTRMAX )THEN
  59. iarr = -2
  60. GO TO 999
  61. ENDIF
  62. C
  63. DO 10 I=1,NBIFR
  64. CALL TNOFRT(IDE,ITRNOE,NBNMAX,IFR((I-1)*2+1),
  65. > IFR((I-1)*2+2),ITVL((I-1)*NCFMAX+1))
  66. 10 CONTINUE
  67. IF( iarr .NE. 0 )GO TO 999
  68. C
  69. C CONSTRUCTION DU MAILLAGE FRONTIERE
  70. C ----------------------------------
  71. IDEF = IDE - 1
  72. C --- ALLOCATION DES TABLEAUX : ITRAV,ITRAM,ITRAP ----
  73. C TOPOFRTM OCCUPE ITVL DE 1 - NBF*NCFMAX
  74. C ITRAM DOIT AVOIR LA TAILLE DE NBF
  75. C NBTRAV PEUT VARIER DE 0 A (NCFMAX + 1) * NBF
  76. C -------------------------------------------------
  77. IF( NTRMAX .LT. (NBF * (NCFMAX+1)) )THEN
  78. iarr = -2
  79. GO TO 999
  80. ENDIF
  81. C
  82. ITRAV = (NBF * NCFMAX ) + 1
  83. NBTRAV = NTRMAX - ( NBF * NCFMAX )
  84. C
  85. CALL SMACRE(IDEF,ITVL,NBF,0,LTRNOE,NNFMAX,
  86. > LTRTRI,NCFMAX,LNOETR,NBFNOE,
  87. > ITVL(ITRAV),NBTRAV,iarr)
  88. C
  89. IF( iarr .NE. 0 )GO TO 999
  90. ITRAM = 1
  91. ITRAV = NBF + 1
  92. NBTRAV = NTRMAX - NBF
  93. CALL SORIEN(IDEF,LTRNOE,NNFMAX,LTRTRI,NCFMAX,NBF,
  94. > ITVL(ITRAV),NBTRAV,ITVL(ITRAM),NCC,iarr)
  95. C
  96. 999 END
  97.  
  98.  
  99.  
  100.  

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