37 . X ,IXS ,IXS10 ,IXS16,IXS20 ,
38 . KNOD2ELS,NOD2ELS,IPARI ,INTBUF_TAB ,
39 . ITAB , NOM_OPT,NREMOV,S_NOD2ELS,IDDLEVEL)
47 use element_mod ,
only :nixs
51#include "implicit_f.inc"
58#include "tabsiz_c.inc"
62 INTEGER,
DIMENSION(NPARI,NINTER) ,
INTENT(INOUT) :: IPARI
63 INTEGER,
DIMENSION(NIXS,NUMELS) ,
INTENT(IN) :: IXS
64 INTEGER,
DIMENSION(6,NUMELS10) ,
INTENT(IN) :: IXS10
65 INTEGER,
DIMENSION(8,NUMELS16) ,
INTENT(IN) :: IXS16
66 INTEGER,
DIMENSION(12,NUMELS20) ,
INTENT(IN) :: IXS20
67 INTEGER,
DIMENSION(NUMNOD+1) ,
INTENT(IN) :: KNOD2ELS
69INTEGER,
DIMENSION(S_NOD2ELS) ,
INTENT(IN) :: NOD2ELS
70 INTEGER,
DIMENSION(NUMNOD) ,
INTENT(IN) :: ITAB
71 INTEGER,
DIMENSION(LNOPT1,SNOM_OPT) ,
INTENT(IN) :: NOM_OPT
72 INTEGER,
DIMENSION(NINTER)INTENT(INOUT)
73DIMENSION(NUMNOD*3) ,
INTENT(IN) :: x
74 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(INOUT):: INTBUF_TAB
75 INTEGER,
INTENT(in) :: IDDLEVEL
79 INTEGER N,NTY,FLAGREMNODE,I,NI
80 INTEGER II,J,NSN,NRTM,
83 . ki,kl,jj,nremov1(ninter),ns,maxnm
84 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGD,TAGNOD
85 INTEGER ID,NC(20),NMC(4)
86 CHARACTER(LEN=NCHARTITLE) :: TITR
89 INTEGER :: JJJ,NOINT,E_ID,IADA
90 INTEGER :: FIRST,LAST,NNREM_SAVE
91 INTEGER :: OFFSET, NBR_INTRA,NBR_EXTRA,TOTAL_INSERTED
92 INTEGER :: SIZE_INSERTED_NODE,MAX_INSERTED_NODE
93 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NBR_INSERT_II,ADRESS_II
94 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KREMNODE_SAVE,INSERTED_NODE,REMNODE
110! inserted_node :
integer, dimension = size_inserted_node, list inserted nodes
111! remnode :
integer, dimension = nrtm + total_inserted, new array with old and inserted nodes
115 max_inserted_node = 1
116 ALLOCATE(tagnod(numnod),tagd(numnod))
126 ns = intbuf_tab(n)%NSV(jj)
127 IF (ns<=numnod) tagnod(ns)=1
131 CALL insol3et(x ,intbuf_tab(n)%IRECTM,ixs ,
133 . noint ,knod2els,nod2els,ixs10 ,
137 nc(1:8)=ixs(2:9,e_id)
143 nc(5:10)=ixs10(1:6,e_id-numels8)
145 nc(1:8)=ixs(2:9,e_id)
146 nc(9:20)=ixs20(1:12,e_id-numels8-numels10
148 nc(1:8)=ixs(2:9,e_id)
149 nc(9:16)=ixs16(1:8,e_id-numels8-numels10-numels20
152 nmc(1:4)=intbuf_tab(n)%IRECTM(4*(ii-1)+1:4*(ii-1)+4)
157 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc
158 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
159 nremov1(n) = nremov1(n)+ 1
163 max_inserted_node =
max
172 IF(nremov1(n)==0) cycle
177 ALLOCATE( nbr_insert_ii(nrtm) )
178 ALLOCATE( adress_ii(nrtm) )
179 ALLOCATE( kremnode_save(nrtm+1) )
180 nbr_insert_ii(1:nrtm) = 0
181 adress_ii(1:nrtm) = 0
182 kremnode_save(1:nrtm+1) = 0
191 ns = intbuf_tab(n)%NSV(jj)
192 IF (ns<=numnod) tagd(ns)=0
193 IF (ns<=numnod) tagnod(ns)=1
196 nremov(n) = ipari(62,n)
197 flagremnode=ipari(63,n)
198 IF(iddlevel==0.AND.flagremnode==1.AND.nremov
200 IF(nremov(n)>0) kremnode_save(1:nrtm+1) = intbuf_tab
202 size_inserted_node = max_inserted_node*nrtm
203 CALL my_alloc(inserted_node,size_inserted_node)
208 IF (flagremnode==2)
THEN
209 ki = intbuf_tab(n)%KREMNODE(ii)+1
210 kl = intbuf_tab(n)%KREMNODE(ii+1)
212 ns = intbuf_tab(n)%REMNODE(j)
217 CALL insol3et(x ,intbuf_tab(n)%IRECTM,ixs ,
219 . noint ,knod2els,nod2els,ixs10 ,
223 nc(1:8)=ixs(2:9,e_id)
229 nc(5:10)=ixs10(1:6,e_id-numels8)
231 nc(1:8)=ixs(2:9,e_id)
232 nc(9:20)=ixs20(1:12,e_id-numels8-numels10)
234 nc(1:8)=ixs(2:9,e_id)
235 nc(9:16)=ixs16(1:8,e_id-numels8-numels10-numels20)
238 nmc(1:4)=intbuf_tab(n)%IRECTM(4*(ii-1)+1:4*(ii-1)+4
242 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc(2)
243 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
248 inserted_node(jjj) = ni
254 nbr_insert_ii(ii) = nnrem - nnrem_save
255 kremnode_save(ii) = kremnode_save(ii+1) - kremnode_save
256 iada = iada + kremnode_save(ii
259 kremnode_save(ii) = iada + nbr_insert_ii(ii) - 1
260 iada = iada + nbr_insert_ii(ii)
267 IF (tagnod(ni)>0 .AND.ni/=nmc(1).AND.ni/=nmc(2)
268 . .AND.ni/=nmc(3).AND.ni/=nmc(4))
THEN
269 IF(tagd(ni)==1) tagd(ni)=0
272 IF (flagremnode==2)
THEN
274 ns = intbuf_tab(n)%REMNODE(j)
289 IF( nbr_insert_ii(ii)/=0 ) first = ii
292 IF( nbr_insert_ii(nrtm+1-ii)/=0 ) last = nrtm+1-ii
298 total_inserted = total_inserted + nbr_insert_ii(ii)
301 ALLOCATE( remnode(nremov(n)+total_inserted) )
309 IF( adress_ii(first)>1 )
THEN
310 remnode(1:adress_ii(first)-1) = intbuf_tab(n)%REMNODE(1:adress_ii(first
311 offset = offset + adress_ii(first)-1
312 i = i + adress_ii(first)-1
317 IF( nbr_insert_ii(ii)>0 )
THEN
318 DO jj = 1,nbr_insert_ii(ii)
320 remnode(offset+nbr_insert_ii(ii)+1-jj) = inserted_node(j)
322 offset = offset + nbr_insert_ii(ii)
324 IF(ii<last.AND.nremov(n)>0)
THEN
326 nbr_intra = adress_ii(ii+1) - adress_ii(ii)-nbr_insert_ii(ii
327 IF( nbr_intra>0 )
THEN
330 remnode(jj+offset) = intbuf_tab
332 offset = offset + nbr_intra
339 IF( i<nremov(n) )
THEN
340 nbr_extra = nremov(n) - i
341 remnode(offset+1:offset+nbr_extra) = intbuf_tab(n)%REMNODE(i+1:nremov(n))
344 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
350 . anmode=aninfo_blind_1,
358 nnrem = nnrem + nremov(n)
361 intbuf_tab(n)%REMNODE(1:nnrem) = remnode(1:nnrem)
362 intbuf_tab(n)%KREMNODE(2:nrtm+1) = kremnode_save(1:nrtm)
363 intbuf_tab(n)%KREMNODE(1)=0
367 IF(
ALLOCATED(remnode))
DEALLOCATE( remnode )
368 IF(
ALLOCATED(inserted_node))
DEALLOCATE( inserted_node )
372 DEALLOCATE( nbr_insert_ii )
373 DEALLOCATE( adress_ii )
374 DEALLOCATE( kremnode_save )
377 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)