39
40
41
42
43
49
50
51
52#include "implicit_f.inc"
53
54
55
56
57
58
59 INTEGER ISU1,ISU2,NOINT
60 INTEGER IPARI(*)
62 . stfac
64 . frigap(*)
65 CHARACTER(LEN=NCHARTITLE) :: TITR
66
67 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
68 TYPE (SURF_) ,TARGET , DIMENSION(NSURF) :: IGRSURF
69 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
70 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
71
72
73
74#include "com01_c.inc"
75#include "com04_c.inc"
76#include "units_c.inc"
77#include "remesh_c.inc"
78
79
80
81 INTEGER NTYP,IS1, IS2,IFT0,IFORM,IRM
83 . fric,startt,stopt,fnor,dbdepth,visc,
84 . fric_last,fnor_last
85
86
87 INTEGER, DIMENSION(:), POINTER :: INGR2USR
88
89
90
91 INTEGER NGR2USR
92 LOGICAL IS_AVAILABLE
93
94
95
96
97
98
99 is1=0
100 is2=0
101 iform = 0
102 ift0 = 0
103 irm = 0
104
105 fric = zero
106 startt = zero
107 stopt=ep30
108 fnor = zero
109 dbdepth =zero
110 visc = zero
111 fric_last = zero
112 fnor_last = zero
113
114 ntyp = 8
115 ipari(15)=noint
116 ipari(7)=ntyp
117
118 is_available = .false.
119
120
121
122
123 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
124 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
125 CALL hm_get_intv(
'IFORM1',iform,is_available,lsubmodel)
126
127
128
129
130
132 CALL hm_get_floatv(
'DBEAD_FORCE',fric,is_available,lsubmodel,unitab)
133 CALL hm_get_floatv(
'PEXT',dbdepth,is_available,lsubmodel,unitab)
134 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
136 CALL hm_get_floatv(
'MU_LAST',fnor_last,is_available,lsubmodel,unitab)
137 CALL hm_get_floatv(
'DBEAD_FORCE_LAST',fric_last,is_available,lsubmodel,unitab)
138
139
140
141
142
143
144
145
146
147
148 is1=2
149 is2=1
150 IF(iform==0)iform=2
151 IF(iform==1.AND.istatcnd/=0)THEN
153 . msgtype=msgerror,
154 . anmode=aninfo,
155 . i1=noint,
156 . c1=titr)
157 END IF
158
159 ipari(48) = iform
160
161 ingr2usr => igrnod(1:ngrnod)%ID
162 isu1=
ngr2usr(isu1,ingr2usr,ngrnod)
163 IF(igrnod(isu1)%SORTED/=1)THEN
165 . msgtype=msgerror,
166 . anmode=aninfo,
167 . i1=noint,
168 . c1=titr)
169 ENDIF
170 ingr2usr => igrsurf(1:nsurf)%ID
171 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
172
173
174 ipari(45)=isu1
175 ipari(46)=isu2
176 ipari(13)=is1*10+is2
177
178
179
180
181 IF (stopt == zero) stopt = ep30
182
183
184 frigap(1)=fric
185 frigap(3)=startt
186 frigap(11)=stopt
187 frigap(4)=fnor
188 frigap(5)=dbdepth
189 frigap(6)=fric_last
190 frigap(7)=fnor_last
191 IF(fric_last/= zero.OR.fnor_last/= zero) ipari(49) = 1
192
193
194 IF(iform==2) THEN
195
196 IF(visc==zero) visc=em01
197 END IF
198
199 IF(nadmesh/=0) kcontact=1
200
201 frigap(14)=visc
202
203 IF (stfac == zero ) stfac = one_fifth
204
205
206
207
208
209 IF(fnor_last==zero.AND.fric_last==zero) THEN
210 WRITE(iout,1508)fric,fnor,dbdepth,startt,stopt,irm,iform,ift0
211 ELSEIF(fnor_last==zero) THEN
212 WRITE(iout,1509)fric,fric_last,fnor,dbdepth,startt,stopt,irm,iform,ift0
213 ELSEIF(fric_last==zero) THEN
214 WRITE(iout,1510)fric,fnor,fnor_last,dbdepth,startt,stopt,irm,iform,ift0
215 ELSE
216 WRITE(iout,1511)fric,fric_last,fnor,fnor_last,dbdepth,startt,stopt,irm,iform,ift0
217 ENDIF
218
219
220 IF(is1==0)THEN
221 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
222 ELSEIF(is1==1)THEN
223 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
224 ELSEIF(is1==2)THEN
225 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
226 ELSEIF(is1==3)THEN
227 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
228 ELSEIF(is1==4 )THEN
229 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
230 ELSEIF(is1==5 )THEN
231 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
232 ENDIF
233 IF(is2==0)THEN
234 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
235 ELSEIF(is2==1)THEN
236 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
237 ELSEIF(is2==2)THEN
238 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
239 ELSEIF(is2==3)THEN
240 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
241 ELSEIF(is2==4)THEN
242 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
243 . 'TO HYPER-ELLIPSOIDAL SURFACE'
244 ENDIF
245
246
247
248 RETURN
249
250 1508 FORMAT(//
251 . ' TYPE==8 DRAW-BEAD ' //,
252 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',1pg20.13/,
253 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',1pg20.13/,
254 . ' DRAW-BEAD DEPTH . . . . . . . . . . . . . ',1pg20.13/,
255 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
256 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
257 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
258 . ' FORMULATION FOR TANGENTIAL FORCE COMPUTATION',/,
259 . ' (1: VISCOUS, 2: INCREMENTAL) . . .',i1/,
260 . ' DEACTIVATION FLAG FOR RETRAINING FORCE REDUCING',i1/)
261 1509 FORMAT(//
262 . ' TYPE==8 DRAW-BEAD ' //,
263 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',/,
264 . ' AT THE FIRST NODE. . . . . . . ',1pg20.13/,
265 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',/,
266 . ' AT THE LAST NODE . . . . . . . ',1pg20.13/,
267 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',1pg20.13/,
268 . ' DRAW-BEAD DEPTH . . . . . . . . . . . . . ',1pg20.13/,
269 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
270 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
271 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
272 . ' FORMULATION FOR TANGENTIAL FORCE COMPUTATION',/,
273 . ' (1: VISCOUS, 2: INCREMENTAL) . . .',i1/,
274 . ' DEACTIVATION FLAG FOR RETRAINING FORCE REDUCING',i1/)
275 1510 FORMAT(//
276 . ' TYPE==8 DRAW-BEAD ' //,
277 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',1pg20.13/,
278 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',/,
279 . ' AT THE FIRST NODE. . . . . . . ',1pg20.13/,
280 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',/,
281 . ' AT THE LAST NODE . . . . . . . ',1pg20.13/,
282 . ' DRAW-BEAD DEPTH . . . . . . . . . . . . . ',1pg20.13/,
283 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
284 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
285 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
286 . ' FORMULATION FOR TANGENTIAL FORCE COMPUTATION',/,
287 . ' (1: VISCOUS, 2: INCREMENTAL) . . .',i1/,
288 . ' DEACTIVATION FLAG FOR RETRAINING FORCE REDUCING',i1/)
289 1511 FORMAT(//
290 . ' TYPE==8 DRAW-BEAD ' //,
291 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',/,
292 . ' AT THE FIRST NODE. . . . . . . ',1pg20.13/,
293 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',/,
294 . ' AT THE LAST NODE . . . . . . . ',1pg20.13/,
295 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',/,
296 . ' AT THE FIRST NODE. . . . . . . ',1pg20.13/,
297 . ' NORMAL DRAW-BEAD FORCE / UNIT LENGTH . . . ',/,
298 . ' AT THE LAST NODE . . . . . . . ',1pg20.13/,
299 . ' DRAW-BEAD DEPTH . . . . . . . . . . . . . ',1pg20.13/,
300 . ' START TIME. . . . . . . . . . . . . . . . ',1pg20.13/,
301 . ' STOP TIME . . . . . . . . . . . . . . . . ',1pg20.13/,
302 . ' MAIN SURFACE REORDERING FLAG. . . . . . ',i1/,
303 . ' FORMULATION FOR TANGENTIAL FORCE COMPUTATION',/,
304 . ' (1: VISCOUS, 2: INCREMENTAL) . . .',i1/,
305 . ' DEACTIVATION FLAG FOR RETRAINING FORCE REDUCING',i1/)
306
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 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)