39
40
41
42
43
49
50
51
52#include "implicit_f.inc"
53
54
55
56
57
58
59 INTEGER,INTENT(IN) :: NPARI, NPARIR
60 INTEGER ISU1,ISU2,NOINT
61 INTEGER IPARI(NPARI)
64
65 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
66 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
67 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
68
69
70
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "units_c.inc"
74
75
76
77 INTEGER NTYP,IS1, IS2,IDELKEEP,ILEV,
78 . INACTI, IBC1, IBC2, IBC3,IBC1M, IBC2M, IBC3M,
79 . IGSTI,IDEL3,IRS,IRM,INTKG
81 . fric,gap,startt,stopt,visc,viscf,gapscale,ptmax
82
83
84 INTEGER, DIMENSION(:), POINTER :: INGR2USR
85
86
87
88 INTEGER NGR2USR
89 LOGICAL IS_AVAILABLE
90
91
92
93
94
95
96 is1=0
97 is2=0
98 idelkeep=0
99 idel3= 0
100 inacti = 0
101 igsti = 0
102 ilev = 0
103 ibc1=0
104 ibc2=0
105 ibc3=0
106 ibc1m=0
107 ibc2m=0
108 ibc3m=0
109 intkg = 0
110
111 fric = zero
112 gap = zero
113 gapscale = zero
114 startt = zero
115 stopt=ep30
116 visc = zero
117 viscf = zero
118 ptmax=ep30
119
120 ntyp = 3
121 ipari(15)=noint
122 ipari(7)=ntyp
123
124 is_available = .false.
125
126
127
128
129 CALL hm_get_intv(
'mainentityids',isu1,is_available,lsubmodel)
130 CALL hm_get_intv(
'secondaryentityids',isu2,is_available,lsubmodel)
131 CALL hm_get_intv(
'NodDel3',idel3,is_available,lsubmodel)
132
133 CALL hm_get_intv(
'Deactivate_X_BC',ibc1,is_available,lsubmodel)
134 CALL hm_get_intv(
'Deactivate_Y_BC',ibc2,is_available,lsubmodel)
135 CALL hm_get_intv(
'Deactivate_Z_BC',ibc3,is_available,lsubmodel)
136 CALL hm_get_intv(
'Gflag',irs,is_available,lsubmodel)
137 CALL hm_get_intv(
'Vflag',irm,is_available,lsubmodel)
138
139
140
141
142
143 CALL hm_get_floatv(
'TYPE3_SCALE',stfac,is_available,lsubmodel,unitab)
144 CALL hm_get_floatv(
'FRIC',fric,is_available,lsubmodel,unitab)
146 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
147 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
148
149 CALL hm_get_floatv(
'Ptlim',ptmax,is_available,lsubmodel,unitab)
150
151
152
153
154
155
156
157
158
159
160 is1=1
161 is2=1
162 ingr2usr => igrsurf(1:nsurf)%ID
163 isu1=
ngr2usr(isu1,ingr2usr,nsurf)
164 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
165 IF (idel3 < 0) THEN
166 idelkeep=1
167 idel3=abs(idel3)
168 END IF
169 ipari(61)=idelkeep
170 IF (idel3>2.OR.n2d==1) idel3 = 0
171 ipari(17)=idel3
172
173
174 ipari(45)=isu1
175 ipari(46)=isu2
176 ipari(13)=is1*10+is2
177 ipari(20)=ilev
178
179
180
181
182 IF(stfac==zero) stfac=one_fifth
183
184 IF (stopt == zero) stopt = ep30
185
186
187 frigap(1)=fric
188 frigap(2)=gap
189 frigap(3)=startt
190 frigap(11)=stopt
191
192
193
194
195 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
196
197
198 ipari(24) = irm
199 ipari(25) = irs
200
201 ipari(11)=4*ibc1+2*ibc2+ibc3 + 8 *(4*ibc1m+2*ibc2m+ibc3m)
202 frigap(14)=visc
203
204
205
206
207 IF(ptmax==zero) ptmax=ep30
208
209 frigap(16)=ptmax
210
211 ipari(65) = intkg
212
213
214
215
216
217
218 WRITE(iout,1503)ibc1,ibc2,ibc3,stfac,fric,gap,startt,stopt,
219 . irs,irm,ptmax
220 IF(idel3/=0) THEN
221 WRITE(iout,'(A,A,I5/)'
222 . ' DELETION FLAG ON FAILURE OF ELEMENT',
223 . ' (1:YES-ALL/2:YES-ANY) SET TO ',idel3
224 IF(idelkeep == 1)THEN
225 WRITE(iout,'(A/)')
226 . ' IDEL: DO NOT REMOVE NON-CONNECTED NODES FROM SECONDARY SURFACE'
227 ENDIF
228 ENDIF
229
230
231 IF(is1==0)THEN
232 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
233 ELSEIF(is1==1)THEN
234 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
235 ELSEIF(is1==2)THEN
236 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
237 ELSEIF(is1==3)THEN
238 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
239 ELSEIF(is1==4 )THEN
240 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
241 ELSEIF(is1==5 )THEN
242 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
243 ENDIF
244 IF(is2==0)THEN
245 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
246 ELSEIF(is2==1)THEN
247 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
248 ELSEIF(is2==2)THEN
249 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
250 ELSEIF(is2==3)THEN
251 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
252 ELSEIF(is2==4)THEN
253 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
254 . 'TO HYPER-ELLIPSOIDAL SURFACE'
255 ENDIF
256
257
258
259 RETURN
260
261 1503 FORMAT(//
262 . ' TYPE==3 SLIDING AND VOIDS ' //,
263 . ' BOUND. COND. DELETED AFTER IMPACT IN X DIR ',i1/,
264 . ' (1:YES 0:NO) Y DIR ',i1/,
265 . ' Z DIR ',i1/,
266 . ' STIFFNESS FACTOR. . . . . . . . . . . . . ',1pg20.13/,
267 . ' FRICTION FACTOR . . . . . . . . . . . . . ',1pg20.13/,
268 . ' INITIAL GAP . . . . . . . . . . . . . . . ',1pg20.13/,
269 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
270 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
271 . ' SECONDARY SURFACE REORDERING FLAG . . . . . . ',i1/,
272 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
273 . ' TANGENTIAL PRESSURE LIMIT. . .. . . . . . ',1pg20.13/)
274
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
integer function ngr2usr(iu, igr, ngr)