Télécharger baryc5.eso

Retour à la liste

Numérotation des lignes :

baryc5
  1. C BARYC5 SOURCE GOUNAND 21/04/06 21:15:01 10940
  2. SUBROUTINE BARYC5(MELEMX,KPVIRT,TRAVK,KGRAV)
  3. IMPLICIT REAL*8(A-H,O-Z)
  4. IMPLICIT INTEGER(I-N)
  5. C***********************************************************************
  6. C NOM : BARYC5
  7. C DESCRIPTION :
  8. C CALCUL LE BARYCENTRE D'UN MAILLAGE ET LA METRIQUE MOYENNE ASSOCIEE
  9. C Repris de baryce.eso.
  10. C Par rapport à baryc2, ignore le noeud virtuel KPVIRT
  11. C Gère le noeud virtuel KPVIRT
  12. C
  13. C Par rapport à baryc3, on gère le MCOORD différemment, en vue de
  14. C faire moins de SEGADJ à l'aide du segment TRAVK
  15. C
  16. C Comme baryc4 mais avec un MELEMX
  17. C
  18. C KGRAV est le numéro du nouveau noeud créé
  19. C
  20. C
  21. C LANGAGE : ESOPE
  22. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  23. C mél : gounand@semt2.smts.cea.fr
  24. C***********************************************************************
  25. C APPELES :
  26. C APPELES (E/S) :
  27. C APPELES (BLAS) :
  28. C APPELES (CALCUL) :
  29. C APPELE PAR :
  30. C***********************************************************************
  31. C SYNTAXE GIBIANE :
  32. C ENTREES :
  33. C ENTREES/SORTIES :
  34. C SORTIES :
  35. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  36. C***********************************************************************
  37. C VERSION : v1, 26/09/2017, version initiale
  38. C HISTORIQUE : v1, 26/09/2017, création
  39. C HISTORIQUE :
  40. C HISTORIQUE :
  41. C***********************************************************************
  42. -INC PPARAM
  43. -INC CCOPTIO
  44. -INC TMATOP2
  45. -INC TMATOP1
  46. *-INC SMELEMX
  47. -INC SMCOORD
  48. POINTEUR KCOORD.MCOORD
  49. *-INC SMETRIQ
  50. POINTEUR KCMETR.METRIQ
  51. *-INC STRAVJ
  52. POINTEUR TRAVK.TRAVJ
  53. LOGICAL lchang
  54. PARAMETER(NGRAV=4)
  55. DIMENSION XGRAV(NGRAV)
  56. PARAMETER(NMET=6)
  57. DIMENSION XMET(NMET)
  58. *
  59. * Executable statements
  60. *
  61. * SEGACT,MCOORD
  62. IDIMP1=IDIM+1
  63. KCOORD=TRAVK.COORD
  64. KCMETR=TRAVK.CMETR
  65. * mis dans topv2 SEGACT KCOORD*MOD
  66. DO I=1,NGRAV
  67. XGRAV(I)=0.D0
  68. ENDDO
  69. DO I=1,NMET
  70. XMET(I)=0.D0
  71. ENDDO
  72. NPOIN=0
  73. * SEGACT,MELEMX
  74. * DO 3 J=1,IPT1.NUM(/2)
  75. * DO 31 I=1,IPT1.NUM(/1)
  76. DO 3 J=1,NLCOU
  77. DO 31 I=1,NNCOU
  78. INO=MELEMX.NUMX(I,J)
  79. IF (KPVIRT.NE.0) THEN
  80. IF (INO.EQ.KPVIRT) GOTO 31
  81. ENDIF
  82. NPOIN=NPOIN+1
  83. IREF=IDIMP1*(INO-1)
  84. DO 5 L=1,IDIMP1
  85. XGRAV(L)=XGRAV(L)+KCOORD.XCOOR(IREF+L)
  86. 5 CONTINUE
  87. IF (KCMETR.NE.0) THEN
  88. DO 6 ININ=1,KCMETR.XIN(/1)
  89. IF (IMET.EQ.4) THEN
  90. XMET(ININ)=XMET(ININ)+KCMETR.XIN(ININ,INO)
  91. ELSE
  92. if (imomet.eq.1) then
  93. XMET(ININ)=XMET(ININ)+LOG(KCMETR.XIN(ININ,INO))
  94. else
  95. XMET(ININ)=XMET(ININ)+KCMETR.XIN(ININ,INO)
  96. endif
  97. ENDIF
  98. 6 CONTINUE
  99. ENDIF
  100. 31 CONTINUE
  101. 3 CONTINUE
  102. * SEGDES,MELEMX
  103. C ON MET LE CENTRE DE GRAVITE DANS LA TABLE DES POINTS
  104. C ET LA METRIQUE ASSOCIEE LE CAS ECHANT
  105. NPCOUN=TRAVK.NPCOU+1
  106. CALL TOPADP(TRAVK,NPCOUN,1,lchang,'baryc5 : TRAVK')
  107. if (ierr.ne.0) return
  108. * if (iveri.ge.2) then
  109. * call vetopi(travk,'baryc5 : Apres extension travk 1')
  110. * if (ierr.ne.0) return
  111. * endif
  112.  
  113. * write(ioimp,*) 'npcoun,npcou,npmax',npcoun,travk.npcou,travk.npmax
  114. * NBPTS=XCOOR(/1)/IDIMP1+1
  115. * SEGADJ,MCOORD
  116. * IREF=(NBPTS-1)*IDIMP1
  117. IREF=(NPCOUN-1)*IDIMP1
  118. DO 11 I=1,IDIMP1
  119. KCOORD.XCOOR(IREF+I)=XGRAV(I)/NPOIN
  120. 11 CONTINUE
  121. IF (KCMETR.NE.0) THEN
  122. DO 12 ININ=1,KCMETR.XIN(/1)
  123. IF (IMET.EQ.4) THEN
  124. KCMETR.XIN(ININ,NPCOUN)=XMET(ININ)/NPOIN
  125. ELSE
  126. if (imomet.eq.1) then
  127. KCMETR.XIN(ININ,NPCOUN)=EXP(XMET(ININ)/NPOIN)
  128. else
  129. KCMETR.XIN(ININ,NPCOUN)=XMET(ININ)/NPOIN
  130. endif
  131. ENDIF
  132. 12 CONTINUE
  133. ENDIF
  134. * KGRAV=XCOOR(/1)/IDIMP1
  135. KGRAV=NPCOUN
  136. if (iveri.ge.2.and.lchang) then
  137. call vetopi(travk,'baryc5 : Apres extension travk 2')
  138. if (ierr.ne.0) return
  139. endif
  140.  
  141. RETURN
  142. END
  143.  
  144.  
  145.  
  146.  

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