338
339
340
342 use element_mod , only : nixs
343
344
345
346#include "implicit_f.inc"
347
348
349
350
351
352#include "sphcom.inc"
353
354
355
356 INTEGER NSPHDIR, NCELL, IXS(NIXS), KXSP(NISP,*),
357 . IPARTSP(*), IRST(3,*)
359 . rho, x(3,*), spbuf(nspbuf,*)
360
361
362
363 INTEGER I, J, IR, IS, IT, IP,
364 . N1, N2, N3, N4, N5, N6, N7, N8, NP
365
367 . x1,x2,x3,x4,x5,x6,x7,x8,
368 . y1,y2,y3,y4,y5,y6,y7,y8,
369 . z1,z2,z3,z4,z5,z6,z7,z8,
370 . x17 , x28 , x35 , x46 ,
371 . y17 , y28 , y35 , y46 ,
372 . z17 , z28 , z35 , z46 ,
373 . vol, hx(4), hy(4), hz(4), det,
374 . jac1 ,jac2 ,jac3 ,
375 . jac4 ,jac5 ,jac6 ,
376 . jac7 ,jac8 ,jac9 ,
377 . cj1 ,cj2 ,cj3 ,
378 . cj4 ,cj5 ,cj6 ,
379 . cj7 ,cj8 ,cj9 ,
380 . jac_59_68, jac_67_49, jac_48_57,
381 . jac_38_29, jac_19_37, jac_27_18,
382 . jac_26_35, jac_34_16, jac_15_24,
383 . x_17_46 , x_28_35 ,
384 . y_17_46 , y_28_35 ,
385 . z_17_46 , z_28_35 ,
386 . ksi, eta, zeta, wi,
387 . xi, yi, zi
388
390 . w_gauss(9,9),a_gauss(9,9)
391 DATA w_gauss /
392 1 2. ,0. ,0. ,
393 1 0. ,0. ,0. ,
394 1 0. ,0. ,0. ,
395 2 1. ,1. ,0. ,
396 2 0. ,0. ,0. ,
397 2 0. ,0. ,0. ,
398 3 0.555555555555556,0.888888888888889,0.555555555555556,
399 3 0. ,0. ,0. ,
400 3 0. ,0. ,0. ,
401 4 0.347854845137454,0.652145154862546,0.652145154862546,
402 4 0.347854845137454,0. ,0. ,
403 4 0. ,0. ,0. ,
404 5 0.236926885056189,0.478628670499366,0.568888888888889,
405 5 0.478628670499366,0.236926885056189,0. ,
406 5 0. ,0. ,0. ,
407 6 0.171324492379170,0.360761573048139,0.467913934572691,
408 6 0.467913934572691,0.360761573048139,0.171324492379170,
409 6 0. ,0. ,0. ,
410 7 0.129484966168870,0.279705391489277,0.381830050505119,
411 7 0.417959183673469,0.381830050505119,0.279705391489277,
412 7 0.129484966168870,0. ,0. ,
413 8 0.101228536290376,0.222381034453374,0.313706645877887,
414 8 0.362683783378362,0.362683783378362,0.313706645877887,
415 8 0.222381034453374,0.101228536290376,0. ,
416 9 0.081274388361574,0.180648160694857,0.260610696402935,
417 9 0.312347077040003,0.330239355001260,0.312347077040003,
418 9 0.260610696402935,0.180648160694857,0.081274388361574/
419 DATA a_gauss /
420 1 0. ,0. ,0. ,
421 1 0. ,0. ,0. ,
422 1 0. ,0. ,0. ,
423 2 -.5 ,0.5 ,0. ,
424 2 0. ,0. ,0. ,
425 2 0. ,0. ,0. ,
426 3 -.666666666666666,0. ,0.666666666666666,
427 3 0. ,0. ,0. ,
428 3 0. ,0. ,0. ,
429 4 -.75 ,-.25 ,0.25 ,
430 4 0.75 ,0. ,0. ,
431 4 0. ,0. ,0. ,
432 5 -.8 ,-.4 ,0. ,
433 5 0.4 ,0.8 ,0. ,
434 5 0. ,0. ,0. ,
435 6 -.833333333333333,-.5 ,-.166666666666666,
436 6 0.166666666666666,0.5 ,0.833333333333333,
437 6 0. ,0. ,0. ,
438 7 -.857142857142857,-.571428571428571,-.285714285714285,
439 7 0. ,0.285714285714285,0.571428571428571,
440 7 0.857142857142857,0. ,0. ,
441 8 -.875 ,-.625 ,-.375 ,
442 8 -.125 ,0.125 ,0.375,
443 8 0.625 ,0.875 ,0. ,
444 9 -.888888888888888,-.666666666666666,-.444444444444444,
445 9 -.222222222222222,0. ,0.222222222222222,
446 9 0.444444444444444,0.666666666666666,0.888888888888888/
447
448 np = nsphdir*nsphdir*nsphdir
449
450 n1=ixs(2)
451 x1=x(1,n1)
452 y1=x(2,n1)
453 z1=x(3,n1)
454 n2=ixs(3)
455 x2=x(1,n2)
456 y2=x(2,n2)
457 z2=x(3,n2)
458 n3=ixs(4)
459 x3=x(1,n3)
460 y3=x(2,n3)
461 z3=x(3,n3)
462 n4=ixs(5)
463 x4=x(1,n4)
464 y4=x(2,n4)
465 z4=x(3,n4)
466 n5=ixs(6)
467 x5=x(1,n5)
468 y5=x(2,n5)
469 z5=x(3,n5)
470 n6=ixs(7)
471 x6=x(1,n6)
472 y6=x(2,n6)
473 z6=x(3,n6)
474 n7=ixs(8)
475 x7=x(1,n7)
476 y7=x(2,n7)
477 z7=x(3,n7)
478 n8=ixs(9)
479 x8=x(1,n8)
480 y8=x(2,n8)
481 z8=x(3,n8)
482
483 x17=x7-x1
484 x28=x8-x2
485 x35=x5-x3
486 x46=x6-x4
487 y17=y7-y1
488 y28=y8-y2
489 y35=y5-y3
490 y46=y6-y4
491 z17=z7-z1
492 z28=z8-z2
493 z35=z5-z3
494 z46=z6-z4
495
496
497 cj4=x17+x28-x35-x46
498 cj5=y17+y28-y35-y46
499 cj6=z17+z28-z35-z46
500 x_17_46=x17+x46
501 x_28_35=x28+x35
502 y_17_46=y17+y46
503 y_28_35=y28+y35
504 z_17_46=z17+z46
505 z_28_35=z28+z35
506
507 cj7=x_17_46+x_28_35
508 cj8=y_17_46+y_28_35
509 cj9=z_17_46+z_28_35
510 cj1=x_17_46-x_28_35
511 cj2=y_17_46-y_28_35
512 cj3=z_17_46-z_28_35
513
514
515
516 hx(1)=(x1+x2-x3-x4-x5-x6+x7+x8)
517 hy(1)=(y1+y2-y3-y4-y5-y6+y7+y8)
518 hz(1)=(z1+z2-z3-z4-z5-z6+z7+z8)
519
520
521 hx(2)=(x1-x2-x3+x4-x5+x6+x7-x8)
522 hy(2)=(y1-y2-y3+y4-y5+y6+y7-y8)
523 hz(2)=(z1-z2-z3+z4-z5+z6+z7-z8)
524
525
526 hx(3)=(x1-x2+x3-x4+x5-x6+x7-x8)
527 hy(3)=(y1-y2+y3-y4+y5-y6+y7-y8)
528 hz(3)=(z1-z2+z3-z4+z5-z6+z7-z8)
529
530
531 hx(4)=(-x1+x2-x3+x4+x5-x6+x7-x8)
532 hy(4)=(-y1+y2-y3+y4+y5-y6+y7-y8)
533 hz(4)=(-z1+z2-z3+z4+z5-z6+z7-z8)
534
535 DO ip=1,ncell
536 ir=irst(1,ip)
537 is=irst(2,ip)
538 it=irst(3,ip)
539
540 ksi = a_gauss(it,nsphdir)
541 eta = a_gauss(ir,nsphdir)
542 zeta = a_gauss(is,nsphdir)
543
544 wi = eight/np
545
546
547 jac1=cj1+hx(3)*eta+(hx(2)+hx(4)*eta)*zeta
548 jac2=cj2+hy(3)*eta+(hy(2)+hy(4)*eta)*zeta
549 jac3=cj3+hz(3)*eta+(hz(2)+hz(4)*eta)*zeta
550
551 jac4=cj4+hx(1)*zeta+(hx(3)+hx(4)*zeta)*ksi
552 jac5=cj5+hy(1)*zeta+(hy(3)+hy(4)*zeta)*ksi
553 jac6=cj6+hz(1)*zeta+(hz(3)+hz(4)*zeta)*ksi
554
555 jac7=cj7+hx(2)*ksi+(hx(1)+hx(4)*ksi)*eta
556 jac8=cj8+hy(2)*ksi+(hy(1)+hy(4)*ksi)*eta
557 jac9=cj9+hz(2)*ksi+(hz(1)+hz(4)*ksi)*eta
558
559 jac_59_68=jac5*jac9-jac6*jac8
560 jac_67_49=jac6*jac7-jac4*jac9
561 jac_48_57=jac4*jac8-jac5*jac7
562
563 det=one_over_512*(jac1*jac_59_68+jac2*jac_67_49+jac3*jac_48_57)
564 vol= wi*det
565 IF(det<zero)
567 . msgtype=msgerror,
568 . anmode=aninfo,
569 . i1=ixs(nixs))
570
571
572 spbuf(2,ip) =vol*rho
573 spbuf(12,ip)=vol
574
575 ENDDO
576
577 RETURN