Télécharger kdxdy.eso

Retour à la liste

Numérotation des lignes :

kdxdy
  1. C KDXDY SOURCE CB215821 20/11/25 13:31:09 10792
  2. SUBROUTINE KDXDY
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C*************************************************************************
  6. C
  7. C OBJET : Cree un CHAMPOINT CENTRE contenant les informations
  8. C décrites ci dessous, sur les éléments du domaine.
  9. C
  10. C SYNTAXE : CHPC = KDXDY OBJDOM ;
  11. C
  12. C OBJDOM : TABLE de SOUSTYPE DOMAINE
  13. C
  14. C AVIS IMPORTANT ;
  15. C
  16. C Ces informations sont destinées aux opérateurs de discrétisation
  17. C et sont rangées dans un ordre particulier.
  18. C
  19. C Les dimensions du tableau sont : (DIME NBEL) DIME=11 en 2D
  20. C DIME=13 en 3D
  21. C et il contient :
  22. C
  23. C pour un SEG2 la longueur de l'element (XML) et la matrice P(2,2) en 2D
  24. C P(3,3) en 3D
  25. C pour un TRI3 XML,XMH,AJ1/XML,AJ2/XML, et la matrice P(2,2) en 2D
  26. C P(3,3) en 3D
  27. C pour un QUA4 IDEM
  28. C pour un CUB8 XML XMH XME et la matrice P
  29. C pour un PRI6 IDEM
  30. C
  31. C***********************************************************************
  32. C MATRICE P
  33. C LA MATRICE DE ROTATION DU REPERE GLOBALE VERS LE REPERE LOCAL
  34. C DEFINI PAR DEUX OU TROIS POINTS PRIS DANS XYZ SUIVANT QU'ON EST
  35. C EN 2D OU EN 3D
  36. C ON PREND P1 P2 ET PNP
  37. C
  38. C U TEL QUE T SOIT DIRIGE SUIVANT P1P2 V TOURNE VERS
  39. C . .V P1PNP ET U = T VECTORIEL V
  40. C . .
  41. C . . __ __
  42. C (P1). . . . .T (P2) | tx ty tz |
  43. C | |
  44. C ON A ALORS WL= P WG P = | vx vy vz |
  45. C | |
  46. C | ux uy uz |
  47. C |__ __|
  48. C*************************************************************************
  49.  
  50. -INC PPARAM
  51. -INC CCOPTIO
  52. -INC CCREEL
  53. *-
  54. -INC CCGEOME
  55. -INC SMTABLE
  56. -INC SMELEME
  57. POINTEUR MELEMC.MELEME
  58. -INC SMCOORD
  59. -INC SMCHPOI
  60. -INC SIZFFB
  61. PARAMETER (NLTS=10)
  62. CHARACTER*8 LISTS(NLTS)
  63. C***
  64. DIMENSION AAJ(3,3,9),XC(3),T(13),DELTAX(3)
  65. PARAMETER (NTB=1)
  66. CHARACTER*8 LTAB(NTB),TYPE,NOM0,TYPC
  67. DIMENSION KTAB(NTB)
  68. DATA LTAB/'DOMAINE '/
  69. DATA LISTS/'QUA4 ','CUB8 ','TRI3 ','PRI6 ',
  70. &'SEG2 ','TET4 ','PYR5 ','TRI7 ','QUA9 ',
  71. &'SEG3 '/
  72. C***
  73. NTO=NTB
  74. CALL LITABS(LTAB,KTAB,NTB,NTO,IRET)
  75. IF(IRET.EQ.0)RETURN
  76. MTABD=KTAB(1)
  77.  
  78. TYPE=' '
  79. CALL ACMO(MTABD,'CENTRE',TYPE,MELEMC)
  80.  
  81. NC=IDIM
  82.  
  83. TYPE='CENTRE'
  84. CALL CRCHPT(TYPE,MELEMC,NC,MCHPOI)
  85. CALL LICHTM(MCHPOI,MPOVAL,TYPC,IGEOM)
  86.  
  87. TYPE=' '
  88. CALL ACMO(MTABD,'MAILLAGE',TYPE,MELEME)
  89. IF(TYPE.NE.'MAILLAGE')GO TO 90
  90. SEGACT MELEME
  91.  
  92. IAXI=0
  93. IF(IFOMOD.EQ.0)IAXI=2
  94. NPGI=1
  95.  
  96. NBSOUS=LISOUS(/1)
  97. IF(NBSOUS.EQ.0)NBSOUS=1
  98.  
  99. K0=0
  100. DO 1 L=1,NBSOUS
  101. IPT1=MELEME
  102. IF(NBSOUS.NE.1)IPT1=LISOUS(L)
  103. SEGACT IPT1
  104. NP=IPT1.NUM(/1)
  105. NEL=IPT1.NUM(/2)
  106. NOM0=NOMS(IPT1.ITYPEL)//' '
  107. C write(6,*)' KDXDY : NOM0=',nom0,' NEL=',nel
  108. CALL OPTLI(IP,LISTS,NOM0,NLTS)
  109. IF(IP.EQ.0)THEN
  110. WRITE(6,*)' Sub KDXDY :'
  111. WRITE(6,*)' Il y a des types d''éléments pour lesquels on ne sait'
  112. &,'pas faire'
  113. GO TO 1
  114. ENDIF
  115. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  116. SEGACT IZFFM*MOD
  117. IZHR=KZHR(1)
  118. SEGACT IZHR*MOD
  119. NES=GR(/1)
  120. NPG=GR(/3)
  121.  
  122. DO 10 K=1,NEL
  123. KK=K0+K
  124. NPGR=0
  125. IF(IAXI.NE.0)NPGR=NPG
  126. C
  127. C REMPLISSAGE DE XYZ
  128. C ------------------
  129. C
  130. DO 12 I=1,NP
  131. J=IPT1.NUM(I,K)
  132. DO 12 N=1,IDIM
  133. XYZ(N,I)=XCOOR((J-1)*(IDIM+1)+N)
  134. 12 CONTINUE
  135.  
  136. CALL CALJAJ(GR,XYZ,NES,IDIM,NP,NPGI,AAJ)
  137. C
  138. CALL CALJBC(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,AIRE)
  139.  
  140. IF(AIRE.LE.0.D0)AIRE=ABS(AIRE)
  141.  
  142.  
  143. C CALCUL DES LONGUEURS DES COTES DE L'ELEMENT
  144. C UNIQUEMENT POUR LES SEG2 QUA4 ET CUB8
  145.  
  146. XML=0.
  147. DO 231 N=1,IDIM
  148. XML=XML+(XYZ(N,1)-XYZ(N,2))*(XYZ(N,1)-XYZ(N,2))
  149. 231 CONTINUE
  150. XML=SQRT(XML)
  151.  
  152. DO 234 N=1,IDIM
  153. DELTAX(N)=ABS(XYZ(N,NP)-XYZ(N,1))
  154. DO 233 I=2,NP
  155. DELTAX(N)=DELTAX(N)+ABS(XYZ(N,I)-XYZ(N,I-1))
  156. 233 CONTINUE
  157. VPOCHA(KK,N)=(DELTAX(N)/FLOAT(NP))+XPETIT
  158. IF(NOM0.EQ.'QUA4 ')THEN
  159. VPOCHA(KK,N)=VPOCHA(KK,N)*FLOAT(IDIM)
  160. ENDIF
  161. 234 CONTINUE
  162.  
  163. C
  164. C
  165. IF(XML.EQ.0.)
  166. &WRITE(6,*)' ELEMENT DEGENERE ( AYANT UN COTE DE LONGUEUR NULLE) '
  167. C
  168. C
  169. 10 CONTINUE
  170. K0=K0+NEL
  171. SEGDES IPT1
  172. 1 CONTINUE
  173. SEGDES MELEME,MPOVAL,MCHPOI
  174. C
  175. CALL ECROBJ('CHPOINT ',MCHPOI)
  176.  
  177. RETURN
  178.  
  179. 90 CONTINUE
  180. WRITE(6,*)' Interruption anormale de KDXDY'
  181. RETURN
  182. 1001 FORMAT(20(1X,I5))
  183. 1002 FORMAT(10(1X,1PE11.4))
  184. END
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  

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