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,IBC1, IBC2, IBC3, IBUC, NOINT, NTYP,
100 . INACTI, IBC1M, IBC2M, IBC3M, IGSTI, IVIS2,IS1, IS2,
101 . ILEV, IGAP,MULTIMP,MFROT,IFQ,IBAG,MODFR,
102 . ISYM,IEDGE,NOD1,IDUM,IDEL24,
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,stmin,stmax,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=NCHARKEY)::KEY1
113 CHARACTER(LEN=NCHARFIELD)::BCFLAG,BCFLAGM
114
115 INTEGER, DIMENSION(:), POINTER :: INGR2USR
116
117
118
119 INTEGER NGR2USR
120 LOGICAL IS_AVAILABLE
121
122
123
124
125
126
127 is1=0
128 is2=0
129 ibc1=0
130 ibc2=0
131 ibc3=0
132 ibc1m=0
133 ibc2m=0
134 ibc3m=0
135 ibuc=0
136 mfrot=0
137 ifq=0
138 ibag=0
139 igsti = 0
140 ilev=0
141 idsens = 0
142 idelkeep=0
143 intfric = 0
144 nod1 = 0
145 intkg = 0
146 flagremnod = 0
147 multimp = 0
148 icurv = 0
149 intply = 0
150 irem24i2 = 0
151 intth = 0
152 idel24= 0
153 intnitsche = 0
154 iadm = 0
155 iform = 0
156 ivis2=0
157 ipstif = 0
158
159
160
161 ibag = 0
162 multimpe = 0
163
164 stopt=ep30
165 inacti = 0
166 viscf = zero
167 fric = zero
168 gap = zero
169 gapscale = zero
170 startt = zero
171 visc = zero
172 xfiltr = zero
173 DO i = 1, 10
174 fric_p(i) = zero
175 ENDDO
176 c1=zero
177 c2=zero
178 c3=zero
179 c4=zero
180 c5=zero
181 c6=zero
182
183 gapscale = zero
184 percent_size = zero
185 edg_angl = zero
186 gapmax_s = zero
187 gapmax_m = zero
188 penmax = zero
189 penmin = zero
190 eten_m = zero
191 rsth = ep30
192 fheat= one
193 tint = zero
194 stfacm= zero
195
196 iassign = 1
197
198 ntyp = 24
199 ipari(15)=noint
200 ipari(7)=ntyp
201
202 is_available = .false.
203
204
205
206
207 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
208 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
209 CALL hm_get_intv(
'Istf',igsti,is_available,lsubmodel)
210 CALL hm_get_intv(
'Irem_i2',irem24i2,is_available,lsubmodel)
211 CALL hm_get_intv(
'TYPE24_Idel',idel24,is_available,lsubmodel)
212
213 CALL hm_get_intv(
'GRNOD_ID',nod1,is_available,lsubmodel)
214 CALL hm_get_intv(
'TYPE24_Iedge',iedge,is_available,lsubmodel)
215 CALL hm_get_intv(
'IPSTIF',ipstif,is_available,lsubmodel)
216
217 CALL hm_get_intv(
'Igap',igap0,is_available,lsubmodel)
218 CALL hm_get_intv(
'Ipen',ipen0,is_available,lsubmodel)
219
220 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
221 CALL hm_get_intv(
'Deactivate_Y_BC',ibc2,is_available,lsubmodel)
222 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
223
224 CALL hm_get_intv(
'INACTIV',inacti,is_available,lsubmodel)
225
226 CALL hm_get_intv(
'Ifric',mfrot,is_available,lsubmodel)
227 CALL hm_get_intv(
'Ifiltr',ifq,is_available,lsubmodel)
228 CALL hm_get_intv(
'ISENSOR',idsens,is_available,lsubmodel)
229 CALL hm_get_intv(
'Fric_ID',intfric,is_available,lsubmodel)
230
231
232
233
234 CALL hm_get_floatv(
'GAP1',gapmax_s,is_available,lsubmodel,unitab)
235 CALL hm_get_floatv(
'GAP2',gapmax_m,is_available,lsubmodel,unitab)
236
237 CALL hm_get_floatv(
'STMIN',stmin,is_available,lsubmodel,unitab)
238 CALL hm_get_floatv(
'STMAX',stmax,is_available,lsubmodel,unitab)
239 CALL hm_get_floatv(
'TYPE24_Edge_Angle',edg_angl,is_available,lsubmodel,unitab)
240 CALL hm_get_floatv(
'Ipen_max',penmax,is_available,lsubmodel,unitab)
241 CALL hm_get_floatv(
'Ipen_min',penmin,is_available,lsubmodel,unitab)
242 CALL hm_get_floatv(
'STFAC_MDT',stfacm,is_available,lsubmodel,unitab)
243
244 CALL hm_get_floatv(
'STFAC',stfac,is_available,lsubmodel,unitab)
245 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
246 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
247 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
248
249 CALL hm_get_floatv(
'STIFF_DC',visc,is_available,lsubmodel,unitab)
250 CALL hm_get_floatv(
'Tpressfit',tpfit,is_available,lsubmodel,unitab)
251
252 CALL hm_get_floatv('xfreq
',ALPHA,IS_AVAILABLE,LSUBMODEL,UNITAB)
253 CALL HM_GET_FLOATV('dtstif',DTSTIF,IS_AVAILABLE,LSUBMODEL,UNITAB)
254
255 IF (MFROT>0) THEN
256 CALL HM_GET_FLOATV('c1',C1,IS_AVAILABLE,LSUBMODEL,UNITAB)
257 CALL HM_GET_FLOATV('c2',C2,IS_AVAILABLE,LSUBMODEL,UNITAB)
258 CALL HM_GET_FLOATV('c3',C3,IS_AVAILABLE,LSUBMODEL,UNITAB)
259 CALL HM_GET_FLOATV('c4',C4,IS_AVAILABLE,LSUBMODEL,UNITAB)
260 CALL HM_GET_FLOATV('c5',C5,IS_AVAILABLE,LSUBMODEL,UNITAB)
261 ENDIF
262 IF (MFROT>1) THEN
263 CALL HM_GET_FLOATV('c6',C6,IS_AVAILABLE,LSUBMODEL,UNITAB)
264 ENDIF
265
266 NPREF=0
267
268
269
270
271
272 IPRINT = 0
273
274 KEY1='igsti'
275 CALL DEFINTER(KEY1 ,IGSTI ,IASSIGN ,IPRINT ,
276 . NTYP ,DEF_INTER)
277
278 KEY1='idel24'
279 CALL DEFINTER(KEY1 ,IDEL24 ,IASSIGN ,IPRINT ,
280 . NTYP ,DEF_INTER)
281
282 KEY1='iedge'
283 CALL DEFINTER(KEY1 ,IEDGE ,IASSIGN ,IPRINT ,
284 . NTYP ,DEF_INTER)
285
286 KEY1='igap0'
287 CALL DEFINTER(KEY1 ,IGAP0 ,IASSIGN ,IPRINT ,
288 . NTYP ,DEF_INTER)
289
290 KEY1='ipen0'
291 CALL DEFINTER(KEY1 ,IPEN0 ,IASSIGN ,IPRINT ,
292 . NTYP ,DEF_INTER)
293
294 KEY1='inacti'
295 CALL DEFINTER(KEY1 ,INACTI ,IASSIGN ,IPRINT ,
296 . NTYP ,DEF_INTER)
297
298
299
300
301
302
303
304
305
306
307
308
309 IF (IREM24I2==0) THEN
310 IREM24I2=1
311
312 END IF
313 IF (IREM24I2==3) IREM24I2 = 0
314
315
316
317
318
319 IGAP = 1
320 IPARI(21)=IGAP
321 IPARI(63)=IREM24I2
322
323 IF (IREM24I2==0) IREM24I2 = 3
324
325
326
327
328
329
330
331
332 ILEV=0
333
334.AND. IF(ISU1 /= 0 ISU2 == 0)THEN
335 ILEV = 1
336.AND. ELSEIF(ISU1 /= 0 ISU2 /= 0)THEN
337 ILEV = 2
338 IF (ISU1 == ISU2) THEN
339 ILEV = 1
340 ISU2 = 0
341 CALL ANCMSG(MSGID=1022,
342 . MSGTYPE=MSGWARNING,
343 . ANMODE=ANINFO,
344 . I1=NOINT,
345 . C1=TITR)
346 END IF
347.AND..AND. ELSEIF(ISU1 == 0 ISU2 /= 0 NOD1 /= 0) THEN
348 ILEV = 3
349 ELSE
350 IF(ISU2 == 0) THEN
351 CALL ANCMSG(MSGID=119,
352 . ANMODE=ANINFO,
353 . MSGTYPE=MSGERROR,
354 . I1=NOINT,
355 . C1=TITR)
356 ELSEIF (NOD1 == 0) THEN
357 CALL ANCMSG(MSGID=1001,
358 . ANMODE=ANINFO,
359 . MSGTYPE=MSGERROR,
360 . I1=NOINT,
361 . C1=TITR)
362 ENDIF
363 IS1=0
364 IS2=0
365 END IF
366 ISYM = 1
367
368 SELECT CASE (ILEV)
369 CASE(1)
370 INGR2USR => IGRSURF(1:NSURF)%ID
371 ISU1=NGR2USR(ISU1,INGR2USR,NSURF)
372 ISU2=ISU1
373 IS1=-1
374 IS2=-3
375 CASE(2)
376
377 IS1 = 0
378 INGR2USR => IGRSURF(1:NSURF)%ID
379 IS1=NGR2USR(ISU1,INGR2USR,NSURF)
380 IF (IS1==0) THEN
381 CALL ANCMSG(MSGID=1000,
382 . ANMODE=ANINFO_BLIND_1,
383 . MSGTYPE=MSGERROR,
384 . I1=NOINT,
385 . C1=TITR)
386 ELSE
387 ISU1=IS1
388 END IF
389 INGR2USR => IGRSURF(1:NSURF)%ID
390 ISU2=NGR2USR(ISU2,INGR2USR,NSURF)
391 IS1=-1
392 IS2=-1
393 CASE(3)
394 INGR2USR => IGRSURF(1:NSURF)%ID
395 ISU2=NGR2USR(ISU2,INGR2USR,NSURF)
396 IS1=-2
397 IS2=-1
398 IF (IEDGE > 0 ) THEN
399 IEDGE = 0
400 EDG_ANGL=ZERO
401
402 END IF
403 END SELECT
404 INGR2USR => IGRNOD(1:NGRNOD)%ID
405 IF(NOD1 /= 0) NOD1=NGR2USR(NOD1,INGR2USR,NGRNOD)
406
407 IF (IEDGE>0) IEDGE=5
408.OR. IF (IEDGE==4IEDGE==5) THEN
409 IPARI(59)=IEDGE-3
410
411 END IF
412
413
414.AND. IF((IEDGE>=3) EDG_ANGL==ZERO)
415
416 + EDG_ANGL=HUNDRED+THIRTY+FIVE
417 FRIGAP(26) = COS((HUNDRED80-EDG_ANGL)*PI/HUNDRED80)
418
419
420
421.AND. IF (IIMPLICIT>0IGSTI==0) IGSTI=4
422
423 IF(IGSTI >= 10) THEN ! Nitsche Method Activation instead of penalty
424 INTNITSCHE = 1
425 IPARI(86) = 1
426 IGSTI = IGSTI - 10
427 IF(INTNITSCHE > 0 ) NITSCHE = 1
428.AND. IF (ILEV /= 1ILEV /= 2) THEN
429 CALL ANCMSG(MSGID=1622,
430 . MSGTYPE=MSGERROR,
431 . ANMODE=ANINFO,
432 . I1=NOINT,
433 . C1=TITR)
434 ENDIF
435 IF (IEDGE > 0) THEN
436 CALL ANCMSG(MSGID=1746,
437 . MSGTYPE=MSGERROR,
438 . ANMODE=ANINFO,
439 . I1=NOINT,
440 . C1=TITR)
441 ENDIF
442 ENDIF
443
444
445
446 IPARI(26)=NOD1
447
448 IPARI(13)=IS1*10+IS2
449 IPARI(45)=ISU1
450 IPARI(46)=ISU2
451
452 IPARI(43)=ISYM
453 IPARI(58)=MIN(4,IEDGE)
454 IPARI(63)=IREM24I2
455
456
457 IF (IREM24I2==0) IREM24I2 = 3
458
459 IF (INACTI==-1) THEN
460 IGSTI = 4
461 ELSEIF (INACTI==-2) THEN ! using high stif
462 IGSTI = 2
463 INACTI=-1
464 END IF
465 IPARI(20)=ILEV
466 IPARI(34)=IGSTI
467 IPARI(47) = INTTH
468 IF(INTTH > 0 ) INTHEAT = 1
469 IF (IIMPLICIT>0) INTKG=1
470
471 IPARI(66) = INTPLY
472
473
474
475
476
477.OR. IF(IGSTI>1 IGSTI==-1)THEN
478 I7STIFS=1
479 IF(STMAX==ZERO)STMAX=EP30
480 ELSE
481 STMIN = ZERO
482 STMAX = EP30
483 END IF
484
485
486
487
488
489
490
491
492
493 PERCENT_SIZE=ZERO
494
495
496
497 IPARI(53)=IGAP0
498 IPARI(54)=IPEN0
499
500 FRIGAP(17) = STMIN
501 FRIGAP(18) = STMAX
502
503
504 IF(GAPMAX_S==ZERO)GAPMAX_S=EP30
505 IF(GAPMAX_M==ZERO)GAPMAX_M=EP30
506
507
508 IF(PENMIN==ZERO)PENMIN=EM8
509 IF(ETEN_M == ZERO)ETEN_M =TWENTY5*EM03
510 FRIGAP(35) = GAPMAX_S
511 FRIGAP(36) = GAPMAX_M
512 FRIGAP(37) = PENMAX
513 FRIGAP(38) = PENMIN
514 FRIGAP(39) = ETEN_M
515
516 NA1 = 0
517 NA2 = 0
518
519
520
521
522
523
524
525
526
527 IPARI(39) = 0
528 IPARI(40) = NA1
529 IPARI(41) = NA2
530
531
532
533
534
535
536
537
538 GAP=ZERO
539
540 IF (STOPT == ZERO) STOPT = EP30
541
542
543
544 FRIGAP(1)=FRIC
545 FRIGAP(2)=GAP
546 FRIGAP(3)=STARTT
547 FRIGAP(11)=STOPT
548
549
550
551
552
553
554
555.AND. IF (INACTI==-1IIMPLICIT==0) THEN
556 NPREF=10000
557 IPARI(40) = NPREF
558 ELSE
559 TPFIT=ZERO
560 END IF
561
562
563
564
565
566
567
568
569.AND. IF (IIMPLICIT>0INACTI==0) INACTI=-1
570.AND..AND. IF (INACTI/=0INACTI/=-1INACTI/=5) THEN
571 IF (INACTI>0) THEN
572 INACTI = 5
573 ELSE
574 INACTI = 0
575 END IF
576 CALL ANCMSG(MSGID=1031,
577 . MSGTYPE=MSGWARNING,
578 . ANMODE=ANINFO,
579 . I1=NOINT,
580 . C1=TITR ,
581 . I2=INACTI)
582 END IF
583 IPARI(22)=INACTI
584
585 IF(STFAC==ZERO) THEN
586 STFAC=ONE
587 ENDIF
588 IF(IGSTI==1)STFAC=-STFAC
589
590
591 VISCF=ZERO
592 FRIGAP(15)=VISCF**2
593
594 FRIGAP(15)=TPFIT
595
596 IF (IVIS2==0) THEN
597 IVIS2=1
598 ELSEIF (IVIS2==-1) THEN
599 IVIS2=0
600 END IF
601 IF(VISC==ZERO)THEN
602 IF(IVIS2==5)THEN
603 VISC=ONE
604 ELSE
605 VISC=FIVEEM2
606 ENDIF
607 ENDIF
608 FRIGAP(14)=VISC
609
610 IF (IDEL24 < 0) THEN
611 IDELKEEP=1
612 IDEL24=ABS(IDEL24)
613 END IF
614 IPARI(61)=IDELKEEP
615
616.OR. IF (IDEL24>2N2D==1) IDEL24 = 0
617 IPARI(17)=IDEL24
618
619 IPARI(14)=IVIS2
620
621
622 BUMULT=ZERO
623 IF(BUMULT==ZERO) THEN
624 BUMULT = BMUL0
625
626
627 IF(NUMNOD > 2500000) THEN
628 BUMULT = BMUL0*TWO
629 ELSEIF(NUMNOD > 1500000) THEN
630 BUMULT = BMUL0*THREE/TWO
631 END IF
632 END IF
633 FRIGAP(4)=BUMULT
634
635
636.OR..AND. IF(IPSTIF >0 IGSTI==7IGSTI/=-1) IPARI(97) = 1
637.AND. IF(IGSTI==7IPSTIF ==0) IPSTIF = 1
638 IF(IGSTI==-1) IPSTIF = 0
639 IPARI(98) = IPSTIF
640.AND. IF(STFACM == ZEROIPARI(97) > 0) STFACM = EM01
641 IF(IPARI(97) > 0) THEN
642 FRIGAP(48) = DTSTIF
643 PARAMETERS%ISTIF_DT = 1
644 FRIGAP(47) = STFACM
645 ELSE
646 DTSTIF = ZERO
647 STFACM = ZERO
648 ENDIF
649
650
651
652
653
654
655
656
657 MODFR = 2
658 IF (ALPHA==0.) IFQ = 0
659 IF (MODFR==0) MODFR = 1
660.AND. IF (MODFR==2IFQ<10) IFQ = IFQ + 10
661
662 IF (IFQ>0) THEN
663 IF (IFQ==10) XFILTR = ONE
664 IF (MOD(IFQ,10)==1) XFILTR = ALPHA
665 IF (MOD(IFQ,10)==2) XFILTR=FOUR*ATAN2(ONE,ZERO) / ALPHA
666 IF (MOD(IFQ,10)==3) XFILTR=FOUR*ATAN2(ONE,ZERO) * ALPHA
667 IF (XFILTR<ZERO) THEN
668 CALL ANCMSG(MSGID=554,
669 . MSGTYPE=MSGERROR,
670 . ANMODE=ANINFO_BLIND_1,
671 . I1=NOINT,
672 . C1=TITR,
673 . R1=ALPHA)
674.AND. ELSEIF (XFILTR>1MOD(IFQ,10)<=2) THEN
675 CALL ANCMSG(MSGID=554,
676 . MSGTYPE=MSGERROR,
677 . ANMODE=ANINFO_BLIND_1,
678 . I1=NOINT,
679 . C1=TITR,
680 . R1=ALPHA)
681 ENDIF
682 ELSE
683 XFILTR = ZERO
684 ENDIF
685
686.AND..AND. IF (IBAG/=0NVOLU==0 IALELAG == 0) THEN
687 CALL ANCMSG(MSGID=614,
688 . MSGTYPE=MSGWARNING,
689 . ANMODE=ANINFO_BLIND_2,
690 . I1=NOINT,
691 . C1=TITR)
692 IBAG=0
693 ENDIF
694 INTBAG = MAX(INTBAG,IBAG)
695 KCONTACT =MAX(KCONTACT,IBAG)
696
697
698 IPARI(30) = MFROT
699 IPARI(31) = IFQ
700 IPARI(32) = IBAG
701
702 IPARI(72) = INTFRIC
703 IPARI(64) = IDSENS
704
705
706
707
708
709 FRIC_P(1) = C1
710 FRIC_P(2) = C2
711 FRIC_P(3) = C3
712 FRIC_P(4) = C4
713 FRIC_P(5) = C5
714 FRIC_P(6) = C6
715
716
717
718
719
720.AND. IF (IADM/=0NADMESH==0) THEN
721 CALL ANCMSG(MSGID=647,
722 . MSGTYPE=MSGWARNING,
723 . ANMODE=ANINFO_BLIND_2,
724 . I1=NOINT,
725 . C1=TITR)
726 IADM=0
727 ENDIF
728.AND. IF (IADM/=0ICURV/=0) THEN
729 CALL ANCMSG(MSGID=648,
730 . MSGTYPE=MSGERROR,
731 . ANMODE=ANINFO,
732 . I1=NOINT,
733 . C1=TITR)
734 ENDIF
735 IPARI(44)=IADM
736 KCONTACT =MAX(KCONTACT,IBAG,IADM)
737
738 IF(IADM==2)THEN
739 IREC=IREC+1
740 READ(IIN,REC=IREC,ERR=999,FMT='(a)')LINE
741 READ(LINE,ERR=999,FMT=FMT_I_2F) NRADM,PADM,ANGLADM
742 IF(NRADM==0) NRADM =3
743 IF(PADM==ZERO) PADM =ONE
744 ELSE
745 NRADM =1
746 PADM =ONE
747 ANGLADM=ZERO
748 END IF
749 CADM =COS(ANGLADM*PI/HUNDRED80)
750 IPARI(49) =NRADM
751 FRIGAP(24)=PADM
752 FRIGAP(25)=CADM
753
754
755
756
757
758.AND. IF(ITHERM_FE == 0 INTTH > 0 ) THEN
759 INTHEAT = 0
760 IPARI(47) = 0
761 CALL ANCMSG(MSGID=702,
762 . MSGTYPE=MSGWARNING,
763 . ANMODE=ANINFO,
764 . I1=NOINT,
765 . C1=TITR)
766 ENDIF
767
768 IF(RSTH == ZERO)RSTH = EP30
769 FRIGAP(20) = ONE/RSTH
770 FRIGAP(21 ) = FHEAT
771 FRIGAP(22 ) = TINT
772 IPARI(48) = IFORM
773
774
775
776 IPARI(12)=IBUC
777 IPARI(65) = INTKG
778
779
780
781 FRIGAP(10)=FLOAT(0)
782
783 MULTIMP = 4
784 IPARI(23)=MULTIMP
785
786
787
788
789
790
791 CALL INTER_DCOD_SENSOR (NTYP,NI,IPARI,NOM_OPT,SENSORS)
792 CALL INTER_DCOD_FRICTION(NTYP,NI,IPARI,NOM_OPT,NOM_OPTFRIC,
793 . INTBUF_FRIC_TAB)
794
795
796
797
798
799
800
801 IPRINT = 1
802
803 KEY1='igsti'
804 CALL DEFINTER(KEY1 ,IGSTI ,IASSIGN ,IPRINT ,
805 . NTYP ,DEF_INTER)
806
807 KEY1='iedge'
808 CALL DEFINTER(KEY1 ,IEDGE ,IASSIGN ,IPRINT ,
809 . NTYP ,DEF_INTER)
810
811 KEY1='inacti'
812 CALL DEFINTER(KEY1 ,INACTI ,IASSIGN ,IPRINT ,
813 . NTYP ,DEF_INTER)
814
815
816
817.AND. IF (INACTI==-1IGSTI==2) INACTI=-2 ! just for printing
818 IDUM =IEDGE
819.AND. IF (IEDGE/=1000IEDGE>0)IDUM =MIN(1,IEDGE)
820
821 IF(INTNITSCHE > 0) THEN
822 IF(IDSENS/=0) THEN
823 WRITE(IOUT,3528)IBC1,IBC2,IBC3,
824 . IGSTI,STFAC,ILEV,IDUM,EDG_ANGL,
825 . STMIN,STMAX,
826 . FRIC,GAPMAX_S,GAPMAX_M,IGAP0,IPEN0,
827 . PENMAX,IDSENS,
828 . INACTI,IREM24I2,VISC,IPARI(14)
829 ELSE
830 WRITE(IOUT,3529)IBC1,IBC2,IBC3,
831 . IGSTI,STFAC,ILEV,IDUM,EDG_ANGL,
832 . STMIN,STMAX,
833 . FRIC,GAPMAX_S,GAPMAX_M,IGAP0,IPEN0,
834 . PENMAX,STARTT,STOPT,
835 . INACTI,IREM24I2,VISC,IPARI(14)
836 ENDIF
837 ELSE
838 IF(IDSENS/=0) THEN
839 WRITE(IOUT,3524)IBC1,IBC2,IBC3,
840 . IGSTI,STFAC,ILEV,IDUM,EDG_ANGL,
841 . STMIN,STMAX,
842 . FRIC,GAPMAX_S,GAPMAX_M,IGAP0,IPEN0,
843 . PENMAX,IDSENS,
844 . INACTI,IREM24I2,VISC,IPARI(14)
845 ELSE
846 WRITE(IOUT,3525)IBC1,IBC2,IBC3,
847 . IGSTI,STFAC,ILEV,IDUM,EDG_ANGL,
848 . STMIN,STMAX,
849 . FRIC,GAPMAX_S,GAPMAX_M,IGAP0,IPEN0,
850 . PENMAX,STARTT,STOPT,
851 . INACTI,IREM24I2,VISC,IPARI(14)
852 ENDIF
853 ENDIF
854 IF(INTPLY > 0) WRITE(IOUT,*)' contact with variable gap'
855 IF(TPFIT > ZERO) WRITE(IOUT,5040) TPFIT
856
857 IF(IDEL24/=3) THEN
858 WRITE(IOUT,'(a,a,i5/)')
859 . ' deletion flag on failure of
main element
',
860 . ' (1:yes-all/2:yes-any) : ',IDEL24
861 IF(IDELKEEP == 1)THEN
862 WRITE(IOUT,'(a)')
863 . ' idel: DO not remove non-connected nodes from secondary surface'
864 ENDIF
865 ENDIF
866
867 IF(STFACM > 0) WRITE(IOUT,3500) STFACM,DTSTIF, IPSTIF
868
869 IF(INTFRIC > 0 ) THEN
870 WRITE(IOUT,5030) INTFRIC
871 ELSE
872 WRITE(IOUT,1520)MOD(IFQ,10), XFILTR
873 IF(MFROT==0)THEN
874 WRITE(IOUT,1524) FRIC
875 ELSEIF(MFROT==1)THEN
876 WRITE(IOUT,1515)FRIC_P(1),FRIC_P(2),FRIC_P(3),
877 . FRIC_P(4),FRIC_P(5)
878 ELSEIF(MFROT==2)THEN
879 WRITE(IOUT,1522)FRIC,FRIC_P(1),FRIC_P(2),FRIC_P(3),
880 . FRIC_P(4),FRIC_P(5),FRIC_P(6)
881 ELSEIF(MFROT==3)THEN
882 WRITE(IOUT,1523)FRIC_P(1),FRIC_P(2),FRIC_P(3),
883 . FRIC_P(4),FRIC_P(5),FRIC_P(6)
884 ELSEIF(MFROT==4)THEN
885 WRITE(IOUT,1526) FRIC,FRIC_P(1),FRIC_P(2)
886 ENDIF
887 ENDIF
888
889 IF(IBAG/=1000) THEN
890 WRITE(IOUT,*)' airbag porosity coupling on '
891 ENDIF
892 IF(IADM/=0) THEN
893 WRITE(IOUT,*)' mesh refinement CASE of contact',
894 .' (0:no/1:due to curvature/2:due to curvature or penetration)',
895 .' set to ',IADM
896 IF(IADM==2)THEN
897 WRITE(IOUT,1557) NRADM,PADM,ANGLADM
898 END IF
899 ENDIF
900
901 IF(INTTH > 0 ) WRITE(IOUT,2501) RSTH,TINT,IFORM
902
903
904 IF(IS1==0)THEN
905 WRITE(IOUT,'(6x,a)')'no secondary surface input'
906 ELSEIF(IS1==1)THEN
907 WRITE(IOUT,'(6x,a)')'secondary surface input by segments'
908 ELSEIF(IS1==2)THEN
909 WRITE(IOUT,'(6x,a)')'secondary surface input by nodes'
910 ELSEIF(IS1==3)THEN
911 WRITE(IOUT,'(6x,a)')'secondary surface input by segments'
912 ELSEIF(IS1==4 )THEN
913 WRITE(IOUT,'(6x,a)')'secondary side input by bricks'
914 ELSEIF(IS1==5 )THEN
915 WRITE(IOUT,'(6x,a)')'secondary side input by solid elements'
916 ENDIF
917 IF(IS2==0)THEN
918 WRITE(IOUT,'(6x,a)
')'no
main surface input
'
919 ELSEIF(IS2==1)THEN
920 WRITE(IOUT,'(6x,a)
')'main surface input by segments
'
921 ELSEIF(IS2==2)THEN
922 WRITE(IOUT,'(6x,a)
')'main surface input by nodes
'
923 ELSEIF(IS2==3)THEN
924 WRITE(IOUT,'(6x,a)
')'main surface input by segments
'
925 ELSEIF(IS2==4)THEN
926 WRITE(IOUT,'(6x,a)
')'main surface refers
',
927 . 'to hyper-ellipsoidal surface'
928 ENDIF
929
930
931
932 RETURN
933 999 CALL FREERR(3)
934 RETURN
935
936
937 1515 FORMAT(//
938 . ' friction model 1 (viscous polynomial)'/,
939 . ' mu = muo + c1 p + c2 v + c3 pv + c4 p^2 + c5 v^2'/,
940 . ' c1 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
941 . ' c2 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
942 . ' c3 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
943 . ' c4 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
944 . ' c5 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
945 . ' tangential pressure limit. . .. . . . . .',1PG20.13/)
946 1522 FORMAT(/
947 . ' friction model 2 (darmstad law) :'/,
948 . ' mu = muo+c1*exp(c2*v)*p^2+c3*exp(c4*v)*p+c5*exp(c6*v)'/,
949 . ' muo. . . . . . . . . . . . . . . . . . . ',1PG20.13/,
950 . ' c1 . . . . . . . . . . . . . . . . . . . ',1PG20.13/,
951 . ' c2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
952 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
953 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
954 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
955 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
956 1523 FORMAT(/
957 . ' FRICTION MODEL 3 (Renard law) :'/,
958 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
959 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
960 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
961 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
962 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
963 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
964 1524 FORMAT(/
965 . ' FRICTION MODEL 0 (Coulomb Law) :'/,
966 . ' FRICTION COEFFICIENT . . . . . . . . . ',1pg20.13/)
967
968 1526 FORMAT(/
969 . ' EXPONENTIAL DECAY FRICTION LAW '/
970 . ' MU = c1+(MUo-c1)*exp(-c2*v)'/
971 . ' STATIC COEFFICIENT MUo . . . . . . . . . ',1pg20.13/,
972 . ' DYNAMIC COEFFICIENT C1 . . . . . . . . . ',1pg20.13/,
973 . ' EXPONENTIAL DECAY COEFFICIENT C2 . . . . ',1pg20.13/)
974
975
976 1520 FORMAT(
977 . ' FRICTION FILTERING FLAG. . . . . . . . . ',i10/,
978 . ' FILTERING FACTOR . . . . . . . . . . . . ',1pg20.13)
979 1557 FORMAT(
980 .' NUMBER OF ELEMENTS WITHIN A 90 DEGREES FILLET ',i5/,
981 .' --------------------------------------------- '/,
982 .' CRITERIA FOR REFINEMENT DUE TO PENETRATION : '/,
983 .' ------------------------------------------ '/,
984 .' MINIMUM PERCENTAGE OF PENETRATION ',
985 . 1pg20.13/,
986 .' MAXIMUM ANGLE ON MAIN SIDE AT CONTACT LOCATION ',
987 . 1pg20.13//)
988
989 2501 FORMAT(//
990 . ' TYPE==7 thermal interface ' //,
991 . ' Heat conduction per surface unit. . . . . ',1pg20.13/,
992 . ' Interface temperature . . . . . . . . . . ',1pg20.13/,
993 . ' FORMULATION CHOICE : . . . . . . . . . . . . ',i10,/,
994 . ' 0 : heat transfer between shells(SECONDARY side)',/,
995 . ' and constant temperature in interface',/,
996 . ' 1 : heat Exchange between pieces in contact')
997
998 3524 FORMAT(//
999 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1000 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1001 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1002 . ' Z DIR ',i1/,
1003 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1004 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1005 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1006 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1007 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1008
1009 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1010 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1011 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1012
1013 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1014 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1015 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1016 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1017 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1018
1019 . ' START/STOP TIMES activated by SENSOR ID . . ',i10/,
1020
1021 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1022 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1023 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1024 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1025
1026 3525 FORMAT(//
1027 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1028 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1029 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1030 . ' Z DIR ',i1/,
1031 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1032 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1033 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1034 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1035 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1036
1037 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1038 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1039 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1040
1041 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1042 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1043 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1044 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1045 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1046
1047 . ' START TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1048 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1049
1050 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1051 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1052 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1053 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1054
1055
1056 3528 FORMAT(//
1057 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1058 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1059 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1060 . ' Z DIR ',i1/,
1061 . ' NITSCHE METHOD FOR CONTACT IS USED INSTEAD OF PENALTY'/,
1062 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1063 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1064 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1065 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1066 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1067
1068 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1069 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1070 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1071
1072 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1073 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1074 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1075 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1076 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1077
1078 . ' START/STOP TIMES activated by SENSOR ID . . ',i10/,
1079
1080 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1081 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1082 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1083 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1084
1085 3529 FORMAT(//
1086 . ' TYPE==24 MUTI-TYPE IMPACTING ' //,
1087 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1088 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1089 . ' Z DIR ',i1/,
1090 . ' NITSCHE METHOD FOR CONTACT IS USED INSTEAD OF PENALTY'/,
1091 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1092 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1093 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1094 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1095 . ' ANGLE FOR EDGE COMPUTATION (Iedge>0). . . . ',1pg20.13/,
1096
1097 . ' MINIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1098 . ' MAXIMUM STIFFNESS. . . . . . . . . . . . . ',1pg20.13/,
1099 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1100
1101 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1102 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1103 . ' ZERO GAP FOR SECONDARY SHELL ON FREE EDGE . ',i5/,
1104 . ' INITIAL PENETRATION DETECTION METHOD . . . ',i5/,
1105 . ' MAXIMUM INITIAL PENETRATION VALUE . . . . . ',1pg20.13/,
1106
1107 . ' START TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1108 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
1109
1110 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
1111 . ' DE-ACTIVATION FLAG IF CONFLICT W/ TYPE2 . . ',i10/,
1112 . ' CRITICAL DAMPING FACTOR . . . . . . . . . . ',1pg20.13/,
1113 . ' QUADRATIC DAMPING FLAG. . . . . . . . . . . ',i5/)
1114
1115
1116 3500 FORMAT(/
1117 . ' STIFFNESS BASED OF TIME STEP AND MASSES :'/,
1118 . ' SCALE FACTOR . . . . . . . . . . . . . . . . . ',1pg20.13/,
1119 . ' TIME STEP . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1120 . ' FLAG FOR PENALTY STIFFNESS . . . . . . . . . . ',1pg20.13/)
1121
1122 5030 FORMAT(/
1123 . ' INTERFACE FRICTION MODEL. . . . . . . . . ',i10)
1124 5040 FORMAT(' PRESS-FIT DURATION TIME . . . . . . . . . ',1pg20.13/)
1125
1126
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
integer, parameter nchartitle
integer, parameter ncharkey
integer, parameter ncharfield
int main(int argc, char *argv[])