35
36
37
38 USE intbufdef_mod
39
40
41
42#include "implicit_f.inc"
43
44
45
46#include "com04_c.inc"
47#include "param_c.inc"
48#include "ige3d_c.inc"
49
50
51
52 INTEGER KXIG3D(NIXIG3D,*),IGEO(NPROPGI,*), IXIG3D(*)
53
55 . x(3,*) ,v(3,*), knot(*), wige(*),knotlocpc(deg_max,3,*),
56 . knotlocel(2,3,*)
57 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
58
59
60
61 INTEGER I,K,N,J,JS,NCTRL, IPID, N1, N2, N3,
62 . PX, PY, PZ, IDX, IDY, IDZ, IDX2, IDY2, IDZ2, IAD_KNOT
64 . xi, yi, zi, vxi, vyi, vzi,zr, zs, zt
65 INTEGER NKNOT1,NKNOT2,NKNOT3
67 . x_igeo(64),y_igeo(64),z_igeo(64),
68 . vx_igeo(64),vy_igeo(64),vz_igeo(64),
69 . w_igeo(64),r(64)
71 . knotlocelx(2),
72 . knotlocely(2),knotlocelz(2)
73 my_real,
DIMENSION(:,:),
ALLOCATABLE ::
74 . knotlocx,knotlocy,knotlocz
75
76
77
78
79 DO n=1,ninter
80 DO i=1,intbuf_tab(n)%S_NIGE
81
82 js=intbuf_tab(n)%NIGE(i)
83
84 knotlocelx(1) = knotlocel(1,1,js)
85 knotlocely(1) = knotlocel(1,2,js)
86 knotlocelz(1) = knotlocel(1,3,js)
87 knotlocelx(2) = knotlocel(2,1,js)
88 knotlocely(2) = knotlocel(2,2,js)
89 knotlocelz(2) = knotlocel(2,3,js)
90
91 nctrl = kxig3d(3,js)
92 ipid=kxig3d(2,js)
93 iad_knot = igeo(40,ipid)
94 px = igeo(41,ipid)
95 py = igeo(42,ipid)
96 pz = igeo(43,ipid)
97
98 ALLOCATE (knotlocx(px+1,nctrl),knotlocy(py+1,nctrl),knotlocz(pz+1,nctrl))
99
100 DO j=1,nctrl
101 x_igeo(j)=x(1,ixig3d(kxig3d(4,js)+j-1))
102 y_igeo(j)=x(2,ixig3d(kxig3d(4,js)+j-1))
103 z_igeo(j)=x(3,ixig3d(kxig3d(4,js)+j-1))
104 vx_igeo(j)=v(1,ixig3d(kxig3d(4,js)+j-1))
105 vy_igeo(j)=v(2,ixig3d(kxig3d(4,js)+j-1))
106 vz_igeo(j)=v(3,ixig3d(kxig3d(4,js)+j-1))
107 w_igeo(j)=wige(ixig3d(kxig3d(4,js)+j-1))
108
109 DO k=1,px+1
110 knotlocx(k,j)=knotlocpc(k,1,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
111 ENDDO
112 DO k=1,py+1
113 knotlocy(k,j)=knotlocpc(k,2,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
114 ENDDO
115 DO k=1,pz+1
116 knotlocz(k,j)=knotlocpc(k,3,(ipid-1)*numnod+ixig3d(kxig3d(4,js)+j-1))
117 ENDDO
118
119 ENDDO
120 n1 = igeo(44,ipid)
121 n2 = igeo(45,ipid)
122 n3 = igeo(46,ipid)
123 nknot1 = n1+px
124 nknot2 = n2+py
125 nknot3 = n3+pz
126 idx = kxig3d(6,js)
127 idy = kxig3d(7,js)
128 idz = kxig3d(8,js)
129 idx2 = kxig3d(9,js)
130 idy2 = kxig3d(10,js)
131 idz2 = kxig3d(11,js)
132
133 xi = zero
134 yi = zero
135 zi = zero
136 vxi = zero
137 vyi = zero
138 vzi = zero
139 zr = intbuf_tab(n)%RIGE(3*(i-1)+1)
140 zs = intbuf_tab(n)%RIGE(3*(i-1)+2)
141 zt = intbuf_tab(n)%RIGE(3*(i-1)+3)
142
143
144
145
146
147
148
149
150
151
153 1 js ,n ,x_igeo ,y_igeo,
154 2 z_igeo,w_igeo ,idx ,idy ,
155 3 idz ,knotlocx ,knotlocy,knotlocz,
156 4 r ,nctrl ,
157 5 zr ,zs ,zt ,knot(iad_knot+1),
158 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
159 7 py-1 ,pz-1 ,0 ,
160 8 idx2,idy2 ,idz2 ,
161 9 knotlocelx,knotlocely,knotlocelz)
162
163 DO j=1,nctrl
164
165 xi = xi + r(j)*x_igeo(j)
166 yi = yi + r(j)*y_igeo(j)
167 zi = zi + r(j)*z_igeo(j)
168 vxi = vxi + r(j)*vx_igeo(j)
169 vyi = vyi + r(j)*vy_igeo(j)
170 vzi = vzi + r(j)*vz_igeo(j)
171 ENDDO
172 intbuf_tab(n)%XIGE(3*(i-1)+1)=xi
173 intbuf_tab(n)%XIGE(3*(i-1)+2)=yi
174 intbuf_tab(n)%XIGE(3*(i-1)+3)=zi
175 intbuf_tab(n)%VIGE(3*(i-1)+1)=vxi
176 intbuf_tab(n)%VIGE(3*(i-1)+2)=vyi
177 intbuf_tab(n)%VIGE(3*(i-1)+3)=vzi
178 DEALLOCATE (knotlocx,knotlocy,knotlocz)
179 ENDDO
180 ENDDO
181
182 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)