Download longca.eso

Back to the list

   1 : C LONGCA    SOURCE    FANDEUR   12/04/16    21:15:13     7357           
   2 :       SUBROUTINE LONGCA(IPMAIL,IB,LCAR)
   3 : C 
   4 : C Declaration de variables
   5 : C
   6 :       IMPLICIT INTEGER(I-N)
   7 :       IMPLICIT REAL*8 (A-H,O-Z)
   8 : C
   9 :       REAL*8 LCAR
  10 : C 
  11 : C Insertion des includes 
  12 : C Remarque : le segment MCOORD est toujours actif
  13 : C     
  14 : -INC CCOPTIO
  15 : -INC CCGEOME
  16 : -INC SMCOORD
  17 : -INC SMELEME
  18 : C
  19 :       IDIMP1 = IDIM+1
  20 : C---------------------------------------------------------------------
  21 : C         ************************************************************
  22 : C         *  CALCUL DE LA LONGUEUR CARACTERISTIQUE D'un ELEMENT      *
  23 : C         ************************************************************
  24 : C--------------------------------------------------------------------- 
  25 : C
  26 :       MELEME = IPMAIL
  27 : ******      SEGACT MELEME
  28 : C
  29 : C Adresse de la description des faces dans LDEL
  30 : C      
  31 :       IAD=LTEL(2,ITYPEL)
  32 : C
  33 : C Type de la face de l'élément courant
  34 : C       
  35 :       ITYP=LDEL(1,IAD)
  36 : C
  37 : C Nombre de point de la face
  38 : C      
  39 :       NPFAC=KDFAC(1,ITYP)
  40 : C
  41 : C Adresse de la face dans LFAC
  42 : C       
  43 :       JAD=LDEL(2,IAD)-1
  44 : C
  45 : C Adresse de description des triangles dans KFAC
  46 : C
  47 :       IDEP=KDFAC(2,ITYP)
  48 : C
  49 : C Initialisation 
  50 : C
  51 :       ABC = 0.
  52 : C
  53 : C Boucle sur les triangles
  54 : C       
  55 :       IFEP=IDEP+3*(KDFAC(3,ITYP)-1)
  56 : C
  57 :       DO 242 ITRIAN=IDEP,IFEP,3
  58 : C
  59 : C Extraction des trois noeuds du triangle courant
  60 : C       
  61 :          IAFA=LFAC(JAD+KFAC(ITRIAN))
  62 :          IBFA=LFAC(JAD+KFAC(ITRIAN+1))
  63 :          ICFA=LFAC(JAD+KFAC(ITRIAN+2))
  64 : C
  65 : C Numéro des trois noeuds dans le meleme / Position dans le MCOORD
  66 : C         
  67 :          NA = IDIMP1 * (NUM(IAFA,IB)-1)
  68 :          NB = IDIMP1 * (NUM(IBFA,IB)-1)
  69 :          NC = IDIMP1 * (NUM(ICFA,IB)-1)
  70 : C         
  71 : C Recherche des coordonées du point B et des vecteurs BA et BC
  72 : C
  73 :           XB=XCOOR(NB+1)
  74 :           YB=XCOOR(NB+2)
  75 :           ZB=XCOOR(NB+3)
  76 :           
  77 :           IF (IDIM.EQ.2) ZB=0.
  78 :           
  79 :           XBA=XCOOR(NA+1)-XB
  80 :           YBA=XCOOR(NA+2)-YB
  81 :           ZBA=XCOOR(NA+3)-ZB
  82 :           
  83 :           IF (IDIM.EQ.2) ZBA=0.
  84 :           
  85 :           XBC=XCOOR(NC+1)-XB
  86 :           YBC=XCOOR(NC+2)-YB
  87 :           ZBC=XCOOR(NC+3)-ZB
  88 :           
  89 :           IF (IDIM.EQ.2) ZBC=0.
  90 : C
  91 : C Calcul du produit vectoriel des vecteurs BA et BC
  92 : C          
  93 :           XV=YBA*ZBC-ZBA*YBC
  94 :           YV=ZBA*XBC-XBA*ZBC
  95 :           ZV=XBA*YBC-YBA*XBC
  96 : C
  97 : C Calcul de l'aire du triangle (norme du produit vectoriel divisée par 2)
  98 : C Nota : La division par 2 est effectuee une seule fois en sortie de boucle
  99 : 
 100 : C*        XS=XV/2
 101 : C*        YS=YV/2
 102 : C*        ZS=ZV/2
 103 : C*        ABC=ABC+SQRT(XS*XS+YS*YS+ZS*ZS)
 104 :           
 105 :           ABC = ABC+SQRT(XV*XV+YV*YV+ZV*ZV)
 106 :            
 107 :  242   CONTINUE
 108 : C
 109 : C Mise en facteur du 1/2 de l'aire de chaque triangle
 110 :           ABC = 0.5D0 * ABC
 111 : C 
 112 : C Calcul de la longueur caractéristique (d'après FEENSTRA, 1994)
 113 : C
 114 :        IF (KDEGRE(ITYPEL).EQ.2) THEN
 115 : C*     ALPHA=1.
 116 :          LCAR = SQRT(ABC)
 117 :        ELSE 
 118 : C*     ALPHA=SQRT(2.)
 119 :          LCAR=SQRT(2.D0*ABC)
 120 :        ENDIF       
 121 : C*     LCAR=ALPHA*SQRT(ABC)
 122 : C
 123 : C Desactivation du segment MELEME
 124 : C 
 125 : ******       SEGDES MELEME
 126 : 
 127 :        RETURN
 128 :        END
 129 : 
 130 :  

© Cast3M 2003 - All rights reserved.
Disclaimer