36 1 IREMNODE,NOINT ,TITR ,INTBUF_TAB ,NUMNOD ,
37 1 X ,NRTM ,IRECT ,NSV ,NSN ,
38 2 ITAB ,GAP_S ,GAP_M ,GAPMIN ,GAPMAX ,
39 3 GAP_S_L ,GAP_M_L ,IGAP ,GAP ,DRAD ,
40 4 NREMNODE,NTY ,IPARI ,I_MEM_REM ,GAPM_MX ,
41 5 GAPS_MX ,GAPM_L_MX,GAPS_L_MX ,ILEV ,NBINFLG ,
42 6 MBINFLG ,DGAPLOAD,npari)
50 use get_list_remnode_mod ,
only : get_list_remnode
54#include "implicit_f.inc"
61 integer,
intent(in) :: npari
62 INTEGER IREMNODE, NOINT, NSN, NRTM, NUMNOD,IGAP, NREMNODE ,NTY, I_MEM_REM, ILEV
63 INTEGER IRECT(4,NRTM),ITAB(*),NSV(NSN),IPARI(*),NBINFLG(*),MBINFLG(*)
65 . GAPMIN, GAPMAX, GAP, , GAPM_MX, GAPS_MX, GAPM_L_MX, GAPS_L_MX
66 my_real ,
INTENT(IN) :: DGAPLOAD
68 . x(3,*),gap_s(*),gap_m(*),gap_s_l(*),gap_m_l(*)
69 TYPE(intbuf_struct_) INTBUF_TAB
70 CHARACTER(LEN=NCHARTITLE) :: TITR
74 INTEGER I,IFIRST,ILAST,ISELF_IMPACTANT
75 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
76 . knod2seg,nod2seg,noddel,
tagnod,id_nod,tagsecnd,itagseg,nod2expand
79 my_real,
DIMENSION(:),
ALLOCATABLE ::
80 . dist1,gapv,gapsecnd,gap_s_l_tmp
83 ALLOCATE(knod2seg(numnod+1),nod2seg(4*nrtm),noddel(numnod),
84 .
tagnod(numnod),id_nod(numnod),nod2expand(numnod),itagseg(nrtm))
85 ALLOCATE(dist1(numnod),gapv(numnod),tagsecnd(numnod),
86 . gapsecnd(numnod),gap_s_l_tmp(numnod))
88 knod2seg(1:numnod+1) = 0
89 tagsecnd(1:numnod) = 0
93 nod2expand(1:numnod) = 0
97 gapsecnd(1:numnod) = zero
98 dist1(1:numnod) = ep30
102 1 x ,nrtm ,irect ,nsv ,nsn ,numnod ,
103 2 itab ,gap_s ,gap_m ,gapmin ,gapmax ,
104 3 gap_s_l ,gap_m_l ,igap ,intbuf_tab%KREMNODE,intbuf_tab%REMNODE ,
105 4 gap ,drad ,nremnode ,ilev
106 5 mbinflg ,ipari ,i_mem_rem,gapm_mx ,gaps_mx ,
107 6 gapm_l_mx ,gaps_l_mx ,knod2seg,nod2seg,tagsecnd,
108 7 gapsecnd ,gap_s_l_tmp,minseg )
110 IF(iself_impactant==0)
RETURN
116 intbuf_tab%kremnode(1) = 0
118 call get_list_remnode(nrtm,igap ,numnod,npari,irect,intbuf_tab%kremnode,
119 . knod2seg,nod2seg,tagsecnd,
120 . ipari,gapmin,gapmax,gap,drad,
122 . minseg,dgapload,x,gap_m,
123 . gap_m_l,gapsecnd,gap_s_l_tmp,
126 iremnode = iremnode + 1
129 CALL i25remnor(nrtm ,irect ,nsv ,nsn ,numnod ,
130 2 intbuf_tab%KREMNODE,intbuf_tab%REMNODE ,intbuf_tab%KREMNOR ,
131 . intbuf_tab%REMNOR ,ipari ,
135 DEALLOCATE(knod2seg,nod2seg,noddel,id_nod,
tagnod,itagseg)
136 DEALLOCATE(dist1,gapv,tagsecnd,gapsecnd,gap_s_l_tmp)
148 1 X ,NRTM ,IRECT ,NSV ,NSN ,NUMNOD ,
149 2 ITAB ,GAP_S ,GAP_M ,GAPMIN ,GAPMAX ,
150 3 GAP_S_L ,GAP_M_L ,IGAP ,KREMNODE,REMNODE ,
151 4 GAP ,DRAD ,NREMNODE ,ILEV ,NBINFLG ,
152 5 MBINFLG ,IPARI ,I_MEM_REM,GAPM_MX ,GAPS_MX ,
153 6 GAPM_L_MX ,GAPS_L_MX ,KNOD2SEG,NOD2SEG,TAGSECND,
154 7 GAPSECND ,GAP_S_L_TMP,MINSEG )
158#include "implicit_f.inc"
162 INTEGER ISELF_IMPACTANT, NTY, NSN, NRTM, NUMNOD,IGAP, NREMNODE , I_MEM_REM, ILEV
163 INTEGER IRECT(4,*),ITAB(*),NSV(*),(*),REMNODE(*),
164 . IPARI(*),KNOD2SEG(*),NOD2SEG(4*NRTM),TAGSECND(*),NBINFLG(*),MBINFLG(*)
166 . GAPMIN, GAPMAX, GAP, DRAD, GAPM_MX, , GAPM_L_MX, GAPS_L_MX, MINSEG
168 . X(3,*),GAP_S(*),GAP_M(*),GAP_S_L(*),GAP_M_L(*), (*), GAP_S_L_TMP(*)
172 INTEGER I,J,K,L,N,CPT,KMAX,IMS1,IMS2,ISS1,ISS2
173 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD
194 IF(nty /= 25 .OR. (nty == 25 .AND. ilev /=2))
THEN
197 IF( tagsecnd(irect(j,i)) /= 0 )
THEN
205 n = tagsecnd(irect(j,i))
207 ims1 = bitget(mbinflg(i),0)
208 ims2 = bitget(mbinflg(i),1)
209 iss1 = bitget(nbinflg(n),0)
210 iss2 = bitget(nbinflg(n),1)
211 IF(((ims1 == 1 .and. iss2==1).or.
212 . (ims2 == 1 .and. iss1==1)))
THEN
220 IF (iself_impactant == 0)
RETURN
223 IF( irect(3,i) /= irect(4,i) )
THEN
225 minseg =
min( minseg,
226 . (x(1,irect(1,i))-x(1,irect(2,i)))**2 +
227 . (x(2,irect(1,i))-x(2,irect(2,i)))**2 +
228 . (x(3,irect(1,i))-x(3,irect(2,i)))**2 ,
229 . (x(1,irect(2,i))-x(1,irect(3,i)))**2 +
230 . (x(2,irect(2,i))-x(2,irect(3,i)))**2 +
231 . (x(3,irect(2,i))-x(3,irect(3,i)))**2 ,
232 . (x(1,irect(3,i))-x(1,irect(4,i)))**2 +
233 . (x(2,irect(3,i))-x(2,irect(4,i)))**2 +
234 . (x(3,irect(3,i))-x(3,irect(4,i)))**2 ,
235 . (x(1,irect(4,i))-x(1,irect(1,i)))**2 +
236 . (x(2,irect(4,i))-x(2,irect(1,i)))**2 +
237 . (x(3,irect(4,i))-x(3,irect(1,i)))**2 )
238 ELSEIF( irect(3,i) == irect(4,i) )
THEN
240 minseg =
min( minseg,
241 . (x(1,irect(1,i))-x(1,irect(2,i)))**2 +
242 . (x(2,irect(1,i))-x(2,irect(2,i)))**2 +
243 . (x(3,irect(1,i))-x(3,irect(2,i)))**2 ,
244 . (x(1,irect(2,i))-x(1,irect(3,i)))**2 +
245 . (x(2,irect(2,i))-x(2,irect(3,i)))**2 +
246 . (x(3,irect(2,i))-x(3,irect(3,i)))**2 ,
247 . (x(1,irect(3,i))-x(1,irect(1,i)))**2 +
248 . (x(2,irect(3,i))-x(2,irect(1,i)))**2 +
249 . (x(3,irect(3,i))-x(3,irect(1,i)))**2 )
253 minseg = sqrt(minseg)
258 IF(irect(kmax,i) == 0 .OR.
259 . irect(3,i) == irect(4,i) ) kmax = 3
261 IF(tagsecnd(irect(k,i)) /= 0) cpt = cpt + 1
266 knod2seg(n) = knod2seg(n) + 1
272 knod2seg(i+1) = knod2seg(i+1) + knod2seg(i)
276 knod2seg(n+1)=knod2seg(n)
283 IF(irect(kmax,i) == 0 .OR.
284 . irect(3,i) == irect(4,i) ) kmax = 3
286 IF(tagsecnd(irect(k,i)) /= 0) cpt = cpt + 1
291 knod2seg(n) = knod2seg(n) + 1
292 nod2seg(knod2seg(n)) = i
298 knod2seg(n+1)=knod2seg(n)
306 gapsecnd(nsv(i)) = gap_s(i)
312 gap_s_l_tmp(nsv(i)) = gap_s_l(i)
320!||--- called by ------------------------------------------------------
324 1 NRTM ,IRECT ,NSV ,NSN ,NUMNOD ,
325 2 KREMNODE,REMNODE ,KREMNOR ,REMNOR ,IPARI ,
330#include "implicit_f.inc"
334 INTEGER NSN, NRTM, NUMNOD
335 INTEGER IRECT(4,*),NSV(*),KREMNODE(*),REMNODE(*),
336 . KREMNOR(*),REMNOR(*),IPARI(*),TAGSECND(*)
340 INTEGER I,J,K,L,N,NS,LREMNORMAX
349 ns = tagsecnd(remnode(j))
350 kremnor(ns) = kremnor(ns)+1
355 kremnor(n+1) = kremnor(n+1) + kremnor(n)
359 kremnor(n+1)=kremnor(n)
367 n = tagsecnd(remnode(j))
368 kremnor(n) = kremnor(n)+1
369 remnor(kremnor(n)) = i
374 kremnor(n+1)=kremnor(n)
381 l = kremnor(n+1)-kremnor(n)
382 IF( l>lremnormax)
THEN
386 ipari(82) = lremnormax
399#include "implicit_f.inc"
403 INTEGER N ,IC(*),ID,IA
410 IF (ID > N+1 ) RETURN
436#include "implicit_f.inc"
440#include "param_c.inc"
444 INTEGER IPARI(NPARI,*), ITAB(*),NREMOV(*),IFLAG
446 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
450#include "com04_c.inc"
454 INTEGER N,NTY,NN,NE2,IE,IE1,IE2,I,NNREM
455 INTEGER II,J,NMN,NSN,NRTS,NRTM,IADA,IEDGE,NSNE,NRTSE
456 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGN
457 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IEDGN2
461 ALLOCATE(tagn(numnod))
468 IF (iflag==0) nremov(n) = ipari(62,n)
470 IF (nremov(n) ==0.OR.iedge==0) cycle
473 DO j=1,intbuf_tab(n)%KREMNODE(nrtm+1)
474 nn = intbuf_tab(n)%REMNODE(j)
477 CALL dim_iedgn2(ne2,nsne,intbuf_tab(n)%IS2SE,intbuf_tab(n)%IRTSE,tagn)
479 ALLOCATE(iedgn2(3,ne2))
480 CALL ind_iedgn2(ne2,nsne,intbuf_tab(n)%IS2SE,intbuf_tab(n)%IRTSE,tagn,iedgn2)
481 CALL add_nsfic(ne2,nrtm,nsne,intbuf_tab(n)%IS2SE,nremov(n),
482 + intbuf_tab(n)%KREMNODE,intbuf_tab(n)%REMNODE,iedgn2,iflag)
491!||--- called by ------------------------------------------------------
498#include "implicit_f.inc"
502 INTEGER NE2,NSNE,IS2SE(2,*),IRTSE(5,*),TAGN(*)
506 INTEGER IK1(4),IK2(4),NS1,,IED,I,J,IE1,IE2,IE
517 ns1= irtse(ik1(ied),ie)
518 ns2= irtse(ik2(ied),ie)
522 ns1= irtse(ik2(ied),ie)
523 ns2= irtse(ik1(ied),ie)
525 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
527 IF (tagn(ns1)>0.AND.tagn(ns2)>0) ne2 = ne2 + 1
541#include "implicit_f.inc"
545 INTEGER NE2,NSNE,IS2SE(2,*),IRTSE(5,*),TAGN(*),IEDGN2(3,*)
549 INTEGER IK1(4),IK2(4),NS1,NS2,IED,I,J,IE1,IE2,IE
560 ns1= irtse(ik1(ied),ie)
561 ns2= irtse(ik2(ied),ie)
565 ns1= irtse(ik2(ied),ie)
566 ns2= irtse(ik1(ied),ie)
568 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
570 IF (tagn(ns1)>0.AND.tagn(ns2)>0)
THEN
588 SUBROUTINE add_nsfic(NE2,NRTM,NSNE,IS2SE,NREMOV,KREMNODE,
589 + REMNODE,IEDGN2,IFLAG)
593#include "implicit_f.inc"
597 INTEGER NRTM,NSNE,IS2SE(2,*),NREMOV,KREMNODE(*),REMNODE(*),
598 + IEDGN2(3,*),IFLAG,NE2
602#include
"com04_c.inc"
606 INTEGER IE,IE1,IE2,I,NNREM,NN,
607 INTEGER NS1,NS2,IED,J,II,IADA,NS,NEW,NR0,IADN
616 IF (kremnode(ii+1)>kremnode(ii))
THEN
617 nnrem = kremnode(ii+1) - kremnode(ii)
618 iada = kremnode(ii)+1
622 IF (intab(nnrem,remnode(iada),ns1)
623 1 .OR.intab(nnrem,remnode(iada),ns2))
THEN
633 kremov_old = kremnode(ii)
634 kremnode(ii) = kremnode(ii) + new
635 IF (kremnode(ii+1)>kremov_old)
THEN
636 nnrem = kremnode(ii+1) - kremov_old
637 iada = kremnode(ii)+1
638 iadn = kremnode(ii+1)+new+1
642 nn = iedgn2(3,j) + numnod
643 IF (intab(nnrem,remnode(iada),ns1)
644 1 .OR.intab(nnrem,remnode(iada),ns2))
THEN
646 CALL insert_a(nremov,remnode,nn ,iadn)
652 kremnode(nrtm+1) = kremnode(nrtm+1) + new
673!||====================================================================
674 SUBROUTINE remn_i2op(LOWER_BOUND, UPPER_BOUND, IPARI,INTBUF_TAB,ITAB,NOM_OPT,NREMOV,IDDLEVEL,SKIP_TYPE25_EDGE_2_EDGE)
682 USE format_mod ,
ONLY : fmw_10i
686#include "implicit_f.inc"
690#include "param_c.inc"
694 INTEGER IPARI(NPARI,*), ITAB(*),NREMOV(*)
695 INTEGER NOM_OPT(LNOPT1,*)
696 INTEGER,
INTENT(in) :: IDDLEVEL
697 INTEGER,
INTENT(in) :: SKIP_TYPE25_EDGE_2_EDGE
698 INTEGER,
INTENT(in) :: LOWER_BOUND, UPPER_BOUND
700 TYPE(intbuf_struct_) INTBUF_TAB(*)
704#include
"com04_c.inc"
705#include
"scr17_c.inc"
709 INTEGER N,,FLAGREMNODE
710 INTEGER ILEV,II,J,NMN,NSN,NRTS,NRTM,LREMNORMAX,K,
711 . NLINS,NLINM,IWOUT,INCOM,NM,N2,IFLAG,NRE,ip,IACT,
712 . if7,if24,if25,nn2,nnod,m1,m2,m3,m4,nnrem,ibit,new
713 . ki,kl,jj,iedge,nedge
714 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGD
716 CHARACTER(LEN=NCHARTITLE) :: TITR
718 INTEGER :: COMPTEUR,I2NODE_SIZE,I,L,L1,IS,IIS,NS,IADA
720 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: I2NODE,POINTS_I2N
721 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGNOD
724 INTEGER :: III,JJJ,NNOD_2
725 INTEGER :: FIRST,LAST,NNREM_SAVE
726INTEGER :: OFFSET, NBR_INTRA,NBR_EXTRA,TOTAL_INSERTED
727 INTEGER :: SIZE_INSERTED_NODE,OLDSIZE,MAX_INSERTED_NODE,LIMIT
728 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBR_INSERT_II,ADRESS_II
729 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KREMNODE_SAVE,INSERTED_NODE,REMNODE,TMP
734! offset :
integer , offset for the array
738! typ25_use :
integer, interface typ25 marker --> TYP25_USE = 1
if
753 DO n=lower_bound,upper_bound
758 IF(nty==7 .AND. if7>0 )
THEN
762 IF(nty==24 .AND. if24>0 )
THEN
766 IF(nty==25 .AND. if25>0 )
THEN
773 DO n=lower_bound,upper_bound
778 IF(typ25_use==1)
THEN
779 ALLOCATE( tagnod(numnod) )
784! ********************************
790! | secondary node |
interface | -secondary |
800 l=intbuf_tab(n)%IRTLM(ii)
801 IF (intbuf_tab(n)%IRECTM(4*(l-1)+3)==intbuf_tab(n)%IRECTM(4*(l-1)+4))
THEN
806 i2node_size=i2node_size + nnod + 1
810 IF (i2node_size==0)
RETURN
811 ALLOCATE(i2node(i2node_size,3))
812 ALLOCATE(points_i2n(numnod,2))
813 ALLOCATE(tagd(numnod))
815 CALL pre_i2(ipari ,intbuf_tab ,i2node_size, i2node,points_i2n)
837! 1 | 2 | iad1(3) | iad1(2) | iad1(1) | 3 | iad2(1) | 4 | 5 | iad3(1) | 6 | 7 | 8 | 9
880 DO n=lower_bound,upper_bound
889 IF(iddlevel==0.AND.(nty/=24.AND.nty/=25)) cycle
894 IF(iddlevel==0.AND.nty==25.AND.skip_type25_edge_2_edge==1) cycle
896 IF(iddlevel==0.AND.nty/=25.AND.skip_type25_edge_2_edge==2) cycle
897 ALLOCATE( nbr_insert_ii(nrtm) )
898 ALLOCATE( adress_ii(nrtm) )
899 ALLOCATE( kremnode_save(nrtm+1) )
900 nbr_insert_ii(1:nrtm) = 0
901 adress_ii(1:nrtm) = 0
902 kremnode_save(1:nrtm+1) = 0
905 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
907 IF((nty==7.AND.if7>0).OR.(nty==24.AND.if24>0).OR.(nty==25.AND.if25>0))
THEN
910 flagremnode=ipari(63,n)
911 flagremnode_sav=ipari(63,n)
915 ns = intbuf_tab(n)%NSV(jj)
916 IF (ns<=numnod) tagd(ns)=0
919 nremov(n) = ipari(62,n)
921 IF(nremov(n)>0) kremnode_save(1:nrtm+1) = intbuf_tab(n)%KREMNODE(1:nrtm+1)
923 size_inserted_node = 1
924 max_inserted_node = 1
926 IF (intbuf_tab(n)%IRECTM
THEN
932 nm = intbuf_tab(n)%IRECTM(4*(ii-1)+j)
933 IF (points_i2n(nm,1)==0) cycle
934 max_inserted_node =
max( max_inserted_node,points_i2n(nm,2)-points_i2n(nm,1)+1 )
938 IF( max_inserted_node > limit / (4*nrtm) .OR. max_inserted_node > 1000000 / nrtm )
THEN
939 size_inserted_node = 4 * nrtm
941 size_inserted_node = 4 * nrtm *max_inserted_node
944 CALL my_alloc(inserted_node,size_inserted_node)
950 IF(flagremnode==2)
THEN
951 ki = intbuf_tab(n)%KREMNODE(ii)+1
952 kl = intbuf_tab(n)%KREMNODE(ii+1)
954 ns = intbuf_tab(n)%REMNODE(j)
959 IF (intbuf_tab(n)%IRECTM(4*(ii-1)+4)==intbuf_tab(n)%IRECTM(4*(ii-1)+3))
THEN
965 IF(jjj + nnod * max_inserted_node > size_inserted_node)
THEN
967 oldsize = size_inserted_node
968 size_inserted_node = size_inserted_node +
min(nrtm,10*nnod*max_inserted_node)
969 CALL my_alloc(tmp,size_inserted_node)
970 tmp(1:oldsize) = inserted_node(1:oldsize)
972 CALL move_alloc(tmp,inserted_node)
976 nm = intbuf_tab(n)%IRECTM(4*(ii-1)+j)
977 IF (points_i2n(nm,1)==0) cycle
978 DO i=points_i2n(nm,1),points_i2n(nm,2)
982 ns = intbuf_tab(n2)%NSV(is)
983 IF (tagd(ns)==0)
THEN
987 inserted_node(jjj) = ns
993 IF( intbuf_tab(n2)%IRECTM(4*(l-1)+4)==intbuf_tab(n2)%IRECTM(4*(l-1)+3) ) nnod_2 = 3
995 nm = intbuf_tab(n2)%IRECTM(4*(l
1000 inserted_node(jjj) = nm
1009 nbr_insert_ii(ii) = nnrem
1010 kremnode_save(ii) = kremnode_save
1011 iada = iada + kremnode_save(ii)
1013 adress_ii(ii) = iada
1014 kremnode_save(ii) = iada + nbr_insert_ii
1015 iada = iada + nbr_insert_ii
1020 nm = intbuf_tab(n)%IRECTM(4*(ii-1)+j)
1021 IF (points_i2n(nm,1)==0) cycle
1022 DO i=points_i2n(nm,1),points_i2n(nm,2)
1027 IF (tagd(ns)==1) tagd(ns)=0
1031 . intbuf_tab(n2)%IRTLM,tagd)
1035 IF(flagremnode==2)
THEN
1037 ns = intbuf_tab(n)%REMNODE(j)
1052 IF( nbr_insert_ii(ii)/=0 ) first = ii
1055IF( nbr_insert_ii(nrtm+1-ii)/=0 ) last = nrtm+1-ii
1061 total_inserted = total_inserted + nbr_insert_ii
1064 ALLOCATE( remnode(nremov(n)+total_inserted) )
1072 IF( adress_ii(first)>1 )
THEN
1073 remnode(1:adress_ii(first)-1) = intbuf_tab(n)%REMNODE(1:adress_ii(first)-1)
1074 offset = offset + adress_ii(first
1075 i = i + adress_ii(first)-1
1080 IF( nbr_insert_ii(ii)>0 )
THEN
1081 DO jj = 1,nbr_insert_ii
1087 IF(ii<last.AND.nremov
THEN
1090 IF( nbr_intra>0
THEN
1093 remnode(jj+offset) = intbuf_tab(n)%REMNODE(i
1095 offset = offset + nbr_intra
1102 IF( i<nremov(n) )
THEN
1103 nbr_extra = nremov(n
1104 remnode(offset+1:offset+nbr_extra) = intbuf_tab(n)%REMNODE(i+1:nremov(n))
1107 nnrem = nnrem + nremov(n)
1109 intbuf_tab(n)%REMNODE(1:nnrem)
1111 intbuf_tab(n)%KREMNODE(1)=0
1117 . msgtype=msgwarning,
1118 . anmode=aninfo_blind_1,
1128 IF(
ALLOCATED(remnode))
DEALLOCATE( remnode )
1129 IF(
ALLOCATED(inserted_node))
DEALLOCATE( inserted_node
1135 IF(nty==25.AND.if25>0.AND.nnrem>0)
THEN
1138 tagnod(intbuf_tab(n)%NSV(i))=i
1143 k = intbuf_tab(n)%KREMNODE(i)+1
1144 l = intbuf_tab(n)%KREMNODE(i+1)
1147 intbuf_tab(n)%KREMNOR(ns) = intbuf_tab(n)%KREMNOR(ns)+1
1152 intbuf_tab(n)%KREMNOR(ns+1) = intbuf_tab(n)%KREMNOR(ns+1) + intbuf_tab(n)%KREMNOR(ns)
1156 intbuf_tab(n)%KREMNOR(ns+1)=intbuf_tab(n)%KREMNOR(ns)
1158 intbuf_tab(n)%KREMNOR(1)=0
1161 k = intbuf_tab(n)%KREMNODE(i)+1
1162 l = intbuf_tab(n)%KREMNODE(i+1)
1164 ns = tagnod(intbuf_tab(n)%REMNODE(j))
1165 intbuf_tab(n)%KREMNOR(ns) = intbuf_tab(n)%KREMNOR(ns)+1
1166 intbuf_tab(n)%REMNOR(intbuf_tab(n)%KREMNOR(ns)) = i
1171 intbuf_tab(n)%KREMNOR(ns+1)=intbuf_tab(n)%KREMNOR(ns)
1173 intbuf_tab(n)%KREMNOR(1)=0
1178 l = intbuf_tab(n)%KREMNOR(ns+1)-intbuf_tab(n)%KREMNOR(ns)
1179 IF( l>lremnormax)
THEN
1188 DO j=intbuf_tab(n)%KREMNOR(ns)+1,intbuf_tab(n)%KREMNOR(ns+1)
1189 l=intbuf_tab(n)%REMNOR(j)
1190 IF(intbuf_tab(n)%IRTLM(4*(ns-1)+1)==intbuf_tab(n)%MSEGLO(l))
THEN
1191 intbuf_tab(n)%IRTLM(4*(ns-1)+1:4*(ns-1)+4) =0
1192 intbuf_tab(n)%TIME_S(2*(ns-1)+1:2*(ns-1)+2) =zero
1193 intbuf_tab(n)%PENE_OLD(5*(ns-1)+1:5*(ns-1)+5)=zero
1199 tagnod(intbuf_tab(n)%NSV(i))=0
1204 DEALLOCATE( nbr_insert_ii )
1205 DEALLOCATE( adress_ii )
1206 DEALLOCATE( kremnode_save )
1211 IF(nty==25.AND.if25>0.AND.iedge>0)
THEN
1215 . points_i2n ,i2node_size
1219 DEALLOCATE(tagd,i2node,points_i2n)
1220 IF(typ25_use==1)
THEN
1221 DEALLOCATE( tagnod )
1226!||====================================================================
1233 SUBROUTINE pre_i2(IPARI ,INTBUF_TAB ,NSIZE, I2NODE,POINT_I2NODE)
1242#include "implicit_f.inc"
1246#include "param_c.inc"
1247#include "com04_c.inc"
1252 INTEGER IPARI(NPARI,*), I2NODE(NSIZE,3),POINT_I2NODE(NUMNOD,2)
1254 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
1259 INTEGER ILEV,II,J,NMN,NSN,NRTS,NRTM,
1260 . NLINS,NLINM,IWOUT,INCOM,NM,N2,IFLAG,NRE,ip,IACT,
1261 . IF7,IF24,IF25,NN2,NNOD,M1,,M3,M4
1263 INTEGER :: WORK(70000)
1264 INTEGER :: COMPTEUR,,I,L,L1
1265 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
1266 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: I2NODE_LOC
1280 ALLOCATE(i2node_loc(i2node_size,3))
1292 i=intbuf_tab(n)%NSV(ii)
1293 l=intbuf_tab(n)%IRTLM(ii)
1295 m1 = intbuf_tab(n)%IRECTM(l1+1)
1296 m2 = intbuf_tab(n)%IRECTM(l1+2)
1297 m3 = intbuf_tab(n)%IRECTM(l1+3)
1298 m4 = intbuf_tab(n)%IRECTM(l1+4)
1300 i2node_loc(compteur,1) = m1 ! node surf/
main
1301 i2node_loc(compteur,2) = n
1302 i2node_loc(compteur,3) = ii
1303 compteur = compteur + 1
1305 i2node_loc(compteur,1) = m2
1306 i2node_loc(compteur,2) = n
1307 i2node_loc(compteur,3) = ii
1308 compteur = compteur + 1
1310 i2node_loc(compteur,1) = m3
1311 i2node_loc(compteur,2) = n
1312 i2node_loc(compteur,3) = ii
1313 compteur = compteur + 1
1316 i2node_loc(compteur,1) = m4
1317 i2node_loc(compteur,2) = n
1318 i2node_loc(compteur,3) = ii
1319 compteur = compteur + 1
1322 i2node_loc(compteur,1) = i
1323 i2node_loc(compteur,2) = n
1324 i2node_loc(compteur,3) = -ii
1325 compteur = compteur + 1
1345 ALLOCATE( index(2*i2node_size) )
1346 DO i=1,2*i2node_size
1350 CALL my_orders( 0, work, i2node_loc(1,1), index, i2node_size , 1)
1353 point_i2node(1:numnod,1:2) = 0
1354 point_i2node(i2node_loc(index(1),1),1) = 1
1357 i2node(compteur,1) = i2node_loc(index(i),1)
1358 i2node(compteur,2) = i2node_loc(index(i),2)
1359 i2node(compteur,3) = i2node_loc(index(i),3)
1361 IF(point_i2node(i2node_loc(index(i),1),1)==0)
THEN
1362 point_i2node(i2node_loc(index(i),1),1) = compteur
1363 IF (i>1) point_i2node(i2node_loc(index(i-1),1),2) = compteur - 1
1367 point_i2node(i2node_loc(index(i2node_size),1),2) = i2node_size
1370 DEALLOCATE(i2node_loc)
1384#include "implicit_f.inc"
1388 INTEGER IRECT(4,*),IRTL(*), TAGD(*) ,IS
1394 INTEGER II ,I,J ,IL, L,NM,NNOD
1399 IF (irect(4,l)==irect(3,l)) nnod=3
1402 IF (tagd(nm)==1) tagd
1428#include "implicit_f.inc"
1432#include "param_c.inc"
1436 INTEGER IPARI(NPARI,*), ITAB(*),NREMOV(*),IFLAG
1438 TYPE(intbuf_struct_) INTBUF_TAB(*)
1442#include "com04_c.inc"
1446 INTEGER N,NTY,NN,NE2,IE,IE1,IE2,I,NNREM,NNREMEG
1447 INTEGER II,J,NMN,NSN,NRTS,NRTM,IADA,IEDGE,NSNE,NRTSE,IACT
1448 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGN,TAGE,E2NODE
1449 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: PT_E2NODE
1456 IF (nty==24.AND.nremov(n) >0.AND.nsne>0) iact=1
1460 ALLOCATE(tagn(numnod))
1467 IF (nty==24.AND.nremov(n) >0.AND.nsne>0)
THEN
1469 DO j=1,intbuf_tab(n)%KREMNODE(nrtm+1)
1470 nn = intbuf_tab(n)%REMNODE(j)
1473 CALL dim_ptedgn(ne2,nsne,intbuf_tab(n)%IS2SE,intbuf_tab(n)%IRTSE,tagn)
1475 ALLOCATE(e2node(ne2),pt_e2node(numnod,2))
1476 CALL pre_i2edge(ne2,nsne,intbuf_tab(n)%IS2SE,intbuf_tab(n)%IRTSE,tagn,
1480 ALLOCATE(tage(nsne))
1483 CALL add_nsfic1(nrtm,nnremeg,intbuf_tab(n)%KREMNODE,intbuf_tab(n)%REMNODE,
1484 + e2node,pt_e2node,tage,iflag)
1486 nnremeg = nnremeg + nremov(n)
1489 CALL add_nsfic1(nrtm,nremov(n),intbuf_tab(n)%KREMNODE,intbuf_tab(n)%REMNODE,
1490 + e2node,pt_e2node,tage,iflag)
1492 DEALLOCATE(e2node,pt_e2node,tage)
1509#include "implicit_f.inc"
1513 INTEGER NSIZE,NSNE,IS2SE(2,*),IRTSE(5,*),TAGN(*)
1517 INTEGER IK1(4),IK2(4),NS1,NS2,IED,I,J,IE1,IE2,
1528 ns1= irtse(ik1(ied),ie)
1529 ns2= irtse(ik2(ied),ie)
1530 ELSEIF(ie2 > 0)
THEN
1533 ns1= irtse(ik2(ied),ie)
1534 ns2= irtse(ik1(ied),ie)
1536 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
1538 IF (tagn(ns1)>0.AND.tagn(ns2)>0)
THEN
1549!||--- calls -----------------------------------------------------
1550!||====================================================================
1551 SUBROUTINE pre_i2edge(NSIZE,NSNE,IS2SE,IRTSE,TAGN,E2NODE,PT_E2NODE)
1555#include "implicit_f.inc"
1559#include "com04_c.inc"
1563 INTEGER NSIZE,NSNE,IS2SE(2,*),IRTSE(5,*),TAGN(*),
1564 . E2NODE(NSIZE),PT_E2NODE(NUMNOD,2)
1568 INTEGER IK1(4),IK2(4),NS1,NS2,IED,I,J,IE1,IE2,IE
1569 INTEGER :: WORK(70000)
1570 INTEGER :: COMPTEUR,L,L1
1571 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INDEX
1572 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: E2NODE_LOC
1583 ALLOCATE(e2node_loc(nsize,2))
1592 ns1= irtse(ik1(ied),ie)
1593 ns2= irtse(ik2(ied),ie)
1594 ELSEIF(ie2 > 0)
THEN
1597 ns1= irtse(ik2(ied),ie)
1598 ns2= irtse(ik1(ied),ie)
1600 print *,
'problem EDGE **** I,IE1,IE2=',i,ie1,ie2
1602 IF (tagn(ns1)>0.AND.tagn(ns2)>0)
THEN
1603 e2node_loc(compteur,1) = ns1
1604 e2node_loc(compteur,2) = i
1605 compteur = compteur + 1
1607 e2node_loc(compteur,1) = ns2
1608 e2node_loc(compteur,2) = i
1609 compteur = compteur + 1
1612 ALLOCATE( index(2*nsize) )
1616 CALL my_orders( 0, work, e2node_loc(1,1), index, nsize , 1)
1618 pt_e2node(1:numnod,1:2) = 0
1619 pt_e2node(e2node_loc(index(1),1),1) = 1
1622 e2node(compteur) = e2node_loc(index(i),2)
1624 IF(pt_e2node(e2node_loc(index(i),1),1)==0)
THEN
1625 pt_e2node(e2node_loc(index(i),1),1) = compteur
1626 pt_e2node(e2node_loc(index(i-1),1),2) = compteur - 1
1630 pt_e2node(e2node_loc(index(nsize),1),2) = nsize
1633 DEALLOCATE(e2node_loc)
1642!||====================================================================
1643 SUBROUTINE add_nsfic1(NRTM,NREMOV,KREMNODE,REMNODE,E2NODE,PT_E2NODE,
1648#include "implicit_f.inc"
1652#include "com04_c.inc"
1656 INTEGER NRTM,NREMOV,KREMNODE(*),REMNODE(*),
1657 + E2NODE(*),PT_E2NODE(NUMNOD,2),TAGN(*),IFLAG
1661 INTEGER IE,IE1,IE2,I,NNREM,NN,KREMOV_OLD,NM,NII
1662 INTEGER NS1,NS2,IED,J,II,IADA,NS,NEW,NR0,IADN
1663 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KREMN_CP,REMN_CP
1667 DO i = kremnode(ii)+1,kremnode(ii+1)
1669 IF (pt_e2node(ns,1)==0) cycle
1670 DO j = pt_e2node(ns,1),pt_e2node(ns,2)
1672 IF (tagn(nn)==0)
THEN
1679 DO i = kremnode(ii)+1,kremnode(ii+1)
1681 IF (pt_e2node(ns,1)==0) cycle
1682 DO j = pt_e2node(ns,1),pt_e2node(ns,2)
1690 ALLOCATE(kremn_cp(nrtm+1),remn_cp(nremov))
1691 kremn_cp(1:nrtm+1)=kremnode(1:nrtm+1)
1692 remn_cp(1:nremov)=remnode(1:nremov)
1695 nii = kremn_cp(ii+1)-kremn_cp(ii)
1697 remnode(kremnode(ii)+i)=remn_cp(kremn_cp(ii)+i)
1700 new = kremnode(ii) + nii
1701 DO i = kremn_cp(ii)+1,kremn_cp(ii+1)
1703 IF (pt_e2node(ns,1)==0) cycle
1704 DO j = pt_e2node(ns,1),pt_e2node(ns,2)
1706 IF (tagn(nn)==0)
THEN
1715 DO i = kremn_cp(ii)+1,kremn_cp(ii+1)
1717 IF (pt_e2node(ns,1)==0) cycle
1718 DO j = pt_e2node(ns,1),pt_e2node(ns,2)
1723 kremnode(ii+1) = new
1725 DEALLOCATE(kremn_cp,remn_cp)
1750#include "implicit_f.inc"
1754#include "param_c.inc"
1758 INTEGER IPARI(NPARI,*), ITAB(*),NREMOV(*),IFLAG
1759 INTEGER NOM_OPT(LNOPT1,*)
1761 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
1765#include "com04_c.inc"
1766#include "scr17_c.inc"
1770 INTEGER N,I_STOK,NTY,ID
1771 CHARACTER(LEN=NCHARTITLE) :: TITR
1777 IF (nty==24.AND.nremov(n) >0)
THEN
1779 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
1780 i_stok = intbuf_tab(n)%I_STOK(1)
1781 CALL rm_cand24(i_stok,id,titr,intbuf_tab(n)%CAND_N,intbuf_tab(n)%CAND_E,
1782 + intbuf_tab(n)%KREMNODE,intbuf_tab(n)%REMNODE,
1783 + intbuf_tab(n)%NSV,intbuf_tab(n)%IRTLM,
1784 + intbuf_tab(n)%PENE_OLD,itab )
1785 intbuf_tab(n)%I_STOK(1) = i_stok
1801 SUBROUTINE rm_cand24(I_STOK,ID,TITR,CAND_N,CAND_E,KREMNODE ,REMNOD ,
1802 * NSV ,IRTLM,PENE_OLD,ITAB )
1810 USE format_mod ,
ONLY : fmw_10i
1814#include "implicit_f.inc"
1818#include "com04_c.inc"
1819#include "scr03_c.inc"
1820#include "units_c.inc"
1822 INTEGER I_STOK,CAND_E(*),CAND_N(*),KREMNODE(*),IRTLM(2,*),REMNOD(*),
1826 CHARACTER(LEN=NCHARTITLE) :: TITR
1830 INTEGER NE, I,NS,NI,I_RM(I_STOK),K,L,J,II_STOK,NRM
1831 INTEGER ITAG(NUMNOD)
1844 IF (remnod(j)==ns)
THEN
1853 IF (i_rm(i) == 1)
THEN
1859 cand_n(ii_stok) = cand_n(i)
1860 cand_e(ii_stok) = cand_e(i)
1863 nrm = i_stok-ii_stok
1867 . msgtype=msgwarning,
1868 . anmode=aninfo_blind_1,
1873 WRITE(iout,*)
'REMOVED SECONDARY NODE WITH INITIAL PENETRATION:'
1877 IF (i_rm(i) == 1)
THEN
1880 IF (ns <= numnod .AND. itag(ns)==0 )
THEN
1887 WRITE(iout,fmt=fmw_10i) (itab(i_rm(j)),j=1,nrm)
if(complex_arithmetic) id
subroutine remn_i2op_edg25(n, flagremnode, ipari, intbuf_tab, i2node, points_i2n, i2node_size, nom_opt, itab, flag_output)
subroutine dim_iedgn2(ne2, nsne, is2se, irtse, tagn)
subroutine i7remnode_init(iself_impactant, nty, x, nrtm, irect, nsv, nsn, numnod, itab, gap_s, gap_m, gapmin, gapmax, gap_s_l, gap_m_l, igap, kremnode, remnode, gap, drad, nremnode, ilev, nbinflg, mbinflg, ipari, i_mem_rem, gapm_mx, gaps_mx, gapm_l_mx, gaps_l_mx, knod2seg, nod2seg, tagsecnd, gapsecnd, gap_s_l_tmp, minseg)
subroutine i25remnor(nrtm, irect, nsv, nsn, numnod, kremnode, remnode, kremnor, remnor, ipari, tagsecnd)
subroutine remn_i2_edgop(ipari, intbuf_tab, itab, nremov)
subroutine insert_a(n, ic, ia, id)
subroutine remn_i2op(lower_bound, upper_bound, ipari, intbuf_tab, itab, nom_opt, nremov, iddlevel, skip_type25_edge_2_edge)
subroutine remn_i2_edg(ipari, intbuf_tab, itab, nremov, iflag)
subroutine add_nsfic1(nrtm, nremov, kremnode, remnode, e2node, pt_e2node, tagn, iflag)
subroutine ri2_int24p_ini(ipari, intbuf_tab, itab, nom_opt, nremov)
subroutine ind_iedgn2(ne2, nsne, is2se, irtse, tagn, iedgn2)
subroutine dim_ptedgn(nsize, nsne, is2se, irtse, tagn)
subroutine pre_i2(ipari, intbuf_tab, nsize, i2node, point_i2node)
subroutine zeronm_tagd(is, irect, irtl, tagd)
subroutine add_nsfic(ne2, nrtm, nsne, is2se, nremov, kremnode, remnode, iedgn2, iflag)
subroutine i7remnode(iremnode, noint, titr, intbuf_tab, numnod, x, nrtm, irect, nsv, nsn, itab, gap_s, gap_m, gapmin, gapmax, gap_s_l, gap_m_l, igap, gap, drad, nremnode, nty, ipari, i_mem_rem, gapm_mx, gaps_mx, gapm_l_mx, gaps_l_mx, ilev, nbinflg, mbinflg, dgapload, npari)
subroutine pre_i2edge(nsize, nsne, is2se, irtse, tagn, e2node, pt_e2node)
subroutine rm_cand24(i_stok, id, titr, cand_n, cand_e, kremnode, remnod, nsv, irtlm, pene_old, itab)
subroutine inint3(inscr, x, ixs, ixc, pm, geo, ipari, nin, itab, ms, mwa, rwa, ixtg, iwrn, ikine, ixt, ixp, ixr, nelemint, iddlevel, ifiend, ale_connectivity, nsnet, nmnet, igrbric, iwcont, nsnt, nmnt, nsn2t, nmn2t, iwcin2, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, igrsurf, ikine1, ielem21, sh4tree, sh3tree, ipart, ipartc, iparttg, thk, thk_part, nod2el1d, knod2el1d, ixs10, i_mem, resort, inter_cand, ixs16, ixs20, id, titr, iremnode, nremnode, iparts, kxx, ixx, igeo, intercep, lelx, intbuf_tab, fillsol, pm_stack, iworksh, kxig3d, ixig3d, tagprt_fric, intbuf_fric_tab, ipartt, ipartp, ipartx, ipartr, nsn_multi_connec, t2_add_connec, t2_nb_connec, t2_connec, nom_opt, icode, iskew, iremnode_edg, s_append_array, x_append, mass_append, n2d, flag_removed_node, nspmd, inter_type2_number, elem_linked_to_segment, sinscr, sicode, sitab, nin25, flag_elem_inter25, multi_fvm)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
int main(int argc, char *argv[])
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine tagnod(ix, nix, nix1, nix2, numel, iparte, tagbuf, npart)
subroutine upgrade_remnode2(ni, nremnode, intbuf_tab, nty)