37 1 IPARI ,STFAC ,FRIGAP ,NOINT ,
38 2 IGRNOD ,IGRSURF ,IGRSLIN ,XFILTR ,FRIC_P ,
39 3 UNITAB ,LSUBMODEL ,TITR )
51#include
"implicit_f.inc"
62 my_real frigap(*),fric_p(10)
63 CHARACTER(LEN=NCHARTITLE),
INTENT(IN) :: TITR
65 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
66 TYPE (SURF_) ,
TARGET ,
DIMENSION(NSURF) :: IGRSURF
67 TYPE (SURF_) ,
TARGET ,
DIMENSION(NSLIN) :: IGRSLIN
69 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
82 INTEGER I,IBC1, IBC2, IBC3, NOINT, NTYP,
83 . INACTI, IBC1M, IBC2M, IBC3M, IGSTI,IS1,IS2,
84 . IGAP,MULTIMP,MFROT,IFQ,IBAG,MODFR,IVIS2,
86 . iform,iadm,iedge,nradm,isu10,isu20,
87 . nod10,line10,line20,idel7n,line1,
90 . fric,gap,startt,bumult,stopt,c1,c2,c3,c4,c5,c6,
alpha,
91 . visc,viscf,fpenmax,edg_angl,gapsol,stmin,stmax,
92 . padm,angladm,cadm,gapmax,gapscale
95 INTEGER,
DIMENSION(:),
POINTER :: INGR2USR
163 is_available = .false.
168 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
169 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
170 CALL hm_get_intv(
'I_sym',isym,is_available,lsubmodel)
171 CALL hm_get_intv(
'I_edge',iedge,is_available,lsubmodel)
172 CALL hm_get_intv(
'GRNOD_ID',nod1,is_available,lsubmodel)
173 CALL hm_get_intv(
'Line1_set',line1,is_available,lsubmodel)
174 CALL hm_get_intv(
'Line2_set',line2,is_available,lsubmodel)
176 CALL hm_get_intv(
'Igap',igap,is_available,lsubmodel)
177 CALL hm_get_intv(
'Ibag',ibag,is_available,lsubmodel)
178 CALL hm_get_intv(
'NodDel3',idel7n,is_available,lsubmodel)
180 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
182 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
183 CALL hm_get_intv(
'INACTIV',inacti,is_available,lsubmodel)
185 CALL hm_get_intv(
'Ifric',mfrot,is_available,lsubmodel)
186 CALL hm_get_intv(
'Ifiltr',ifq,is_available,lsubmodel)
187 CALL hm_get_intv(
'IFORM',modfr,is_available,lsubmodel
192 CALL hm_get_floatv(
'ANGLE2',edg_angl,is_available,lsubmodel,unitab)
194 CALL hm_get_floatv(
'FpenMax',fpenmax,is_available,lsubmodel,unitab)
196 CALL hm_get_floatv(
'STFAC',stfac,is_available,lsubmodel,unitab)
197 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
199 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
200 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
202 CALL hm_get_floatv(
'STIFF_DC',visc,is_available,lsubmodel,unitab)
203 CALL hm_get_floatv(
'FRIC_DC',viscf,is_available,lsubmodel,unitab)
228 IF(isym == 0)isym = 1
238 ingr2usr => igrsurf(1:nsurf)%ID
239 IF(isu1 /= 0)isu1=ngr2usr(isu1,ingr2usr,nsurf)
247 isu2 = ngr2usr(isu2,ingr2usr,nsurf)
253 IF (isu1 == 0 .AND. isu2 == 0) iedge = -1
256 IF(iedge==3 .and. edg_angl==zero) edg_angl=ninety+one
257 frigap(26) = cos((hundred80-edg_angl)*pi/hundred80)
259 ingr2usr => igrnod(1:ngrnod)%ID
260 IF(nod1 /= 0) nod1=ngr2usr(nod1,ingr2usr,ngrnod)
263 IF(line2 == 0 .and. isu1 == 0)line2=line1
265 IF(line1 == line2)
THEN
271 IF(line1 == line2 .and. isu1 == isu2)
THEN
278 ingr2usr => igrslin(1:nslin)%ID
279 IF(line1 /= 0)line1=ngr2usr(line1,ingr2usr,nslin)
280 IF(line2 /= 0)line2=ngr2usr(line2,ingr2usr,nslin)
293 IF(igsti==0)igsti = 3
294 IF(isms==1) igsti = 4
301 IF (idel7n>2.OR.n2d==1) idel7n = 0
304 IF (ibag/=0.AND.nvolu==0 .AND. ialelag == 0 )
THEN
306 . msgtype=msgwarning,
307 . anmode=aninfo_blind_2,
313 intbag =
max(intbag,ibag)
315 kcontact =
max(kcontact,ibag,iadm)
324 IF(gapscale==zero)gapscale=one
325 frigap(13) = gapscale
329 IF(frigap(16)==zero)
THEN
334 IF (fpenmax == zero) fpenmax = one
336 frigap(29) = gapsol/four
342 IF(stmax==zero)stmax=ep30
350 IF(stfac==zero.AND.igsti/=1)
THEN
353 IF (stfac == zero )stfac = one_fifth
355 IF (stopt == zero) stopt = ep30
372 IF(fric/=zero.AND.viscf==zero)viscf=one
383 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
388 IF (mfrot/=0.AND.viscf==0.0) viscf=one
390 IF (
alpha==0.) ifq = 0
392 IF (modfr==0) modfr = 2
393 IF (modfr==2.AND.ifq<10) ifq = ifq + 10
394 IF(modfr==2)viscf=zero
397 IF (ifq==10) xfiltr = one
398 IF (mod(ifq,10)==1) xfiltr =
alpha
399 IF (mod(ifq,10)==2) xfiltr=four*atan2(one,zero) /
alpha
400 IF (mod(ifq,10)==3) xfiltr=four*atan2(one,zero) *
alpha
401 IF (xfiltr<zero)
THEN
404 . anmode=aninfo_blind_1,
408 ELSEIF (xfiltr>1.AND.mod(ifq,10)<=2)
THEN
411 . anmode=aninfo_blind_1,
440 cadm =cos(angladm*pi/hundred80)
446 IF(bumult==zero)
THEN
448 IF(numnod > 2500000)
THEN
450 ELSEIF(numnod > 1500000)
THEN
451 bumult = bmul0*three/two
467 . isu10,isu20,isym,
max(iedge,0),nod10,line10,line20,
469 . ibc1,ibc2,ibc3,ibc1m,ibc2m,ibc3m,
470 . igsti,stfac,stmin,stmax,
471 . fric,igap,gap,gapsol,startt,stopt,
472 . inacti,fpenmax,visc,viscf,ipari(14),
478 WRITE(iout,
'(6X,A)')
'NO SECONDARY SURFACE INPUT'
480 WRITE(iout,
'(6X,A)')
'SECONDARY SURFACE INPUT BY SEGMENTS'
482 WRITE(iout,
'(6X,A)')
'SECONDARY SURFACE INPUT BY NODES'
484 WRITE(iout,
'(6X,A)')
'SECONDARY SURFACE INPUT BY SEGMENTS'
486 WRITE(iout,
'(6X,A)')
'SECONDARY SIDE INPUT BY BRICKS'
488 WRITE(iout,
'(6X,A)')
'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
491 WRITE(iout,
'(6X,A)')
'NO MAIN SURFACE INPUT'
493 WRITE(iout,
'(6X,A)')
'MAIN SURFACE INPUT BY SEGMENTS'
495 WRITE(iout,
'(6X,A)')
'MAIN SURFACE INPUT BY NODES'
497 WRITE(iout,
'(6X,A)')
'MAIN SURFACE INPUT BY SEGMENTS'
499 WRITE(iout,
'(6X,A)')
'MAIN SURFACE REFERS ',
500 .
'TO HYPER-ELLIPSOIDAL SURFACE'
507 .
' TYPE==20 PARALLEL/AUTO IMPACTING ' //,
508 .
' FIRST SURFACE ID. . . . . . . . . . . . . ',i10/,
509 .
' SECOND SURFACE ID . . . . . . . . . . . . ',i10/,
510 .
' SYMMETRY FLAG . . . . . . . . . . . . . . ',i10/,
511 .
' EDGE FLAG . . . . . . . . . . . . . . . . ',i10/,
513 .
' =1 Edges from surface border'/,
514 .
' =2 Edges from each segment(element) edge'/,
515 .
' =3 same as 1 + sharp edges between segment'/,
516 .
' NOD GROUP ID (ADDITIONAL) . . . . . . . . ',i10/,
517 .
' FIRST LINE ID (ADDITIONAL). . . . . . . . ',i10/,
518 .
' SECOND LINE ID (ADDITIONAL) . . . . . . . ',i10/,
519 .
' ANGLE FOR EDGE COMPUTATION (Iedge=3). . . ',1pg20.13/,
520 .
' BOUND. COND. DELETED AFTER IMPACT IN X DIR ',i1/,
521 .
' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
523 .
' BOUND. COND. DELETED AFTER IMPACT IN X DIR ',i1/,
524 .
' MAIN NODE (1:YES 0:NO) Y DIR ',i1/,
526 .
' STIFFNESS FORMULATION. . . . . . . . . . ',i1/,
527 .
' STIFFNESS FACTOR OR STIFFNESS VALUE . . . ',1pg20.13/,
528 .
' MINIMUM STIFFNESS. . . . . . . . . . . . ',1pg20.13/,
529 .
' MAXIMUM STIFFNESS. . . . . . . . . . . . ',1pg20.13/,
530 .
' FRICTION FACTOR . . . . . . . . . . . . . ',1pg20.13/,
531 .
' VARIABLE GAP FLAG . . . . . . . . . . . . ',i10/,
532 .
' MINIMUM GAP . . . . . . . . . . . . . . . ',1pg20.13/,
533 .
' MINIMUM SOLID THICKNESS . . . . . . . . . ',1pg20.13/,
534 .
' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
535 .
' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
536 .
' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
537 .
' MAXIMAL INITIAL PENETRATION FACTOR. . . . ',1pg20.13/,
538 .
' CRITICAL DAMPING FACTOR . . . . . . . . . ',1pg20.13/,
539 .
' FRICTION CRITICAL DAMPING FACTOR. . . . . ',1pg20.13/,
540 .
' QUADRATIC DAMPING FLAG. . . . . . . . . . ',i10/,
541 .
' FORMULATION LEVEL . . . . . . . . . . . . ',i10/,
542 .
' MEAN POSSIBLE NUMBER OF IMPACT/NODE . . . ',i10/)
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)