44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
83
84
85
86#include "implicit_f.inc"
87
88
89
90 INTEGER IDX, IDY, IDZ, NCTRL, PX, PY, PZ,
91 . ITEL, N, BOOLG,IDX2, IDY2, IDZ2
93 . gaussx, gaussy, gaussz,
94 . r(*),xxi(*),yyi(*),zzi(*),
95 . wwi(*),kx(*), ky(*), kz(*), knotlocx(px+2,nctrl),
96 . knotlocy(py+2,nctrl),knotlocz(pz+2,nctrl),knotlocelx(2),
97 . knotlocely(2),knotlocelz(2)
98
99
100
101 INTEGER NUMLOC, I, J, K, NA, NB, NC
103 . sumtot, fn(nctrl), fm(nctrl), fl(nctrl),
104 . xi(3)
105
106
107
108
109 IF (boolg == 1) THEN
110
111 xi(1) = ((knotlocelx(2)-knotlocelx(1))*gaussx + (knotlocelx(2)+(knotlocelx(1))))/two
112 xi(2) = ((knotlocely(2)-knotlocely(1))*gaussy + (knotlocely(2)+(knotlocely(1))))/two
113 xi(3) = ((knotlocelz(2)-knotlocelz(1))*gaussz + (knotlocelz(2)+(knotlocelz(1))))/two
114
115
116
117 ELSE
118
119 xi(1) = gaussx
120 xi(2) = gaussy
121 xi(3) = gaussz
122 ENDIF
123
124
125
126
127
128
129
130
131
132 numloc = 0
133 DO k=1,pz+1
134 DO j=1,py+1
135 DO i=1,px+1
136 numloc = numloc+1
137 CALL onebasisfun(i, 1, px, xi(1), knotlocx(:,numloc), fn(numloc))
138 CALL onebasisfun(j, 1, py, xi(2), knotlocy(:,numloc), fm(numloc))
139 CALL onebasisfun(k, 1, pz, xi(3), knotlocz(:,numloc), fl(numloc))
140 ENDDO
141 ENDDO
142 ENDDO
143
144
145
146 sumtot=zero
147
148 DO numloc=1,nctrl
149 r(numloc)=fn(numloc)*fm(numloc)*fl(numloc)*wwi(numloc)
150 sumtot=sumtot+r(numloc)
151 ENDDO
152
153
154
155 DO numloc=1,nctrl
156 r(numloc)=r(numloc)/sumtot
157 ENDDO
158
159 RETURN
subroutine onebasisfun(idxii, idxi, pxi, xi, kxi, ders1)