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,*),IGEO(NPROPGI,*),
61 . (*)
62 INTEGER FLAG_PRE
63 TYPE(TABCONPATCH_IG3D_), DIMENSION(*) :: TABCONPATCH
64 my_real knot(*),knotlocpc(deg_max,3,*),knotlocel(2,3,*)
65 my_real x(*),v(*),d(*),ms(*),wige(*)
66
67
68
69 TYPE(MESHSURFIG3D_), DIMENSION(:), ALLOCATABLE, TARGET :: MESHSURF
70 TYPE(MESHSURFIG3D_), POINTER :: PMESHSURF, P2MESHSURF
71 INTEGER I,J,K,L,M,N,P,ITNCTRL,INCTRL,ITKSI,ITETA,ITZETA,
72 . IPID,IAD_KNOT,ITTEST,ITEL,OFFSET_KNOT,
73 . PX,PY,PZ,IDX,IDY,IDZ,IEL,
74 . N1,N2,N3,NKNOT1,NKNOT2,NKNOT3,NELX,NELY,NELZ,
75 . DIR,DECALGEO_TMP,DECALGEOFINAL,NBCUT,IDNBCUT,
76 . IDKNOT1,IDKNOT2,PDIR,PTANG1,PTANG2,
77 . NELDIR,NELTANG1,NELTANG2,
78 . P2DIR,P2TANG1,P2TANG2,L_TAB_NEWFCTCUT,ITPATCH,
79 . NBPATCH_IG3D,FLAG_DEBUG
80 my_real,
DIMENSION(:),
ALLOCATABLE :: gama
81
82
83
84 INTEGER, DIMENSION(:,:,:), POINTER :: MESHIGE
85 INTEGER, DIMENSION(:,:,:), ALLOCATABLE, TARGET :: MESHIGEX,MESHIGEY,MESHIGEZ
86 INTEGER, DIMENSION(:), ALLOCATABLE, TARGET :: IDXEL,IDYEL,IDZEL
87 INTEGER, DIMENSION(:), POINTER :: IDDIR,IDTANG1,IDTANG2
88
89
90
91 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IDFILS,TAB_INITIAL_CUT
92 INTEGER, DIMENSION(:), ALLOCATABLE :: TAB_REMOVE,TAB_STAY,TAB_NEWFCT,
93 . TAB_NEWFCTCUT,EL_CONNECT
94
95
96
97 my_real,
DIMENSION(:),
ALLOCATABLE :: x_tmp,v_tmp,d_tmp,ms_tmp,wige_tmp
98
99 flag_debug=0
100
101
102
103
104
105
106 IF(flag_pre==0) THEN
107 nbnewx_tmp = addelig3d*20
108
109 ALLOCATE (tab_initial_cut(3,numelig3d0))
110 ALLOCATE (idfils(nbfilsmax,numelig3d0))
111 ALLOCATE (tab_remove(addelig3d*27))
112 ALLOCATE (tab_stay(nint(addelig3d*27*0.5)))
113 ALLOCATE (tab_newfct(nint(addelig3d*27*1.2)))
114 ALLOCATE (meshsurf(nbmeshsurf))
115 ALLOCATE (gama(numnodige0+2*addelig3d*27))
116 ELSE
117 nbnewx_tmp = l_tab_newfct
118 ALLOCATE (tab_initial_cut(3,numelig3d))
119 ALLOCATE (idfils(nbfilsmax,numelig3d))
120 ALLOCATE (tab_remove
121 ALLOCATE (tab_stay(l_tab_stay))
122 ALLOCATE (tab_newfct(l_tab_newfct))
123 ALLOCATE (meshsurf(nbmeshsurf))
124 ALLOCATE (x_tmp(3*(numnodige0+l_tab_newfct)))
125 ALLOCATE (d_tmp(3*(numnodige0+l_tab_newfct)))
126 ALLOCATE (v_tmp(3*(numnodige0+l_tab_newfct)))
127 ALLOCATE (ms_tmp(numnodige0+l_tab_newfct))
128 ALLOCATE (wige_tmp(numnodige0+l_tab_newfct))
129 ALLOCATE (gama(numnodige0+l_tab_newfct))
130 DO i=1,numnodige0
131 DO j=1,3
132 x_tmp((i-1)*3+j) = x((i-1)*3+j)
133 v_tmp((i-1)*3+j) = v((i-1)*3+j)
134 d_tmp((i-1)*3+j) = d((i-1)*3+j)
135 ENDDO
136 ms_tmp(i) = ms(i)
137 wige_tmp(i) = wige(i)
138 ENDDO
139 DO i=numnodige0+1,numnodige0+l_tab_newfct
140 DO j=1,3
141 x_tmp((i-1)*3+j) = 0
142 v_tmp((i-1)*3+j) = 0
143 d_tmp((i-1)*3+j) = 0
144 ENDDO
145 ms_tmp(i) = 0
146 wige_tmp(i) = 0
147 ENDDO
148 ENDIF
149 ALLOCATE (el_connect(numelig3d0+addelig3d))
150 el_connect(:)=0
151
152
153
154
155
156
157
158
159 nbmeshsurf = 0
160 addelig3d=0
161 addsixig3d=0
162 l_tab_remove=0
163 l_tab_stay=0
164 l_tab_newfct=0
165 tab_newfct = 0
166 tab_remove = 0
167 tab_stay = 0
168 idfils(:,:)=0
169 offset_newfct = 0
170
171
172
173
174
175
176
177
178
179 DO p=1,nbpart_ig3d
180 ipid=tabconpatch(p)%PID
181 iad_knot = igeo(40,ipid)
182 px = igeo(41,ipid)
183 py = igeo(42,ipid)
184 pz = igeo(43,ipid)
185 n1 = igeo(44,ipid)
186 n2 = igeo(45,ipid)
187 n3 = igeo(46,ipid)
188 nknot1 = n1+px
189 nknot2 = n2+py
190 nknot3 = n3+pz
191 decalgeo_tmp=(ipid-1)*(numnod+nbnewx_tmp)
192 DO i=1,tabconpatch(p)%L_TAB_IG3D
193 iel=tabconpatch(p)%TAB_IG3D(i)
194 itnctrl=0
195 idx = kxig3d(6,iel)
196 idy = kxig3d(7,iel)
197 idz = kxig3d(8,iel)
198 DO itzeta=1,pz
199 DO iteta=1,py
200 DO itksi=1,px
201 itnctrl=itnctrl+1
202 inctrl = ixig3d(kxig3d(4,iel)+itnctrl-1)
203 DO l=0,px
204 knotlocpc(l+1,1,decalgeo_tmp+inctrl)=knot(iad_knot+idx-itksi+l+1)
205 ENDDO
206 DO m=0,py
207 knotlocpc(m+1,2,decalgeo_tmp+inctrl)=knot(iad_knot+nknot1+idy-iteta+m+1)
208 ENDDO
209 DO n=0,pz
210 knotlocpc(n+1,3,decalgeo_tmp+inctrl)=knot(iad_knot+nknot1+nknot2+idz-itzeta+n+1)
211 ENDDO
212 ENDDO
213 ENDDO
214 ENDDO
215
216 kxig3d(9,iel)=idx+1
217 kxig3d(10,iel)=idy+1
218 kxig3d(11,iel)=idz+1
219 DO WHILE (knot(iad_knot+kxig3d(9,iel))==knot(iad_knot+kxig3d(9,iel)+1))
220 kxig3d(9,iel)=kxig3d(9,iel)+1
221 ENDDO
222 DO WHILE (knot(iad_knot+nknot1+kxig3d(10,iel))==knot(iad_knot+nknot1+kxig3d(10,iel
223 kxig3d(10,iel)=kxig3d(10,iel)+1
224 ENDDO
225 DO WHILE (knot(iad_knot+nknot1+nknot2+kxig3d(11,iel))==knot(iad_knot+nknot1+nknot2+kxig3d(11,iel)+1))
226 kxig3d(11,iel)=kxig3d(11,iel)+1
227 ENDDO
228
229 knotlocel(1,1,iel) = knot(iad_knot+kxig3d(6,iel))
230 knotlocel(2,1,iel) = knot(iad_knot+kxig3d(9,iel))
231 knotlocel(1,2,iel) = knot(iad_knot+nknot1+kxig3d(7,iel))
232 knotlocel(2,2,iel) = knot(iad_knot+nknot1+kxig3d(10,iel))
233 knotlocel(1,3,iel) = knot(iad_knot+nknot1+nknot2+kxig3d(8,iel))
234 knotlocel(2,3,iel) = knot(iad_knot+nknot1+nknot2+kxig3d(11,iel))
235
236
237
238
239
240
241 tab_initial_cut(1,iel) = kxig3d(12,iel)
242 tab_initial_cut(2,iel) = kxig3d(13,iel)
243 tab_initial_cut(3,iel) = kxig3d(14,iel)
244
245
246
247
248
249 ENDDO
250 ENDDO
251
252
253
254
255
256
257
258 DO p=1,nbpart_ig3d
259 ipid=tabconpatch(p)%PID
260 iad_knot = igeo(40,ipid)
261 px = igeo(41,ipid)
262 py = igeo(42,ipid)
263 pz = igeo(43,ipid)
264 n1 = igeo(44,ipid)
265 n2 = igeo(45,ipid)
266 n3 = igeo(46,ipid)
267 nknot1 = n1+px
268 nknot2 = n2+py
269 nknot3 = n3+pz
270 nelx=0
271 nely=0
272 nelz=0
273 ALLOCATE(idxel(nknot1))
274 ALLOCATE(idyel(nknot2))
275 ALLOCATE(idzel(nknot3))
276 idxel=0
277 idyel=0
278 idzel=0
279 DO i=1,nknot1-1
280 IF(knot(iad_knot+i)/=knot(iad_knot+i+1)) THEN
281 nelx=nelx+1
282 idxel(i)=nelx
283 ENDIF
284 ENDDO
285 DO i=1,nknot2-1
286 IF(knot(iad_knot+nknot1+i)/=knot(iad_knot+nknot1+i+1)) THEN
287 nely=nely+1
288 idyel(i)=nely
289 ENDIF
290 ENDDO
291 DO i=1,nknot3-1
292 IF(knot(iad_knot+nknot1+nknot2+i)/=knot(iad_knot+nknot1+nknot2+i+1)) THEN
293 nelz=nelz+1
294 idzel(i)=nelz
295 ENDIF
296 ENDDO
297
298
299
300
301
302 ALLOCATE(meshigex(nely,nelz,nelx))
303 ALLOCATE(meshigey(nelz,nelx,nely))
304 ALLOCATE(meshigez(nelx,nely,nelz))
305 meshigex(:,:,:)=0
306 meshigey(:,:,:)=0
307 meshigez(:,:,:)=0
308
309 DO l=1,tabconpatch(p)%L_TAB_IG3D
310 iel = tabconpatch(p)%TAB_IG3D(l)
311 meshigex(idyel(kxig3d(7,iel)),idzel(kxig3d(8,iel)),idxel
312 meshigey(idzel(kxig3d(8,iel)),idxel(kxig3d(6,iel)),idyel(kxig3d
313 meshigez(idxel(kxig3d(6,iel)),idyel(kxig3d(7,iel)),idzel(kxig3d(8,iel)))=iel
314 ENDDO
315
316
317
318
319
320 gama=1
321 DO dir=1,3
322 SELECT CASE (dir)
323 CASE(1)
324 idnbcut=12
325 idknot1=6
326 idknot2=9
327 offset_knot=iad_knot
328 pdir=px
329 ptang1=py
330 ptang2=pz
331 neldir=nelx
332 neltang1=nely
333 neltang2=nelz
334 iddir => idxel
335 idtang1 => idyel
336 idtang2 => idzel
337 meshige => meshigex
338 CASE(2)
339 idnbcut=13
340 idknot1=7
341 idknot2=10
342 offset_knot=iad_knot+nknot1
343 pdir=py
344 ptang1=pz
345 ptang2=px
346 neldir=nely
347 neltang1=nelz
348 neltang2=nelx
349 iddir => idyel
350 idtang1 => idzel
351 idtang2 => idxel
352 meshige => meshigey
353 CASE(3)
354 idnbcut=14
355 idknot1=8
356 idknot2=11
357 offset_knot=iad_knot+nknot1+nknot2
358 pdir=pz
359 ptang1=px
360 ptang2=py
361 neldir=nelz
362 neltang1=nelx
363 neltang2=nely
364 iddir => idzel
365 idtang1 => idxel
366 idtang2 => idyel
367 meshige => meshigez
368 CASE DEFAULT
369 idnbcut= -huge(idnbcut)
370 idknot1=-huge(idknot1)
371 idknot2=-huge(idknot2)
372 offset_knot=-huge(offset_knot)
373 pdir=-huge(pdir)
374 ptang1=-huge(ptang1)
375 ptang2=-huge(ptang2)
376 neldir=-huge(neldir)
377 neltang1=-huge(neltang1)
378 neltang2=-huge(neltang2)
379 iddir => null()
380 idtang1 => null()
381 idtang2 => null()
382 meshige => null()
383 END SELECT
384
385
386
387
388
389 DO l=1,tabconpatch(p)%L_TAB_IG3D
390 iel = tabconpatch(p)%TAB_IG3D(l)
391 decalgeo_tmp=(kxig3d(2,iel)-1)*(numnod+nbnewx_tmp)
392 IF(kxig3d(idnbcut,iel)>1) THEN
393 nbcut=tab_initial_cut(dir,iel)
394
395 DO i=(tab_initial_cut(dir,iel)-kxig3d(idnbcut,iel))+1,tab_initial_cut(dir,iel)-1
396
397 nbmeshsurf = nbmeshsurf + 1
398 newfct = 0
399 pmeshsurf => meshsurf(nbmeshsurf)
400 pmeshsurf%DIR=dir
401 pmeshsurf%ID_MESHSURF=nbmeshsurf
402 pmeshsurf%ID_PID=ipid
403
405 . nknot1,nknot2,nknot3,i,pmeshsurf%KNOT_INSERE)
406
408 . iddir ,idtang1 ,idtang2 ,
409 . neldir ,neltang1 ,neltang2 ,pmeshsurf%DIR ,
410 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT,
411 . pmeshsurf%TAB_ELCUT,pmeshsurf%L_TAB_ELCUT,
412 . pmeshsurf%TAB_NEWEL,pmeshsurf%L_TAB_NEWEL,
413 . knot,iad_knot,nknot1,nknot2,nknot3,idfils,
414 . knotlocel,pmeshsurf%KNOT_INSERE,ipartig3d,tab_initial_cut,i,0)
415
416 ALLOCATE(pmeshsurf%TAB_COINKNOT(2,pmeshsurf%L_TAB_COINKNOT))
417 ALLOCATE(pmeshsurf%TAB_ELCUT(pmeshsurf%L_TAB_ELCUT))
418 ALLOCATE(pmeshsurf%TAB_NEWEL(pmeshsurf%L_TAB_NEWEL))
419
421 . iddir ,idtang1 ,idtang2 ,
422 . neldir ,neltang1 ,neltang2 ,pmeshsurf%DIR ,
423 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT,
424 . pmeshsurf%TAB_ELCUT,pmeshsurf%L_TAB_ELCUT,
425 . pmeshsurf%TAB_NEWEL,pmeshsurf%L_TAB_NEWEL,
426 . knot,iad_knot,nknot1,nknot2,nknot3,idfils,
427 . knotlocel,pmeshsurf%KNOT_INSERE,ipartig3d,tab_initial_cut,i,1)
428
429 pmeshsurf%L_TAB_MESHSURFCUT = 0
430
431 DO ittest=1,nbmeshsurf-1
432 p2meshsurf => meshsurf(ittest)
434 . pmeshsurf%ID_PID, p2meshsurf%ID_PID, p2meshsurf%ID_MESHSURF,
435 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT,
436 . p2meshsurf%TAB_COINKNOT,p2meshsurf%L_TAB_COINKNOT,
437 . pmeshsurf%KNOT_INSERE,p2meshsurf%KNOT_INSERE,
438 . pmeshsurf%TAB_MESHSURFCUT,pmeshsurf%L_TAB_MESHSURFCUT,
439 . p2meshsurf%TAB_MESHSURFCUT,p2meshsurf%L_TAB_MESHSURFCUT,0)
440 ENDDO
441
442 ALLOCATE(pmeshsurf%TAB_MESHSURFCUT(pmeshsurf%L_TAB_MESHSURFCUT))
443 pmeshsurf%L_TAB_MESHSURFCUT = 0
444
445 DO ittest=1,nbmeshsurf-1
446 p2meshsurf => meshsurf(ittest)
448 . pmeshsurf%ID_PID, p2meshsurf%ID_PID, p2meshsurf%ID_MESHSURF,
449 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT,
450 . p2meshsurf%TAB_COINKNOT,p2meshsurf%L_TAB_COINKNOT,
451 . pmeshsurf%KNOT_INSERE,p2meshsurf%KNOT_INSERE
452 . pmeshsurf%TAB_MESHSURFCUT,pmeshsurf%L_TAB_MESHSURFCUT,
453 . p2meshsurf%TAB_MESHSURFCUT,p2meshsurf%L_TAB_MESHSURFCUT,1)
454 ENDDO
455
456 CALL test_support_fct(ixig3d, kxig3d, knotlocpc, ptang1, ptang2, pmeshsurf%DIR,
457 . pmeshsurf%TAB_ELCUT,pmeshsurf%L_TAB_ELCUT,
458 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT,
459 . pmeshsurf%TAB_FCTCUT,pmeshsurf%L_TAB_FCTCUT,decalgeo_tmp,0)
460
461 ALLOCATE(pmeshsurf%TAB_FCTCUT(pmeshsurf%L_TAB_FCTCUT))
462
463 CALL test_support_fct(ixig3d, kxig3d, knotlocpc, ptang1, ptang2, pmeshsurf%DIR,
464 . pmeshsurf%TAB_ELCUT,pmeshsurf%L_TAB_ELCUT,
465 . pmeshsurf%TAB_COINKNOT,pmeshsurf%L_TAB_COINKNOT
466 . pmeshsurf%TAB_FCTCUT,pmeshsurf%L_TAB_FCTCUT,decalgeo_tmp,1)
467
469 . pdir,ptang1,ptang2,iad_knot,nknot1,nknot2,nknot3,
470 . gama,pmeshsurf%DIR,pmeshsurf%KNOT_INSERE,
471 . x_tmp,d_tmp,v_tmp,ms_tmp,wige_tmp,
472 . pmeshsurf%TAB_FCTCUT,pmeshsurf%L_TAB_FCTCUT,
473 . tab_remove,tab_newfct,decalgeo_tmp,tabconpatch,p,
474 . kxig3d,ixig3d,tab_stay,flag_pre)
475
476 DO ittest=1,pmeshsurf%L_TAB_MESHSURFCUT
477 p2meshsurf => meshsurf(pmeshsurf%TAB_MESHSURFCUT(ittest))
478 IF(p2meshsurf%DIR==2) THEN
479 p2dir=py
480 p2tang1=pz
481 p2tang2=px
482 ELSEIF(p2meshsurf%DIR==1) THEN
483 p2dir=px
484 p2tang1=py
485 p2tang2=pz
486 ENDIF
487 l_tab_newfctcut = 0
489 . p2meshsurf%DIR, p2meshsurf%KNOT_INSERE,
490 . p2meshsurf%TAB_COINKNOT,p2meshsurf%L_TAB_COINKNOT, tab_newfct,
491 . tab_newfctcut,l_tab_newfctcut,decalgeo_tmp,tab_remove,0)
492 IF(l_tab_newfctcut>0) THEN
493 ALLOCATE(tab_newfctcut(l_tab_newfctcut))
495 . p2meshsurf%DIR, p2meshsurf%KNOT_INSERE,
496 . p2meshsurf%TAB_COINKNOT,p2meshsurf%L_TAB_COINKNOT, tab_newfct,
497 . tab_newfctcut,l_tab_newfctcut,decalgeo_tmp,tab_remove,1)
499 . p2dir,p2tang1,p2tang2,iad_knot,nknot1,nknot2,nknot3,
500 . gama,p2meshsurf%DIR,p2meshsurf%KNOT_INSERE,
501 . x_tmp,d_tmp,v_tmp,ms_tmp,wige_tmp,
502 . tab_newfctcut,l_tab_newfctcut,
503 . tab_remove,tab_newfct,decalgeo_tmp,tabconpatch,p,
504 . kxig3d,ixig3d,tab_stay,flag_pre)
505
506 DEALLOCATE(tab_newfctcut)
507
508 ENDIF
509 ENDDO
510
511 CALL rebuild_ig3d(ixig3d, kxig3d,pmeshsurf%DIR,pdir,ptang1,ptang2,
512 . knotlocpc,knotlocel,
513 . pmeshsurf%TAB_ELCUT,pmeshsurf%L_TAB_ELCUT,
514 . pmeshsurf%TAB_NEWEL,pmeshsurf%L_TAB_NEWEL,
515 . pmeshsurf%TAB_FCTCUT,pmeshsurf%L_TAB_FCTCUT,
516 . tab_remove,tab_newfct,el_connect,tabconpatch(p),
517 . idfils,flag_pre,flag_debug)
518
519 offset_newfct = offset_newfct + newfct
520
521 ENDDO
522 ENDIF
523 ENDDO
524 ENDDO
525 DEALLOCATE(idxel,idyel,idzel)
526 DEALLOCATE(meshigex,meshigey,meshigez)
527 ENDDO
528
529
530
531
532
533 DO i=1,nbmeshsurf
534 IF(meshsurf(i)%L_TAB_COINKNOT/=0) DEALLOCATE(meshsurf(i)%TAB_COINKNOT)
535 IF(meshsurf(i)%L_TAB_ELCUT/=0) DEALLOCATE(meshsurf(i)%TAB_ELCUT)
536 IF(meshsurf(i)%L_TAB_FCTCUT/=0) DEALLOCATE(meshsurf(i)%TAB_FCTCUT)
537 IF(meshsurf(i)%L_TAB_NEWEL/=0) DEALLOCATE(meshsurf(i)%TAB_NEWEL)
538 IF(meshsurf(i)%L_TAB_MESHSURFCUT/=0) DEALLOCATE(meshsurf
539 ENDDO
540 DEALLOCATE(meshsurf)
541
542
543
544
545
546
547 IF(flag_debug==1) THEN
548 DO i=1,numelig3d0+addelig3d
549 j=1
550 decalgeo_tmp=(kxig3d(2,i)-1)*(numnod+nbnewx_tmp)
551 DO j=1,kxig3d(3,i)
552 inctrl=ixig3d(kxig3d(4,i)+j-1)
553 IF(inctrl==0) THEN
554 print*,'ELEMENT',i,'point',inctrl
555 ELSEIF(knotlocel(1,1,i)<knotlocpc(1,1,decalgeo_tmp+inctrl
556 . knotlocel(2,1,i)>knotlocpc(4,1,decalgeo_tmp+inctrl)+em06 .OR.
557 . knotlocel(1,2,i)<knotlocpc(1,2,decalgeo_tmp+inctrl)-em06 .OR.
558 . knotlocel(2,2,i)>knotlocpc(4,2,decalgeo_tmp+inctrl)+em06 .OR.
559 . knotlocel(1,3,i)<knotlocpc(1,3,decalgeo_tmp+inctrl)-em06 .OR.
560 . knotlocel(2,3,i)>knotlocpc(4,3,decalgeo_tmp+inctrl)+em06) THEN
561 print*,'ELEMENT',i,'point',INCTRL
562 print*,KNOTLOCEL(1,1,I),'<',KNOTLOCPC(1,1,DECALGEO_TMP+INCTRL)
563 print*,KNOTLOCEL(2,1,I),'>',KNOTLOCPC(4,1,DECALGEO_TMP+INCTRL)
564 print*,KNOTLOCEL(1,2,I),'<',KNOTLOCPC(1,2,DECALGEO_TMP+INCTRL)
565 print*,KNOTLOCEL(2,2,I),'>',KNOTLOCPC(4,2,DECALGEO_TMP+INCTRL)
566 print*,KNOTLOCEL(1,3,I),'<',KNOTLOCPC(1,3,DECALGEO_TMP+INCTRL)
567 print*,KNOTLOCEL(2,3,I),'>',KNOTLOCPC(4,3,DECALGEO_TMP+INCTRL)
568 ENDIF
569 ENDDO
570 ENDDO
571 ENDIF
572
573 IF(NBMESHSURF/=0) THEN
574
575
576
577
578
579 CALL REORDER_IG3D(IXIG3D, KXIG3D,KNOTLOCPC,KNOTLOCEL,
580 . X_TMP,D_TMP,V_TMP,MS_TMP,WIGE_TMP,
581 . TAB_REMOVE,TAB_NEWFCT,EL_CONNECT,
582 . IPARTIG3D,IGEO,TAB_STAY,FLAG_PRE,FLAG_DEBUG)
583
584
585
586
587
588 IF(FLAG_PRE==1) THEN
589 DO I=1,NUMNOD
590 DO J=1,3
591 X((I-1)*3+J) = X_TMP((I-1)*3+J)
592 V((I-1)*3+J) = V_TMP((I-1)*3+J)
593 D((I-1)*3+J) = D_TMP((I-1)*3+J)
594 ENDDO
595 MS(I) = MS_TMP(I)
596 WIGE(I) = WIGE_TMP(I)
597 ENDDO
598 DO P=1,NBPART_IG3D
599 IPID=TABCONPATCH(P)%PID
600 DECALGEOFINAL=(IPID-1)*NUMNOD
601 DECALGEO_TMP=(IPID-1)*(NUMNOD+NBNEWX_TMP)
602 DO I=1,NUMNOD
603 KNOTLOCPC(:,1,DECALGEOFINAL+I) = KNOTLOCPC(:,1,DECALGEO_TMP+I)
604 KNOTLOCPC(:,2,DECALGEOFINAL+I) = KNOTLOCPC(:,2,DECALGEO_TMP+I)
605 KNOTLOCPC(:,3,DECALGEOFINAL+I) = KNOTLOCPC(:,3,DECALGEO_TMP+I)
606 ENDDO
607 ENDDO
608 DEALLOCATE(X_TMP,V_TMP,D_TMP,MS_TMP,WIGE_TMP)
609
610 IF(FLAG_DEBUG==1) THEN
611 DO I=1,NUMELIG3D0+ADDELIG3D
612 J=1
613 DECALGEOFINAL=(KXIG3D(2,I)-1)*(NUMNOD)
614 DO J=1,KXIG3D(3,I)
615 INCTRL=IXIG3D(KXIG3D(4,I)+J-1)
616 IF(INCTRL==0) THEN
617 print*,'element',I,'point',INCTRL
618.OR. ELSEIF(KNOTLOCEL(1,1,I)<KNOTLOCPC(1,1,DECALGEOFINAL+INCTRL)-EM06
619.OR. . KNOTLOCEL(2,1,I)>KNOTLOCPC(4,1,DECALGEOFINAL+INCTRL)+EM06
620.OR. . KNOTLOCEL(1,2,I)<KNOTLOCPC(1,2,DECALGEOFINAL+INCTRL)-EM06
621.OR. . KNOTLOCEL(2,2,I)>KNOTLOCPC(4,2,DECALGEOFINAL+INCTRL)+EM06
622.OR. . KNOTLOCEL(1,3,I)<KNOTLOCPC(1,3,DECALGEOFINAL+INCTRL)-EM06
623 . KNOTLOCEL(2,3,I)>KNOTLOCPC(4,3,DECALGEOFINAL+INCTRL)+EM06) THEN
624 print*,'element',I,'point',INCTRL
625 print*,KNOTLOCEL(1,1,I),'<',KNOTLOCPC(1,1,DECALGEOFINAL+INCTRL)
626 print*,KNOTLOCEL(2,1,I),'>',KNOTLOCPC(4,1,DECALGEOFINAL+INCTRL)
627 print*,KNOTLOCEL(1,2,I),'<',KNOTLOCPC(1,2,DECALGEOFINAL+INCTRL)
628 print*,KNOTLOCEL(2,2,I),'>',knotlocpc(4,2,decalgeofinal+inctrl)
629 print*,knotlocel(1,3,i),'<',knotlocpc(1,3,decalgeofinal+inctrl)
630 print*,knotlocel(2,3,i),'>',knotlocpc(4,3,decalgeofinal+inctrl)
631 ENDIF
632 ENDDO
633 ENDDO
634 ENDIF
635
636 ENDIF
637 ENDIF
638
639
640
641
642 DEALLOCATE(tab_remove)
643 DEALLOCATE(tab_stay)
644 DEALLOCATE(tab_newfct)
645 DEALLOCATE(gama)
646 DEALLOCATE(idfils)
647 DEALLOCATE(el_connect)
648 DEALLOCATE(tab_initial_cut)
649
650 RETURN
subroutine comput_coinknot(iel, ixig3d, kxig3d, meshige, ptang1, ptang2, iddir, idtang1, idtang2, neldir, neltang1, neltang2, dir, tab_coinknot, l_tab_coinknot, tab_elcut, l_tab_elcut, tab_newel, l_tab_newel, knot, iad_knot, nknot1, nknot2, nknot3, idfils, knotlocel, newknot, ipartig3d, tab_oldidcut, idcut, flag)
subroutine comput_mesh_neighbour(dir, dir2, ipid, ipid2, id_meshsurf, tab_coinknot, l_tab_coinknot, tab_coinknot_test, l_tab_coinknot_test, knot_insere, knot_insere2, tab_meshsurfcut, l_tab_meshsurfcut, tab_meshsurfcut2, l_tab_meshsurfcut2, flag)
subroutine find_newknot(iel, kxig3d, knot, dir, iad_knot, nknot1, nknot2, nknot3, idcut, newknot)
subroutine rafig3d(knotlocpc, deg, degtang1, degtang2, iad_knot, nknot1, nknot2, nknot3, gama, dir, newknot, x, d, v, ms, wige, tab_fctcut, l_tab_fctcut, tab_remove, tab_newfct, decalgeo, tabconpatch, numpatch, kxig3d, ixig3d, tab_stay, flag_pre)
subroutine rebuild_ig3d(ixig3d, kxig3d, dir, deg, degtang1, degtang2, knotlocpc, knotlocel, tab_elcut, l_tab_elcut, tab_newel, l_tab_newel, tab_fctcut, l_tab_fctcut, tab_remove, tab_newfct, el_connect, tabconpatch, idfils, flag_pre, flag_debug)
subroutine test_support_fct(ixig3d, kxig3d, knotlocpc, degtang1, degtang2, dir, tab_elcut, l_tab_elcut, tab_coinknot, l_tab_coinknot, tab_fctcut, l_tab_fctcut, decalgeo, flag)
subroutine test_support_newfct(knotlocpc, dirdeg, degtang1, degtang2, dir, newknot, tab_coinknot, l_tab_coinknot, tab_newfct, tab_newfctcut, l_tab_newfctcut, decalgeo, tab_remove, flag)