40
41
42
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "scr06_c.inc"
57#include "com01_c.inc"
58#include "com04_c.inc"
59#include "units_c.inc"
60
61
62
63 INTEGER :: NOINT
65 INTEGER, DIMENSION(*) :: IPARI
67 CHARACTER(LEN=NCHARTITLE) ,INTENT(IN) :: TITR
68 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
69 TYPE (SUBMODEL_DATA), DIMENSION(*),INTENT(IN) :: LSUBMODEL
70
71 TYPE (GROUP_) ,TARGET ,DIMENSION(NGRNOD) :: IGRNOD
72 TYPE (SURF_) ,TARGET ,DIMENSION(NSURF) :: IGRSURF
73
74
75
76 INTEGER :: NTYP,IS1,IS2,ISU1,ISU2,IDELKEEP,ILEV,IGAP,INACTI,IDEL10,MULTIMP,ITIED
77 my_real :: fric,gap,startt,stopt,visc,bumult,gapmax,fpenmax
78 INTEGER, DIMENSION(:), POINTER :: INGR2USR
79 LOGICAL :: IS_AVAILABLE
80
81
82
83 INTEGER NGR2USR
84
85
86
87 ntyp = 10
88 igap = 0
89 ilev = 0
90 multimp = 4
91 idelkeep = 0
92 idel10 = 0
93 gapmax = infinity
94 fpenmax = zero
95 is_available = .false.
96
97
98
99
100 CALL hm_get_intv (
'secondaryentityids' ,isu1 ,is_available, lsubmodel)
101 CALL hm_get_intv (
'mainentityids' ,isu2 ,is_available, lsubmodel)
102 CALL hm_get_intv (
'NodDel10' ,idel10 ,is_available, lsubmodel)
103
104 CALL hm_get_floatv(
'TYPE10_SCALE' ,stfac ,is_available, lsubmodel, unitab)
105 CALL hm_get_floatv(
'GAP' ,gap ,is_available, lsubmodel, unitab)
106 CALL hm_get_floatv(
'TSTART' ,startt ,is_available, lsubmodel, unitab)
107 CALL hm_get_floatv(
'TSTOP' ,stopt ,is_available, lsubmodel, unitab)
108
109 CALL hm_get_intv (
'Itied' ,itied ,is_available, lsubmodel)
110 CALL hm_get_intv (
'INACTIV' ,inacti ,is_available, lsubmodel)
111 CALL hm_get_floatv(
'STIFF_DC' ,visc ,is_available, lsubmodel, unitab)
112 CALL hm_get_floatv(
'SORT_FACT' ,bumult ,is_available, lsubmodel, unitab)
113
114
115
116 IF (inacti == 5)
CALL ancmsg(msgid=1162,
117 . msgtype=msgerror,
118 . anmode=aninfo,
119 . i1=noint,
120 . c1=titr)
121
122 is1 = 2
123 is2 = 1
124 ingr2usr => igrnod(1:ngrnod)%ID
125 IF (isu1 /= 0) isu1 =
ngr2usr(isu1,ingr2usr,ngrnod)
126 ingr2usr => igrsurf(1:nsurf)%ID
127 isu2 =
ngr2usr(isu2,ingr2usr,nsurf)
128 IF (idel10 < 0) THEN
129 idelkeep=1
130 idel10 = abs(idel10)
131 END IF
132 IF (idel10 > 2.OR. n2d == 1) idel10 = 0
133
134 fric = itied
135 IF (stfac == zero) stfac = one_fifth
136 IF (visc == zero) visc = fiveem2
137 IF (bumult == zero) bumult = bmul0
138 IF (stopt == zero) stopt = infinity
139
140
141
142 frigap(1) = fric
143 frigap(2) = gap
144 frigap(3) = startt
145 frigap(4) = bumult
146 frigap(10) = zero
147 frigap(11) = stopt
148 frigap(14) = visc
149 frigap(16) = gapmax
150 frigap(27) = fpenmax
151 frigap(15) = zero
152
153 ipari(7) = ntyp
154 ipari(11) = 0
155 ipari(17) = idel10
156 ipari(13) = is1*10 + is2
157 ipari(20) = ilev
158 ipari(21) = igap
159 ipari(22) = inacti
160 ipari(65) = 0
161 ipari(15) = noint
162 ipari(23) = multimp
163 ipari(45) = isu1
164 ipari(46) = isu2
165 ipari(61) = idelkeep
166
167
168
169 itied = nint(fric)
170 WRITE(iout,1510) itied,stfac,gap,startt,stopt,
171 . bumult,inacti,visc,multimp
172
173 IF (idel10 /= 0) THEN
174 WRITE(iout,'(A,A,I5/)')
175 .' DELETION FLAG ON FAILURE OF MAIN ELEMENT',
176 .' (1:YES-ALL/2:YES-ANY) SET TO ',idel10
177 IF (idelkeep == 1) THEN
178 WRITE(iout,'(A)')
179 .' IDEL: DO NOT REMOVE NON-CONNECTED NODES FROM SECONDARY SURFACE'
180 ENDIF
181 ENDIF
182 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
183 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
184
185
186 1510 FORMAT(//
187 . ' TYPE 10 TIED - AUTO IMPACTING ' //,
188 . ' ITIED . . . . . . . . . . . . . . . . . . . ',i1/,
189 . ' 0: TIED DURING IMPACT - REBOUND AUTORIZED'/,
190 . ' 1: TIED AFTER IMPACT NO REBOUND AUTORIZED'/,
191 . ' STIFFNESS FACTOR. . . . . . . . . . . . . ',1pg20.13/,
192 . ' MINIMUM GAP . . . . . . . . . . . . . . . ',1pg20.13/,
193 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
194 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
195 . ' BUCKET FACTOR . . . . . . . . . . . . . . ',1pg20.13/,
196 . ' DE-ACTIVATION OF INITIAL PENETRATIONS . . ',i10/,
197 . ' CRITICAL DAMPING FACTOR . . . . . . . . . ',1pg20.13/,
198 . ' MEAN POSSIBLE NUMBER OF IMPACT/NODE . . . ',i5/)
199
200 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
integer, parameter nchartitle
integer function ngr2usr(iu, igr, ngr)
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)