33 1 IXS ,IXQ ,IXC ,IXT ,IXP ,
34 2 IXR ,IXTG ,IXS10 ,IXS16 ,IXS20 ,
35 3 IPARTS ,IPARTQ ,IPARTC ,IPARTT ,IPARTP ,
36 4 IPARTR ,IPARTG ,IPARTX ,IPART ,
37 5 IPARG ,ELBUF_TAB,IGEO ,IDDLEVEL,TAGPRT_SMS)
45#include "implicit_f.inc"
59 INTEGER NATIV_SMS(*),IPART(LIPART1,*),
60 . IXS(NIXS,*),IXS10(6,*) ,IXS16(8,*) ,IXS20(12,*),
61 . IXQ(NIXQ,*),IXC(NIXC,*), IXT(NIXT,*), IXP(NIXP,*),
62 . IXR(NIXR,*),IXTG(NIXTG,*),IPARTS(*),IPARTQ(*),IPARTC(*),
63 . IPARTT(*),IPARTP(*),IPARTR(*),IPARTG(*),IPARTX(*),
64 . iparg(nparg,ngroup),igeo(npropgi,*),iddlevel, tagprt_sms(*)
68 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
72 INTEGER I,NEL,IAD,NFT,ITY,ISOL,NG,NUMEL,
73 . compt_part(npart),compt_tot_part(npart),compt(7),compt_tot,
75 CHARACTER FILNAM*109, KEYA*80, KEYA2*80
76 CHARACTER*12 :: TYPE_ELEM(7)
82 TYPE(g_bufel_) ,
POINTER :: GBUF
95 IF(isms_selec==1 .OR. isms_selec==2 .OR. isms_selec==4)
THEN
104 gbuf => elbuf_tab(ng)%GBUF
108 IF(tagprt_sms(iparts(nft+i))/=0) gbuf%ISMS(i)=1
112 IF(tagprt_sms(ipartc(nft+i))/=0) gbuf%ISMS(i)=1
116 IF(tagprt_sms(ipartg(nft+i))/=0) gbuf%ISMS(i)=1
120 IF(tagprt_sms(ipartt(nft+i))/=0) gbuf%ISMS(i)=1
124 IF(tagprt_sms(ipartp(nft+i))/=0) gbuf%ISMS(i)=1
128 IF(tagprt_sms(ipartr(nft+i))/=0) gbuf%ISMS(i)=1
133 IF(isms_selec==1 .OR. isms_selec==2)
RETURN
141 numel= numelc+numels+numelt+numelq+numelp+numelr+numeltg
142 . +numelx+numsph+numelig3d
153 dt_index(i) = dt_index(i-1) + nume(i-1)
157 compt_part(1:npart) = 0
158 compt_tot_part(1:npart) = 0
161 type_elem(3)=
'SHELL-4NODES'
164 type_elem(6)=
'SPRING'
165 type_elem(7)=
'SHELL-3NODES'
178 gbuf => elbuf_tab(ng)%GBUF
182 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixs ,1 ,8 ,
183 . ixs ,nativ_sms,dtelem,ity,dt_index(ity),
184 . iparts,compt(ity),compt_part,compt_tot_part
188 IF (isol==10)
CALL nod_sms_dt_sol(numnod,gbuf%ISMS,nel,nft,6 ,numels8,
190 IF (isol==20)
CALL nod_sms_dt_sol(numnod,gbuf%ISMS,nel,nft,12,numels8+numels10,
192 IF (isol==16)
CALL nod_sms_dt_sol(numnod,gbuf%ISMS,nel,nft,8 ,numels8+numels10+numels20,
197 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixc ,1 ,4 ,
198 . ixc ,nativ_sms,dtelem,ity,dt_index(ity),
199 . ipartc,compt(ity),compt_part,compt_tot_part,igeo,ipart,tagprt_sms)
203 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixtg
204 . ixtg,nativ_sms,dtelem,ity,dt_index(ity),
205 . ipartg,compt(ity),compt_part,compt_tot_part,igeo,ipart,tagprt_sms)
209 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixt ,1 ,2 ,
210 . ixt ,nativ_sms,dtelem,ity,dt_index(ity),
211 . ipartt,compt(ity),compt_part,compt_tot_part,igeo,ipart,tagprt_sms)
215 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixp ,1 ,2 ,
216 . ixp ,nativ_sms,dtelem,ity,dt_index(ity),
217 . ipartp,compt(ity),compt_part,compt_tot_part,igeo,ipart,tagprt_sms)
221 CALL nod_sms_dt(numnod,gbuf%ISMS,nel,nft,nixr ,1 ,2 ,
222 . ixr ,nativ_sms,dtelem,ity,dt_index(ity),
223 . ipartr,compt(ity),compt_part,compt_tot_part,igeo,ipart,tagprt_sms)
231 compt_tot = compt_tot + compt(i)
238 IF (iddlevel == 0)
THEN
242 IF (compt_tot>0)
THEN
243 WRITE(iout,2000) compt_tot
244 ratio = 100*real(compt_tot)/real(
max(1,numel))
245 WRITE(iout,2001) ratio
249 IF (compt(i)>0)
WRITE(iout,
'(7X,A12,I10)') type_elem(i),compt(i)
255 IF ((compt_part(i)>0).AND.(compt_tot_part(i)>0))
THEN
256 ratio = 100*real(compt_part(i))/real(compt_tot_part(i))
257 WRITE(iout,
'(4X,I10,19X,I10,12X,F16.1)') ipart(4,i),compt_part(i),ratio
269 1000
FORMAT(//,9x,
'AUTOMATIC SELECTION OF ELEMENTS FOR AMS')
270 1001
FORMAT(9x,
'---------------------------------------',/)
272 2000
FORMAT(3x,
'TOTAL NUMBER OF ELEMENTS SELECTED ',i10)
273 2001
FORMAT(3x,
'% OF ELEMENTS SELECTED IN THE MODEL',f16.1)
274 2010
FORMAT(/,3x,
'REPARTITION OF SELECTED ELEMENTS BY TYPES')
275 2011
FORMAT(3x,
'-----------------------------------------')
276 2020
FORMAT(/,3x,
'REPARTITION OF SELECTED ELEMENTS BY PARTS')
277 2021
FORMAT(7x,
'PART ID',6x,
'NB OF ELEMENTS SELECTED',6x,
'% OF ELEMENTS SELECTED')
279 3000
FORMAT(2x,'no elements selected
for ams activation')
289 1 NUMNOD ,TAGEL_SMS,NEL,NFT,NIX ,MIX ,LIX_INPUT,
290 2 IX ,TAGN_SMS,DTELEM,ITY,DT_INDEX,
291 3 IPART ,COMPT,COMPT_PART,COMPT_TOT_PART,IGEO,IPARTG,TAGPRT_SMS)
295#include "implicit_f.inc"
297#include "scr17_c.inc"
298#include "param_c.inc"
302 INTEGER NUMNOD , NIX ,MIX, LIX_INPUT,
303 . IX(NIX,*), TAGN_SMS(*),NEL,
304 . IPART(*),COMPT_PART(*),COMPT_TOT_PART(*),COMPT,ID_PART,
305 . TAGEL_SMS(*),NFT,ITY,DT_INDEX,IGEO(NPROPGI,*),IPARTG(LIPART1,*),TAGPRT_SMS(*)
311 INTEGER I, J, K, TAG(NUMNOD), ID_ELT, IGTYP, IGG, LIX
318 id_part = ipart(id_elt)
319 igg = ipartg(2,id_part)
321 IF (tagprt_sms(id_part)==0) compt_tot_part(id_part) = compt_tot_part(id_part
323 IF(dtelem(dt_index+id_elt)>dt_sms_switch) cycle
327 IF ((ity==6).AND.(igtyp==12)) lix = 3
342 IF (tagprt_sms(id_part)==0)
THEN
344 compt_part(id_part) = compt_part(id_part) + 1