Télécharger normno.eso

Retour à la liste

Numérotation des lignes :

normno
  1. C NORMNO SOURCE CB215821 20/11/25 13:35:07 10792
  2. SUBROUTINE NORMNO(MELEME,MELEMS,MCHPOI,IRET)
  3. C************************************************************************
  4. C
  5. C
  6. C
  7. C************************************************************************
  8. IMPLICIT INTEGER(I-N)
  9. IMPLICIT REAL*8 (A-H,O-Z)
  10. C
  11. -INC SMELEME
  12. POINTEUR MELEMS.MELEME
  13. -INC SMLENTI
  14. -INC SMLREEL
  15. -INC SMCOORD
  16. -INC SIZFFB
  17. -INC SMCHPOI
  18. -INC CCGEOME
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC CCREEL
  23. C
  24. CHARACTER*8 NOM0
  25. C***
  26. C
  27. IRET=0
  28.  
  29. IAXI=0
  30. IF(IFOMOD.EQ.0)IAXI=2
  31. DEUPI=1.D0
  32. IF(IAXI.NE.0)DEUPI=2.D0*XPI
  33.  
  34. SEGACT MELEMS
  35. NAT=2
  36. NSOUPO=1
  37. SEGINI MCHPOI
  38. NC=IDIM
  39. SEGINI MSOUPO
  40. IPCHP(1)=MSOUPO
  41. C write(6,*)' MSOUPO=',MSOUPO,'MCHPOI=',MCHPOI
  42. C nature indeterminee (2 discret)
  43. JATTRI(1)=0
  44. NOCOMP(1)='UX'
  45. NOCOMP(2)='UY'
  46. IF(IDIM.EQ.3)NOCOMP(3)='UZ'
  47. IGEOC=MELEMS
  48. C write(6,*)' MELEMS=',MELEMS
  49. N=MELEMS.NUM(/2)
  50. SEGINI MPOVAL
  51. IPOVAL=MPOVAL
  52. JG=N
  53. SEGINI MLREEL
  54.  
  55. CALL KRIPAD(MELEMS,MLENTI)
  56. SEGDES MELEMS
  57. SEGACT MELEME
  58.  
  59. DO 1 L=1,MAX(1,LISOUS(/1))
  60. IPT1=MELEME
  61. IF(LISOUS(/1).NE.0)IPT1=LISOUS(L)
  62. SEGACT IPT1
  63. NOM0=NOMS(IPT1.ITYPEL)//' '
  64. C write(6,*)' NOM0 ,IDIM',NOM0,IDIM
  65. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  66. SEGACT IZFFM*MOD
  67. IZHR=KZHR(1)
  68. SEGACT IZHR*MOD
  69. NES=GR(/1)
  70. NPG=GR(/3)
  71. NBNN =IPT1.NUM(/1)
  72. NBELEM=IPT1.NUM(/2)
  73.  
  74. DO 2 K=1,NBELEM
  75.  
  76. DO 20 I=1,NBNN
  77. J=IPT1.NUM(I,K)
  78. DO 10 N=1,IDIM
  79. XYZ(N,I) = XCOOR((J-1)*(IDIM+1)+N)
  80. 10 CONTINUE
  81. 20 CONTINUE
  82.  
  83. CALL CALJBR(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  84. & NES,IDIM,NBNN,NPG,IAXI,AIRE,AJ,SGN)
  85.  
  86. DO 22 I=1,NBNN
  87. AX=0.D0
  88. AY=0.D0
  89. AZ=0.D0
  90.  
  91. DO 17 LG=1,NPG
  92. AX=AX+FN(I,LG)*AJ(1,IDIM,LG)*PGSQ(LG)*DEUPI*RPG(LG)
  93. AY=AY+FN(I,LG)*AJ(2,IDIM,LG)*PGSQ(LG)*DEUPI*RPG(LG)
  94. IF(IDIM.EQ.3)THEN
  95. AZ=AZ+FN(I,LG)*AJ(3,IDIM,LG)*PGSQ(LG)*DEUPI*RPG(LG)
  96. ENDIF
  97. 17 CONTINUE
  98.  
  99. IU=LECT(IPT1.NUM(I,K))
  100. VPOCHA(IU,1)=VPOCHA(IU,1)+AX
  101. VPOCHA(IU,2)=VPOCHA(IU,2)+AY
  102. IF(IDIM.EQ.3)THEN
  103. VPOCHA(IU,3)=VPOCHA(IU,3)+AZ
  104. ENDIF
  105. 22 CONTINUE
  106.  
  107. 2 CONTINUE
  108. SEGDES IPT1
  109. SEGSUP IZFFM,IZHR
  110. 1 CONTINUE
  111. SEGDES MELEME
  112. N=VPOCHA(/1)
  113.  
  114. IF(IDIM.EQ.2)THEN
  115. DO 31 I=1,N
  116. AN=(VPOCHA(I,1)*VPOCHA(I,1) + VPOCHA(I,2)*VPOCHA(I,2))**0.5D0
  117. if (abs(an).lt.xpetit) an=1.d0
  118. VPOCHA(I,1)=VPOCHA(I,1)/AN
  119. VPOCHA(I,2)=VPOCHA(I,2)/AN
  120. C write(6,*)' ux uy ',VPOCHA(I,1),VPOCHA(I,2)
  121. 31 CONTINUE
  122.  
  123. ELSE
  124. DO 33 I=1,N
  125. AN=(VPOCHA(I,1)*VPOCHA(I,1) + VPOCHA(I,2)*VPOCHA(I,2)
  126. & + VPOCHA(I,3)*VPOCHA(I,3) )**0.5D0
  127. if (abs(an).lt.xpetit) an=1.d0
  128. VPOCHA(I,1)=VPOCHA(I,1)/AN
  129. VPOCHA(I,2)=VPOCHA(I,2)/AN
  130. VPOCHA(I,3)=VPOCHA(I,3)/AN
  131. 33 CONTINUE
  132. ENDIF
  133.  
  134. SEGDES MCHPOI,MSOUPO,MPOVAL
  135. SEGSUP MLENTI,MLREEL
  136. IRET=1
  137.  
  138. RETURN
  139. 1002 FORMAT(10(1X,1PE11.4))
  140. 1001 FORMAT(20(1X,I5))
  141. END
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  

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