47
48
49
50
51
53 USE intbuf_fric_mod
57 USE sensor_mod
60 USE format_mod , ONLY : fmt_i_2f
61 USE reader_old_mod , ONLY : line, irec
62
63
64
65#include "implicit_f.inc"
66
67
68
69#include "scr17_c.inc"
70#include "scr06_c.inc"
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "units_c.inc"
74#include "scr12_c.inc"
75#include "remesh_c.inc"
76
77
78
79 INTEGER,INTENT(IN) :: NPARI,NPARIR
80 INTEGER,INTENT(IN) :: ITHERM_FE
81 INTEGER,INTENT(INOUT) :: INTHEAT
82 INTEGER NOM_OPT(LNOPT1,*), NOM_OPTFRIC(LNOPT1,*)
83 INTEGER ISU1,ISU2,NI
84 INTEGER IPARI(NPARI),DEF_INTER(100)
86 my_real frigap(nparir),fric_p(10)
87 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
88 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
89 TYPE(SUBMODEL_DATA),INTENT(IN) :: LSUBMODEL(NSUBMOD)
90 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
91 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
92
93 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
94 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
95 TYPE (PARAMETERS_) ,INTENT(INOUT):: PARAMETERS
96
97
98
99 INTEGER I,J,L,IBC1, IBC2, IBC3, IBUC, NOINT, NTYP, IBID,
100 . INACTI, IBC1M, IBC2M, IBC3M, IGSTI, IVIS2,IS1, IS2,
101 . ILEV, IGAP,MULTIMP,HIERA,MFROT,IFQ,IBAG,MODFR,IERR1,
102 . IFLAGUNIT,ISYM,IEDGE,NOD1,IDUM,IGNORE,IDEL24,KK,II,
103 . IGAP0,FLAGREMNOD,IDSENS,IDELKEEP,INTKG,IREM24I2,IPRINT,
104 . INTFRIC,MULTIMPE,IASSIGN,ICURV,INTPLY,INTTH,NPREF,
105 . INTNITSCHE,IPEN0,NA1,NA2,IADM,NRADM,IFORM,IPSTIF
107 . fric,gap,startt,bumult,stopt,c1,c2,c3,c4,c5,c6,
alpha,
108 . gapscale,gapmax,stmin,stmax,stiff,edg_angl,
109 . percent_size,gapmax_s,gapmax_m,penmax,penmin,visc,viscf,
110 . eten_m,padm,angladm,rsth,fheat,tint,cadm,tpfit,stfacm,
111 . dtstif
112 CHARACTER(LEN=40)::MESS
113 CHARACTER(LEN=NCHARTITLE)::MSGTITL
114 CHARACTER(LEN=NCHARKEY)::OPT,KEY,KEY1
115 CHARACTER(LEN=NCHARFIELD)::BCFLAG,BCFLAGM
116
117 INTEGER, DIMENSION(:), POINTER :: INGR2USR
118
119
120
121 INTEGER NGR2USR
122 LOGICAL IS_AVAILABLE
123
124
125
126
127
128
129 is1=0
130 is2=0
131 ibc1=0
132 ibc2=0
133 ibc3=0
134 ibc1m=0
135 ibc2m=0
136 ibc3m=0
137 ibuc=0
138 mfrot=0
139 ifq=0
140 ibag=0
141 igsti = 0
142 ilev=0
143 idsens = 0
144 idelkeep=0
145 intfric = 0
146 nod1 = 0
147 intkg = 0
148 flagremnod = 0
149 multimp = 0
150 icurv = 0
151 intply = 0
152 irem24i2 = 0
153 intth = 0
154 idel24= 0
155 intnitsche = 0
156 iadm = 0
157 iform = 0
158 ivis2=0
159 ipstif = 0
160
161
162
163 ibag = 0
164 multimpe = 0
165
166 stopt=ep30
167 inacti = 0
168 viscf = zero
169 fric = zero
170 gap = zero
171 gapscale = zero
172 startt = zero
173 visc = zero
174 xfiltr = zero
175 DO i = 1, 10
176 fric_p(i) = zero
177 ENDDO
178 c1=zero
179 c2=zero
180 c3=zero
181 c4=zero
182 c5=zero
183 c6=zero
184
185 gapscale = zero
186 percent_size = zero
187 edg_angl = zero
188 gapmax_s = zero
189 gapmax_m = zero
190 penmax = zero
191 penmin = zero
192 eten_m = zero
193 rsth = ep30
194 fheat= one
195 tint = zero
196 stfacm= zero
197
198 iassign = 1
199
200 ntyp = 24
201 ipari(15)=noint
202 ipari(7)=ntyp
203
204 is_available = .false.
205
206
207
208
209 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
210 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
211 CALL hm_get_intv(
'Istf',igsti,is_available,lsubmodel)
212 CALL hm_get_intv(
'Irem_i2',irem24i2,is_available,lsubmodel)
213 CALL hm_get_intv(
'TYPE24_Idel',idel24,is_available,lsubmodel)
214
215 CALL hm_get_intv(
'GRNOD_ID',nod1,is_available,lsubmodel)
216 CALL hm_get_intv(
'TYPE24_Iedge',iedge,is_available,lsubmodel)
217 CALL hm_get_intv(
'IPSTIF',ipstif,is_available,lsubmodel)
218
219 CALL hm_get_intv(
'Igap',igap0,is_available,lsubmodel)
220 CALL hm_get_intv(
'Ipen',ipen0,is_available,lsubmodel)
221
222 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
223 CALL hm_get_intv(
'Deactivate_Y_BC',ibc2,is_available,lsubmodel)
224 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
225
226 CALL hm_get_intv(
'INACTIV',inacti,is_available,lsubmodel)
227
228 CALL hm_get_intv(
'Ifric',mfrot,is_available,lsubmodel)
229 CALL hm_get_intv(
'Ifiltr',ifq,is_available,lsubmodel)
230 CALL hm_get_intv(
'ISENSOR',idsens,is_available,lsubmodel)
231 CALL hm_get_intv(
'Fric_ID',intfric,is_available,lsubmodel)
232
233
234
235
236 CALL hm_get_floatv(
'GAP1',gapmax_s,is_available,lsubmodel,unitab)
237 CALL hm_get_floatv(
'GAP2',gapmax_m,is_available,lsubmodel,unitab)
238
239 CALL hm_get_floatv(
'STMIN',stmin,is_available,lsubmodel,unitab)
240 CALL hm_get_floatv(
'STMAX',stmax,is_available,lsubmodel,unitab)
241 CALL hm_get_floatv(
'TYPE24_Edge_Angle',edg_angl,is_available,lsubmodel,unitab)
242 CALL hm_get_floatv(
'Ipen_max',penmax,is_available,lsubmodel,unitab)
243 CALL hm_get_floatv(
'Ipen_min',penmin,is_available,lsubmodel,unitab)
244 CALL hm_get_floatv(
'STFAC_MDT',stfacm,is_available,lsubmodel,unitab)
245
246 CALL hm_get_floatv(
'STFAC',stfac,is_available,lsubmodel,unitab)
247 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
248 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
249 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
250
251 CALL hm_get_floatv(
'STIFF_DC',visc,is_available,lsubmodel,unitab)
252 CALL hm_get_floatv(
'Tpressfit',tpfit,is_available,lsubmodel,unitab)
253
255 CALL hm_get_floatv(
'DTSTIF',dtstif,is_available,lsubmodel,unitab)
256
257 IF (mfrot>0) THEN
263 ENDIF
264 IF (mfrot>1) THEN
266 ENDIF
267
268 npref=0
269
270
271
272
273
274 iprint = 0
275
276 key1='IGSTI'
277 CALL definter(key1 ,igsti ,iassign ,iprint ,
278 . ntyp ,def_inter)
279
280 key1='IDEL24'
281 CALL definter(key1 ,idel24 ,iassign ,iprint ,
282 . ntyp ,def_inter)
283
284 key1='IEDGE'
285 CALL definter(key1 ,iedge ,iassign ,iprint ,
286 . ntyp ,def_inter)
287
288 key1='IGAP0'
289 CALL definter(key1 ,igap0 ,iassign ,iprint ,
290 . ntyp ,def_inter)
291
292 key1='IPEN0'
293 CALL definter(key1 ,ipen0 ,iassign ,iprint ,
294 . ntyp ,def_inter)
295
296 key1='INACTI'
297 CALL definter(key1 ,inacti ,iassign ,iprint ,
298 . ntyp ,def_inter)
299
300
301
302
303
304
305
306
307
308
309
310
311 IF (irem24i2==0) THEN
312 irem24i2=1
313
314 END IF
315 IF (irem24i2==3) irem24i2 = 0
316
317
318
319
320
321 igap = 1
322 ipari(21)=igap
323 ipari(63)=irem24i2
324
325 IF (irem24i2==0) irem24i2 = 3
326
327
328
329
330
331
332
333
334 ilev=0
335
336 IF(isu1 /= 0 .AND.isu2 == 0)THEN
337 ilev = 1
338 ELSEIF(isu1 /= 0 .AND.isu2 /= 0)THEN
339 ilev = 2
340 IF (isu1 == isu2) THEN
341 ilev = 1
342 isu2 = 0
344 . msgtype=msgwarning,
345 . anmode=aninfo,
346 . i1=noint,
347 . c1=titr)
348 END IF
349 ELSEIF(isu1 == 0 .AND.isu2 /= 0 .AND. nod1 /= 0) THEN
350 ilev = 3
351 ELSE
352 IF(isu2 == 0) THEN
354 . anmode=aninfo,
355 . msgtype=msgerror,
356 . i1=noint,
357 . c1=titr)
358 ELSEIF (nod1 == 0) THEN
360 . anmode=aninfo,
361 . msgtype=msgerror,
362 . i1=noint,
363 . c1=titr)
364 ENDIF
365 is1=0
366 is2=0
367 END IF
368 isym = 1
369
370 SELECT CASE (ilev)
371 CASE(1)
372 ingr2usr => igrsurf(1:nsurf)%ID
373 isu1=
ngr2usr(isu1,ingr2usr,nsurf)
374 isu2=isu1
375 is1=-1
376 is2=-3
377 CASE(2)
378
379 is1 = 0
380 ingr2usr => igrsurf(1:nsurf)%ID
381 is1=
ngr2usr(isu1,ingr2usr,nsurf)
382 IF (is1==0) THEN
384 . anmode=aninfo_blind_1,
385 . msgtype=msgerror,
386 . i1=noint,
387 . c1=titr)
388 ELSE
389 isu1=is1
390 END IF
391 ingr2usr => igrsurf(1:nsurf)%ID
392 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
393 is1=-1
394 is2=-1
395 CASE(3)
396 ingr2usr => igrsurf(1:nsurf)%ID
397 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
398 is1=-2
399 is2=-1
400 IF (iedge > 0 ) THEN
401 iedge = 0
402 edg_angl=zero
403
404 END IF
405 END SELECT
406 ingr2usr => igrnod(1:ngrnod)%ID
407 IF(nod1 /= 0) nod1=
ngr2usr(nod1,ingr2usr,ngrnod)
408
409 IF (iedge>0) iedge=5
410 IF (iedge==4.OR.iedge==5) THEN
411 ipari(59)=iedge-3
412
413 END IF
414
415
416 IF((iedge>=3).AND. edg_angl==zero)
417
418 + edg_angl=hundred+thirty+five
419 frigap(26) = cos((hundred80-edg_angl)*pi/hundred80)
420
421
422
423 IF (iimplicit>0.AND.igsti==0) igsti=4
424
425 IF(igsti >= 10) THEN
426 intnitsche = 1
427 ipari(86) = 1
428 igsti = igsti - 10
429 IF(intnitsche > 0 ) nitsche = 1
430 IF (ilev /= 1.AND.ilev /= 2) THEN
432 . msgtype=msgerror,
433 . anmode=aninfo,
434 . i1=noint,
435 . c1=titr)
436 ENDIF
437 IF (iedge > 0) THEN
439 . msgtype=msgerror,
440 . anmode=aninfo,
441 . i1=noint,
442 . c1=titr)
443 ENDIF
444 ENDIF
445
446
447
448 ipari(26)=nod1
449
450 ipari(13)=is1*10+is2
451 ipari(45)=isu1
452 ipari(46)=isu2
453
454 ipari(43)=isym
455 ipari(58)=
min(4,iedge)
456 ipari(63)=irem24i2
457
458
459 IF (irem24i2==0) irem24i2 = 3
460
461 IF (inacti==-1) THEN
462 igsti = 4
463 ELSEIF (inacti==-2) THEN
464 igsti = 2
465 inacti=-1
466 END IF
467 ipari(20)=ilev
468 ipari(34)=igsti
469 ipari(47) = intth
470 IF(intth > 0 ) intheat = 1
471 IF (iimplicit>0) intkg=1
472
473 ipari(66) = intply
474
475
476
477
478
479 IF(igsti>1 .OR. igsti==-1)THEN
480 i7stifs=1
481 IF(stmax==zero)stmax=ep30
482 ELSE
483 stmin = zero
484 stmax = ep30
485 END IF
486
487
488
489
490
491
492
493
494
495 percent_size=zero
496
497
498
499 ipari(53)=igap0
500 ipari(54)=ipen0
501
502 frigap(17) = stmin
503 frigap(18) = stmax
504
505
506 IF(gapmax_s==zero)gapmax_s=ep30
507 IF(gapmax_m==zero)gapmax_m=ep30
508
509
510 IF(penmin==zero)penmin=em8
511 IF(eten_m == zero)eten_m =twenty5*em03
512 frigap(35) = gapmax_s
513 frigap(36) = gapmax_m
514 frigap(37) = penmax
515 frigap(38) = penmin
516 frigap(39) = eten_m
517
518 na1 = 0
519 na2 = 0
520
521
522
523
524
525
526
527
528
529 ipari(39) = 0
530 ipari(40) = na1
531 ipari(41) = na2
532
533
534
535
536
537
538
539
540 gap=zero
541
542 IF (stopt == zero) stopt = ep30
543
544
545
546 frigap(1)=fric
547 frigap(2)=gap
548 frigap(3)=startt
549 frigap(11)=stopt
550
551
552
553
554
555
556
557 IF (inacti==-1.AND.iimplicit==0) THEN
558 npref=10000
559 ipari(40) = npref
560 ELSE
561 tpfit=zero
562 END IF
563
564
565
566
567
568
569
570
571 IF (iimplicit>0.AND.inacti==0) inacti=-1
572 IF (inacti/=0.AND.inacti/=-1.AND.inacti/=5) THEN
573 IF (inacti>0) THEN
574 inacti = 5
575 ELSE
576 inacti = 0
577 END IF
579 . msgtype=msgwarning,
580 . anmode=aninfo,
581 . i1=noint,
582 . c1=titr ,
583 . i2=inacti)
584 END IF
585 ipari(22)=inacti
586
587 IF(stfac==zero) THEN
588 stfac=one
589 ENDIF
590 IF(igsti==1)stfac=-stfac
591
592
593 viscf=zero
594 frigap(15)=viscf**2
595
596 frigap(15)=tpfit
597
598 IF (ivis2==0) THEN
599 ivis2=1
600 ELSEIF (ivis2==-1) THEN
601 ivis2=0
602 END IF
603 IF(visc==zero)THEN
604 IF(ivis2==5)THEN
605 visc=one
606 ELSE
607 visc=fiveem2
608 ENDIF
609 ENDIF
610 frigap(14)=visc
611
612 IF (idel24 < 0) THEN
613 idelkeep=1
614 idel24=abs(idel24)
615 END IF
616 ipari(61)=idelkeep
617
618 IF (idel24>2.OR.n2d==1) idel24 = 0
619 ipari(17)=idel24
620
621 ipari(14)=ivis2
622
623
624 bumult=zero
625 IF(bumult==zero) THEN
626 bumult = bmul0
627
628
629 IF(numnod > 2500000) THEN
630 bumult = bmul0*two
631 ELSEIF(numnod > 1500000) THEN
632 bumult = bmul0*three/two
633 END IF
634 END IF
635 frigap(4)=bumult
636
637
638 IF(ipstif >0 .OR.igsti==7.AND.igsti/=-1) ipari(97) = 1
639 IF(igsti==7.AND.ipstif ==0) ipstif = 1
640 IF(igsti==-1) ipstif = 0
641 ipari(98) = ipstif
642 IF(stfacm == zero.AND.ipari(97) > 0) stfacm = em01
643 IF(ipari(97) > 0) THEN
644 frigap(48) = dtstif
645 parameters%ISTIF_DT = 1
646 frigap(47) = stfacm
647 ELSE
648 dtstif = zero
649 stfacm = zero
650 ENDIF
651
652
653
654
655
656
657
658
659 modfr = 2
660 IF (
alpha==0.) ifq = 0
661 IF (modfr==0) modfr = 1
662 IF (modfr==2.AND.ifq<10) ifq = ifq + 10
663
664 IF (ifq>0) THEN
665 IF (ifq==10) xfiltr = one
666 IF (mod(ifq,10)==1) xfiltr =
alpha
667 IF (mod(ifq,10)==2) xfiltr=four*atan2(one,zero) /
alpha
668 IF (mod(ifq,10)==3) xfiltr=four*atan2(one,zero) *
alpha
669 IF (xfiltr<zero) THEN
671 . msgtype=msgerror,
672 . anmode=aninfo_blind_1,
673 . i1=noint,
674 . c1=titr,
676 ELSEIF (xfiltr>1.AND.mod(ifq,10)<=2) THEN
678 . msgtype=msgerror,
679 . anmode=aninfo_blind_1,
680 . i1=noint,
681 . c1=titr,
683 ENDIF
684 ELSE
685 xfiltr = zero
686 ENDIF
687
688 IF (ibag/=0.AND.nvolu==0 .AND. ialelag == 0) THEN
690 . msgtype=msgwarning,
691 . anmode=aninfo_blind_2,
692 . i1=noint,
693 . c1=titr)
694 ibag=0
695 ENDIF
696 intbag =
max(intbag,ibag)
697 kcontact =
max(kcontact,ibag)
698
699
700 ipari(30) = mfrot
701 ipari(31) = ifq
702 ipari(32) = ibag
703
704 ipari(72) = intfric
705 ipari(64) = idsens
706
707
708
709
710
711 fric_p(1) = c1
712 fric_p(2) = c2
713 fric_p(3) = c3
714 fric_p(4) = c4
715 fric_p(5) = c5
716 fric_p(6) = c6
717
718
719
720
721
722 IF (iadm/=0.AND.nadmesh==0) THEN
724 . msgtype=msgwarning,
725 . anmode=aninfo_blind_2,
726 . i1=noint,
727 . c1=titr)
728 iadm=0
729 ENDIF
730 IF (iadm/=0.AND.icurv/=0) THEN
732 . msgtype=msgerror,
733 . anmode=aninfo,
734 . i1=noint,
735 . c1=titr)
736 ENDIF
737 ipari(44)=iadm
738 kcontact =
max(kcontact,ibag,iadm)
739
740 IF(iadm==2)THEN
741 irec=irec+1
742 READ(iin,rec=irec,err=999,fmt='(A)')line
743 READ(line,err=999,fmt=fmt_i_2f) nradm,padm,angladm
744 IF(nradm==0) nradm =3
745 IF(padm==zero) padm =one
746 ELSE
747 nradm =1
748 padm =one
749 angladm=zero
750 END IF
751 cadm =cos(angladm*pi/hundred80)
752 ipari(49) =nradm
753 frigap(24)=padm
754 frigap(25)=cadm
755
756
757
758
759
760 IF(itherm_fe == 0 .AND. intth > 0 ) THEN
761 intheat = 0
762 ipari(47) = 0
764 . msgtype=msgwarning,
765 . anmode=aninfo,
766 . i1=noint,
767 . c1=titr)
768 ENDIF
769
770 IF(rsth == zero)rsth = ep30
771 frigap(20) = one/rsth
772 frigap(21 ) = fheat
773 frigap(22 ) = tint
774 ipari(48) = iform
775
776
777
778 ipari(12)=ibuc
779 ipari(65) = intkg
780
781
782
783 frigap(10)=float(0)
784
785 multimp = 4
786 ipari(23)=multimp
787
788
789
790
791
792
795 . intbuf_fric_tab)
796
797
798
799
800
801
802
803 iprint = 1
804
805 key1='IGSTI'
806 CALL definter(key1 ,igsti ,iassign ,iprint ,
807 . ntyp ,def_inter)
808
809 key1='IEDGE'
810 CALL definter(key1 ,iedge ,iassign ,iprint ,
811 . ntyp ,def_inter)
812
813 key1='INACTI'
814 CALL definter(key1 ,inacti ,iassign ,iprint ,
815 . ntyp ,def_inter)
816
817
818
819 IF (inacti==-1.AND.igsti==2) inacti=-2
820 idum =iedge
821 IF (iedge/=1000.AND.iedge>0)idum =
min(1,iedge)
822
823 IF(intnitsche > 0) THEN
824 IF(idsens/=0) THEN
825 WRITE(iout,3528)ibc1,ibc2,ibc3,
826 . igsti
827 . stmin,stmax,
828 . fric,gapmax_s,gapmax_m,igap0,ipen0,
829 . penmax,idsens,
830 . inacti,irem24i2,visc,ipari(14)
831 ELSE
832 WRITE(iout,3529)ibc1,ibc2,ibc3,
833 . igsti,stfac,ilev,idum,edg_angl,
834 . stmin,stmax,
835 . fric,gapmax_s,gapmax_m,igap0,ipen0,
836 . penmax,startt,stopt,
837 . inacti,irem24i2,visc,ipari(14)
838 ENDIF
839 ELSE
840 IF(idsens/=0) THEN
841 WRITE(iout,3524)ibc1,ibc2,ibc3,
842 . igsti,stfac,ilev,idum,edg_angl,
843 . stmin,stmax,
844 . fric,gapmax_s,gapmax_m,igap0,ipen0,
845 . penmax,idsens,
846 . inacti,irem24i2,visc,ipari(14)
847 ELSE
848 WRITE(iout,3525)ibc1,ibc2,ibc3,
849 . igsti,stfac,ilev,idum,edg_angl,
850 . stmin,stmax,
851 . fric,gapmax_s,gapmax_m,igap0,ipen0,
852 . penmax,startt,stopt,
853 . inacti,irem24i2,visc,ipari(14)
854 ENDIF
855 ENDIF
856 IF(intply > 0) WRITE(iout,*)' CONTACT WITH VARIABLE GAP'
857 IF(tpfit > zero) WRITE(iout,5040) tpfit
858
859 IF(idel24/=3) THEN
860 WRITE(iout,'(A,A,I5/)')
861 . ' DELETION FLAG ON FAILURE OF MAIN ELEMENT',
862 . ' (1:YES-ALL/2:YES-ANY) : ',idel24
863 IF(idelkeep == 1)THEN
864 WRITE(iout,'(A)')
865 . ' IDEL: DO NOT REMOVE NON-CONNECTED NODES FROM SECONDARY SURFACE'
866 ENDIF
867 ENDIF
868
869 IF(stfacm > 0) WRITE(iout,3500) stfacm,dtstif, ipstif
870
871 IF(intfric > 0 ) THEN
872 WRITE(iout,5030) intfric
873 ELSE
874 WRITE(iout,1520)mod(ifq,10), xfiltr
875 IF(mfrot==0)THEN
876 WRITE(iout,1524) fric
877 ELSEIF(mfrot==1)THEN
878 WRITE(iout,1515)fric_p(1),fric_p(2),fric_p(3),
879 . fric_p(4),fric_p(5)
880 ELSEIF(mfrot==2)THEN
881 WRITE(iout,1522)fric,fric_p(1),fric_p(2),fric_p(3),
882 . fric_p(4),fric_p(5),fric_p(6)
883 ELSEIF(mfrot==3)THEN
884 WRITE(iout,1523)fric_p(1),fric_p(2),fric_p(3),
885 . fric_p(4),fric_p(5),fric_p(6)
886 ELSEIF(mfrot==4)THEN
887 WRITE(iout,1526) fric,fric_p(1),fric_p(2)
888 ENDIF
889 ENDIF
890
891 IF(ibag/=1000) THEN
892 WRITE(iout,*)' AIRBAG POROSITY COUPLING ON '
893 ENDIF
894 IF(iadm/=0) THEN
895 WRITE(iout,*)' MESH REFINEMENT CASE OF CONTACT',
896 .' (0:NO/1:DUE TO CURVATURE/2:DUE TO CURVATURE OR PENETRATION)',
897 .' SET TO ',iadm
898 IF(iadm==2)THEN
899 WRITE(iout,1557) nradm,padm,angladm
900 END IF
901 ENDIF
902
903 IF(intth > 0 ) WRITE(iout,2501) rsth,tint,iform
904
905
906 IF(is1==0)THEN
907 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
908 ELSEIF(is1==1)THEN
909 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
910 ELSEIF(is1==2)THEN
911 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
912 ELSEIF(is1==3)THEN
913 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
914 ELSEIF(is1==4 )THEN
915 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
916 ELSEIF(is1==5 )THEN
917 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
918 ENDIF
919 IF(is2==0)THEN
920 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
921 ELSEIF(is2==1)THEN
922 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
923 ELSEIF(is2==2)THEN
924 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
925 ELSEIF(is2==3)THEN
926 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
927 ELSEIF(is2==4)THEN
928 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
929 . 'TO HYPER-ELLIPSOIDAL SURFACE'
930 ENDIF
931
932
933 1000 FORMAT(/1x,' INTERFACE NUMBER :',i10,1x,a)
934
935 RETURN
937 RETURN
938
939
940 1515 FORMAT(//
941 . ' FRICTION MODEL 1 (Viscous Polynomial)'/,
942 . ' MU = MUo + C1 p + C2 v + C3 pv + C4 p^2 + C5 v^2'/,
943 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
944 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
945 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
946 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
947 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
948 . ' TANGENTIAL PRESSURE LIMIT. . .. . . . . .',1pg20.13/)
949 1522 FORMAT(/
950 . ' FRICTION MODEL 2 (Darmstad Law) :'/,
951 . ' MU = MUo+c1*exp(c2*v)*p^2+c3*exp(c4*v)*p+c5*exp(c6*v)'/,
952 . ' Muo. . . . . . . . . . . . . . . . . . . ',1pg20.13/,
953 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
954 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
955 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
956 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
957 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
958 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
959 1523 FORMAT(/
960 . ' FRICTION MODEL 3 (Renard law) :'/,
961 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
962 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
963 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
964 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
965 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
966 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
967 1524 FORMAT(/
968 . ' FRICTION MODEL 0 (Coulomb Law) :'/,
969 . ' FRICTION COEFFICIENT . . . . . . . . . ',1pg20.13/)
970 1525 FORMAT(//
971 . ' FRICTION MODEL 0 (Coulomb Law) :'/,
972 . ' Function for FRICTION COEFFICIENT wrt TEMPERATURE',i10/,
973 . ' Abscissa scale factor on IFUNTCF. . . . . ',1pg20.13/,
974 . ' Ordinate scale factor on IFUNTCF . . . . ',1pg20.13/)
975 1526 FORMAT(/
976 . ' EXPONENTIAL DECAY FRICTION LAW '/
977 . ' MU = c1+(MUo-c1)*exp(-c2*v)'/
978 . ' STATIC COEFFICIENT MUo . . . . . . . . . ',1pg20.13/,
979 . ' DYNAMIC COEFFICIENT C1 . . . . . . . . . ',1pg20.13/,
980 . ' EXPONENTIAL DECAY COEFFICIENT C2 . . . . ',1pg20.13/)
981
982 1518 FORMAT( ' FRICTION FORMULATION: INCREMENTAL (STIFFNESS) ',
983 . 'FORMULATION')
984 1519 FORMAT( ' FRICTION FORMULATION: TOTAL (VISCOUS) ',
985 . 'FORMULATION')
986 1520 FORMAT(
987 . ' FRICTION FILTERING FLAG. . . . . . . . . ',i10/,
988 . ' FILTERING FACTOR . . . . . . . . . . . . ',1pg20.13)
989 1557 FORMAT(
990 .' NUMBER OF ELEMENTS WITHIN A 90 DEGREES FILLET ',i5/,
991 .' --------------------------------------------- '/,
992 .' CRITERIA FOR REFINEMENT DUE TO PENETRATION : '/,
993 .' ------------------------------------------ '/,
994 .' MINIMUM PERCENTAGE OF PENETRATION ',
995 . 1pg20.13/,
996 .' MAXIMUM ANGLE ON MAIN SIDE AT CONTACT LOCATION ',
997 . 1pg20.13//)
998
999 2501 FORMAT(//
1000 . ' TYPE==7 thermal interface ' //,
1001 . ' Heat conduction per surface unit. . . . . ',1pg20.13/,
1002 . ' Interface temperature . . . . . . . . . . ',1pg20.13/,
1003 . ' FORMULATION CHOICE : . . . . . . . . . . . . ',i10,/,
1004 . ' 0 : heat transfer between shells(SECONDARY side)',/,
1005 . ' and constant temperature in interface',/,
1006 . ' 1 : heat Exchange between pieces in contact')
1007
1008 3524 FORMAT(//
1009 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1010 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1011 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1012 . ' Z DIR ',i1/,
1013 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1014 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1015 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1016 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1017 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1018
1019 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1020 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1021 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1022
1023 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1024 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1025 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1026 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1027 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1028
1029 . ' START/STOP TIMES activated by SENSOR ID . . ',i10/,
1030
1031 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1032 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1033 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1034 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1035
1036 3525 FORMAT(//
1037 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1038 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1039 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1040 . ' Z DIR ',i1/,
1041 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1042 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1043 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1044 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1045 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1046
1047 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1048 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1049 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1050
1051 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1052 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1053 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1054 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1055 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1056
1057 . ' START TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1058 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1059
1060 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1061 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1062 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1063 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1064
1065
1066 3528 FORMAT(//
1067 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1068 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1069 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1070 . ' Z DIR ',i1/,
1071 . ' NITSCHE METHOD FOR CONTACT IS USED INSTEAD OF PENALTY'/,
1072 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1073 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1074 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1075 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1076 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1077
1078 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1079 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1080 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1081
1082 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1083 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1084 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1085 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1086 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1087
1088 . ' START/STOP TIMES activated by SENSOR ID . . ',i10/,
1089
1090 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1091 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10
1092',1PG20.13/,
1093 . ' quadratic
damping flag. . . . . . . . . . .
',I5/)
1094
1095 3529 FORMAT(//
1096 . ' type==24 muti-TYPE impacting ' //,
1097 . ' bound. cond. deleted after impact . . . . . in x dir ',I1/,
1098 . ' secondary node(1:yes 0:no) y dir ',I1/,
1099 . ' z dir ',I1/,
1100 . ' nitsche method
for contact is used instead of penalty
'/,
1101 . ' stiffness formulation . . . . . . . . . . . ',I5/,
1102 . ' stiffness factor. . . . . . . . . . . . . . ',1PG20.13/,
1103 . ' contact types(1:s1/s1;2:s1/s2;3:n/s . . . ',I5/,
1104 . ' edge flag . . . . . . . . . . . . . . . . . ',I5/,
1105 . ' angle
for edge computation(iedge>0). . . .
',1PG20.13/,
1106
1107 . ' minimum stiffness. . . . . . . . . . . . . ',1PG20.13/,
1108 . ' maximum stiffness. . . . . . . . . . . . . ',1PG20.13/,
1109 . ' friction factor . . . . . . . . . . . . . . ',1PG20.13/,
1110
1111 . ' maximum secondary gap VALUE . . . . . . . . ',1PG20.13/,
1112 . ' maximum
main gap
VALUE. . . . . . . . . . .
',1PG20.13/,
1113 . ' zero gap
for secondary shell on free edge .
',I5/,
1114 . ' initial penetration detection method . . . ',I5/,
1115 . ' maximum initial penetration VALUE . . . . . ',1PG20.13/,
1116
1117 . ' start time . . . . . . . . . . . . . . . . ',1PG20.13/,
1118 . ' stop time . . . . . . . . . . . . . . . . ',1PG20.13/,
1119
1120 . ' de-activation of initial penetrations . . ',I10/,
1121 . ' de-activation flag IF conflict w/ type2 . . ',I10/,
1122 . ' critical
damping factor . . . . . . . . . .
',1PG20.13/,
1123 . ' quadratic
damping flag. . . . . . . . . . .
',I5/)
1124
1125
1126 3500 FORMAT(/
1127 . ' stiffness based of time step and masses :'/,
1128 . ' scale factor . . . . . . . . . . . . . . . . . ',1PG20.13/,
1129 . ' time step . . . . . . . . . . . . . . . . . . ',1PG20.13/,
1130 . ' flag
for penalty stiffness . . . . . . . . . .
',1PG20.13/)
1131
1132 5030 FORMAT(/
1133 . ' INTERFACE friction model. . . . . . . . . ',I10)
1134 5040 FORMAT(' press-fit duration time . . . . . . . . . ',1PG20.13/)
1135
1136
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
subroutine definter(key, ival, flag, iprint, ityp, def_inter)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine inter_dcod_friction(ntyp, ni, ipari, nom_opt, nom_optfric, intbuf_fric_tab)
subroutine inter_dcod_sensor(ntyp, ni, ipari, nom_opt, sensors)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
integer function ngr2usr(iu, igr, ngr)
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)