37
38
39
40
41
42
43
44
45
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "com04_c.inc"
55#include "param_c.inc"
56#include "ige3d_c.inc"
57
58
59
60 INTEGER IXIG3D(*),KXIG3D(NIXIG3D,*),TAB_NEWFCT(*),TAB_REMOVE(*),
61 . TAB_ELCUT(*),TAB_NEWEL(*),
62 . TAB_FCTCUT(*),EL_CONNECT(*),
63 . IDFILS(NBFILSMAX,*)
64 TYPE(TABCONPATCH_IG3D_) TABCONPATCH
65 INTEGER L_TAB_FCTCUT,L_TAB_NEWEL,L_TAB_ELCUT,
66 . DEG,DEGTANG1,DEGTANG2,DIR,FLAG_PRE,FLAG_DEBUG
67 my_real knotlocpc(deg_max,3,*),knotlocel(2,3,*)
68
69
70
71 INTEGER I,J,K,L,IAD_IXIG3D,OFFSET_KNOT,DIRTANG1
72
73
74
75
76 tol = em06
77
78 IF(dir==1) THEN
79 dirtang1 = 2
80 dirtang2 = 3
81 ELSEIF(dir==2) THEN
82 dirtang1 = 3
83 dirtang2 = 1
84 ELSEIF(dir==3) THEN
85 dirtang1 = 1
86 dirtang2 = 2
87 ENDIF
88
89
90
91
92
93
94 DO i= 1,l_tab_fctcut
95 inctrl=tab_fctcut(i)
96 DO j=1,tabconpatch%L_TAB_IG3D
97 iel=tabconpatch%TAB_IG3D
98 DO itnctrl=1,kxig3d(3,iel)
99 IF(ixig3d(kxig3d(4,iel)+itnctrl-1)==inctrl) THEN
100 ixig3d(kxig3d(4,iel)+itnctrl-1) = 0
101 ENDIF
102 ENDDO
103 DO k=1,idfils(1,iel)
104 jel=idfils(k+1,iel)
105 DO itnctrl=1,kxig3d(3,jel)
106 IF(ixig3d(kxig3d(4,jel)+itnctrl-1)==inctrl) THEN
107 ixig3d(kxig3d(4,jel)+itnctrl-1) = 0
108 ENDIF
109 ENDDO
110 ENDDO
111 ENDDO
112 ENDDO
113
114
115
116
117
118
119
120 DO i=1,tabconpatch%L_TAB_IG3D
121 iel=tabconpatch%TAB_IG3D(i)
122 j=1
123 k=offset_newfct
124 decalgeo=(tabconpatch%PID-1)*(numnod+nbnewx_tmp)
125 DO WHILE(j<=kxig3d(3,iel))
126 DO WHILE (ixig3d(kxig3d(4,iel)+j-1)==0.AND.j<=kxig3d(3,iel))
127 DO WHILE (ixig3d(kxig3d(4,iel)+j-1)==0.AND.k<=l_tab_newfct-1)
128
129 el_connect(iel)=1
130
1311000 k=k+1
132
133 inctrl = tab_newfct(k)
134 DO l=1,l_tab_remove
135 IF(tab_remove(l)==inctrl) GOTO 1000
136 ENDDO
137 DO l=1,kxig3d(3,iel)
138 IF(ixig3d(kxig3d(4,iel)+l-1)==inctrl) GOTO 1000
139 ENDDO
140
141 IF(knotlocel(1,dir,iel)<(knotlocpc(1,dir,decalgeo+inctrl)-tol).OR.
142 . knotlocel(2,dir,iel)>(knotlocpc(deg+1,dir,decalgeo+inctrl)+tol)) cycle
143 IF(knotlocel(1,dirtang1,iel)<(knotlocpc(1,dirtang1,decalgeo
144 . knotlocel(2,dirtang1,iel)>(knotlocpc(degtang1+1,dirtang1,decalgeo+inctrl
145 IF(knotlocel(1,dirtang2,iel)<(knotlocpc(1,dirtang2,decalgeo+inctrl)-tol).OR.
146 . knotlocel(2,dirtang2,iel)>(knotlocpc(degtang2+1,dirtang2,decalgeo+inctrl)+tol)) cycle
147 ixig3d(kxig3d
148 ENDDO
149 j=j+1
150 ENDDO
151 j=j+1
152 ENDDO
153
154
155
156
157
158 DO itfils=1,idfils(1,iel)
159 jel=idfils(itfils+1,iel)
160 j=1
161 k=offset_newfct
162 decalgeo=(tabconpatch%PID-1)*(numnod+nbnewx_tmp)
163 DO WHILE(j<=kxig3d(3,jel))
164 DO WHILE (ixig3d(kxig3d(4,jel)+j-1)==0.AND.j<=kxig3d(3,jel))
165 DO WHILE (ixig3d(kxig3d(4,jel)+j-1)==0.AND.k<=l_tab_newfct-1)
166
167 el_connect(jel)=1
168
1692000 k=k+1
170
171 inctrl = tab_newfct(k)
172 DO l=1,l_tab_remove
173 IF(tab_remove(l)==inctrl) GOTO 2000
174 ENDDO
175 DO l=1,kxig3d(3,jel)
176 IF(ixig3d(kxig3d(4,jel)+l-1)==inctrl) GOTO 2000
177 ENDDO
178
179 IF(knotlocel(1,dir,jel)<(knotlocpc(1,dir,decalgeo+inctrl)-tol).OR.
180 . knotlocel(2,dir,jel)>(knotlocpc(deg+1,dir,decalgeo+inctrl)+tol)) cycle
181 IF(knotlocel(1,dirtang1,jel)<(knotlocpc(1,dirtang1,decalgeo+inctrl)-tol).OR.
182 . knotlocel(2,dirtang1,jel)>(knotlocpc(degtang1+1,dirtang1,decalgeo
183 IF(knotlocel(1,dirtang2,jel)<(knotlocpc(1,dirtang2,decalgeo+inctrl)-tol).OR.
184 . knotlocel(2,dirtang2,jel)>(knotlocpc(degtang2+1,dirtang2,decalgeo+inctrl)+tol)) cycle
185 ixig3d(kxig3d(4,jel)+j-1) = inctrl
186 ENDDO
187 j=j+1
188 ENDDO
189 j=j+1
190 ENDDO
191 ENDDO
192 ENDDO
193
194
195
196
197
198
199
200 IF(flag_debug==1) THEN
201 DO i=1,sixig3d+addsixig3d
202 IF(ixig3d(i)==0) print*,'IL Y A ONE ZERO', ixig3d(i), i
203 ENDDO
204 ENDIF
205
206 RETURN