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