33 . IEXT ,FLAG ,IFRE ,KEY ,
34 . NSEGIGE,KNOT ,IGEO ,WIGE ,
35 . X,V,KNOD2ELIG3D,NOD2ELIG3D ,
36 . NIGE,RIGE,XIGE,VIGE,IADTABIGE,DECALIGEO,
37 . IGRSURF,KNOTLOCPC,KNOTLOCEL)
46#include "implicit_f.inc"
53 . KXIG3D(NIXIG3D,*),IPARTIG3D(*),IXIG3D(*),
54 . KNOD2ELIG3D(*),NOD2ELIG3D(*),NIGE(*)
55 INTEGER IEXT,NSEG,FLAG,IFRE,NSEGIGE,IGEO(NPROPGI,*),IADTABIGE,DECALIGEO
56 CHARACTER(LEN=NCHARKEY) :: KEY
58 . x(3,*),v(3,*),wige(*),knot(*),rige(3,*),xige(3,*),vige(3,*),
59 . knotlocpc(*),knotlocel(2,3,*)
61 TYPE (SURF_) :: IGRSURF
65 INTEGER N,J,K,JS,KS,II,JJ,K1,K2,LL,NN,KK,I1,
66 . NI(4),NS(4),MI(4),MI2(4),MS(4),NMIN,MMIN,
67 . mf,nf,iperm,n1,n2,i,iseg
68 INTEGER NODTAG(NUMNOD),FACEIGEO(4,6),PWR(7),CROSSFACEIGEO(4,6),
69 . NNS,NCTRL,IPID,PX,PY,PZ,
70 . FASTAGIGEO(NUMELIG3D)
72 . knotlocelx(2),knotlocely(2),knotlocelz(2)
73 DATA pwr/1,2,4,8,16,32,64/
85 IF(key(1:6)==
'GRBRIC')
THEN
86 IF (tagbuf(js)==0) cycle
88 IF (tagbuf(ipartig3d(js))==0) cycle
96 faceigeo(1,1) = (px+1)*(py+1)*pz+px+1
97 faceigeo(2,1) = (px+1)*(py+1)*pz+1
98 faceigeo(3,1) = (px+1)*(py+1)*pz+(px+1)*py+1
99 faceigeo(4,1) = (px+1)*(py+1)*(pz+1)
101 faceigeo(1,2) = (px+1)*(py+1)
102 faceigeo(2,2) = (px+1)*py+1
106 faceigeo(1,3) = (px+1)*(py+1)*(pz+1)
107 faceigeo(2,3) = (px+1)*(py+1)*pz+(px+1)*py+1
108 faceigeo(3,3) = (px+1)*py+1
109 faceigeo(4,3) = (px+1)*(py+1)
111 faceigeo(1,4) = (px+1)*(py+1)*pz+1
112 faceigeo(2,4) = (px+1)*(py+1)*pz+px+1
116 faceigeo(1,5) = (px+1)*(py+1)*pz+(px+1)*py+1
117 faceigeo(2,5) = (px+1)*(py+1)*pz+1
119 faceigeo(4,5) = (px+1)*py+1
121 faceigeo(1,6) = (px+1)*(py+1)*(pz+1)
122 faceigeo(2,6) = (px+1)*(py+1)
124 faceigeo(4,6) = (px+1)*(py+1)*pz+px+1
129 crossfaceigeo(1,5) = (px+1)*(py+1)*pz+(px+1)*py+px
130 crossfaceigeo(2,5) = (px+1)*(py+1)*pz+px
131 crossfaceigeo(3,5) = px
132 crossfaceigeo(4,5) = (px+1)*py+px
134 crossfaceigeo(1,6) = (px+1)*(py+1)*pz+(px+1)*py+px
135 crossfaceigeo(2,6) = (px+1)*py+px
136 crossfaceigeo(3,6) = px
137 crossfaceigeo(4,6) = (px+1)*(py+1)*pz+px
141 crossfaceigeo(1,3) = (px+1)*(py+1)*pz+(px+1)*py
142 crossfaceigeo(2,3) = (px+1)*(py+1)*pz+(px+1)+1
143 crossfaceigeo(3,3) = (px+1)+1
144 crossfaceigeo(4,3) = (px+1)*py
146 crossfaceigeo(1,4) = (px+1)*(py+1)*pz+(px+1)+1
147 crossfaceigeo(2,4) = (px+1)*(py+1)*pz+(px+1)*py
148 crossfaceigeo(3,4) = (px+1)*py
149 crossfaceigeo(4,4) = (px+1)+1
153 crossfaceigeo(1,1) = (px+1)*(py+1)+px+1
154 crossfaceigeo(2,1) = (px+1)*(py+1)+1
155 crossfaceigeo(3,1) = (px+1)*(py+1)+(px+1)*py+1
156 crossfaceigeo(4,1) = (px+
158 crossfaceigeo(1,2) = (px+1)*(py+1)*pz
159 crossfaceigeo(2,2) = (px+1)*(py+1)+(px+1)*py+1
160 crossfaceigeo(3,2) = (px+1)*(py+1)+1
161 crossfaceigeo(4,2) = (px+1)*(py+1)+px+1
168 ns(ii)=ixig3d(kxig3d(4,js)+faceigeo(ii,jj)-1)
174 nmin=
min(nmin,ns(ii))
177 IF(nmin==ns(iperm).AND.
178 . ns(mod(iperm,nf)+1)/=ns(iperm))
THEN
180 ni(ii)=ns(mod(ii+iperm-2,nf)+1)
187 DO k=knod2elig3d(ni(1))+1,knod2elig3d(ni(1)+1)
190 IF (key(1:6)==
'GRBRIC'.AND.tagbuf(ks)==0.AND.ifre==0)cycle
191 IF (key(1:6)/=
'GRBRIC'.AND.tagbuf(ipartig3d(ks))==0)cycle
197 nodtag(ixig3d(kxig3d(4,ks)+ii-1))=1
206 ms(ii)=ixig3d(kxig3d(4,ks)+faceigeo(ii,kk)-1)
212 mmin=
min(mmin,ms(ii))
215 IF(mmin==ms(iperm).AND.
216 . ms(mod(iperm,mf)+1)/=ms(iperm))
THEN
218 mi(ii)=ms(mod(ii+iperm-2,mf)+1)
224 IF(crossfaceigeo(1,kk)/=0)
THEN
226 ms(ii)=ixig3d(kxig3d(4,ks)+crossfaceigeo(ii,kk)-1)
232 mmin=
min(mmin,ms(ii))
235 IF(mmin==ms(iperm).AND.
236 . ms(mod(iperm,mf)+1)/=ms(iperm))
THEN
238 mi2(ii)=ms(mod(ii+iperm-2,mf)+1)
245 IF((mi(1)==ni(1).AND.mi(nf)==ni(2)).OR.
246 . (mi2(1)==ni(1).AND.mi2(nf)==ni(2)))
THEN
248 fastagigeo(js)=fastagigeo(js)+pwr(jj)
262 IF (iabs(tagbuf(ipartig3d(j))) == 1)
THEN
265 knotlocelx(1) = knotlocel(1,1,j)
266 knotlocely(1) = knotlocel(1,2,j)
267 knotlocelz(1) = knotlocel(1,3,j)
268 knotlocelx(2) = knotlocel(2,1,j)
269 knotlocely(2) = knotlocel(2,2,j)
270 knotlocelz(2) = knotlocel(2,3,j)
272 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
281 . kxig3d,ixig3d,nctrl,x,v,wige,
282 . knot,igeo,decaligeo,jj,nige,rige,xige,vige,iadtabige,
283 . igrsurf,nsegige,px,py,pz,knotlocpc,knotlocelx,
284 . knotlocely,knotlocelz)
285 decaligeo=decaligeo+16
287 nsegige = nsegige + 9
305 . KXIG3D,IXIG3D,NCTRL,X,V,WIGE,
306 . KNOT,IGEO,DECALIGEO,JJ,NIGE,RIGE,XIGE,VIGE,IADTABIGE,
307 . IGRSURF,NSEGIGE,PX,PY,PZ,KNOTLOCPC,KNOTLOCELX,
308 . KNOTLOCELY,KNOTLOCELZ)
316#include "implicit_f.inc"
320#include "param_c.inc"
321#include "com04_c.inc"
322#include "ige3d_c.inc"
326 INTEGER JJ,IELTYP,NCTRL,DECALIGEO,
328 2 KXIG3D(NIXIG3D,*),JS,IXIG3D(*),IGEO(NPROPGI,*),NIGE(*),
331 . X(3,*),V(3,*),WIGE(*),KNOT(*),RIGE(3,*),XIGE(3,*),VIGE(3,*),
332 . KNOTLOCPC(DEG_MAX,3,*),KNOTLOCELX(2),KNOTLOCELY(2),KNOTLOCELZ(2)
334 TYPE (SURF_) :: IGRSURF
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)
353 nsegige = nsegige + 1
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 + 1 + m +4*n
358 igrsurf%NODES_IGE(iseg,4) = numnod + decaligeo + 1 +(m-1)+4*n
360 igrsurf%ELTYP_IGE(iseg) = ieltyp
361 igrsurf%ELEM_IGE(iseg) = js
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))
377 iad_knot = igeo(40,ipid)
381 idfrstlocknt = igeo(47,ipid)
394 knotlocx(k,j)=knotlocpc(k,1,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
397 knotlocy(k,j)=knotlocpc(k,2,(ipid-1)*numnod
400 knotlocz(k,j)=knotlocpc(k,3,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
410 pasx = (knotlocelx(2) - knotlocelx(1)) / three
411 pasy = (knotlocely(2) - knotlocely(1)) / three
412 pasz = (knotlocelz(2) - knotlocelz(1)) / three
426 zr = knotlocelx(1) + (l-1)*pasx
427 zs = knotlocely(1) + (m-1)*pasy
440 1 js ,n ,x_igeo ,y_igeo,
441 2 z_igeo,w_igeo ,idx ,idy ,
442 3 idz ,knotlocx ,knotlocy,knotlocz,
444 5 zr ,zs ,zt ,knot(iad_knot+1),
445 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2
448 9 knotlocelx,knotlocely,knotlocelz)
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)
459 iadtabige=iadtabige+1
471 vige(1,iadtabige)=vxi
472 vige(2,iadtabige)=vyi
490 zr = knotlocelx(1) + (l-1)*pasx
491 zs = knotlocely(1) + (m-1)*pasy
504 1 js ,n ,x_igeo ,y_igeo,
505 2 z_igeo,w_igeo ,idx ,idy ,
506 3 idz ,knotlocx ,knotlocy,knotlocz,
508 5 zr ,zs ,zt ,knot(iad_knot+1),
509 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
512 9 knotlocelx,knotlocely,knotlocelz)
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)
523 iadtabige=iadtabige+1
535 vige(1,iadtabige)=vxi
536 vige(2,iadtabige)=vyi
537 vige(3,iadtabige)=vzi
554 zr = knotlocelx(1) + (l-1)*pasx
556 zt = knotlocelz(1) + (n-1)*pasz
568 1 js ,n ,x_igeo ,y_igeo,
569 2 z_igeo,w_igeo ,idx ,idy ,
570 3 idz ,knotlocx ,knotlocy,knotlocz,
572 5 zr ,zs ,zt ,knot(iad_knot+1),
573 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
576 9 knotlocelx,knotlocely,knotlocelz)
579 xi = xi + r(j)*x_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)
587 iadtabige=iadtabige+1
599 vige(1,iadtabige)=vxi
600 vige(2,iadtabige)=vyi
601 vige(3,iadtabige)=vzi
618 zr = knotlocelx(1) + (l-1)*pasx
620 zt = knotlocelz(1) + (n-1)*pasz
632 1 js ,n ,x_igeo ,y_igeo,
633 2 z_igeo,w_igeo ,idx ,idy ,
634 3 idz ,knotlocx ,knotlocy,knotlocz,
637 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
640 9 knotlocelx,knotlocely,knotlocelz)
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)
651 iadtabige=iadtabige+1
663 vige(1,iadtabige)=vxi
664 vige(2,iadtabige)=vyi
665 vige(3,iadtabige)=vzi
683 zs = knotlocely(1) + (m-1)*pasy
684 zt = knotlocelz(1) + (n-1)*pasz
696 1 js ,n ,x_igeo ,y_igeo,
697 2 z_igeo,w_igeo ,idx ,idy ,
698 3 idz ,knotlocx ,knotlocy,knotlocz,
700 5 zr ,zs ,zt ,knot(iad_knot+1),
701 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
704 9 knotlocelx,knotlocely,knotlocelz)
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)
715 iadtabige=iadtabige+1
727 vige(1,iadtabige)=vxi
728 vige(2,iadtabige)=vyi
729 vige(3,iadtabige)=vzi
747 zs = knotlocely(1) + (m-1)*pasy
748 zt = knotlocelz(1) + (n-1)*pasz
760 1 js ,n ,x_igeo ,y_igeo,
761 2 z_igeo,w_igeo ,idx ,idy ,
762 3 idz ,knotlocx ,knotlocy,knotlocz,
764 5 zr ,zs ,zt ,knot(iad_knot+1),
765 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
768 9 knotlocelx,knotlocely,knotlocelz)
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)
779 iadtabige=iadtabige+1
791 vige(1,iadtabige)=vxi
792 vige(2,iadtabige)=vyi
793 vige(3,iadtabige)=vzi