48
49
50
51
52
54 USE intbuf_fric_mod
58 USE sensor_mod
59 USE intbufdef_mod
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
76
77
78 INTEGER,INTENT(IN) :: NPARI,NPARIR,SNPC,SNPC1,NPTS
79 INTEGER NOM_OPT(LNOPT1,*), NOM_OPTFRIC(,*)
80 INTEGER ISU1,ISU2,NI
81 INTEGER IPARI(NPARI), DEF_INTER(100),NPC(SNPC),NPC1(SNPC1)
83 my_real frigap(nparir),fric_p(10),tf(npts)
84 CHARACTER(LEN=NCHARTITLE)::TITR
85 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
86 TYPE(SUBMODEL_DATA), INTENT(IN) :: LSUBMODEL(NSUBMOD)
87 TYPE (UNIT_TYPE_),INTENT(IN) :: UNITAB
88 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
89
90 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
91 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
92 TYPE (PARAMETERS_) ,INTENT(INOUT):: PARAMETERS
93
94
95
96 INTEGER,INTENT(IN) :: ITHERM_FE
97 INTEGER,INTENT(INOUT) :: INTHEAT
98 INTEGER I,IBC1, IBC2, IBC3, IBUC, NOINT, NTYP,INACTI,
99 . IBC1M, IBC2M, IBC3M, IGSTI, IVIS2,IS1, IS2,ILEV,
100 . IGAP,MULTIMP,MFROT,IFQ,IBAG,MODFR,ISYM,IEDGE,NOD1,
101 . IDEL25,IGAP0,FLAGREMNOD,IDSENS,IDELKEEP,INTKG,
102 . IREM25I2,IPRINT,INTFRIC,MULTIMPE,IASSIGN,ISHARP,
103 . ITHK,NOTUSED,INTTH,IFORM,IKTHE,FCOND,IFRICTH,NPREF,
104 . IPSTIF
106 . fric,gap,startt,bumult,stopt,c1,c2,c3,c4,c5,c6,
alpha,
107 . gapscale,stmin,stmax,edg_angl,visc,viscf,percent_size,
108 . gapmax_s,gapmax_m,penmax,penmin,sigmaxadh,viscadhfact,
109 . viscfluid,pmax,kthe,tint,xthe,frad,drad,fheats,
110 . fheatm,dcond,xthe_unit,tpfit,stfacm,dtstif,thk_s,thk_m,
111 . thk_s_scale,thk_m_scale
112 CHARACTER(LEN=NCHARKEY) :: KEY1
113 CHARACTER(LEN=NCHARFIELD) ::BCFLAG
114
115 INTEGER, DIMENSION(:), POINTER :: INGR2USR
116 LOGICAL IS_AVAILABLE
117
118
119
120 INTEGER NGR2USR
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 irem25i2 = 0
149 igap0 = 0
150 intth = 0
151 ikthe = 0
152 iform = 0
153 fcond = 0
154 ifricth = 0
155 ipstif = 0
156
157
158
159 multimpe = 0
160
161 stopt=ep30
162 inacti = 0
163 viscf = zero
164 fric = zero
165 gap = zero
166 gapscale = zero
167 startt = zero
168 visc = zero
169 xfiltr = zero
170 DO i = 1, 10
171 fric_p(i) = zero
172 ENDDO
173 c1=zero
174 c2=zero
175 c3=zero
176 c4=zero
177 c5=zero
178 c6=zero
179
180 percent_size = zero
181 edg_angl = zero
182 gapmax_s = zero
183 gapmax_m = zero
184 penmax = zero
185 penmin = zero
186 viscfluid = zero
187 sigmaxadh = zero
188 viscadhfact = zero
189 kthe = zero
190 xthe = zero
191 tint = zero
192 frad = zero
193 drad = zero
194 fheats= zero
195 fheatm= zero
196 dcond = zero
197 stfacm= zero
198 dtstif= zero
199 thk_s = zero
200 thk_m = zero
201 thk_s_scale = zero
202 thk_m_scale = zero
203
204 iassign = 1
205
206 ntyp = 25
207 ipari(15)=noint
208 ipari(7)=ntyp
209
210 ithk = 0
211 notused = 0
212 pmax = ep30
213
214 is_available = .false.
215
216
217
218
219 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
220 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
221 CALL hm_get_intv('istf
',IGSTI,IS_AVAILABLE,LSUBMODEL)
222 CALL HM_GET_INTV('ithe',INTTH,IS_AVAILABLE,LSUBMODEL)
223 CALL HM_GET_INTV('igap',IGAP,IS_AVAILABLE,LSUBMODEL)
224 CALL HM_GET_INTV('type24_idel',IDEL25,IS_AVAILABLE,LSUBMODEL)
225 CALL HM_GET_INTV('irem_i2',irem25i2,is_available,lsubmodel)
226 CALL hm_get_intv(
'TYPE24_Iedge',iedge,is_available,lsubmodel)
227 CALL hm_get_intv(
'IPSTIF',ipstif,is_available,lsubmodel)
228
229 CALL hm_get_intv(
'GRNOD_ID',nod1,is_available,lsubmodel)
230
231 CALL hm_get_intv(
'Igap0',igap0,is_available,lsubmodel)
232 CALL hm_get_intv(
'Ishape',isharp,is_available,lsubmodel)
233
234 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
235 CALL hm_get_intv(
'Deactivate_Y_BC',ibc2,is_available,lsubmodel)
236 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
237 CALL hm_get_intv(
'IVIS2',ivis2,is_available,lsubmodel)
238 CALL hm_get_intv(
'INACTIV',inacti,is_available,lsubmodel)
239 CALL hm_get_intv(
'Ithick',ithk,is_available,lsubmodel)
240
241 CALL hm_get_intv(
'Ifric',mfrot,is_available,lsubmodel)
242 CALL hm_get_intv(
'Ifiltr',ifq,is_available,lsubmodel)
243 CALL hm_get_intv(
'ISENSOR',idsens,is_available,lsubmodel)
244 CALL hm_get_intv(
'Fric_ID',intfric,is_available,lsubmodel)
245
246 IF(intth > 0 ) THEN
247 CALL hm_get_intv(
'IFORM1',iform,is_available,lsubmodel)
248 CALL hm_get_intv(
'fct_ID_k',ikthe,is_available,lsubmodel)
249 CALL hm_get_intv(
'F_COND',fcond,is_available,lsubmodel)
250 CALL hm_get_intv(
'FRIC_FUN',ifricth,is_available,lsubmodel)
251 ENDIF
252
253
254
255
256 CALL hm_get_floatv(
'PrMesh_Size',percent_size,is_available,lsubmodel,unitab)
257 CALL hm_get_floatv(
'Gap_scale',gapscale,is_available,lsubmodel,unitab)
258 CALL hm_get_floatv(
'GAP1',gapmax_s,is_available,lsubmodel,unitab)
259 CALL hm_get_floatv(
'GAP2',gapmax_m,is_available,lsubmodel,unitab)
260
261 CALL hm_get_floatv(
'STMIN',stmin,is_available,lsubmodel,unitab)
262 CALL hm_get_floatv(
'STMAX',stmax,is_available,lsubmodel,unitab)
263 CALL hm_get_floatv(
'TYPE24_Edge_Angle',edg_angl,is_available,lsubmodel,unitab)
264 CALL hm_get_floatv(
'STFAC_MDT',stfacm,is_available,lsubmodel,unitab)
265
266 CALL hm_get_floatv(
'STFAC',stfac,is_available,lsubmodel,unitab)
267 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
268 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
269 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
270
271 CALL hm_get_floatv(
'STIFF_DC',visc,is_available,lsubmodel,unitab)
272 CALL hm_get_floatv(
'Pmax',pmax,is_available,lsubmodel,unitab)
273 CALL hm_get_floatv(
'Tpressfit',tpfit,is_available,lsubmodel,unitab)
274
276 CALL hm_get_floatv(
'DTSTIF',dtstif,is_available,lsubmodel,unitab)
277
278 IF (mfrot>0) THEN
284 ENDIF
285 IF (mfrot>1) THEN
287 ENDIF
288 IF (ivis2>0) THEN
294 ENDIF
295 IF(ivis2==-1) THEN
296 interadhesion = 1
297 CALL hm_get_floatv(
'ViscFluid',viscfluid,is_available,lsubmodel,unitab)
298 CALL hm_get_floatv(
'SigMaxAdh',sigmaxadh,is_available,lsubmodel,unitab)
299 CALL hm_get_floatv(
'ViscAdhFact',viscadhfact,is_available,lsubmodel,unitab)
300 ENDIF
301
302 IF(intth > 0 ) THEN
303 CALL hm_get_floatv(
'Kthe',kthe,is_available,lsubmodel,unitab)
304 CALL hm_get_floatv(
'T_Initial',tint,is_available,lsubmodel,unitab)
306 CALL hm_get_floatv(
'F_RAD',frad,is_available,lsubmodel,unitab)
307 CALL hm_get_floatv(
'D_RAD',drad,is_available,lsubmodel,unitab)
308 CALL hm_get_floatv(
'Fmax',fheats,is_available,lsubmodel,unitab
309 CALL hm_get_floatv(
'HEAT_AL',fheatm,is_available,lsubmodel,unitab)
310 CALL hm_get_floatv(
'D_COND',dcond,is_available,lsubmodel,unitab)
311 ENDIF
312
313 IF(igap == 5 ) THEN
314 CALL hm_get_floatv(
'THICK_S',thk_s,is_available,lsubmodel,unitab)
315 CALL hm_get_floatv(
'THICK_M',thk_m,is_available,lsubmodel,unitab)
316 CALL hm_get_floatv(
'THICK_S_SCALE',thk_s_scale,is_available,lsubmodel,unitab)
317 CALL hm_get_floatv(
'THICK_M_SCALE',thk_m_scale,is_available,lsubmodel,unitab)
318 ENDIF
319
320
321
322
323 iprint = 0
324
325 key1='IGSTI'
326 CALL definter(key1 ,igsti ,iassign ,iprint ,
327 . ntyp ,def_inter)
328
329 key1='IGAP'
330 CALL definter(key1 ,igap ,iassign ,iprint ,
331 . ntyp ,def_inter)
332
333 key1='IREM25I2'
334 CALL definter(key1 ,irem25i2,iassign ,iprint ,
335 . ntyp ,def_inter)
336
337 key1='IEDGE'
338 CALL definter(key1 ,iedge ,iassign ,iprint ,
339 . ntyp ,def_inter)
340
341 key1='IBAG'
342 CALL definter(key1 ,ibag ,iassign ,iprint ,
343 . ntyp ,def_inter)
344
345 key1='IDEL25'
346 CALL definter(key1 ,idel25 ,iassign ,iprint ,
347 . ntyp ,def_inter)
348
349 key1='IGAP0'
350 CALL definter(key1 ,igap0 ,iassign ,iprint ,
351 . ntyp ,def_inter)
352
353 key1='ISHARP'
354 CALL definter(key1 ,isharp ,iassign ,iprint ,
355 . ntyp ,def_inter)
356 key1='INACTI'
357 CALL definter(key1 ,inacti ,iassign ,iprint ,
358 . ntyp ,def_inter)
359
360 key1='ITHK'
361 CALL definter(key1 ,ithk ,iassign ,iprint ,
362 . ntyp ,def_inter)
363
364
365
366
367
368
369
370
371 IF(igap==2) THEN
372 flagremnod = 2
373 ENDIF
374 IF (flagremnod == 0) flagremnod = 1
375
376
377
378 ipari(63) = flagremnod
379 ipari(83) = irem25i2
380
381 IF (irem25i2 /= 1) ipari(83)=0
382
383 IF(igap==2) THEN
384 ipari(21)=1
385 ELSE
386 ipari(21)=igap
387 ENDIF
388
389
390
391
392
393
394
395
396
397 IF(isu1 /= 0 .AND.isu2 == 0)THEN
398 ilev = 1
399 ELSEIF(isu1 /= 0 .AND.isu2 /= 0)THEN
400 ilev = 2
401 IF (isu1 == isu2) THEN
402 ilev = 1
403 isu2 = 0
405 . msgtype=msgwarning,
406 . anmode=aninfo,
407 . i1=noint,
408 . c1=titr)
409 END IF
410 ELSEIF(isu1 == 0 .AND.isu2 /= 0 .AND. nod1 /= 0) THEN
411 ilev = 3
412 ELSE
413 IF(isu2 == 0) THEN
415 . anmode=aninfo,
416 . msgtype=msgerror,
417 . i1=noint,
418 . c1=titr)
419 ELSEIF (nod1 == 0) THEN
421 . anmode=aninfo,
422 . msgtype=msgerror,
423 . i1=noint,
424 . c1=titr)
425 ENDIF
426 is1=0
427 is2=0
428 END IF
429
430 isym = 1
431
432 SELECT CASE (ilev)
433 CASE(1)
434 ingr2usr => igrsurf(1:nsurf)%ID
435 isu1=
ngr2usr(isu1,ingr2usr,nsurf)
436 isu2=isu1
437 is1=-1
438 is2=-3
439 CASE(2)
440
441 is1 = 0
442 ingr2usr => igrsurf(1:nsurf)%ID
443 is1=
ngr2usr(isu1,ingr2usr,nsurf)
444 IF (is1==0) THEN
446 . anmode=aninfo_blind_1,
447 . msgtype=msgerror,
448 . i1=noint,
449 . c1=titr)
450 ELSE
451 isu1=is1
452 END IF
453 ingr2usr => igrsurf(1:nsurf)%ID
454 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
455 is1=-1
456 is2=-1
457 CASE(3)
458 ingr2usr => igrsurf(1:nsurf)%ID
459 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
460 is1=-2
461 is2=-1
462 END SELECT
463 ingr2usr => igrnod(1:ngrnod)%ID
464 IF(nod1 /= 0) nod1=
ngr2usr(nod1,ingr2usr,ngrnod)
465
466 ipari(13)=is1*10+is2
467 ipari(45)=isu1
468 ipari(46)=isu2
469
470 ipari(26)=nod1
471 ipari(43)=isym
472 ipari(58)=iedge
473 IF(iedge == 1000) ipari(58)=0
474
475
476 ipari(20)=ilev
477 IF (inacti==-1.AND.(igsti==0.OR.igsti==1000)) igsti = 4
478 ipari(34)=igsti
479
480
481
482
483
484 IF(igsti>1)THEN
485 i7stifs=1
486 IF(stmax==zero)stmax=ep30
487 ELSE
488 IF(stmax==zero)stmax=ep30
489 END IF
490
491
492
493
494 ipari(53)=igap0
495
496 frigap(17) = stmin
497 frigap(18) = stmax
498
499
500 IF(iedge /= 0 .AND. edg_angl==zero)
501 + edg_angl=hundred+thirty+five
502 frigap(26) = cos((hundred80-edg_angl)*pi/hundred80)
503
504 IF(igap == 3 .AND. percent_size == zero) percent_size = four*em01
505 frigap(28) = percent_size
506
507 IF(gapscale==zero)gapscale=one
508 frigap(13) = gapscale
509 frigap(45) = gapscale
510
511
512 IF(gapmax_s==zero)gapmax_s=ep30
513 IF(gapmax_m==zero)gapmax_m=ep30
514
515 IF(penmin==zero)penmin=em8
516 frigap(35) = gapmax_s
517 frigap(36) = gapmax_m
518 frigap(37) = penmax
519 frigap(38) = penmin
520
521
522
523
524
525 gap=zero
526 IF (stopt == zero) stopt = ep30
527
528 frigap(1)=fric
529 frigap(2)=gap
530 frigap(3)=startt
531 frigap(11)=stopt
532
533
534
535
536
537 IF (inacti==-1.AND.iimplicit==0) THEN
538 npref=10000
539 ipari(40) = npref
540 ELSE
541 tpfit=zero
542 END IF
543
544
545
546
547
548
549 IF (iimplicit>0.AND.inacti==0) inacti=-1
550 IF (inacti/=0.AND.inacti/=-1.AND.inacti/=5) THEN
551 IF(inacti>0)THEN
553 . msgtype=msgwarning,
554 . anmode=aninfo_blind_1,
555 . i1=noint,i2=inacti,
556 . c1=titr)
557 inacti=5
558 ELSE
560 . msgtype=msgwarning,
561 . anmode=aninfo_blind_1,
562 . i1=noint,i2=inacti,
563 . c1=titr)
564 inacti = 0
565 END IF
566 END IF
567 IF(stfac==0.) THEN
568 stfac=one
569 ENDIF
570 IF(igsti==1)stfac=-stfac
571
572 viscf=zero
573
574
575 frigap(15)=tpfit
576
577 IF(visc==zero)THEN
578 IF(ivis2==5)THEN
579 visc=one
580 ELSE
581 visc=fiveem2
582 ENDIF
583 ENDIF
584 frigap(14)=visc
585
586 IF(ithk==1) inter_ithknod=1
587
588
589
590
591
592 IF(ivis2==0)ivis2=1
593 IF (idel25 < 0) THEN
594 idelkeep=1
595 idel25=abs(idel25)
596 END IF
597 ipari(61)=idelkeep
598 IF(idel25>2) idel25 = 0
599 ipari(17)=idel25
600
601 IF(igap==3.AND.isharp==1) THEN
603 . msgtype=msgwarning,
604 . anmode=aninfo_blind_1,
605 . i1=noint,i2=isharp,i3=igap,
606 . c1=titr)
607
608 END IF
609 ipari(84)=isharp
610
611 ipari(14)=ivis2
612 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
613
614 ipari(22)=inacti
615 ipari(91)=ithk
616
617
618 bumult=zero
619
620 IF(bumult==zero) THEN
621 bumult =
622
623
624 IF(numnod > 2500000) THEN
625 bumult = bmul0*two
626 ELSEIF(numnod > 1500000) THEN
627 bumult = bmul0*three/two
628 END IF
629 END IF
630 frigap(4)=bumult
631
632
633 IF(ipstif >0 .OR.igsti==7) ipari(97) = 1
634 IF(igsti==7.AND.ipstif ==0) ipstif = 1
635 ipari(98) = ipstif
636 IF(stfacm == zero.AND.ipari(97) > 0) stfacm = em01
637 IF(ipari(97) > 0) THEN
638 frigap(48) = dtstif
639 parameters%ISTIF_DT = 1
640 frigap(47) = stfacm
641 ELSE
642 dtstif = zero
643 stfacm = zero
644 ENDIF
645
646
647
648
649
650
651
652 modfr = 2
653 IF (
alpha==0.) ifq = 0
654 IF (modfr==0) modfr = 1
655 IF (modfr==2.AND.ifq<10) ifq = ifq + 10
656
657 IF (ifq>0) THEN
658 IF (ifq==10) xfiltr = one
659 IF (mod(ifq,10)==1) xfiltr =
alpha
660 IF (mod(ifq,10
661 IF (mod(ifq
662 IF (xfiltr<zero) THEN
664 . msgtype=msgerror,
665 . anmode=aninfo_blind_1,
666 . i1=noint,
667 . c1=titr,
669 ELSEIF (xfiltr>1.AND.mod(ifq,10)<=2) THEN
671 . msgtype=msgerror,
672 . anmode=aninfo_blind_1,
673 . i1=noint,
674 . c1=titr,
676 ENDIF
677 ELSE
678 xfiltr = zero
679 ENDIF
680
681 IF (ibag/=0.AND.nvolu==0 .AND. ialelag == 0) THEN
683 . msgtype=msgwarning,
684 . anmode=aninfo_blind_2,
685 . i1=noint,
686 . c1=titr)
687 ibag=0
688 ENDIF
689 intbag =
max(intbag,ibag)
690 kcontact =
max(kcontact,ibag)
691
692
693 ipari(30) = mfrot
694 ipari(31) = ifq
695 ipari(32) = ibag
696 ipari(72) = intfric
697 ipari(64) = idsens
698
699
700
701
702 fric_p(1) = c1
703 fric_p(2) = c2
704 fric_p(3) = c3
705 fric_p(4) = c4
706 fric_p(5) = c5
707 fric_p(6) = c6
708
709
710
711
712 frigap(42) = viscfluid
713 frigap(43) = sigmaxadh
714 frigap(44) = viscadhfact
715
716 ipari(12)=ibuc
717 ipari(65) = intkg
718
719
720 frigap(10)=float(0)
721
722
723
724 multimp = 4
725 ipari(23)=multimp
726
727 IF(iedge /= 0) multimpe = 4
728 ipari(87)=multimpe
729 ipari(89)=multimpe
730
731
732
733
734
735 IF(intth > 0.AND.kthe == zero)THEN
736 IF(ikthe /= 0)THEN
737 kthe = one
738 ENDIF
739 ENDIF
740
741 IF (intth > 0.AND.xthe == zero) THEN
742
744 xthe = one * xthe_unit
745 ENDIF
746
747 IF(intth > 0 ) intheat = 1
748 ipari(47) = intth
749
750 IF(itherm_fe == 0 .AND. intth > 0 ) THEN
751 intheat = 0
752 ipari(47) = 0
754 . msgtype=msgwarning,
755 . anmode=aninfo,
756 . i1=noint,
757 . c1=titr)
758 ENDIF
759
760 IF(intth > 0 ) THEN
761 IF(fheats+fheatm > 1) THEN
763 . msgtype=msgwarning,
764 . anmode=aninfo,
765 . i1=noint,
766 . c1=titr,
767 . r1=fheats,
768 . r2=fheatm)
769 ENDIF
770 ENDIF
771
772 IF(fcond ==0) dcond = zero
773
774 IF(frad==zero ) drad = zero
775
776 IF(fcond /= 0.AND.dcond/=zero.AND.dradTHEN
777 drad = dcond
779 . msgtype=msgwarning,
780 . anmode=aninfo,
781 . i1=noint,
782 . c1=titr,
783 . r1=dcond,
784 . r2=drad)
785 ENDIF
786
787 IF(dcond > drad) THEN
788 dcond = drad
790 . msgtype=msgwarning,
791 . anmode=aninfo,
792 . i1=noint,
793 . c1=titr,
794 . r1=dcond,
795 . r2=drad)
796 ENDIF
797
798 IF(intth > 0.AND.fric == zero)THEN
799 IF(ifricth /= 0)THEN
800 fric = one
801 ENDIF
802 ENDIF
803
804 IF(igap == 5)THEN
805 IF(thk_s_scale == zero) thk_s_scale = one
806 IF(thk_m_scale == zero) thk_m_scale = one
807 ENDIF
808
809
810 frigap(20) = kthe
811 frigap(21 ) = fheats
812 frigap(22 ) = tint
813 frigap(41 ) = fheatm
814 frigap(31 ) = frad
815 frigap(32 ) = drad
816 ipari(48) = iform
817 ipari(92) = ikthe
818 frigap(33) = xthe
819 ipari(93) = fcond
820 frigap(34) = dcond
821 ipari(50) = ifricth
822 frigap(49) = thk_s
823 frigap(50 ) = thk_m
824 frigap(51 ) = thk_s_scale
825 frigap(52 ) = thk_m_scale
826 IF(igap == 5.AND.thk_s == zero) THEN
828 . msgtype=msgwarning,
829 . anmode=aninfo,
830 . i1=noint,
831 . c1=titr,
832 . c2='SECONDARY')
833 ENDIF
834 IF(igap == 5.AND.thk_m == zero) THEN
836 . msgtype=msgwarning,
837 . anmode=aninfo,
838 . i1=noint,
839 . c1=titr,
840 . c2='MAIN')
841 ENDIF
842
843
844
845
846
847
851 . intbuf_fric_tab)
852
853
854
855
856
857
858
859
860 iprint = 1
861
862 key1='IGSTI'
863 CALL definter(key1 ,igsti ,iassign ,iprint ,
864 . ntyp ,def_inter)
865
866 key1='IGAP'
867 CALL definter(key1 ,igap ,iassign ,iprint ,
868 . ntyp ,def_inter)
869
870 key1='IREM25I2'
871 CALL definter(key1 ,irem25i2,iassign ,iprint ,
872 . ntyp ,def_inter)
873
874 key1='IEDGE'
875 CALL definter(key1 ,iedge ,iassign ,iprint ,
876 . ntyp ,def_inter)
877
878 key1='IBAG'
879 CALL definter(key1 ,ibag ,iassign ,iprint ,
880 . ntyp ,def_inter)
881
882 key1='IDEL25'
883 CALL definter(key1 ,idel25 ,iassign ,iprint ,
884 . ntyp ,def_inter)
885
886 key1='IGAP0'
887 CALL definter(key1 ,igap0 ,iassign ,iprint ,
888 . ntyp ,def_inter)
889
890 key1='ISHARP'
891 CALL definter(key1 ,isharp ,iassign ,iprint ,
892 . ntyp ,def_inter)
893
894 key1='INACTI'
895 CALL definter(key1 ,inacti ,iassign ,iprint ,
896 . ntyp ,def_inter)
897
898 key1='ITHK'
899 CALL definter(key1 ,ithk ,iassign ,iprint ,
900 . ntyp ,def_inter)
901
902
903
904
905 IF(idsens/=0) THEN
906 WRITE(iout,3526)ibc1,ibc2,ibc3,
907 . igsti,stfac,ilev,iedge,edg_angl,
908 . stmin,stmax,
909 . fric,igap,gapscale,gapmax_s,gapmax_m,percent_size,igap0,isharp,
910 . irem25i2,idsens,
911 . inacti,visc,ipari(14),flagremnod
912 ELSE
913 WRITE(iout,3527)ibc1,ibc2,ibc3,
914 . igsti,stfac,ilev,iedge,edg_angl,
915 . stmin,stmax,
916 . fric,igap,gapscale,gapmax_s,gapmax_m,percent_size,igap0,isharp,
917 . irem25i2,startt,stopt,
918 . inacti,visc,ipari(14),flagremnod
919 ENDIF
920
921 IF(tpfit > zero) WRITE(iout,5040) tpfit
922 IF(idel25/=3) THEN
923 WRITE(iout,'(A,A,I5/)')
924 . ' DELETION FLAG ON FAILURE OF MAIN ELEMENT',
925 . ' (1:YES-ALL/2:YES-ANY/1000:NO) : ',idel25
926 IF(idelkeep == 1)THEN
927 WRITE(iout,'(A)')
928 . ' IDEL: DO NOT REMOVE NON-CONNECTED NODES FROM SECONDARY SURFACE'
929 ENDIF
930 ENDIF
931
932 IF(ipari(97) > 0) WRITE(iout,3500) stfacm,dtstif,ipstif
933
934 IF(intfric > 0 ) THEN
935 WRITE(iout,5030) intfric
936 ELSE
937 WRITE(iout,1520)mod(ifq,10), xfiltr
938 IF(mfrot==0)THEN
939 IF(ifricth ==0 ) THEN
940 WRITE(iout,1524) fric
941 ELSE
942 WRITE(iout,1525) ifricth,fric
943 ENDIF
944 ELSEIF(mfrot==1)THEN
945 WRITE(iout,1515)fric_p(1),fric_p
946 . fric_p(4),fric_p(5)
947 ELSEIF(mfrot==2)THEN
948 WRITE(iout,1522)fric,fric_p(1),fric_p(2),fric_p(3),
949 . fric_p(4),fric_p(5),fric_p(6)
950 ELSEIF(mfrot==3)THEN
951 WRITE(iout,1523)fric_p(1),fric_p(2),fric_p(3),
952 . fric_p(4),fric_p(5),fric_p(6)
953 ELSEIF(mfrot==4)THEN
954 WRITE(iout,1526) fric,fric_p(1),fric_p(2)
955 ENDIF
956 ENDIF
957
958 IF(ivis2==-1) THEN
959 WRITE(iout,5050)viscfluid,sigmaxadh,viscadhfact
960 ENDIF
961 IF(intth > 0 )THEN
962 IF(ikthe==0)THEN
963 WRITE(iout,2102) kthe,tint,frad,drad,fheats,fheatm,iform,fcond,dcond
964 ELSE
965 WRITE(iout,2103) ikthe,xthe,kthe,tint,frad,drad,fheats,fheatm,iform,fcond,dcond
966 END IF
967 END IF
968 IF(igap == 5 )THEN
969 WRITE(iout,5051) thk_s,thk_s_scale,thk_m,thk_m_scale
970 ENDIF
971
972 IF(is1==0)THEN
973 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
974 ELSEIF(is1==1)THEN
975 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
976 ELSEIF(is1==2)THEN
977 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
978 ELSEIF(is1==3)THEN
979 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
980 ELSEIF(is1==4 )THEN
981 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
982 ELSEIF(is1==5 )THEN
983 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
984 ENDIF
985 IF(is2==0)THEN
986 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
987 ELSEIF(is2==1)THEN
988 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
989 ELSEIF(is2==2)THEN
990 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
991 ELSEIF(is2==3)THEN
992 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
993 ELSEIF(is2==4)THEN
994 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
995 . 'TO HYPER-ELLIPSOIDAL SURFACE'
996 ENDIF
997
998
999
1000 RETURN
1001
1002
1003 1515 FORMAT(//
1004 . ' FRICTION MODEL 1 (Viscous Polynomial)'/,
1005 . ' MU = MUo + C1 p + C2 v + C3 pv + C4 p^2 + C5 v^2'/,
1006 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1007 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1008 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1009 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1010 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1011 . ' TANGENTIAL PRESSURE LIMIT. . .. . . . . .',1pg20.13/)
1012 1522 FORMAT(/
1013 . ' FRICTION MODEL 2 (Darmstad Law) :'/,
1014 . ' MU = MUo+c1*exp(c2*v)*p^2+c3*exp(c4*v)*p+c5*exp(c6*v)'/,
1015 . ' Muo. . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1016 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1017 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1018 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1019 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1020 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1021 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
1022 1523 FORMAT(/
1023 . ' FRICTION MODEL 3 (Renard law) :'/,
1024 . ' C1 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1025 . ' C2 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1026 . ' C3 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1027 . ' C4 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1028 . ' C5 . . . . . . . . . . . . . . . . . . . ',1pg20.13/,
1029 . ' C6 . . . . . . . . . . . . . . . . . . . ',1pg20.13/)
1030 1524 FORMAT(/
1031 . ' FRICTION MODEL 0 (Coulomb Law) :'/,
1032 . ' FRICTION COEFFICIENT . . . . . . . . . ',1pg20.13/)
1033 1525 FORMAT(//
1034 . ' FRICTION MODEL 0 (Coulomb Law) :'/,
1035 . ' Function for FRICTION COEFFICIENT wrt TEMPERATURE',i10/,
1036 . ' Ordinate scale factor on IFUNTCF . . . . ',1pg20.13/)
1037
1038 1520 FORMAT(
1039 . ' FRICTION FILTERING FLAG. . . . . . . . . ',i10/,
1040 . ' FILTERING FACTOR . . . . . . . . . . . . ',1pg20.13)
1041 1526 FORMAT(/
1042 . ' EXPONENTIAL DECAY FRICTION LAW '/
1043 . ' MU = c1+(MUo-c1)*exp(-c2*v)'/
1044 . ' STATIC COEFFICIENT MUo . . . . . . . . . ',1pg20.13/,
1045 . ' DYNAMIC COEFFICIENT C1 . . . . . . . . . ',1pg20.13/,
1046 . ' EXPONENTIAL DECAY COEFFICIENT C2 . . . . ',1pg20.13/)
1047
1048 3526 FORMAT(//
1049 . ' TYPE==25 MUTI-TYPE IMPACTING ' //,
1050 . ' BOUND. COND. DELETED AFTER IMPACT . . . . . IN X DIR ',i1/,
1051 . ' SECONDARY NODE (1:YES 0:NO) Y DIR ',i1/,
1052 . ' Z DIR ',i1/,
1053 . ' STIFFNESS FORMULATION . . . . . . . . . . . ',i5/,
1054 . ' STIFFNESS FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1055 . ' CONTACT TYPES (1:S1/S1;2:S1/S2;3:N/S . . . ',i5/,
1056 . ' EDGE FLAG . . . . . . . . . . . . . . . . . ',i5/,
1057 . ' ANGLE FOR EDGE COMPUTATION (Iedge/=0) . . . ',1pg20.13/,
1058 . ' MINIMUM STIFFNESS . . . . . . . . . . . . . ',1pg20.13/,
1059 . ' MAXIMUM STIFFNESS . . . . . . . . . . . . . ',1pg20.13/,
1060 . ' FRICTION FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
1061 . ' GAP FLAG. . . . . . . . . . . . . . . . . . ',i5/,
1062 . ' GAP SCALE FACTOR. . . . . . . . . . . . . . ',1pg20.13/,
1063 . ' MAXIMUM SECONDARY GAP VALUE . . . . . . . . ',1pg20.13/,
1064 . ' MAXIMUM MAIN GAP VALUE. . . . . . . . . . . ',1pg20.13/,
1065 . ' %MESHSIZE TAKEN INTO ACCOUNT FOR '/,
1066 . ' CALCULATION OF MAXIMUM GAP(IGAP = 3). . . . ',1pg20.13/,
1067 . ' zero gap
for secondary shell on free edge .
',I5/,
1068 . ' gap shape along
main free edges
',/,
1069 . ' (1:square,2:cylindrical) . . . . . . ',I5/,
1070 . ' de-activation flag IF conflict w/ type2 . . ',I10/,
1071 . ' start/stop times activated by sensor
id . .
',I10/,
1072 . ' de-activation of initial penetrations . . . ',I10/,
1073 . ' critical
damping factor . . . . . . . . . .
',1PG20.13/,
1074 . ' quadratic
damping flag. . . . . . . . . . .
',I5/,
1075 . ' flagremnode : not consider neighboring '/,
1076 . ' nodes in CASE of element SIZE < gap VALUE . ',I5/)
1077
1078 3527 FORMAT(//
1079 . ' type==25 muti-TYPE impacting ' //,
1080 . ' bound. cond. deleted after impact . . . . . in x dir ',I1/,
1081 . ' secondary node(1:yes 0:no) y dir ',I1/,
1082 . ' z dir ',I1/,
1083 . ' stiffness formulation . . . . . . . . . . . ',I5/,
1084 . ' stiffness factor. . . . . . . . . . . . . . ',1PG20.13/,
1085 . ' contact types(1:s1/s1;2:s1/s2;3:n/s . . . ',I5/,
1086 . ' edge flag . . . . . . . . . . . . . . . . . ',I5/,
1087 . ' angle
for edge computation(iedge/=0) . . .
',1PG20.13/,
1088 . ' minimum stiffness . . . . . . . . . . . . . ',1PG20.13/,
1089 . ' maximum stiffness . . . . . . . . . . . . . ',1PG20.13/,
1090 . ' friction factor . . . . . . . . . . . . . . ',1PG20.13/,
1091 . ' gap flag. . . . . . . . . . . . . . . . . . ',I5/,
1092 . ' gap scale factor. . . . . . . . . . . . . . ',1PG20.13/,
1093 . ' maximum secondary gap VALUE . . . . . . . . ',1PG20.13/,
1094 . ' maximum
main gap
VALUE. . . . . . . . . . .
',1PG20.13/,
1095 . ' %MESHSIZE taken into account
for '/,
1096 . ' calculation of maximum gap(igap = 3). . . . ',1PG20.13/,
1097 . ' zero gap
for secondary shell on free edge .
',I5/,
1098 . ' gap shape along
main free edges
',/,
1099 . ' (1:square,2:cylindrical) . . . . . . ',I5/,
1100 . ' de-activation flag IF conflict w/ type2 . . ',I10/,
1101 . ' start time. . . . . . . . . . . . . . . . . ',1PG20.13/,
1102 . ' stop time . . . . . . . . . . . . . . . . . ',1PG20.13/,
1103 . ' de-activation of initial penetrations . . . ',I10/,
1104 . ' critical
damping factor . . . . . . . . . .
',1PG20.13/,
1105 . ' quadratic
damping flag. . . . . . . . . . .
',I5/,
1106 . ' flagremnode : not consider neighboring '/,
1107 . ' nodes in CASE of element SIZE < gap VALUE . ',I5/)
1108 3500 FORMAT(/
1109 . ' stiffness based of time step and masses :'/,
1110 . ' scale factor . . . . . . . . . . . . . . . . . ',1PG20.13/,
1111 . ' time step . . . . . . . . . . . . . . . . . . ',1PG20.13/,
1112 . ' flag
for penalty stiffness . . . . . . . . . .
',1PG20.13/)
1113
1114 5030 FORMAT(/
1115 . ' INTERFACE friction model. . . . . . . . . ',I10)
1116 5040 FORMAT(' press-fit duration time . . . . . . . . . ',1PG20.13/)
1117
1118 5050 FORMAT(/
1119 . ' INTERFACE adhesion model ' /,
1120 . ' INTERFACE fluid viscosity . . . . . . . ',1PG20.13/,
1121 . ' maximum adhesive force per unit
area. .
',1PG20.13/,
1122 . ' tangential viscous force scale factor . ',1PG20.13/)
1123
1124 5051 FORMAT(/
1125 . ' constant contact thickness ' /,
1126 . ' secondary contact thickness . . . . . . ',1PG20.13/,
1127 . ' secondary contact thickness scale . . . ',1PG20.13/,
1128 . ' main contact thickness . . . . . . . .
',1PG20.13/,
1129 . ' main contact thickness scale . . . . .
',1PG20.13/)
1130
1131 2102 FORMAT(//
1132 . ' thermal interface ' //,
1133 . ' thermal heat exchange coefficient . . . . .',1PG20.13/,
1134 . ' Interface temperature . . . . . . . . . . ',1PG20.13/,
1135 . ' radiation factor . . . . . . . . . . . . .
',1PG20.13/,
1136 . ' maximum distance
for radiation computation.
',1PG20.13/,
1137 . ' frictional heat transfer on secondary surface . ',1PG20.13/,
1138 . ' frictional heat transfer on
main surface.
',1PG20.13/,
1139 . ' formulation choice : . . . . . . . . . . . ',I10,/,
1140 . ' 0 : heat transfer between secondary side',/,
1141 . ' and constant temperature in interface',/,
1142 . ' 1 : heat exchange between pieces in contact'/
1143 . ' Function for thermal heat exchange coefficient wrt distance
',I10/,
1144 . ' maximum distance
for conductive heat exchange
',1PG20.13)
1145 2103 FORMAT(//
1146 . ' thermal interface ' //,
1147 . ' function
for thermal heat exchange coefficient wrt contact pressure
',I10/,
1148 . ' abscissa scale factor on ifuntck. . . . . ',1PG20.13/,
1149 . ' ordinate scale factor on ifuntck . . . . ',1PG20.13/,
1150 . ' interface temperature . . . . . . . . . . ',1PG20.13/,
1151 . ' radiation factor . . . . . . . . . . . . .
',1PG20.13/,
1152 . ' maximum distance
for radiation computation.
',1PG20.13/,
1153 . ' frictional heat transfer on secondary surface . ',1PG20.13/,
1154 . ' frictional heat transfer on
main surface.
',1PG20.13/,
1155 . ' formulation choice : . . . . . . . . . . . ',I10,/,
1156 . ' 0 : heat transfer between secondary side',/,
1157 . ' and constant temperature in interface',/,
1158 . ' 1 : heat exchange between pieces in contact'/
1159 . ' function
for thermal heat exchange coefficient wrt distance
',I10/,
1160 . ' maximum distance
for conductive heat exchange
',1PG20.13)
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_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine inter_dcod_friction(ntyp, ni, ipari, nom_opt, nom_optfric, intbuf_fric_tab)
subroutine inter_dcod_function(ntyp, ni, ipari, npc1, nom_opt, npc, pld)
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)
subroutine radiation(ibcr, fradia, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
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)