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