Download hyshp.eso

Back to the list

   1 : C HYSHP     SOURCE    CHAT      05/01/13    00:27:39     5004           
   2 :       SUBROUTINE HYSHP(QSI,ETA,DZE,NEF,NBDDL,NDIM,SHY,IRET)
   3 : C-----------------------------------------------------------------------
   4 : C Fonctions de base des elements hybrides (elements de H(div))
   5 : C-----------------------------------------------------------------------
   6 : C
   7 : C---------------------------
   8 : C Parametres Entree/Sortie :
   9 : C---------------------------
  10 : C
  11 : C E/  QSI     | Coordonnees reduites (i.e. dans le repere local lie
  12 : C E/  ETA     | a l'element de reference [-1,1]x[-1,1]) du point ou
  13 : C E/  DZE     | on calcule les fonctions de base hybrides
  14 : C E/  NEF     : Numero de l'element fini hybride dans NOMTP
  15 : C E/  NBDDL   : Nombre de noeuds portant des degres de liberte
  16 : C E/  NDIM    : Dimension de SHY=IDIM*(IDIM+1) (IDIM=2 EN 2D,3 EN 3D)
  17 : C  /S SHY     : Fonctions de base rangees par colonnes. On stocke la
  18 : C               valeur de la fonction, puis la derivee par rapport a
  19 : C               chacune des directions.
  20 : C  /S IRET    : Vaut 1 si l'element n'est pas encore implante
  21 : C
  22 : C-----------------------------------------------------------------------
  23 : C
  24 : C Langage : FORTRAN77
  25 : C
  26 : C Auteurs : F.DABBENE 08/93
  27 : C           C.MARTIN  10/94 : Extension au 3D
  28 : C-----------------------------------------------------------------------
  29 :       IMPLICIT INTEGER(I-N)
  30 :       IMPLICIT REAL*8(A-H,O-Z)                                                  
  31 : C
  32 :       PARAMETER (XZER=0.D0, UN=1.D0, DEUX=2.D0, QUATRE=4.D0, HUIT=8.D0)
  33 :       DIMENSION SHY(NDIM,NBDDL)
  34 : C
  35 :       IRET = 0
  36 : C                                                                               
  37 :       IF (NEF.EQ.99) THEN
  38 : C                                                                               
  39 : C= Triangle a 3 Noeuds : HYT3
  40 : C                                                                               
  41 :          SHY(1,1) = QSI
  42 :          SHY(2,1) = ETA - UN
  43 :          SHY(3,1) = UN
  44 :          SHY(4,1) = XZER
  45 :          SHY(5,1) = XZER
  46 :          SHY(6,1) = UN
  47 : C
  48 :          SHY(1,2) = QSI
  49 :          SHY(2,2) = ETA
  50 :          SHY(3,2) = UN
  51 :          SHY(4,2) = XZER
  52 :          SHY(5,2) = XZER
  53 :          SHY(6,2) = UN
  54 : C
  55 :          SHY(1,3) = QSI - UN
  56 :          SHY(2,3) = ETA
  57 :          SHY(3,3) = UN
  58 :          SHY(4,3) = XZER
  59 :          SHY(5,3) = XZER
  60 :          SHY(6,3) = UN
  61 : C
  62 :       ELSEIF (NEF.EQ.100) THEN
  63 : C                                                                               
  64 : C= Carre a 4 Noeuds : HYQ4
  65 : C                                                                               
  66 :          SHY(1,1) = XZER
  67 :          SHY(2,1) = (ETA - UN) / QUATRE
  68 :          SHY(3,1) = XZER
  69 :          SHY(4,1) = XZER
  70 :          SHY(5,1) = XZER
  71 :          SHY(6,1) = UN / QUATRE
  72 : C
  73 :          SHY(1,2) = (QSI + UN) / QUATRE
  74 :          SHY(2,2) = XZER
  75 :          SHY(3,2) = UN / QUATRE
  76 :          SHY(4,2) = XZER
  77 :          SHY(5,2) = XZER
  78 :          SHY(6,2) = XZER
  79 : C
  80 :          SHY(1,3) = XZER
  81 :          SHY(2,3) = (ETA + UN) / QUATRE
  82 :          SHY(3,3) = XZER
  83 :          SHY(4,3) = XZER
  84 :          SHY(5,3) = XZER
  85 :          SHY(6,3) = UN / QUATRE
  86 : C
  87 :          SHY(1,4) = (QSI - UN) / QUATRE
  88 :          SHY(2,4) = XZER
  89 :          SHY(3,4) = UN / QUATRE
  90 :          SHY(4,4) = XZER
  91 :          SHY(5,4) = XZER
  92 :          SHY(6,4) = XZER
  93 : C
  94 :       ELSEIF (NEF.EQ.101) THEN
  95 : C
  96 : C= Tetraedre a 4 Noeuds : HYT4
  97 : C
  98 :          SHY(1,1)  = DEUX * QSI
  99 :          SHY(2,1)  = DEUX * ETA - DEUX
 100 :          SHY(3,1)  = DEUX * DZE
 101 :          SHY(4,1)  = DEUX
 102 :          SHY(5,1)  = XZER
 103 :          SHY(6,1)  = XZER
 104 :          SHY(7,1)  = XZER
 105 :          SHY(8,1)  = DEUX
 106 :          SHY(9,1)  = XZER
 107 :          SHY(10,1) = XZER
 108 :          SHY(11,1) = XZER
 109 :          SHY(12,1) = DEUX
 110 : C
 111 :          SHY(1,2)  = DEUX * QSI
 112 :          SHY(2,2)  = DEUX * ETA
 113 :          SHY(3,2)  = DEUX * DZE - DEUX
 114 :          SHY(4,2)  = DEUX
 115 :          SHY(5,2)  = XZER
 116 :          SHY(6,2)  = XZER
 117 :          SHY(7,2)  = XZER
 118 :          SHY(8,2)  = DEUX
 119 :          SHY(9,2)  = XZER
 120 :          SHY(10,2) = XZER
 121 :          SHY(11,2) = XZER
 122 :          SHY(12,2) = DEUX
 123 : C
 124 :          SHY(1,3)  = DEUX * QSI
 125 :          SHY(2,3)  = DEUX * ETA
 126 :          SHY(3,3)  = DEUX * DZE
 127 :          SHY(4,3)  = DEUX
 128 :          SHY(5,3)  = XZER
 129 :          SHY(6,3)  = XZER
 130 :          SHY(7,3)  = XZER
 131 :          SHY(8,3)  = DEUX
 132 :          SHY(9,3)  = XZER
 133 :          SHY(10,3) = XZER
 134 :          SHY(11,3) = XZER
 135 :          SHY(12,3) = DEUX
 136 : C
 137 :          SHY(1,4)  = DEUX * QSI - DEUX
 138 :          SHY(2,4)  = DEUX * ETA
 139 :          SHY(3,4)  = DEUX * DZE
 140 :          SHY(4,4)  = DEUX
 141 :          SHY(5,4)  = XZER
 142 :          SHY(6,4)  = XZER
 143 :          SHY(7,4)  = XZER
 144 :          SHY(8,4)  = DEUX
 145 :          SHY(9,4)  = XZER
 146 :          SHY(10,4) = XZER
 147 :          SHY(11,4) = XZER
 148 :          SHY(12,4) = DEUX
 149 : C
 150 : C
 151 :       ELSEIF (NEF.EQ.102) THEN
 152 : C
 153 : C= Prisme a 6 Noeuds : HYP6
 154 : C
 155 :          SHY(1,1)  = XZER
 156 :          SHY(2,1)  = XZER
 157 :          SHY(3,1)  = DZE - UN
 158 :          SHY(4,1)  = XZER
 159 :          SHY(5,1)  = XZER
 160 :          SHY(6,1)  = XZER
 161 :          SHY(7,1)  = XZER
 162 :          SHY(8,1)  = XZER
 163 :          SHY(9,1)  = XZER
 164 :          SHY(10,1) = XZER
 165 :          SHY(11,1) = XZER
 166 :          SHY(12,1) = UN
 167 : C
 168 :          SHY(1,2)  = XZER
 169 :          SHY(2,2)  = XZER
 170 :          SHY(3,2)  = DZE + UN
 171 :          SHY(4,2)  = XZER
 172 :          SHY(5,2)  = XZER
 173 :          SHY(6,2)  = XZER
 174 :          SHY(7,2)  = XZER
 175 :          SHY(8,2)  = XZER
 176 :          SHY(9,2)  = XZER
 177 :          SHY(10,2) = XZER
 178 :          SHY(11,2) = XZER
 179 :          SHY(12,2) = UN
 180 : C
 181 :          SHY(1,3)  = QSI / DEUX
 182 :          SHY(2,3)  = (ETA - UN) / DEUX
 183 :          SHY(3,3)  = XZER
 184 :          SHY(4,3)  = UN / DEUX
 185 :          SHY(5,3)  = XZER
 186 :          SHY(6,3)  = XZER
 187 :          SHY(7,3)  = XZER
 188 :          SHY(8,3)  = UN / DEUX
 189 :          SHY(9,3)  = XZER
 190 :          SHY(10,3) = XZER
 191 :          SHY(11,3) = XZER
 192 :          SHY(12,3) = XZER
 193 : C
 194 :          SHY(1,4)  = QSI / DEUX
 195 :          SHY(2,4)  = ETA / DEUX
 196 :          SHY(3,4)  = XZER
 197 :          SHY(4,4)  = UN / DEUX
 198 :          SHY(5,4)  = XZER
 199 :          SHY(6,4)  = XZER
 200 :          SHY(7,4)  = XZER
 201 :          SHY(8,4)  = UN / DEUX
 202 :          SHY(9,4)  = XZER
 203 :          SHY(10,4) = XZER
 204 :          SHY(11,4) = XZER
 205 :          SHY(12,4) = XZER
 206 : C
 207 :          SHY(1,5)  = (QSI - UN) / DEUX
 208 :          SHY(2,5)  = ETA / DEUX
 209 :          SHY(3,5)  = XZER
 210 :          SHY(4,5)  = UN / DEUX
 211 :          SHY(5,5)  = XZER
 212 :          SHY(6,5)  = XZER
 213 :          SHY(7,5)  = XZER
 214 :          SHY(8,5)  = UN / DEUX
 215 :          SHY(9,5)  = XZER
 216 :          SHY(10,5) = XZER
 217 :          SHY(11,5) = XZER
 218 :          SHY(12,5) = XZER
 219 : C
 220 :       ELSEIF (NEF.EQ.103) THEN
 221 : C
 222 : C= Cube a 8 Noeuds : HYC8
 223 : C
 224 :          SHY(1,1)  = XZER
 225 :          SHY(2,1)  = XZER
 226 :          SHY(3,1)  = (DZE - UN) / HUIT
 227 :          SHY(4,1)  = XZER
 228 :          SHY(5,1)  = XZER
 229 :          SHY(6,1)  = XZER
 230 :          SHY(7,1)  = XZER
 231 :          SHY(8,1)  = XZER
 232 :          SHY(9,1)  = XZER
 233 :          SHY(10,1) = XZER
 234 :          SHY(11,1) = XZER
 235 :          SHY(12,1) = UN / HUIT
 236 : C
 237 :          SHY(1,2)  = XZER
 238 :          SHY(2,2)  = XZER
 239 :          SHY(3,2)  = (DZE + UN) / HUIT
 240 :          SHY(4,2)  = XZER
 241 :          SHY(5,2)  = XZER
 242 :          SHY(6,2)  = XZER
 243 :          SHY(7,2)  = XZER
 244 :          SHY(8,2)  = XZER
 245 :          SHY(9,2)  = XZER
 246 :          SHY(10,2) = XZER
 247 :          SHY(11,2) = XZER
 248 :          SHY(12,2) = UN / HUIT
 249 : C
 250 :          SHY(1,3)  = XZER
 251 :          SHY(2,3)  = (ETA - UN) / HUIT
 252 :          SHY(3,3)  = XZER
 253 :          SHY(4,3)  = XZER
 254 :          SHY(5,3)  = XZER
 255 :          SHY(6,3)  = XZER
 256 :          SHY(7,3)  = XZER
 257 :          SHY(8,3)  = UN / HUIT
 258 :          SHY(9,3)  = XZER
 259 :          SHY(10,3) = XZER
 260 :          SHY(11,3) = XZER
 261 :          SHY(12,3) = XZER
 262 : C
 263 :          SHY(1,4)  = (QSI + UN) / HUIT
 264 :          SHY(2,4)  = XZER
 265 :          SHY(3,4)  = XZER
 266 :          SHY(4,4)  = UN / HUIT
 267 :          SHY(5,4)  = XZER
 268 :          SHY(6,4)  = XZER
 269 :          SHY(7,4)  = XZER
 270 :          SHY(8,4)  = XZER
 271 :          SHY(9,4)  = XZER
 272 :          SHY(10,4) = XZER
 273 :          SHY(11,4) = XZER
 274 :          SHY(12,4) = XZER
 275 : C
 276 :          SHY(1,5)  = XZER
 277 :          SHY(2,5)  = (ETA + UN) / HUIT
 278 :          SHY(3,5)  = XZER
 279 :          SHY(4,5)  = XZER
 280 :          SHY(5,5)  = XZER
 281 :          SHY(6,5)  = XZER
 282 :          SHY(7,5)  = XZER
 283 :          SHY(8,5)  = UN / HUIT
 284 :          SHY(9,5)  = XZER
 285 :          SHY(10,5) = XZER
 286 :          SHY(11,5) = XZER
 287 :          SHY(12,5) = XZER
 288 : C
 289 :          SHY(1,6)  = (QSI - UN) / HUIT
 290 :          SHY(2,6)  = XZER
 291 :          SHY(3,6)  = XZER
 292 :          SHY(4,6)  = UN / HUIT
 293 :          SHY(5,6)  = XZER
 294 :          SHY(6,6)  = XZER
 295 :          SHY(7,6)  = XZER
 296 :          SHY(8,6)  = XZER
 297 :          SHY(9,6)  = XZER
 298 :          SHY(10,6) = XZER
 299 :          SHY(11,6) = XZER
 300 :          SHY(12,6) = XZER
 301 :       ELSE
 302 :          IRET = 1
 303 :       ENDIF
 304 : C
 305 :       RETURN                                                                    
 306 :       END                                                                       
 307 :  

© Cast3M 2003 - All rights reserved.
Disclaimer