1 subroutine gtminv( rminv ) 2c--------------------------------------------------------------------- 3c this routine returns the inverse of the local mass matrix, 4c minv = Inverse[ Integrate[ N_a * N_b ] ]. 5c 6c--------------------------------------------------------------------- 7 include "common.h" 8 9 dimension rminv(nshape,nshape) 10c 11c.... mass matrix inverse for quadratic tets 12c 13 if (nshape == 10) then 14 rminv(1,1) = 600.00000000000d0 15 rminv(1,2) = 60.000000000000d0 16 rminv(1,3) = 60.000000000000d0 17 rminv(1,4) = 60.000000000000d0 18 rminv(1,5) = 630.00000000000d0 19 rminv(1,6) = 0.0d0 20 rminv(1,7) = 630.00000000000d0 21 rminv(1,8) = 630.00000000000d0 22 rminv(1,9) = 0.0d0 23 rminv(1,10) = 0.0d0 24 rminv(2,1) = 60.000000000000d0 25 rminv(2,2) = 600.00000000000d0 26 rminv(2,3) = 60.000000000000d0 27 rminv(2,4) = 60.000000000000d0 28 rminv(2,5) = 630.00000000000d0 29 rminv(2,6) = 630.00000000000d0 30 rminv(2,7) = 0.d0 31 rminv(2,8) = 0.d0 32 rminv(2,9) = 630.000000000000d0 33 rminv(2,10) = 0.0d0 34 rminv(3,1) = 60.000000000000d0 35 rminv(3,2) = 60.000000000000d0 36 rminv(3,3) = 600.000000000000d0 37 rminv(3,4) = 60.000000000000d0 38 rminv(3,5) = 0.0d0 39 rminv(3,6) = 630.00000000000d0 40 rminv(3,7) = 630.00000000000d0 41 rminv(3,8) = 0.0d0 42 rminv(3,9) = 0.0d0 43 rminv(3,10) = 630.00000000000d0 44 rminv(4,1) = 60.000000000000d0 45 rminv(4,2) = 60.000000000000d0 46 rminv(4,3) = 60.000000000000d0 47 rminv(4,4) = 600.00000000000d0 48 rminv(4,5) = 0.d0 49 rminv(4,6) = 0.d0 50 rminv(4,7) = 0.d0 51 rminv(4,8) = 630.000000000000d0 52 rminv(4,9) = 630.00000000000d0 53 rminv(4,10) = 630.00000000000d0 54 rminv(5,1) = 630.00000000000d0 55 rminv(5,2) = 630.00000000000d0 56 rminv(5,3) = 0.0d0 57 rminv(5,4) = 0.0d0 58 rminv(5,5) = 1890.00000000000d0 59 rminv(5,6) = 315.00000000000d0 60 rminv(5,7) = 315.00000000000d0 61 rminv(5,8) = 315.00000000000d0 62 rminv(5,9) = 315.00000000000d0 63 rminv(5,10) = 0.0d0 64 rminv(6,1) = 0.0d0 65 rminv(6,2) = 630.000000000000d0 66 rminv(6,3) = 630.000000000000d0 67 rminv(6,4) = 0.0d0 68 rminv(6,5) = 315.00000000000d0 69 rminv(6,6) = 1890.0d0 70 rminv(6,7) = 315.00000000000d0 71 rminv(6,8) = 0.0d0 72 rminv(6,9) = 315.000000000000d0 73 rminv(6,10) = 315.000000000000d0 74 rminv(7,1) = 630.000000000000d0 75 rminv(7,2) = 0.0d0 76 rminv(7,3) = 630.00000000000d0 77 rminv(7,4) = 0.0d0 78 rminv(7,5) = 315.00000000000d0 79 rminv(7,6) = 315.00000000000d0 80 rminv(7,7) = 1890.0000000000d0 81 rminv(7,8) = 315.00000000000d0 82 rminv(7,9) = 0.0d0 83 rminv(7,10) = 315.00000000000d0 84 rminv(8,1) = 630.00000000000d0 85 rminv(8,2) = 0.0d0 86 rminv(8,3) = 0.0d0 87 rminv(8,4) = 630.000000000000d0 88 rminv(8,5) = 315.00000000000d0 89 rminv(8,6) = 0.0d0 90 rminv(8,7) = 315.00000000000d0 91 rminv(8,8) = 1890.0000000000d0 92 rminv(8,9) = 315.00000000000d0 93 rminv(8,10) = 315.00000000000d0 94 rminv(9,1) = 0.0d0 95 rminv(9,2) = 630.000000000000d0 96 rminv(9,3) = 0.0d0 97 rminv(9,4) = 630.00000000000d0 98 rminv(9,5) = 315.00000000000d0 99 rminv(9,6) = 315.00000000000d0 100 rminv(9,7) = 0.0d0 101 rminv(9,8) = 315.00000000000d0 102 rminv(9,9) = 1890.00000000000d0 103 rminv(9,10) = 315.00000000000d0 104 rminv(10,1) = 0.0d0 105 rminv(10,2) = 0.0d0 106 rminv(10,3) = 630.00000000000d0 107 rminv(10,4) = 630.00000000000d0 108 rminv(10,5) = 0.0d0 109 rminv(10,6) = 315.00000000000d0 110 rminv(10,7) = 315.00000000000d0 111 rminv(10,8) = 315.00000000000d0 112 rminv(10,9) = 315.00000000000d0 113 rminv(10,10) = 1890.0000000000d0 114 else if (nshape == 20) then 115c 116c.... cubic tets 117c 118 rminv(1,1) = 2400.d0 119 rminv(1,2) = -120.d0 120 rminv(1,3) = -120.d0 121 rminv(1,4) = -120.d0 122 rminv(1,5) = 2520.d0 123 rminv(1,6) = -2520.d0 124 rminv(1,7) = 0.d0 125 rminv(1,8) = 0.d0 126 rminv(1,9) = 2520.d0 127 rminv(1,10) = 2520.d0 128 rminv(1,11) = 2520.d0 129 rminv(1,12) = -2520.d0 130 rminv(1,13) = 0.d0 131 rminv(1,14) = 0.d0 132 rminv(1,15) = 0.d0 133 rminv(1,16) = 0.d0 134 rminv(1,17) = 10080.d0 135 rminv(1,18) = 10080.d0 136 rminv(1,19) = 0.d0 137 rminv(1,20) = 10080.d0 138 rminv(2,1) = -120.d0 139 rminv(2,2) = 2400.d0 140 rminv(2,3) = -120.d0 141 rminv(2,4) = -120.d0 142 rminv(2,5) = 2520.d0 143 rminv(2,6) = 2520.d0 144 rminv(2,7) = 2520.d0 145 rminv(2,8) = -2520.d0 146 rminv(2,9) = 0.d0 147 rminv(2,10) = 0.d0 148 rminv(2,11) = 0.d0 149 rminv(2,12) = 0.d0 150 rminv(2,13) = 2520.d0 151 rminv(2,14) = -2520.d0 152 rminv(2,15) = 0.d0 153 rminv(2,16) = 0.d0 154 rminv(2,17) = 10080.d0 155 rminv(2,18) = 10080.d0 156 rminv(2,19) = 10080.d0 157 rminv(2,20) = 0.d0 158 rminv(3,1) = -120.d0 159 rminv(3,2) = -120.d0 160 rminv(3,3) = 2400.d0 161 rminv(3,4) = -120.d0 162 rminv(3,5) = 0.d0 163 rminv(3,6) = 0.d0 164 rminv(3,7) = 2520.d0 165 rminv(3,8) = 2520.d0 166 rminv(3,9) = 2520.d0 167 rminv(3,10) = -2520.d0 168 rminv(3,11) = 0.d0 169 rminv(3,12) = 0.d0 170 rminv(3,13) = 0.d0 171 rminv(3,14) = 0.d0 172 rminv(3,15) = 2520.d0 173 rminv(3,16) = -2520.d0 174 rminv(3,17) = 10080.d0 175 rminv(3,18) = 0.d0 176 rminv(3,19) = 10080.d0 177 rminv(3,20) = 10080.d0 178 rminv(4,1) = -120.d0 179 rminv(4,2) = -120.d0 180 rminv(4,3) = -120.d0 181 rminv(4,4) = 2400.d0 182 rminv(4,5) = 0.d0 183 rminv(4,6) = 0.d0 184 rminv(4,7) = 0.d0 185 rminv(4,8) = 0.d0 186 rminv(4,9) = 0.d0 187 rminv(4,10) = 0.d0 188 rminv(4,11) = 2520.d0 189 rminv(4,12) = 2520.d0 190 rminv(4,13) = 2520.d0 191 rminv(4,14) = 2520.d0 192 rminv(4,15) = 2520.d0 193 rminv(4,16) = 2520.d0 194 rminv(4,17) = 0.d0 195 rminv(4,18) = 10080.d0 196 rminv(4,19) = 10080.d0 197 rminv(4,20) = 10080.d0 198 rminv(5,1) = 2520.d0 199 rminv(5,2) = 2520.d0 200 rminv(5,3) = 0.d0 201 rminv(5,4) = 0.d0 202 rminv(5,5) = 7560.d0 203 rminv(5,6) = 0.d0 204 rminv(5,7) = 3150.d0 205 rminv(5,8) = -1890.d0 206 rminv(5,9) = 3150.d0 207 rminv(5,10) = 1890.d0 208 rminv(5,11) = 3150.d0 209 rminv(5,12) = -1890.d0 210 rminv(5,13) = 3150.d0 211 rminv(5,14) = -1890.d0 212 rminv(5,15) = 0.d0 213 rminv(5,16) = 0.d0 214 rminv(5,17) = 37800.d0 215 rminv(5,18) = 37800.d0 216 rminv(5,19) = 7560.d0 217 rminv(5,20) = 7560.d0 218 rminv(6,1) = -2520.d0 219 rminv(6,2) = 2520.d0 220 rminv(6,3) = 0.d0 221 rminv(6,4) = 0.d0 222 rminv(6,5) = 0.d0 223 rminv(6,6) = 12600.d0 224 rminv(6,7) = 1890.d0 225 rminv(6,8) = -630.d0 226 rminv(6,9) = -1890.d0 227 rminv(6,10) = -630.d0 228 rminv(6,11) = -1890.d0 229 rminv(6,12) = 630.d0 230 rminv(6,13) = 1890.d0 231 rminv(6,14) = -630.d0 232 rminv(6,15) = 0.d0 233 rminv(6,16) = 0.d0 234 rminv(6,17) = 0.d0 235 rminv(6,18) = 0.d0 236 rminv(6,19) = 2520.d0 237 rminv(6,20) = -2520.d0 238 rminv(7,1) = 0.d0 239 rminv(7,2) = 2520.d0 240 rminv(7,3) = 2520.d0 241 rminv(7,4) = 0.d0 242 rminv(7,5) = 3150.d0 243 rminv(7,6) = 1890.d0 244 rminv(7,7) = 7560.d0 245 rminv(7,8) = 0.d0 246 rminv(7,9) = 3150.d0 247 rminv(7,10) = -1890.d0 248 rminv(7,11) = 0.d0 249 rminv(7,12) = 0.d0 250 rminv(7,13) = 3150.d0 251 rminv(7,14) = -1890.d0 252 rminv(7,15) = 3150.d0 253 rminv(7,16) = -1890.d0 254 rminv(7,17) = 37800.d0 255 rminv(7,18) = 7560.d0 256 rminv(7,19) = 37800.d0 257 rminv(7,20) = 7560.d0 258 rminv(8,1) = 0.d0 259 rminv(8,2) = -2520.d0 260 rminv(8,3) = 2520.d0 261 rminv(8,4) = 0.d0 262 rminv(8,5) = -1890.d0 263 rminv(8,6) = -630.d0 264 rminv(8,7) = 0.d0 265 rminv(8,8) = 12600.d0 266 rminv(8,9) = 1890.d0 267 rminv(8,10) = -630.d0 268 rminv(8,11) = 0.d0 269 rminv(8,12) = 0.d0 270 rminv(8,13) = -1890.d0 271 rminv(8,14) = 630.d0 272 rminv(8,15) = 1890.d0 273 rminv(8,16) = -630.d0 274 rminv(8,17) = 0.d0 275 rminv(8,18) = -2520.d0 276 rminv(8,19) = 0.d0 277 rminv(8,20) = 2520.d0 278 rminv(9,1) = 2520.d0 279 rminv(9,2) = 0.d0 280 rminv(9,3) = 2520.d0 281 rminv(9,4) = 0.d0 282 rminv(9,5) = 3150.d0 283 rminv(9,6) = -1890.d0 284 rminv(9,7) = 3150.d0 285 rminv(9,8) = 1890.d0 286 rminv(9,9) = 7560.d0 287 rminv(9,10) = 0.d0 288 rminv(9,11) = 3150.d0 289 rminv(9,12) = -1890.d0 290 rminv(9,13) = 0.d0 291 rminv(9,14) = 0.d0 292 rminv(9,15) = 3150.d0 293 rminv(9,16) = -1890.d0 294 rminv(9,17) = 37800.d0 295 rminv(9,18) = 7560.d0 296 rminv(9,19) = 7560.d0 297 rminv(9,20) = 37800.d0 298 rminv(10,1) = 2520.d0 299 rminv(10,2) = 0.d0 300 rminv(10,3) = -2520.d0 301 rminv(10,4) = 0.d0 302 rminv(10,5) = 1890.d0 303 rminv(10,6) = -630.d0 304 rminv(10,7) = -1890.d0 305 rminv(10,8) = -630.d0 306 rminv(10,9) = 0.d0 307 rminv(10,10) = 12600.d0 308 rminv(10,11) = 1890.d0 309 rminv(10,12) = -630.d0 310 rminv(10,13) = 0.d0 311 rminv(10,14) = 0.d0 312 rminv(10,15) = -1890.d0 313 rminv(10,16) = 630.d0 314 rminv(10,17) = 0.d0 315 rminv(10,18) = 2520.d0 316 rminv(10,19) = -2520.d0 317 rminv(10,20) = 0.d0 318 rminv(11,1) = 2520.d0 319 rminv(11,2) = 0.d0 320 rminv(11,3) = 0.d0 321 rminv(11,4) = 2520.d0 322 rminv(11,5) = 3150.d0 323 rminv(11,6) = -1890.d0 324 rminv(11,7) = 0.d0 325 rminv(11,8) = 0.d0 326 rminv(11,9) = 3150.d0 327 rminv(11,10) = 1890.d0 328 rminv(11,11) = 7560.d0 329 rminv(11,12) = 0.d0 330 rminv(11,13) = 3150.d0 331 rminv(11,14) = 1890.d0 332 rminv(11,15) = 3150.d0 333 rminv(11,16) = 1890.d0 334 rminv(11,17) = 7560.d0 335 rminv(11,18) = 37800.d0 336 rminv(11,19) = 7560.d0 337 rminv(11,20) = 37800.d0 338 rminv(12,1) = -2520.d0 339 rminv(12,2) = 0.d0 340 rminv(12,3) = 0.d0 341 rminv(12,4) = 2520.d0 342 rminv(12,5) = -1890.d0 343 rminv(12,6) = 630.d0 344 rminv(12,7) = 0.d0 345 rminv(12,8) = 0.d0 346 rminv(12,9) = -1890.d0 347 rminv(12,10) = -630.d0 348 rminv(12,11) = 0.d0 349 rminv(12,12) = 12600.d0 350 rminv(12,13) = 1890.d0 351 rminv(12,14) = 630.d0 352 rminv(12,15) = 1890.d0 353 rminv(12,16) = 630.d0 354 rminv(12,17) = -2520.d0 355 rminv(12,18) = 0.d0 356 rminv(12,19) = 2520.d0 357 rminv(12,20) = 0.d0 358 rminv(13,1) = 0.d0 359 rminv(13,2) = 2520.d0 360 rminv(13,3) = 0.d0 361 rminv(13,4) = 2520.d0 362 rminv(13,5) = 3150.d0 363 rminv(13,6) = 1890.d0 364 rminv(13,7) = 3150.d0 365 rminv(13,8) = -1890.d0 366 rminv(13,9) = 0.d0 367 rminv(13,10) = 0.d0 368 rminv(13,11) = 3150.d0 369 rminv(13,12) = 1890.d0 370 rminv(13,13) = 7560.d0 371 rminv(13,14) = 0.d0 372 rminv(13,15) = 3150.d0 373 rminv(13,16) = 1890.d0 374 rminv(13,17) = 7560.d0 375 rminv(13,18) = 37800.d0 376 rminv(13,19) = 37800.d0 377 rminv(13,20) = 7560.d0 378 rminv(14,1) = 0.d0 379 rminv(14,2) = -2520.d0 380 rminv(14,3) = 0.d0 381 rminv(14,4) = 2520.d0 382 rminv(14,5) = -1890.d0 383 rminv(14,6) = -630.d0 384 rminv(14,7) = -1890.d0 385 rminv(14,8) = 630.d0 386 rminv(14,9) = 0.d0 387 rminv(14,10) = 0.d0 388 rminv(14,11) = 1890.d0 389 rminv(14,12) = 630.d0 390 rminv(14,13) = 0.d0 391 rminv(14,14) = 12600.d0 392 rminv(14,15) = 1890.d0 393 rminv(14,16) = 630.d0 394 rminv(14,17) = -2520.d0 395 rminv(14,18) = 0.d0 396 rminv(14,19) = 0.d0 397 rminv(14,20) = 2520.d0 398 rminv(15,1) = 0.d0 399 rminv(15,2) = 0.d0 400 rminv(15,3) = 2520.d0 401 rminv(15,4) = 2520.d0 402 rminv(15,5) = 0.d0 403 rminv(15,6) = 0.d0 404 rminv(15,7) = 3150.d0 405 rminv(15,8) = 1890.d0 406 rminv(15,9) = 3150.d0 407 rminv(15,10) = -1890.d0 408 rminv(15,11) = 3150.d0 409 rminv(15,12) = 1890.d0 410 rminv(15,13) = 3150.d0 411 rminv(15,14) = 1890.d0 412 rminv(15,15) = 7560.d0 413 rminv(15,16) = 0.d0 414 rminv(15,17) = 7560.d0 415 rminv(15,18) = 7560.d0 416 rminv(15,19) = 37800.d0 417 rminv(15,20) = 37800.d0 418 rminv(16,1) = 0.d0 419 rminv(16,2) = 0.d0 420 rminv(16,3) = -2520.d0 421 rminv(16,4) = 2520.d0 422 rminv(16,5) = 0.d0 423 rminv(16,6) = 0.d0 424 rminv(16,7) = -1890.d0 425 rminv(16,8) = -630.d0 426 rminv(16,9) = -1890.d0 427 rminv(16,10) = 630.d0 428 rminv(16,11) = 1890.d0 429 rminv(16,12) = 630.d0 430 rminv(16,13) = 1890.d0 431 rminv(16,14) = 630.d0 432 rminv(16,15) = 0.d0 433 rminv(16,16) = 12600.d0 434 rminv(16,17) = -2520.d0 435 rminv(16,18) = 2520.d0 436 rminv(16,19) = 0.d0 437 rminv(16,20) = 0.d0 438 rminv(17,1) = 10080.d0 439 rminv(17,2) = 10080.d0 440 rminv(17,3) = 10080.d0 441 rminv(17,4) = 0.d0 442 rminv(17,5) = 37800.d0 443 rminv(17,6) = 0.d0 444 rminv(17,7) = 37800.d0 445 rminv(17,8) = 0.d0 446 rminv(17,9) = 37800.d0 447 rminv(17,10) = 0.d0 448 rminv(17,11) = 7560.d0 449 rminv(17,12) = -2520.d0 450 rminv(17,13) = 7560.d0 451 rminv(17,14) = -2520.d0 452 rminv(17,15) = 7560.d0 453 rminv(17,16) = -2520.d0 454 rminv(17,17) = 529200.d0 455 rminv(17,18) = 65520.d0 456 rminv(17,19) = 65520.d0 457 rminv(17,20) = 65520.d0 458 rminv(18,1) = 10080.d0 459 rminv(18,2) = 10080.d0 460 rminv(18,3) = 0.d0 461 rminv(18,4) = 10080.d0 462 rminv(18,5) = 37800.d0 463 rminv(18,6) = 0.d0 464 rminv(18,7) = 7560.d0 465 rminv(18,8) = -2520.d0 466 rminv(18,9) = 7560.d0 467 rminv(18,10) = 2520.d0 468 rminv(18,11) = 37800.d0 469 rminv(18,12) = 0.d0 470 rminv(18,13) = 37800.d0 471 rminv(18,14) = 0.d0 472 rminv(18,15) = 7560.d0 473 rminv(18,16) = 2520.d0 474 rminv(18,17) = 65520.d0 475 rminv(18,18) = 529200.d0 476 rminv(18,19) = 65520.d0 477 rminv(18,20) = 65520.d0 478 rminv(19,1) = 0.d0 479 rminv(19,2) = 10080.d0 480 rminv(19,3) = 10080.d0 481 rminv(19,4) = 10080.d0 482 rminv(19,5) = 7560.d0 483 rminv(19,6) = 2520.d0 484 rminv(19,7) = 37800.d0 485 rminv(19,8) = 0.d0 486 rminv(19,9) = 7560.d0 487 rminv(19,10) = -2520.d0 488 rminv(19,11) = 7560.d0 489 rminv(19,12) = 2520.d0 490 rminv(19,13) = 37800.d0 491 rminv(19,14) = 0.d0 492 rminv(19,15) = 37800.d0 493 rminv(19,16) = 0.d0 494 rminv(19,17) = 65520.d0 495 rminv(19,18) = 65520.d0 496 rminv(19,19) = 529200.d0 497 rminv(19,20) = 65520.d0 498 rminv(20,1) = 10080.d0 499 rminv(20,2) = 0.d0 500 rminv(20,3) = 10080.d0 501 rminv(20,4) = 10080.d0 502 rminv(20,5) = 7560.d0 503 rminv(20,6) = -2520.d0 504 rminv(20,7) = 7560.d0 505 rminv(20,8) = 2520.d0 506 rminv(20,9) = 37800.d0 507 rminv(20,10) = 0.d0 508 rminv(20,11) = 37800.d0 509 rminv(20,12) = 0.d0 510 rminv(20,13) = 7560.d0 511 rminv(20,14) = 2520.d0 512 rminv(20,15) = 37800.d0 513 rminv(20,16) = 0.d0 514 rminv(20,17) = 65520.d0 515 rminv(20,18) = 65520.d0 516 rminv(20,19) = 65520.d0 517 rminv(20,20) = 529200.d0 518 else 519 write(*,*) 'error in gtinv.f: element type not supported' 520 endif 521 522c 523c.... return 524c 525 return 526 end 527 528 529 530