309
310
311
313
314
315
316#include "implicit_f.inc"
317
318
319
320#include "param_c.inc"
321#include "com04_c.inc"
322#include "ige3d_c.inc"
323
324
325
326 INTEGER JJ,IELTYP,NCTRL,DECALIGEO,
327 1 IADPART,IADTABIGE,
328 2 KXIG3D(NIXIG3D,*),JS,IXIG3D(*),IGEO(NPROPGI,*),NIGE(*),
329 3 NSEGIGE,PX,PY,
331 . x(3,*),v(3,*),wige(*),knot(*),rige(3,*),xige(3,*),vige(3,*),
332 . knotlocpc(deg_max,3,*),knotlocelx(2),knotlocely(2),knotlocelz(2)
333
334 TYPE (SURF_) :: IGRSURF
335
336
337
338 INTEGER J,K,L,M,N,IAD_KNOT,N1,N2,N3,
339 . NKNOT1,NKNOT2,NKNOT3,IDX,IDY,IDZ,IPID,ISEG,ITNCTRL,
340 . IDFRSTLOCKNT, IDPC,IDX2,IDY2,IDZ2
342 . x_igeo(nctrl),y_igeo(nctrl),z_igeo(nctrl),
343 . vx_igeo(nctrl),vy_igeo(nctrl),vz_igeo(nctrl),
344 . w_igeo(nctrl),xi,yi,zi,zr,zs,zt,
345 . pasx,pasy,pasz,r(nctrl),vxi,vyi,vzi,
346 . knotlocx(px+1,nctrl),
347 . knotlocy(py+1,nctrl),knotlocz(pz+1,nctrl)
348
349
350 DO n=1,3
351 DO m=1,3
352
353 nsegige = nsegige + 1
354 iseg = nsegige
355 igrsurf%NODES_IGE(iseg,1) = numnod + decaligeo + 1 +(m-1)+4*(n-1)
356 igrsurf%NODES_IGE(iseg,2) = numnod + decaligeo + 1 + m +4*(n-1)
357 igrsurf%NODES_IGE(iseg,3) = numnod + decaligeo
358 igrsurf%NODES_IGE(iseg,4) = numnod + decaligeo + 1 +(m-1)+4*n
359
360 igrsurf%ELTYP_IGE(iseg) = ieltyp
361 igrsurf%ELEM_IGE(iseg) = js
362
363 ENDDO
364 ENDDO
365
366 DO j=1,nctrl
367 x_igeo(j)=x(1,ixig3d(kxig3d(4,js)+j-1))
368 y_igeo(j)=x(2,ixig3d(kxig3d(4,js)+j-1))
369 z_igeo(j)=x(3,ixig3d(kxig3d(4,js)+j-1))
370 vx_igeo(j)=v(1,ixig3d(kxig3d(4,js)+j-1))
371 vy_igeo(j)=v(2,ixig3d(kxig3d(4,js)+j-1))
372 vz_igeo(j)=v(3,ixig3d(kxig3d(4,js)+j-1))
373 w_igeo(j)=1
374 ENDDO
375
376 ipid=kxig3d(2,js)
377 iad_knot = igeo(40,ipid)
378 n1 = igeo(44,ipid)
379 n2 = igeo(45,ipid)
380 n3 = igeo(46,ipid)
381 idfrstlocknt = igeo(47,ipid)
382 nknot1 = n1+px
383 nknot2 = n2+py
384 nknot3 = n3+pz
385 idx = kxig3d(6,js)
386 idy = kxig3d(7,js)
387 idz = kxig3d(8,js)
388 idx2 = kxig3d(9,js)
389 idy2 = kxig3d(10,js)
390 idz2 = kxig3d(11,js)
391
392 DO j=1,nctrl
393 DO k=1,px+1
394 knotlocx(k,j)=knotlocpc(k,1,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
395 ENDDO
396 DO k=1,py+1
397 knotlocy(k,j)=knotlocpc(k,2,(ipid-1)*numnod+ixig3d(kxig3d(4,js
398 ENDDO
399 DO k=1,pz+1
400 knotlocz(k,j)=knotlocpc(k,3,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
401 ENDDO
402 ENDDO
403
404
405
406
407
408
409
410 pasx = (knotlocelx(2) - knotlocelx(1)) / three
411 pasy = (knotlocely(2) - knotlocely(1)) / three
412 pasz = (knotlocelz(2) - knotlocelz(1)) / three
413
414 IF (jj==1) THEN
415
416 DO m=1,4
417 DO l=1,4
418
419 xi = zero
420 yi = zero
421 zi = zero
422 vxi = zero
423 vyi = zero
424 vzi = zero
425
426 zr = knotlocelx(1) + (l-1)*pasx
427 zs = knotlocely(1) + (m-1)*pasy
428 zt = knotlocelz(1)
429
430
431
432
433
434
435
436
437
438
440 1 js ,n ,x_igeo ,y_igeo,
441 2 z_igeo,w_igeo ,idx ,idy ,
442 3 idz ,knotlocx ,knotlocy,knotlocz,
443 4 r ,nctrl ,
444 5 zr ,zs ,zt ,knot(iad_knot+1),
445 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
446 7 py-1 ,pz-1 ,0 ,
447 8 idx2,idy2 ,idz2 ,
448 9 knotlocelx,knotlocely,knotlocelz)
449
450 DO j=1,nctrl
451 xi = xi + r(j)*x_igeo(j)
452 yi = yi + r(j)*y_igeo(j)
453 zi = zi + r(j)*z_igeo(j)
454 vxi = vxi + r(j)*vx_igeo(j)
455 vyi = vyi + r(j)*vy_igeo(j
456 vzi = vzi + r(j)*vz_igeo(j)
457 ENDDO
458
459 iadtabige=iadtabige+1
460
461 nige(iadtabige)=js
462
463 rige(1,iadtabige)=zr
464 rige(2,iadtabige)=zs
465 rige(3,iadtabige)=zt
466
467 xige(1,iadtabige)=xi
468 xige(2,iadtabige)=yi
469 xige(3,iadtabige)=zi
470
471 vige(1,iadtabige)=vxi
472 vige(2,iadtabige)=vyi
473 vige(3,iadtabige)=vzi
474
475 ENDDO
476 ENDDO
477
478 ELSEIF (jj==2) THEN
479
480 DO m=1,4
481 DO l=1,4
482
483 xi = zero
484 yi = zero
485 zi = zero
486 vxi = zero
487 vyi = zero
488 vzi = zero
489
490 zr = knotlocelx(1) + (l-1)*pasx
491 zs = knotlocely(1) + (m-1)*pasy
492 zt = knotlocelz(2)
493
494
495
496
497
498
499
500
501
502
504 1 js ,n ,x_igeo ,y_igeo,
505 2 z_igeo,w_igeo ,idx ,idy ,
506 3 idz ,knotlocx ,knotlocy,knotlocz,
507 4 r ,nctrl ,
508 5 zr ,zs ,zt ,knot(iad_knot+1),
509 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
510 7 py-1 ,pz-1 ,0 ,
511 8 idx2,idy2 ,idz2 ,
512 9 knotlocelx,knotlocely,knotlocelz)
513
514 DO j=1,nctrl
515 xi = xi + r(j)*x_igeo(j)
516 yi = yi + r(j)*y_igeo(j)
517 zi = zi + r(j)*z_igeo(j)
518 vxi = vxi + r(j)*vx_igeo(j)
519 vyi = vyi + r(j)*vy_igeo(j)
520 vzi = vzi + r(j)*vz_igeo(j)
521 ENDDO
522
523 iadtabige=iadtabige+1
524
525 nige(iadtabige)=js
526
527 rige(1,iadtabige)=zr
528 rige(2,iadtabige)=zs
529 rige(3,iadtabige)=zt
530
531 xige(1,iadtabige)=xi
532 xige(2,iadtabige)=yi
533 xige(3,iadtabige)=zi
534
535 vige(1,iadtabige)=vxi
536 vige(2,iadtabige)=vyi
537 vige(3,iadtabige)=vzi
538
539 ENDDO
540 ENDDO
541
542 ELSEIF (jj==3) THEN
543
544 DO n=1,4
545 DO l=1,4
546
547 xi = zero
548 yi = zero
549 zi = zero
550 vxi = zero
551 vyi = zero
552 vzi = zero
553
554 zr = knotlocelx(1) + (l-1)*pasx
555 zs = knotlocely(1)
556 zt = knotlocelz(1) + (n-1)*pasz
557
558
559
560
561
562
563
564
565
566
568 1 js ,n ,x_igeo ,y_igeo,
569 2 z_igeo,w_igeo ,idx ,idy ,
570 3 idz ,knotlocx ,knotlocy,knotlocz,
571 4 r ,nctrl ,
572 5 zr ,zs ,zt ,knot(iad_knot+1),
573 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
574 7 py-1 ,pz-1 ,0 ,
575 8 idx2,idy2 ,idz2 ,
576 9 knotlocelx,knotlocely,knotlocelz)
577
578 DO j=1,nctrl
579 xi = xi + r(j)*x_igeo(j)
580 yi = yi + r(j)*y_igeo(j)
581 zi = zi + r(j)*z_igeo(j)
582 vxi = vxi + r(j)*vx_igeo(j)
583 vyi = vyi + r(j)*vy_igeo(j)
584 vzi = vzi + r(j)*vz_igeo(j)
585 ENDDO
586
587 iadtabige=iadtabige+1
588
589 nige(iadtabige)=js
590
591 rige(1,iadtabige)=zr
592 rige(2,iadtabige)=zs
593 rige(3,iadtabige)=zt
594
595 xige(1,iadtabige)=xi
596 xige(2,iadtabige)=yi
597 xige(3,iadtabige)=zi
598
599 vige(1,iadtabige)=vxi
600 vige(2,iadtabige)=vyi
601 vige(3,iadtabige)=vzi
602
603 ENDDO
604 ENDDO
605
606 ELSEIF (jj==4) THEN
607
608 DO n=1,4
609 DO l=1,4
610
611 xi = zero
612 yi = zero
613 zi = zero
614 vxi = zero
615 vyi = zero
616 vzi = zero
617
618 zr = knotlocelx(1) + (l-1)*pasx
619 zs = knotlocely(2)
620 zt = knotlocelz(1) + (n-1)*pasz
621
622
623
624
625
626
627
628
629
630
632 1 js ,n ,x_igeo ,y_igeo,
633 2 z_igeo,w_igeo ,idx ,idy ,
634 3 idz ,knotlocx ,knotlocy,knotlocz,
635 4 r ,nctrl ,
636 5 zr ,zs ,zt ,knot(iad_knot+1),
637 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
638 7 py-1 ,pz-1 ,0 ,
639 8 idx2,idy2 ,idz2 ,
640 9 knotlocelx,knotlocely,knotlocelz)
641
642 DO j=1,nctrl
643 xi = xi + r(j)*x_igeo(j)
644 yi = yi + r(j)*y_igeo(j)
645 zi = zi + r(j)*z_igeo(j)
646 vxi = vxi + r(j)*vx_igeo(j)
647 vyi = vyi + r(j)*vy_igeo(j)
648 vzi = vzi + r(j)*vz_igeo(j)
649 ENDDO
650
651 iadtabige=iadtabige+1
652
653 nige(iadtabige)=js
654
655 rige(1,iadtabige)=zr
656 rige(2,iadtabige)=zs
657 rige(3,iadtabige)=zt
658
659 xige(1,iadtabige)=xi
660 xige(2,iadtabige)=yi
661 xige(3,iadtabige)=zi
662
663 vige(1,iadtabige)=vxi
664 vige(2,iadtabige)=vyi
665 vige(3,iadtabige)=vzi
666
667 ENDDO
668 ENDDO
669
670 ELSEIF (jj==5) THEN
671
672 DO n=1,4
673 DO m=1,4
674
675 xi = zero
676 yi = zero
677 zi = zero
678 vxi = zero
679 vyi = zero
680 vzi = zero
681
682 zr = knotlocelx(2)
683 zs = knotlocely(1) + (m-1)*pasy
684 zt = knotlocelz(1) + (n-1)*pasz
685
686
687
688
689
690
691
692
693
694
696 1 js ,n ,x_igeo ,y_igeo,
697 2 z_igeo,w_igeo ,idx ,idy ,
698 3 idz ,knotlocx ,knotlocy,knotlocz,
699 4 r ,nctrl ,
700 5 zr ,zs ,zt ,knot(iad_knot+1),
701 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
702 7 py-1 ,pz-1 ,0 ,
703 8 idx2,idy2 ,idz2 ,
704 9 knotlocelx,knotlocely,knotlocelz)
705
706 DO j=1,nctrl
707 xi = xi + r(j)*x_igeo(j)
708 yi = yi + r(j)*y_igeo(j)
709 zi = zi + r(j)*z_igeo(j)
710 vxi = vxi + r(j)*vx_igeo(j)
711 vyi = vyi + r(j)*vy_igeo(j)
712 vzi = vzi + r(j)*vz_igeo(j)
713 ENDDO
714
715 iadtabige=iadtabige+1
716
717 nige(iadtabige)=js
718
719 rige(1,iadtabige)=zr
720 rige(2,iadtabige)=zs
721 rige(3,iadtabige)=zt
722
723 xige(1,iadtabige)=xi
724 xige(2,iadtabige)=yi
725 xige(3,iadtabige)=zi
726
727 vige(1,iadtabige)=vxi
728 vige(2,iadtabige)=vyi
729 vige(3,iadtabige)=vzi
730
731 ENDDO
732 ENDDO
733
734 ELSEIF (jj==6) THEN
735
736 DO n=1,4
737 DO m=1,4
738
739 xi = zero
740 yi = zero
741 zi = zero
742 vxi = zero
743 vyi = zero
744 vzi = zero
745
746 zr = knotlocelx(1)
747 zs = knotlocely(1) + (m-1)*pasy
748 zt = knotlocelz(1) + (n-1)*pasz
749
750
751
752
753
754
755
756
757
758
760 1 js ,n ,x_igeo ,y_igeo,
761 2 z_igeo,w_igeo ,idx ,idy ,
762 3 idz ,knotlocx ,knotlocy,knotlocz,
763 4 r ,nctrl ,
764 5 zr ,zs ,zt ,knot(iad_knot+1),
765 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
766 7 py-1 ,pz-1 ,0 ,
767 8 idx2,idy2 ,idz2 ,
768 9 knotlocelx,knotlocely,knotlocelz)
769
770 DO j=1,nctrl
771 xi = xi + r(j)*x_igeo(j)
772 yi = yi + r(j)*y_igeo(j)
773 zi = zi + r(j)*z_igeo(j)
774 vxi = vxi + r(j)*vx_igeo(j)
775 vyi = vyi + r(j)*vy_igeo(j)
776 vzi = vzi + r(j)*vz_igeo(j)
777 ENDDO
778
779 iadtabige=iadtabige+1
780
781 nige(iadtabige)=js
782
783 rige(1,iadtabige)=zr
784 rige(2,iadtabige)=zs
785 rige(3,iadtabige)=zt
786
787 xige(1,iadtabige)=xi
788 xige(2,iadtabige)=yi
789 xige(3,iadtabige)=zi
790
791 vige(1,iadtabige)=vxi
792 vige(2,iadtabige)=vyi
793 vige(3,iadtabige)=vzi
794
795 ENDDO
796 ENDDO
797
798 ENDIF
799
800 RETURN
subroutine ig3donebasis(itel, n, xxi, yyi, zzi, wwi, idx, idy, idz, knotlocx, knotlocy, knotlocz, r, nctrl, gaussx, gaussy, gaussz, kx, ky, kz, px, py, pz, boolg, idx2, idy2, idz2, knotlocelx, knotlocely, knotlocelz)