Download shpoly.eso

Back to the list

   1 : C SHPOLY    SOURCE    CHAT      05/01/13    03:15:46     5004           
   2 : C SHAPE     SOURCE    BALD      96/02/07    21:19:39     2024
   3 :       SUBROUTINE SHPOLY(QSI,ETA,DZE,NUPT,MELE,SHP,IRET)
   4 : C=======================================================================
   5 : C     
   6 : C     FONCTIONS DE FORME ET LEUR DERIVEES
   7 : C     
   8 : C=======================================================================
   9 :       IMPLICIT INTEGER(I-N)
  10 :       IMPLICIT REAL*8(A-H,O-Z)
  11 : C    Include contenant quelques constantes dont XPI :
  12 : -INC CCREEL
  13 :       DIMENSION SHP(6,*)
  14 : C     
  15 : C     DISTANCE DES POINTS A UN POLYGONE A N COTES
  16 : C     
  17 :       REAL*8 DIST(14)
  18 :       REAL*8 DDISDQ(14)
  19 :       REAL*8 DDISDE(14)
  20 :       REAL*8 NUMER(14)
  21 :       REAL*8 DNUMDQ(14)
  22 :       REAL*8 DNUMDE(14)
  23 :       INTEGER NBNO(111:122)
  24 : C     
  25 : C     NOMBRE DE NOEUDS EN FONCTION DU NUMERO D'ELEMENT
  26 : C     
  27 :       DATA NBNO/3,4,5,6,7,8,9,10,11,12,13,14/
  28 : C     
  29 : C=======================================================================
  30 : C     QSI ETA DZE COORDONNEES REDUITES DU POINT DE GAUSS
  31 : C     NUPT NUMERO DU POINT DE GAUSS
  32 : C     
  33 : C     SHP FONCTIONS DE FORME SHP(1,INO) FONCTIONS DE FORME DU ND INO
  34 : C                            SHP(2,INO) DERIVEES PR RPPRT A QSI
  35 : C                            SHP(3,INO) DERIVEES PR RPPRT A ETA
  36 : C                            SHP(4,INO) DERIVEES PR RPPRT A DZE
  37 : C                            SHP(5,INO) DERIVEES PR RPPRT A 4
  38 : C                               COORDONNEES BARYCENTRIQUES
  39 : C     CAS DE DIMENSION 1
  40 : C               2 OU 3 NOEUDS LIGNE
  41 : C               2 NOEUDS POLYNOME DE HERMITE ET DERIVEES
  42 : C     CAS DE DIMENSION 2
  43 : C               3 OU 6 NOEUDS TRIANGLE
  44 : C               4 OU 8 NOEUDS QUADRILATERE
  45 : C               9 NOEUDS QUADRILATERE
  46 : C               N NOEUDS POLYGONE A N COTES
  47 : C     CAS DE DIMENSION 3 FAIT DANS SHAPE3    ETIQUETTE 50
  48 : C               4 OU 10 NOEUDS TETRAEDRE
  49 : C               5 OU 13 NOEUDS PYRAMIDE
  50 : C               6 OU 15 NOEUDS PRISME
  51 : C               8 OU 20 NOEUDS CUBE
  52 : C=======================================================================
  53 :       IRET=1
  54 : C     
  55 : C     FONCTIONS DE FORME BIDIMENSIONNELLES
  56 : C     
  57 : C     FONCTIONS DE POYGONE A N NOEUDS
  58 : C     
  59 :       N = NBNO(MELE)
  60 : C     
  61 : C     CALCUL DES DISTANCES ET DES DERIVEES DU POINT AUX COTES DU POLYGONE
  62 : C     
  63 :       COPISN = COS (XPI/N)
  64 : C     
  65 :       DO 1010, I = 1, N
  66 : C     
  67 :          ALPHA = 2*XPI*(I-1)/N
  68 :          COSIN = COS(ALPHA)
  69 :          SINUS = SIN(ALPHA)
  70 : C     
  71 :          DIST(I) = COPISN - QSI * COSIN - ETA * SINUS
  72 :          DDISDQ(I) = - COSIN
  73 :          DDISDE(I) = - SINUS
  74 : C     
  75 :  1010 CONTINUE
  76 : C     
  77 : C     CALCUL DES NUMERATEURS ET DENOMINATEUR DES FRACTIONS RATIONNELLES ET DERIVEES
  78 : C     
  79 :       DENOM  = 0.D0
  80 :       DDENDQ = 0.D0
  81 :       DDENDE = 0.D0
  82 : C     
  83 :       DO 1020 I = 1, N
  84 : C     
  85 :          NUMER(I) = 1.D0
  86 :          DNUMDQ(I) = 0.D0
  87 :          DNUMDE(I) = 0.D0
  88 : C     
  89 :          DO 1015 J = 1, N
  90 : C     
  91 :             IF ((J.NE.I).AND.(J.NE.I+1).AND.((I.NE.N).OR.(J.NE.1))) THEN
  92 : C     
  93 :                NUMER(I) = NUMER(I) * DIST(J)
  94 : C     
  95 : C           CALCUL DU PRODUIT DES DISTANCES POUR LA DERIVEE
  96 : C     
  97 :                PROD = 1.D0
  98 : C     
  99 :                DO 1013 K = 1, N
 100 : C     
 101 :                   IF   ((K.NE.I).AND.(K.NE.I+1).AND.((I.NE.N).OR.(K.NE.1
 102 :      $                 )).AND.(K.NE.J)) THEN
 103 : C     
 104 :                      PROD = PROD * DIST(K)
 105 : C     
 106 :                   END IF
 107 : C     
 108 :  1013          CONTINUE
 109 : C     
 110 :                DNUMDQ(I) = DNUMDQ(I) + PROD * DDISDQ(J)
 111 :                DNUMDE(I) = DNUMDE(I) + PROD * DDISDE(J)
 112 : C     
 113 :             END IF
 114 : C     
 115 :  1015    CONTINUE
 116 : C     
 117 :          DENOM = DENOM+NUMER(I)
 118 :          DDENDQ = DDENDQ + DNUMDQ(I)
 119 :          DDENDE = DDENDE + DNUMDE(I)
 120 : C     
 121 :  1020 CONTINUE
 122 : C     
 123 : C     CALCUL DES FONCTIONS DE FORME ET DE LEURS DERIVEES
 124 : C     
 125 :       DO 1030, I = 1, N
 126 : C     
 127 :          SHP(1,I) = NUMER(I)/DENOM
 128 :          SHP(2,I) = (DNUMDQ(I)*DENOM - NUMER(I)*DDENDQ)/(DENOM*DENOM)
 129 :          SHP(3,I) = (DNUMDE(I)*DENOM - NUMER(I)*DDENDE)/(DENOM*DENOM)
 130 : C     
 131 :  1030 CONTINUE
 132 : C     
 133 :       END
 134 : 
 135 : 
 136 : 
 137 : 
 138 : 
 139 : 
 140 : 
 141 :  
 142 :  
 143 :  

© Cast3M 2003 - All rights reserved.
Disclaimer