66 e,xnu,rho,numnp,numat_vol, &
67 numlstet,matlstet,lmlstet,meshcoor, &
84 REAL*8 meshcoor(3,numnp)
86 INTEGER matlstet(numlstet)
87 INTEGER lmlstet(10,numlstet)
88 INTEGER ielem , nx, ny, nz
91 INTEGER ndof, nnode, ndim, nmat, nsurf, nload
94 REAL*8 meshpos(3,10), meshvel(3,10), meshacc(3,10), mat(3), &
95 sload(4,1,3), bforce(3), elmass(30,30), elstiff(30,30), &
96 eldamp(30,30), elload(30), elstiff2(30,30)
125 INTEGER ndim_v, ndim_s, nintk_v, nintk_s,knode, &
126 knodr, knodc,
i,
j,rindx,cindx,
k,mm,ll, &
127 fp(2,6),iface,igauss, grindx,grindy,grindz
132 parameter(ndim_v = 3, ndim_s = 2, nintk_v = 4,nintk_s = 3)
134 DOUBLE PRECISION shfn(10,4), shdx(3,10,4), dv(10), dvsum, &
135 delta(3,3), mvgss(3), magss(3), mcgss(3,3), two, &
136 wsp1,wsparr(3),trmcgss,wsp2,wsp3,wsp4,one,lambda, &
137 mu,third,wsp5,vxi(10),veta(10),vzeta(10),wvar, &
138 sxi(4,6),seta(4,6),szeta(4,6),shdxi(3,10,4), &
139 wsparr1(3),shdx_av(3,10),
zero, half
140 DOUBLE PRECISION disp(30), velo(30), rimsi(30), dimsi(30)
141 DOUBLE PRECISION multiplier , ajacin(3,3), surfnormal(3,4)
142 DOUBLE PRECISION wt_lstet, da,
sum,factor, wt_cstet
143 DOUBLE PRECISION sto_wsp1(10),sto_wsp2(10)
144 DOUBLE PRECISION sto_wsp3(10),sto_wsp4(10)
145 INTEGER vect1(2,10), vect2(2,10), surf_elem(3,4), k2
149 INTEGER :: nstart, nend
151 parameter(
zero = 0.d0, one = 1.d0, two = 2.d0)
153 DATA delta/1.d0,0.d0,0.d0,0.d0,1.d0,0.d0,0.d0,0.d0,1.d0/
160 multiplier = 1.d0/6.d0
176 vxi( 1) = 0.13819660d0
177 veta( 1) = 0.13819660d0
178 vzeta(1) = 0.13819660d0
181 vxi( 2) = 0.58541020d0
182 veta( 2) = 0.13819660d0
183 vzeta(2) = 0.13819660d0
186 vxi( 3) = 0.13819660d0
187 veta( 3) = 0.58541020d0
188 vzeta(3) = 0.13819660d0
191 vxi( 4) = 0.13819660d0
192 veta( 4) = 0.13819660d0
193 vzeta(4) = 0.58541020d0
201 wvar = 1.d0/dsqrt(3.d0)
276 DO ielem = nstart, nend
287 nx = lmlstet(
i,ielem)*3-2
288 ny = lmlstet(
i,ielem)*3-1
289 nz = lmlstet(
i,ielem)*3
290 meshpos(1,
i)=meshcoor(1,lmlstet(
i,ielem))
291 meshpos(2,
i)=meshcoor(2,lmlstet(
i,ielem))
292 meshpos(3,
i)=meshcoor(3,lmlstet(
i,ielem))
293 meshvel(1,
i)=v_bar(nx)
294 meshvel(2,
i)=v_bar(ny)
295 meshvel(3,
i)=v_bar(nz)
296 meshacc(1,
i)=a_bar(nx)
297 meshacc(2,
i)=a_bar(ny)
298 meshacc(3,
i)=a_bar(nz)
302 velo(
i*3-2) =vhalf(nx)
303 velo(
i*3-1) =vhalf(ny)
304 velo(
i*3 ) =vhalf(nz)
310 CALL
shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, &
311 ndim,nnode,nintk_v,vxi,veta,vzeta,shdxi,ajacin)
314 DO igauss = 1, nintk_v
325 mvgss(
j) = mvgss(
j) + meshvel(
j,knode)* &
327 magss(
j) = magss(
j) + meshacc(
j,knode)* &
343 mcgss(1,1) = mcgss(1,1) + meshvel(1,knode)* &
345 mcgss(2,1) = mcgss(2,1) + meshvel(2,knode)* &
347 mcgss(3,1) = mcgss(3,1) + meshvel(3,knode)* &
349 mcgss(1,2) = mcgss(1,2) + meshvel(1,knode)* &
351 mcgss(2,2) = mcgss(2,2) + meshvel(2,knode)* &
353 mcgss(3,2) = mcgss(3,2) + meshvel(3,knode)* &
355 mcgss(1,3) = mcgss(1,3) + meshvel(1,knode)* &
357 mcgss(2,3) = mcgss(2,3) + meshvel(2,knode)* &
359 mcgss(3,3) = mcgss(3,3) + meshvel(3,knode)* &
363 trmcgss = mcgss(1,1) + mcgss(2,2) + mcgss(3,3)
365 wsparr(1) = mcgss(1,1)*mvgss(1) + &
366 mcgss(1,2)*mvgss(2) + &
368 wsparr(2) = mcgss(2,1)*mvgss(1) + &
369 mcgss(2,2)*mvgss(2) + &
371 wsparr(3) = mcgss(3,1)*mvgss(1) + &
372 mcgss(3,2)*mvgss(2) + &
378 mvgss(1)*shdx(1,knodc,igauss) + &
379 mvgss(2)*shdx(2,knodc,igauss) + &
380 mvgss(3)*shdx(3,knodc,igauss)
382 wsparr(1)*shdx(1,knodc,igauss) + &
383 wsparr(2)*shdx(2,knodc,igauss) + &
384 wsparr(3)*shdx(3,knodc,igauss)
386 mvgss(1)*shdx(1,knodc,igauss) + &
387 mvgss(2)*shdx(2,knodc,igauss) + &
388 mvgss(3)*shdx(3,knodc,igauss)
390 magss(1)*shdx(1,knodc,igauss) + &
391 magss(2)*shdx(2,knodc,igauss) + &
392 magss(3)*shdx(3,knodc,igauss)
395 factor=mat(1)*dv(igauss)*multiplier*wt_lstet
398 grindx = (lmlstet(knodr,ielem)-1)*3 + 1
399 grindy = (lmlstet(knodr,ielem)-1)*3 + 2
400 grindz = (lmlstet(knodr,ielem)-1)*3 + 3
405 r_dp(grindx) = r_dp(grindx) - &
406 factor*shfn(knodr,igauss)*two* &
407 ( sto_wsp1(1)*velo((1-1)*ndim+1) + &
408 sto_wsp1(2)*velo((2-1)*ndim+1) + &
409 sto_wsp1(3)*velo((3-1)*ndim+1) + &
410 sto_wsp1(4)*velo((4-1)*ndim+1) + &
411 sto_wsp1(5)*velo((5-1)*ndim+1) + &
412 sto_wsp1(6)*velo((6-1)*ndim+1) + &
413 sto_wsp1(7)*velo((7-1)*ndim+1) + &
414 sto_wsp1(8)*velo((8-1)*ndim+1) + &
415 sto_wsp1(9)*velo((9-1)*ndim+1) + &
416 sto_wsp1(10)*velo((10-1)*ndim+1) )
418 r_dp(grindy) = r_dp(grindy) - &
419 factor*shfn(knodr,igauss)*two* &
420 ( sto_wsp1(1)*velo((1-1)*ndim+2) + &
421 sto_wsp1(2)*velo((2-1)*ndim+2) + &
422 sto_wsp1(3)*velo((3-1)*ndim+2) + &
423 sto_wsp1(4)*velo((4-1)*ndim+2) + &
424 sto_wsp1(5)*velo((5-1)*ndim+2) + &
425 sto_wsp1(6)*velo((6-1)*ndim+2) + &
426 sto_wsp1(7)*velo((7-1)*ndim+2) + &
427 sto_wsp1(8)*velo((8-1)*ndim+2) + &
428 sto_wsp1(9)*velo((9-1)*ndim+2) + &
429 sto_wsp1(10)*velo((10-1)*ndim+2) )
431 r_dp(grindz) = r_dp(grindz) - &
432 factor*shfn(knodr,igauss)*two* &
433 ( sto_wsp1(1)*velo((1-1)*ndim+3) + &
434 sto_wsp1(2)*velo((2-1)*ndim+3) + &
435 sto_wsp1(3)*velo((3-1)*ndim+3) + &
436 sto_wsp1(4)*velo((4-1)*ndim+3) + &
437 sto_wsp1(5)*velo((5-1)*ndim+3) + &
438 sto_wsp1(6)*velo((6-1)*ndim+3) + &
439 sto_wsp1(7)*velo((7-1)*ndim+3) + &
440 sto_wsp1(8)*velo((8-1)*ndim+3) + &
441 sto_wsp1(9)*velo((9-1)*ndim+3) + &
442 sto_wsp1(10)*velo((10-1)*ndim+3) )
447 r_in(grindx) = r_in(grindx) &
448 + factor*shfn(knodr,igauss) * ( &
449 -trmcgss*sto_wsp1(1)*disp((1-1)*ndim+1) &
450 -trmcgss*sto_wsp1(2)*disp((2-1)*ndim+1) &
451 -trmcgss*sto_wsp1(3)*disp((3-1)*ndim+1) &
452 -trmcgss*sto_wsp1(4)*disp((4-1)*ndim+1) &
453 -trmcgss*sto_wsp1(5)*disp((5-1)*ndim+1) &
454 -trmcgss*sto_wsp1(6)*disp((6-1)*ndim+1) &
455 -trmcgss*sto_wsp1(7)*disp((7-1)*ndim+1) &
456 -trmcgss*sto_wsp1(8)*disp((8-1)*ndim+1) &
457 -trmcgss*sto_wsp1(9)*disp((9-1)*ndim+1) &
458 -trmcgss*sto_wsp1(10)*disp((10-1)*ndim+1) &
459 + sto_wsp2(1)*disp((1-1)*ndim+1) &
460 + sto_wsp2(2)*disp((2-1)*ndim+1) &
461 + sto_wsp2(3)*disp((3-1)*ndim+1) &
462 + sto_wsp2(4)*disp((4-1)*ndim+1) &
463 + sto_wsp2(5)*disp((5-1)*ndim+1) &
464 + sto_wsp2(6)*disp((6-1)*ndim+1) &
465 + sto_wsp2(7)*disp((7-1)*ndim+1) &
466 + sto_wsp2(8)*disp((8-1)*ndim+1) &
467 + sto_wsp2(9)*disp((9-1)*ndim+1) &
468 + sto_wsp2(10)*disp((10-1)*ndim+1) &
469 - sto_wsp4(1)*disp((1-1)*ndim+1) &
470 - sto_wsp4(2)*disp((2-1)*ndim+1) &
471 - sto_wsp4(3)*disp((3-1)*ndim+1) &
472 - sto_wsp4(4)*disp((4-1)*ndim+1) &
473 - sto_wsp4(5)*disp((5-1)*ndim+1) &
474 - sto_wsp4(6)*disp((6-1)*ndim+1) &
475 - sto_wsp4(7)*disp((7-1)*ndim+1) &
476 - sto_wsp4(8)*disp((8-1)*ndim+1) &
477 - sto_wsp4(9)*disp((9-1)*ndim+1) &
478 - sto_wsp4(10)*disp((10-1)*ndim+1) ) &
479 + factor*sto_wsp3(knodr) * ( &
480 - sto_wsp1(1)*disp((1-1)*ndim+1) &
481 - sto_wsp1(2)*disp((2-1)*ndim+1) &
482 - sto_wsp1(3)*disp((3-1)*ndim+1) &
483 - sto_wsp1(4)*disp((4-1)*ndim+1) &
484 - sto_wsp1(5)*disp((5-1)*ndim+1) &
485 - sto_wsp1(6)*disp((6-1)*ndim+1) &
486 - sto_wsp1(7)*disp((7-1)*ndim+1) &
487 - sto_wsp1(8)*disp((8-1)*ndim+1) &
488 - sto_wsp1(9)*disp((9-1)*ndim+1) &
489 - sto_wsp1(10)*disp((10-1)*ndim+1) )
492 r_in(grindy) = r_in(grindy) &
493 + factor*shfn(knodr,igauss) * ( &
494 -trmcgss*sto_wsp1(1)*disp((1-1)*ndim+2) &
495 -trmcgss*sto_wsp1(2)*disp((2-1)*ndim+2) &
496 -trmcgss*sto_wsp1(3)*disp((3-1)*ndim+2) &
497 -trmcgss*sto_wsp1(4)*disp((4-1)*ndim+2) &
498 -trmcgss*sto_wsp1(5)*disp((5-1)*ndim+2) &
499 -trmcgss*sto_wsp1(6)*disp((6-1)*ndim+2) &
500 -trmcgss*sto_wsp1(7)*disp((7-1)*ndim+2) &
501 -trmcgss*sto_wsp1(8)*disp((8-1)*ndim+2) &
502 -trmcgss*sto_wsp1(9)*disp((9-1)*ndim+2) &
503 -trmcgss*sto_wsp1(10)*disp((10-1)*ndim+2) &
504 + sto_wsp2(1)*disp((1-1)*ndim+2) &
505 + sto_wsp2(2)*disp((2-1)*ndim+2) &
506 + sto_wsp2(3)*disp((3-1)*ndim+2) &
507 + sto_wsp2(4)*disp((4-1)*ndim+2) &
508 + sto_wsp2(5)*disp((5-1)*ndim+2) &
509 + sto_wsp2(6)*disp((6-1)*ndim+2) &
510 + sto_wsp2(7)*disp((7-1)*ndim+2) &
511 + sto_wsp2(8)*disp((8-1)*ndim+2) &
512 + sto_wsp2(9)*disp((9-1)*ndim+2) &
513 + sto_wsp2(10)*disp((10-1)*ndim+2) &
514 - sto_wsp4(1)*disp((1-1)*ndim+2) &
515 - sto_wsp4(2)*disp((2-1)*ndim+2) &
516 - sto_wsp4(3)*disp((3-1)*ndim+2) &
517 - sto_wsp4(4)*disp((4-1)*ndim+2) &
518 - sto_wsp4(5)*disp((5-1)*ndim+2) &
519 - sto_wsp4(6)*disp((6-1)*ndim+2) &
520 - sto_wsp4(7)*disp((7-1)*ndim+2) &
521 - sto_wsp4(8)*disp((8-1)*ndim+2) &
522 - sto_wsp4(9)*disp((9-1)*ndim+2) &
523 - sto_wsp4(10)*disp((10-1)*ndim+2) ) &
524 + factor*sto_wsp3(knodr) * ( &
525 - sto_wsp1(1)*disp((1-1)*ndim+2) &
526 - sto_wsp1(2)*disp((2-1)*ndim+2) &
527 - sto_wsp1(3)*disp((3-1)*ndim+2) &
528 - sto_wsp1(4)*disp((4-1)*ndim+2) &
529 - sto_wsp1(5)*disp((5-1)*ndim+2) &
530 - sto_wsp1(6)*disp((6-1)*ndim+2) &
531 - sto_wsp1(7)*disp((7-1)*ndim+2) &
532 - sto_wsp1(8)*disp((8-1)*ndim+2) &
533 - sto_wsp1(9)*disp((9-1)*ndim+2) &
534 - sto_wsp1(10)*disp((10-1)*ndim+2) )
536 r_in(grindz) = r_in(grindz) &
537 + factor*shfn(knodr,igauss) * ( &
538 -trmcgss*sto_wsp1(1)*disp((1-1)*ndim+3) &
539 -trmcgss*sto_wsp1(2)*disp((2-1)*ndim+3) &
540 -trmcgss*sto_wsp1(3)*disp((3-1)*ndim+3) &
541 -trmcgss*sto_wsp1(4)*disp((4-1)*ndim+3) &
542 -trmcgss*sto_wsp1(5)*disp((5-1)*ndim+3) &
543 -trmcgss*sto_wsp1(6)*disp((6-1)*ndim+3) &
544 -trmcgss*sto_wsp1(7)*disp((7-1)*ndim+3) &
545 -trmcgss*sto_wsp1(8)*disp((8-1)*ndim+3) &
546 -trmcgss*sto_wsp1(9)*disp((9-1)*ndim+3) &
547 -trmcgss*sto_wsp1(10)*disp((10-1)*ndim+3) &
548 + sto_wsp2(1)*disp((1-1)*ndim+3) &
549 + sto_wsp2(2)*disp((2-1)*ndim+3) &
550 + sto_wsp2(3)*disp((3-1)*ndim+3) &
551 + sto_wsp2(4)*disp((4-1)*ndim+3) &
552 + sto_wsp2(5)*disp((5-1)*ndim+3) &
553 + sto_wsp2(6)*disp((6-1)*ndim+3) &
554 + sto_wsp2(7)*disp((7-1)*ndim+3) &
555 + sto_wsp2(8)*disp((8-1)*ndim+3) &
556 + sto_wsp2(9)*disp((9-1)*ndim+3) &
557 + sto_wsp2(10)*disp((10-1)*ndim+3) &
558 - sto_wsp4(1)*disp((1-1)*ndim+3) &
559 - sto_wsp4(2)*disp((2-1)*ndim+3) &
560 - sto_wsp4(3)*disp((3-1)*ndim+3) &
561 - sto_wsp4(4)*disp((4-1)*ndim+3) &
562 - sto_wsp4(5)*disp((5-1)*ndim+3) &
563 - sto_wsp4(6)*disp((6-1)*ndim+3) &
564 - sto_wsp4(7)*disp((7-1)*ndim+3) &
565 - sto_wsp4(8)*disp((8-1)*ndim+3) &
566 - sto_wsp4(9)*disp((9-1)*ndim+3) &
567 - sto_wsp4(10)*disp((10-1)*ndim+3) ) &
568 + factor*sto_wsp3(knodr) * ( &
569 - sto_wsp1(1)*disp((1-1)*ndim+3) &
570 - sto_wsp1(2)*disp((2-1)*ndim+3) &
571 - sto_wsp1(3)*disp((3-1)*ndim+3) &
572 - sto_wsp1(4)*disp((4-1)*ndim+3) &
573 - sto_wsp1(5)*disp((5-1)*ndim+3) &
574 - sto_wsp1(6)*disp((6-1)*ndim+3) &
575 - sto_wsp1(7)*disp((7-1)*ndim+3) &
576 - sto_wsp1(8)*disp((8-1)*ndim+3) &
577 - sto_wsp1(9)*disp((9-1)*ndim+3) &
578 - sto_wsp1(10)*disp((10-1)*ndim+3) )
598 CALL
shcalc_3d10(shfn,shdx,dv,dvsum,shdx_av,meshpos,ndim, &
599 nnode,nintk_s,sxi(1,iface),seta(1,iface), &
600 szeta(1,iface),shdxi,ajacin)
602 DO igauss = 1,nintk_s
607 mvgss(
j) = mvgss(
j) + meshvel(
j,knode)* &
615 wsparr(
j) =meshpos(
j,surf_elem(2,iface)) - &
616 meshpos(
j,surf_elem(1,iface))
617 wsparr1(
j)=meshpos(
j,surf_elem(3,iface)) - &
618 meshpos(
j,surf_elem(1,iface))
623 wsp1 = wsparr(2)*wsparr1(3) - wsparr(3)*wsparr1(2)
624 wsp2 = wsparr(3)*wsparr1(1) - wsparr(1)*wsparr1(3)
625 wsp3 = wsparr(1)*wsparr1(2) - wsparr(2)*wsparr1(1)
626 wsparr(1) = wsp1 * 0.5d0
627 wsparr(2) = wsp2 * 0.5d0
628 wsparr(3) = wsp3 * 0.5d0
633 wsp1 = mvgss(1)*wsparr(1) &
634 + mvgss(2)*wsparr(2) &
642 mvgss(1)*shdx(1,knodc,igauss) + &
643 mvgss(2)*shdx(2,knodc,igauss) + &
644 mvgss(3)*shdx(3,knodc,igauss)
649 grindx = (lmlstet(knodr,ielem)-1)*3 + 1
650 grindy = (lmlstet(knodr,ielem)-1)*3 + 2
651 grindz = (lmlstet(knodr,ielem)-1)*3 + 3
653 r_in(grindx) = r_in(grindx) &
654 + mat(1)*shfn(knodr,igauss)*wsp1*( &
655 + sto_wsp2(1)*disp((1-1)*ndim+1) &
656 + sto_wsp2(2)*disp((2-1)*ndim+1) &
657 + sto_wsp2(3)*disp((3-1)*ndim+1) &
658 + sto_wsp2(4)*disp((4-1)*ndim+1) &
659 + sto_wsp2(5)*disp((5-1)*ndim+1) &
660 + sto_wsp2(6)*disp((6-1)*ndim+1) &
661 + sto_wsp2(7)*disp((7-1)*ndim+1) &
662 + sto_wsp2(8)*disp((8-1)*ndim+1) &
663 + sto_wsp2(9)*disp((9-1)*ndim+1) &
664 + sto_wsp2(10)*disp((10-1)*ndim+1) ) &
667 r_in(grindy) = r_in(grindy) &
668 + mat(1)*shfn(knodr,igauss)*wsp1*( &
669 + sto_wsp2(1)*disp((1-1)*ndim+2) &
670 + sto_wsp2(2)*disp((2-1)*ndim+2) &
671 + sto_wsp2(3)*disp((3-1)*ndim+2) &
672 + sto_wsp2(4)*disp((4-1)*ndim+2) &
673 + sto_wsp2(5)*disp((5-1)*ndim+2) &
674 + sto_wsp2(6)*disp((6-1)*ndim+2) &
675 + sto_wsp2(7)*disp((7-1)*ndim+2) &
676 + sto_wsp2(8)*disp((8-1)*ndim+2) &
677 + sto_wsp2(9)*disp((9-1)*ndim+2) &
678 + sto_wsp2(10)*disp((10-1)*ndim+2) ) &
681 r_in(grindz) = r_in(grindz) &
682 + mat(1)*shfn(knodr,igauss)*wsp1*( &
683 + sto_wsp2(1)*disp((1-1)*ndim+3) &
684 + sto_wsp2(2)*disp((2-1)*ndim+3) &
685 + sto_wsp2(3)*disp((3-1)*ndim+3) &
686 + sto_wsp2(4)*disp((4-1)*ndim+3) &
687 + sto_wsp2(5)*disp((5-1)*ndim+3) &
688 + sto_wsp2(6)*disp((6-1)*ndim+3) &
689 + sto_wsp2(7)*disp((7-1)*ndim+3) &
690 + sto_wsp2(8)*disp((8-1)*ndim+3) &
691 + sto_wsp2(9)*disp((9-1)*ndim+3) &
692 + sto_wsp2(10)*disp((10-1)*ndim+3) ) &
702 rnet(
i) = rnet(
i) - r_in(
i) - r_dp(
i)
705 111
FORMAT(i5,5e15.7)
Tfloat sum() const
Return the sum of all the pixel values in an image.
void zero()
Sets all entries to zero (more efficient than assignement).
subroutine shcalc_3d10(shfn, shdx, dv, dvsum, shdx_av, meshpos, ndim, nnode, nintk, xi, eta, zeta, shdxi, wsp2)
subroutine v3d10_ale(v_bar, a_bar, d, vhalf, Rnet, E, xnu, rho, numnp, numat_vol, numlstet, matlstet, lmlstet, meshcoor, nstart, nend)