Télécharger dedu3.eso

Retour à la liste

Numérotation des lignes :

dedu3
  1. C DEDU3 SOURCE CB215821 20/11/25 13:24:23 10792
  2. C
  3. SUBROUTINE DEDU3(IPCHPO,XERR1)
  4. ************************************************************************
  5. *
  6. * DEDU3
  7. *
  8. *
  9. * FONCTION:
  10. * -appelé par PROPER.eso
  11. * -TESTE SI UN CHPOINT DE TRANSFORMATION U REPRESENTE UNE TRANSLATION
  12. * -calcule l'ecart relatif à une translation :
  13. * XERR1 = | max_x(IPOIN1(x)) - min_x(IPOIN1(x)) |_relatif
  14. *
  15. * CREATION,MODIFICATION:
  16. * - creation : 07/2009 (BP)
  17. *
  18. ************************************************************************
  19. *
  20. IMPLICIT INTEGER(I-N)
  21. IMPLICIT REAL*8 (A-H,O-Z)
  22. -INC PPARAM
  23. -INC CCOPTIO
  24. -INC SMCHPOI
  25. -INC SMELEME
  26. -INC SMCOORD
  27. *
  28. *
  29. ***** INITIALISATIONS **************************************************
  30. *
  31. * -ERREUR RELATIVE, LONGUEUR CARACTERISTIQUE
  32. XERR1 = 0.D0
  33. XREF1 = 0.D0
  34.  
  35. * -ACTIVATION DU CHPOINT DE TRANSFORMATION
  36. MCHPOI = IPCHPO
  37. SEGACT,MCHPOI
  38. NSOUPO = IPCHP(/1)
  39. *
  40. *
  41. ***** RECHERCHE DU MAXIMUM par ZONE ************************************
  42.  
  43. *-----boucle sur les zones du chpoint
  44. DO 100 IB100=1,NSOUPO
  45. *
  46. * -sous-chpoint
  47. MSOUPO = IPCHP(IB100)
  48. SEGACT,MSOUPO
  49.  
  50. * -ouverture du mpoval
  51. NC = NOCOMP(/2)
  52. MPOVAL = IPOVAL
  53. SEGACT,MPOVAL
  54.  
  55. * -creation de mpova1 contenant le maxi et le mini
  56. N = 2
  57. segini,mpova1
  58. IDEB = 0
  59.  
  60. * -ouverture du meleme pour avoir une distance de reference XREF100
  61. XREF100 = 0.D0
  62. IPT3 = IGEOC
  63. segact,IPT3
  64. N3 = IPT3.NUM(/2)
  65.  
  66. *--------boucle sur les points
  67. N = VPOCHA(/1)
  68. * write(6,*) 'N3=N?',N3,N
  69. if (N.gt.0) then
  70. DO 110 IB110=1,N
  71.  
  72. *----------1ere rencontre avec boucle sur les composantes
  73. IF(IDEB.eq.0) THEN
  74. IDEB = 1
  75. * -recup des coordonnées
  76. IP = IPT3.NUM(1,IB110)
  77. X1 = XCOOR((IP-1)*(IDIM+1) +1)
  78. Y1 = XCOOR((IP-1)*(IDIM+1) +2)
  79. XMAX1 = X1
  80. XMIN1 = X1
  81. YMAX1 = Y1
  82. YMIN1 = Y1
  83. if(IDIM.EQ.3) then
  84. Z1 = XCOOR((IP-1)*(IDIM+1) +3)
  85. ZMAX1 = Z1
  86. ZMIN1 = Z1
  87. endif
  88. * -boucle sur les composantes
  89. DO 120 IB120=1,NC
  90. XVAL = VPOCHA(IB110,IB120)
  91. mpova1.VPOCHA(1,IB120) = XVAL
  92. mpova1.VPOCHA(2,IB120) = XVAL
  93. 120 CONTINUE
  94. goto 110
  95. ENDIF
  96.  
  97. *----------recup des coordonnées
  98. IP = IPT3.NUM(1,IB110)
  99. X1 = XCOOR((IP-1)*(IDIM+1) +1)
  100. Y1 = XCOOR((IP-1)*(IDIM+1) +2)
  101. if(X1.gt.XMAX1) XMAX1 = X1
  102. if(X1.lt.XMIN1) XMIN1 = X1
  103. if(Y1.gt.YMAX1) YMAX1 = Y1
  104. if(Y1.lt.YMIN1) YMIN1 = Y1
  105. if(IDIM.EQ.3) then
  106. Z1 = XCOOR((IP-1)*(IDIM+1) +3)
  107. if(Z1.gt.ZMAX1) ZMAX1 = Z1
  108. if(Z1.lt.ZMIN1) ZMIN1 = Z1
  109. endif
  110.  
  111. *----------boucle sur les composantes
  112. DO 121 IB120=1,NC
  113. XVAL = VPOCHA(IB110,IB120)
  114. * -tests
  115. if(XVAL.gt.(mpova1.VPOCHA(1,IB120)))
  116. $ mpova1.VPOCHA(1,IB120) = XVAL
  117. if(XVAL.lt.(mpova1.VPOCHA(2,IB120)))
  118. $ mpova1.VPOCHA(2,IB120) = XVAL
  119. 121 CONTINUE
  120.  
  121. 110 CONTINUE
  122. *--------fin de boucle sur les points
  123.  
  124. *--------calcul de XREF100
  125. * write(6,*) 'MAX=',XMAX1,YMAX1,ZMAX1
  126. * write(6,*) 'MIN=',XMIN1,YMIN1,ZMIN1
  127. XREF100 = (XMAX1 - XMIN1) + (YMAX1 - YMIN1) + (ZMAX1 - ZMIN1)
  128. XREF100 = XREF100 / N
  129. *--------calcul de la norme XERR100 = |max(U_ib100) - min(U_ib100)|_1
  130. XERR100 = 0.D0
  131. DO 129 IB120=1,NC
  132. UMAX1 = mpova1.VPOCHA(1,IB120)
  133. UMIN1 = mpova1.VPOCHA(2,IB120)
  134. XERR100 = XERR100 + (UMAX1-UMIN1)
  135. 129 CONTINUE
  136. *--------moyenne des zones
  137. XREF1 = XREF1 + XREF100
  138. XERR1 = max(XERR1,XERR100)
  139. * write(6,*) 'XREF100,XERR100 = ',XREF100,XERR100
  140.  
  141. endif
  142. *--------fin deu cas (N.ne.0)
  143.  
  144. *--------quelques desactivations...
  145. segsup,mpova1
  146. segdes,IPT3,MPOVAL,MSOUPO
  147.  
  148. 100 CONTINUE
  149. *-----fin de boucle sur les zones
  150.  
  151.  
  152. ***** ECART RELATIF A UNE TRANSLATION **********************************
  153. *
  154. XREF1 = XREF1 / NSOUPO
  155. XERR1 = XERR1 / XREF1
  156. * write(6,*) '=> XREF1,XERR1 = ',XREF1,XERR1
  157.  
  158.  
  159. RETURN
  160. END
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  

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