37 . X ,IXS ,IXS10 ,IXS16,IXS20 ,
38 . KNOD2ELS,NOD2ELS,IPARI ,INTBUF_TAB ,
39 . ITAB , NOM_OPT,NREMOV,S_NOD2ELS,IDDLEVEL)
50#include "implicit_f.inc"
57#include "tabsiz_c.inc"
61 INTEGER,
DIMENSION(NPARI,NINTER) ,
INTENT(INOUT) :: IPARI
62 INTEGER,
DIMENSION(NIXS,NUMELS) ,
INTENT(IN) :: IXS
63 INTEGER,
DIMENSION(6,NUMELS10) ,
INTENT(IN) :: IXS10
64 INTEGER,
DIMENSION(8,NUMELS16) ,
INTENT(IN) :: IXS16
65 INTEGER,
DIMENSION(12,NUMELS20) ,
INTENT(IN) :: IXS20
66 INTEGER,
DIMENSION(NUMNOD+1) ,
INTENT(IN) :: KNOD2ELS
67 INTEGER,
INTENT(IN) :: S_NOD2ELS
68 INTEGER,
DIMENSION(S_NOD2ELS) ,
INTENT(IN) :: NOD2ELS
69 INTEGER,
DIMENSION(NUMNOD) ,
INTENT(IN) :: ITAB
70 INTEGER,
DIMENSION(LNOPT1,SNOM_OPT) ,
INTENT(IN) :: NOM_OPT
71 INTEGER,
DIMENSION(NINTER) ,
INTENT(INOUT) :: NREMOV
72 my_real,
DIMENSION(NUMNOD*3) ,
INTENT(IN) :: x
73 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(INOUT):: INTBUF_TAB
74 INTEGER,
INTENT(in) :: IDDLEVEL
78 INTEGER N,NTY,FLAGREMNODE,I,NI
79 INTEGER ,II,J,NMN,NSN,NRTS,NRTM,LREMNORMAX,K,
80 . NLINS,NLINM,IWOUT,INCOM,NM,N2,IFLAG,NRE,ip,,
81 . if7,if24,if25,nn2,nnod,m1,m2,m3,m4,nnrem,ibit,new,
82 . ki,kl,jj,iedge,nedge,nremov1(ninter),ns,maxnm
83 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGD,TAGNOD
84 INTEGER ID,NC(20),NMC(4)
85 CHARACTER(LEN=NCHARTITLE) :: TITR
88 INTEGER :: III,JJJ,NNOD_2,NOINT,E_ID,IADA
89 INTEGER :: FIRST,LAST,NNREM_SAVE,FLAGREMNODE_SAV
90 INTEGER :: OFFSET, NBR_INTRA,NBR_EXTRA,TOTAL_INSERTED
91 INTEGER :: SIZE_INSERTED_NODE,OLDSIZE,MAX_INSERTED_NODE
92 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBR_INSERT_II,ADRESS_II
93 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KREMNODE_SAVE,INSERTED_NODE,REMNODE,TMP
102! nbr_extra :
integer , number of old remaining nodes
114 MAX_INSERTED_NODE = 1
115 allocate(tagnod(numnod),tagd(numnod))
125 ns = intbuf_tab(n)%NSV(jj)
126 IF (ns<=numnod) tagnod(ns)=1
130 CALL insol3et(x ,intbuf_tab(n)%IRECTM,ixs ,
132 . noint ,knod2els,nod2els,ixs10 ,
136 nc(1:8)=ixs(2:9,e_id)
142 nc(5:10)=ixs10(1:6,e_id-numels8)
144 nc(1:8)=ixs(2:9,e_id)
147 nc(1:8)=ixs(2:9,e_id)
148 nc(9:16)=ixs16(1:8,e_id-numels8-numels10-numels20)
151 nmc(1:4)=intbuf_tab(n)%IRECTM(4*(ii-1)+1:4*(ii-1)+4)
156 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc(2)
157 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
158 nremov1(n) = nremov1(n)+ 1
162 max_inserted_node =
max(max_inserted_node,maxnm)
171 IF(nremov1(n)==0) cycle
176 ALLOCATE( nbr_insert_ii(nrtm) )
177 ALLOCATE( adress_ii(nrtm) )
178 ALLOCATE( kremnode_save(nrtm+1) )
179 nbr_insert_ii(1:nrtm) = 0
180 adress_ii(1:nrtm) = 0
181 kremnode_save(1:nrtm+1) = 0
190 ns = intbuf_tab(n)%NSV(jj)
191 IF (ns<=numnod) tagd(ns)=0
192 IF (ns<=numnod) tagnod(ns)=1
195 nremov(n) = ipari(62,n)
196 flagremnode=ipari(63,n)
197 IF(iddlevel==0.AND.flagremnode==1.AND.nremov(n)>0) flagremnode = 2
199 IF(nremov(n)>0) kremnode_save(1:nrtm+1) = intbuf_tab(n)%KREMNODE(1:nrtm+1)
201 size_inserted_node = max_inserted_node*nrtm
202 CALL my_alloc(inserted_node,size_inserted_node)
207 IF (flagremnode==2)
THEN
208 ki = intbuf_tab(n)%KREMNODE(ii)+1
209 kl = intbuf_tab(n)%KREMNODE(ii+1)
211 ns = intbuf_tab(n)%REMNODE(j)
216 CALL insol3et(x ,intbuf_tab(n)%IRECTM,ixs ,
218 . noint ,knod2els,nod2els,ixs10 ,
222 nc(1:8)=ixs(2:9,e_id)
228 nc(5:10)=ixs10(1:6,e_id-numels8)
230 nc(1:8)=ixs(2:9,e_id)
231 nc(9:20)=ixs20(1:12,e_id-numels8-numels10)
233 nc(1:8)=ixs(2:9,e_id)
234 nc(9:16)=ixs16(1:8,e_id-numels8-numels10-numels20)
237 nmc(1:4)=intbuf_tab(n)%IRECTM(4*(ii-1)+1:4*(ii-1)+4)
241 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc(2)
242 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
247 inserted_node(jjj) = ni
253 nbr_insert_ii(ii) = nnrem - nnrem_save
254 kremnode_save(ii) = kremnode_save(ii+1) - kremnode_save(ii)
255 iada = iada + kremnode_save(ii)
258 kremnode_save(ii) = iada + nbr_insert_ii(ii) - 1
259 iada = iada + nbr_insert_ii(ii)
266 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc(2)
267 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
268 IF(tagd(ni)==1) tagd(ni)=0
271 IF (flagremnode==2)
THEN
273 ns = intbuf_tab(n)%REMNODE(j)
288 IF( nbr_insert_ii(ii)/=0 ) first =
291 IF( nbr_insert_ii(nrtm+1-ii)/=0 ) last = nrtm+1-ii
297 total_inserted = total_inserted + nbr_insert_ii(ii)
300 ALLOCATE( remnode(nremov(n)+total_inserted) )
308 IF( adress_ii(first)>1 )
THEN
309 remnode(1:adress_ii(first)-1) = intbuf_tab(n)%REMNODE(1:adress_ii(first)-1)
310 offset = offset + adress_ii(first)-1
311 i = i + adress_ii(first)-1
316 IF( nbr_insert_ii(ii)>0 )
THEN
317 DO jj = 1,nbr_insert_ii(ii)
319 remnode(offset+nbr_insert_ii(ii)+1-jj) = inserted_node(j)
321 offset = offset + nbr_insert_ii(ii)
323 IF(ii<last.AND.nremov(n)>0)
THEN
325 nbr_intra = adress_ii(ii+1) - adress_ii(ii)-nbr_insert_ii
326 IF( nbr_intra>0 )
THEN
329 remnode(jj+offset) = intbuf_tab(n)%REMNODE(i)
331 offset = offset + nbr_intra
338 IF( i<nremov(n) )
THEN
339 nbr_extra = nremov(n) - i
340 remnode(offset+1:offset+nbr_extra) = intbuf_tab(n)%REMNODE(i+1:nremov(n))
343 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
349 . anmode=aninfo_blind_1,
357 nnrem = nnrem + nremov(n)
360 intbuf_tab(n)%REMNODE(1:nnrem) = remnode(1:nnrem)
361 intbuf_tab(n)%KREMNODE(2:nrtm+1) = kremnode_save(1:nrtm)
362 intbuf_tab(n)%KREMNODE(1)=0
366 IF(
ALLOCATED(remnode))
DEALLOCATE( remnode )
367 IF(
ALLOCATED(inserted_node))
DEALLOCATE( inserted_node )
371 DEALLOCATE( nbr_insert_ii )
372 DEALLOCATE( adress_ii )
373 DEALLOCATE( kremnode_save )
376 DEALLOCATE(tagd,tagnod)
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)