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,TITR1
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 I,J,L, NTYP,IS1, IS2,IGSTI,IFT0,IFORM,IRM
83 . fric,startt,stopt,fnor,dbdepth,visc,viscf,
84 . fric_last,fnor_last
85 CHARACTER(LEN=40)::MESS
86 CHARACTER(LEN=NCHARTITLE)::MSGTITL
87 CHARACTER(LEN=NCHARKEY) :: OPT
88
89 INTEGER, DIMENSION(:), POINTER :: INGR2USR
90
91
92
93 INTEGER NGR2USR
94 LOGICAL IS_AVAILABLE
95
96
97
98
99
100
101 is1=0
102 is2=0
103 iform = 0
104 ift0 = 0
105 irm = 0
106
107 fric = zero
108 startt = zero
109 stopt=ep30
110 fnor = zero
111 dbdepth =zero
112 visc = zero
113 fric_last = zero
114 fnor_last = zero
115
116 ntyp = 8
117 ipari(15)=noint
118 ipari(7)=ntyp
119
120 is_available = .false.
121
122
123
124
125 CALL hm_get_intv(
'secondaryentityids',isu1,is_available,lsubmodel)
126 CALL hm_get_intv(
'mainentityids',isu2,is_available,lsubmodel)
127 CALL hm_get_intv(
'IFORM1',iform,is_available,lsubmodel)
128
129
130
131
132
134 CALL hm_get_floatv(
'DBEAD_FORCE',fric,is_available,lsubmodel,unitab)
135 CALL hm_get_floatv(
'PEXT',dbdepth,is_available,lsubmodel,unitab)
136 CALL hm_get_floatv(
'TSTART',startt,is_available,lsubmodel,unitab)
137 CALL hm_get_floatv(
'TSTOP',stopt,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'MU_LAST',fnor_last,is_available,lsubmodel,unitab)
139 CALL hm_get_floatv(
'DBEAD_FORCE_LAST',fric_last,is_available,lsubmodel,unitab)
140
141
142
143
144
145
146
147
148
149
150 is1=2
151 is2=1
152 IF(iform==0)iform=2
153 IF(iform==1.AND.istatcnd/=0)THEN
155 . msgtype=msgerror,
156 . anmode=aninfo,
157 . i1=noint,
158 . c1=titr)
159 END IF
160
161 ipari(48) = iform
162
163 ingr2usr => igrnod(1:ngrnod)%ID
164 isu1=
ngr2usr(isu1,ingr2usr,ngrnod)
165 IF(igrnod(isu1)%SORTED/=1)THEN
167 . msgtype=msgerror,
168 . anmode=aninfo,
169 . i1=noint,
170 . c1=titr)
171 ENDIF
172 ingr2usr => igrsurf(1:nsurf)%ID
173 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
174
175
176 ipari(45)=isu1
177 ipari(46)=isu2
178 ipari(13)=is1*10+is2
179
180
181
182
183 IF (stopt == zero) stopt = ep30
184
185
186 frigap(1)=fric
187 frigap(3)=startt
188 frigap(11)=stopt
189 frigap(4)=fnor
190 frigap(5)=dbdepth
191 frigap(6)=fric_last
192 frigap(7)=fnor_last
193 IF(fric_last/= zero.OR.fnor_last/= zero) ipari(49) = 1
194
195
196 IF(iform==2) THEN
197
198 IF(visc==zero) visc=em01
199 END IF
200
201 IF(nadmesh/=0) kcontact=1
202
203 frigap(14)=visc
204
205 IF (stfac == zero ) stfac = one_fifth
206
207
208
209
210
211 IF(fnor_last==zero.AND.fric_last==zero) THEN
212 WRITE(iout,1508)fric,fnor,dbdepth,startt,stopt,irm,iform,ift0
213 ELSEIF(fnor_last==zero) THEN
214 WRITE(iout,1509)fric,fric_last,fnor,dbdepth,startt,stopt,irm,iform,ift0
215 ELSEIF(fric_last==zero) THEN
216 WRITE(iout,1510)fric,fnor,fnor_last,dbdepth,startt,stopt,irm,iform,ift0
217 ELSE
218 WRITE(iout,1511)fric,fric_last,fnor,fnor_last,dbdepth,startt,stopt,irm,iform,ift0
219 ENDIF
220
221
222 IF(is1==0)THEN
223 WRITE(iout,'(6X,A)')'NO SECONDARY SURFACE INPUT'
224 ELSEIF(is1==1)THEN
225 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
226 ELSEIF(is1==2)THEN
227 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY NODES'
228 ELSEIF(is1==3)THEN
229 WRITE(iout,'(6X,A)')'SECONDARY SURFACE INPUT BY SEGMENTS'
230 ELSEIF(is1==4 )THEN
231 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY BRICKS'
232 ELSEIF(is1==5 )THEN
233 WRITE(iout,'(6X,A)')'SECONDARY SIDE INPUT BY SOLID ELEMENTS'
234 ENDIF
235 IF(is2==0)THEN
236 WRITE(iout,'(6X,A)')'NO MAIN SURFACE INPUT'
237 ELSEIF(is2==1)THEN
238 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
239 ELSEIF(is2==2)THEN
240 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY NODES'
241 ELSEIF(is2==3)THEN
242 WRITE(iout,'(6X,A)')'MAIN SURFACE INPUT BY SEGMENTS'
243 ELSEIF(is2==4)THEN
244 WRITE(iout,'(6X,A)')'MAIN SURFACE REFERS ',
245 . 'TO HYPER-ELLIPSOIDAL SURFACE'
246 ENDIF
247
248
249 1000 FORMAT(/1x,' INTERFACE NUMBER :',i10,1x,a)
250
251 RETURN
252
253 1508 FORMAT(//
254 . ' TYPE==8 DRAW-BEAD ' //,
255 . ' RETRAINING DRAW-BEAD FORCE / UNIT LENGTH . ',1pg20.13/,
256 . ' normal draw-bead force / unit length . . . ',1PG20.13/,
257 . ' draw-bead depth . . . . . . . . . . . . . ',1PG20.13/,
258 . ' start time. . . . . . . . . . . . . . . . ',1PG20.13/,
259 . ' stop time . . . . . . . . . . . . . . . . ',1PG20.13/,
260 . ' main surface reordering flag. . . . . .
',I1/,
261 . ' formulation
for tangential force computation
',/,
262 . ' (1: viscous, 2: incremental) . . .',I1/,
263 . ' deactivation flag
for retraining force reducing
',I1/)
264 1509 FORMAT(//
265 . ' type==8 draw-bead ' //,
266 . ' retraining draw-bead force / unit length . ',/,
267 . ' at
the first node. . . . . . .
',1PG20.13/,
268 . ' retraining draw-bead force / unit length . ',/,
269 . ' at
the last node . . . . . . .
',1PG20.13/,
270 . ' normal draw-bead force / unit length . . . ',1PG20.13/,
271 . ' draw-bead depth . . . . . . . . . . . . . ',1PG20.13/,
272 . ' start time. . . . . . . . . . . . . . . . ',1PG20.13/,
273 . ' stop time . . . . . . . . . . . . . . . . ',1PG20.13/,
274 . ' main surface reordering flag. . . . . .
',I1/,
275 . ' formulation
for tangential force computation
',/,
276 . ' (1: viscous, 2: incremental) . . .',I1/,
277 . ' deactivation flag
for retraining force reducing
',I1/)
278 1510 FORMAT(//
279 . ' type==8 draw-bead ' //,
280 . ' retraining draw-bead force / unit length . ',1PG20.13/,
281 . ' normal draw-bead force / unit length . . . ',/,
282 . ' at
the first node. . . . . . .
',1PG20.13/,
283 . ' normal draw-bead force / unit length . . . ',/,
284 . ' at
the last node . . . . . . .
',1PG20.13/,
285 . ' draw-bead depth . . . . . . . . . . . . . ',1PG20.13/,
286 . ' start time. . . . . . . . . . . . . . . . ',1PG20.13/,
287 . ' stop time . . . . . . . . . . . . . . . . ',1PG20.13/,
288 . ' main surface reordering flag. . . . . .
',I1/,
289 . ' formulation
for tangential force computation',/,
290 . ' (1: VISCOUS, 2: INCREMENTAL) . . .',i1/,
291 . ' DEACTIVATION FLAG FOR RETRAINING FORCE REDUCING',i1/)
292 1511 FORMAT(//
293 . ' type==8 draw-bead ' //,
294 . ' retraining draw-bead force / unit length . ',/,
295 . ' at
the first node. . . . . . .
',1PG20.13/,
296 . ' retraining draw-bead force / unit length . ',/,
297 . ' at
the last node . . . . . . .
',1PG20.13/,
298 . ' normal draw-bead force / unit length . . . ',/,
299 . ' at
the first node. . . . . . .
',1PG20.13/,
300 . ' normal draw-bead force / unit length . . . ',/,
301 . ' at
the last node . . . . . . .
',1PG20.13/,
302 . ' draw-bead depth . . . . . . . . . . . . . ',1PG20.13/,
303 . ' start time. . . . . . . . . . . . . . . . ',1PG20.13/,
304 . ' stop time . . . . . . . . . . . . . . . . ',1PG20.13/,
305 . ' main surface reordering flag. . . . . .
',I1/,
306 . ' formulation
for tangential force computation
',/,
307 . ' (1: viscous, 2: incremental) . . .',I1/,
308 . ' deactivation flag
for retraining force reducing
',I1/)
309
end diagonal values have been computed in the(sparse) matrix id.SOL
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter nchartitle
integer, parameter ncharkey
integer function ngr2usr(iu, igr, ngr)
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)