41
42
43
44
45
46
47
48
49
50
51
56 USE multi_fvm_mod
58
59
60
61#include "implicit_f.inc"
62
63
64
65#include "scr06_c.inc"
66#include "com04_c.inc"
67#include "units_c.inc"
68#include "inter18.inc"
69
70
71
72 INTEGER,INTENT(IN) :: NPARI, NPARIR
73 INTEGER ISU1,ISU2,IS1,IS2,NOINT
74 INTEGER IPARI(NPARI)
75 my_real frigap(nparir),fric_p(10),stfac,xfiltr
76 CHARACTER(LEN=NCHARTITLE),INTENT(IN) :: TITR
77 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
78
79 TYPE(GROUP_),TARGET, DIMENSION(NGRNOD) :: IGRNOD
80 TYPE(SURF_),TARGET ,DIMENSION(NSURF) :: IGRSURF
81 TYPE(GROUP_),TARGET, DIMENSION(NGRBRIC) :: IGRBRIC
82 TYPE(SUBMODEL_DATA), DIMENSION(NSUBMOD), INTENT(IN) :: LSUBMODEL
83 TYPE(), INTENT(IN) :: UNITAB
84
85
86
87 INTEGER GRBRIC_ID,IBAG,IDEL7N,IGAP,IGAP0,,INACTI,
88 . IDELKEEP,ISU1_user,ISU2_user,ISU3_user,ISTIFF
89 my_real gap,startt,stopt,bumult,visc,fric,vref,scale
90 CHARACTER(LEN=NCHARTITLE)::MSGTITL
91 INTEGER, DIMENSION(:), POINTER :: INGR2USR
92 INTEGER,EXTERNAL :: NGR2USR
93 LOGICAL :: IS_AVAILABLE,
94 . IS_AVAILABLE_VISC,
95 . IS_AVAILABLE_BUMULT
96
97
98
99
100
101
103 is1=0
104 is2=0
105 igap=0
106 fric=zero
107 idelkeep=0
108 xfiltr=zero
109 bumult=zero
110 visc=zero
111 istiff=0
112 vref=zero
113 startt=zero
114 stopt=ep30
115
116 ntyp = 7
117 inacti = 7
118 ipari(15)=noint
119 ipari(7)=ntyp
120
121
122
123 CALL hm_get_intv(
'ALEnodesEntityids', isu1, is_available, lsubmodel)
124 IF (.NOT. is_available) THEN
125 isu1 = 0
126 ENDIF
127 CALL hm_get_intv(
'mainentityids', isu2, is_available, lsubmodel)
128 CALL hm_get_intv(
'ALEelemsEntityids', grbric_id, is_available, lsubmodel)
129 CALL hm_get_intv(
'Igap', igap, is_available, lsubmodel)
130 CALL hm_get_intv(
'Idel', idel7n, is_available, lsubmodel)
131 CALL hm_get_intv(
'Iauto', istiff, is_available, lsubmodel)
132
133
134
135 CALL hm_get_floatv(
'STFAC', stfac, is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'VREF', vref, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'GAP', gap, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'TSTART', startt, is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'TSTOP', stopt, is_available, lsubmodel, unitab)
140
141
142
143 CALL hm_get_floatv(
'STIFF_DC', visc, is_available_visc, lsubmodel, unitab)
144 CALL hm_get_floatv(
'SORT_FACT', bumult, is_available_bumult, lsubmodel, unitab)
145
146
147 isu1_user=isu1
148 isu2_user=isu2
149 isu3_user=grbric_id
150
151
152 IF(igap == 0)igap=1000
153 IF(igap /= 1000 .AND. igap /= 1)igap = 1000 !unexpected value => default value
154 IF(igap == 1)inter18_is_variable_gap_defined = .true.
155 igap0=igap
156
157
158 IF(istiff==0)istiff=1
159 IF(istiff <= -1 .OR. istiff >2)istiff = 1
160 IF(istiff == 2) inter18_autoparam = 1
161
162
163 IF(isu2 == 0) THEN
164 msgtitl='LAGRANGIAN SURFACE IS EMPTY (SURF_ID)'
165 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo, i1=noint,c1=titr,c2=msgtitl)
166 is2=0
167 ELSE
168 is2=1
169 ingr2usr => igrsurf(1:nsurf)%ID
170 isu2=
ngr2usr(isu2,ingr2usr,nsurf)
171 msgtitl='SURFACE CANNOT BE FOUND (SURF_ID)'
172 IF(isu2 == 0)
CALL ancmsg(msgid=1115, msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
173 ENDIF
174
175
176 IF(isu1 /= 0 .AND. grbric_id /= 0)grbric_id=0
177
178
179
180
181
182
183
184
185
186 IF(isu1 /= 0)THEN
187 ingr2usr => igrnod(1:ngrnod)%ID
188 isu1=
ngr2usr(isu1,ingr2usr,ngrnod)
189 is1 =2
190 IF(isu1 == 0)THEN
191 msgtitl='GROUP OF NODES CANNOT BE FOUND (GRNOD_ID)'
192 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
193 ELSEIF(multi_fvm%IS_USED)THEN
194 msgtitl='GRBRIC_id (COLUMN 3) MUST BE PROVIDED INSTEAD OF GRNOD_id (COLUMN 1)'
195 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
196 ENDIF
197 ELSE
198
199 IF(grbric_id /= 0)THEN
200 ingr2usr => igrbric(1:ngrbric)%ID
201 grbric_id =
ngr2usr(grbric_id,ingr2usr,ngrbric)
202 is1 = 5
203 ENDIF
204 IF(grbric_id == 0) THEN
205 msgtitl='GROUP OF ALE CELLS IS EMPTY (GRBRIC_ID)'
206 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
207 ELSE
208 isu1=grbric_id
209 ENDIF
210 ENDIF
211
212
213
214
215 IF(igap == 1 .AND. grbric_id == 0)THEN
216 msgtitl='GRBRIC_ID MUST BE DEFINED TO ENABLE VARIABLE GAP'
217 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
218 ENDIF
219
220
221 IF(igap == 1000 .AND. grbric_id == 0 .AND. gap == zero)THEN
222 msgtitl='GRBRIC_ID MUST BE DEFINED TO ESTIMATE CONSTANT GAP VALUE'
223 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
224 ENDIF
225
226
227 IF(stfac <= zero .AND. istiff==1)THEN
228 msgtitl='STIFFNESS VALUE MUST BE DEFINED (STFVAL)'
229 CALL ancmsg(msgid=1115,msgtype=msgerror, anmode=aninfo,i1=noint,c1=titr,c2=msgtitl)
230 ENDIF
231 scale = one
232 IF(istiff==2)THEN
233 IF(stfac == zero)stfac=one
234 scale = stfac
235 ENDIF
236
237 IF(istiff == 2 .AND. grbric_id == 0)THEN
238 msgtitl='GROUP OF ALE CELLS (GRBRIC_ID) MUST BE DEFINED WHEN ISTIFF=2'
239 CALL ancmsg(msgid=1115, msgtype=msgerror, anmode=aninfo, i1=noint, c1=titr, c2=msgtitl)
240 ENDIF
241
242
243 IF(idel7n <= -1 .OR. idel7n >= 3)idel7n=0
244 IF(stfac == zero)stfac=one
245 stfac=-stfac
246
247
248 IF(igap==1000)igap=0
249
250 IF (stopt == zero) stopt = ep30
251 IF(bumult == zero) bumult = bmul0
252 IF(istiff==2)THEN
253 stfac=stfac*vref*vref
254 ENDIF
255
256
257 frigap(1)=fric
258 frigap(2)=gap
259 frigap(3)=startt
260 frigap(4)=bumult
261 frigap(10)=float(0)
262 frigap(11)=stopt
263 frigap(13)=one
264 frigap(14)=visc
265 frigap(15)=zero
266 frigap(16)=ep30
267 frigap(17)=zero
268 frigap(18)=zero
269
270 fric_p(1:6) = zero
271
272 ipari(7) = ntyp
273 ipari(12) = 0
274 ipari(13) = is1*10+is2
275 ipari(14) = 0
276 ipari(17) = idel7n
277 ipari(18) = inacti
278 ipari(20) = 0
279 ipari(21) = igap
280 ipari(22) = inacti
281 ipari(23) = 4
282 ipari(29) = istiff
283 ipari(30) = 0
284 ipari(31) = 0
285 ipari(32) = 0
286 ipari(34) = 0
287 ipari(39) = 0
288 ipari(40) = 0
289 ipari(41) = 0
290 ipari(45) = isu1
291 ipari(46) = isu2
292 ipari(61) = 0
293 ipari(65) = 0
294 ipari(83) = grbric_id
295
296
297
298
299
300 WRITE(iout,3017)
301 IF(grbric_id > 0)THEN
302 WRITE(iout,6002)isu3_user
303 ELSE
304 WRITE(iout,6001)isu1_user
305 ENDIF
306 WRITE(iout,6003) isu2_user
307
308 WRITE(iout,3018)igap0,istiff
309
310
311
312
313
314 WRITE(iout,3015)
315 IF(istiff==1)THEN
316
317 WRITE(iout,3024)-stfac
318 ELSE
319
320 WRITE(iout,3025)
321 WRITE(iout,3020)scale
322 WRITE(iout,3021)vref
323 ENDIF
324
325
326 WRITE(iout,3014)
327
328
329
330 IF(igap == 0)THEN
331
332 IF(gap > zero)THEN
333
334 WRITE(iout,3024)gap
335 ELSE
336
337 WRITE(iout,3025)
338 ENDIF
339 ELSE
340
341 WRITE(iout,3026)
342 ENDIF
343
344 IF(is_available_visc .OR. is_available_bumult)THEN
345
346 WRITE(iout,3028)startt,stopt,visc,bumult
347 ELSE
348 WRITE(iout,3029)startt,stopt
349 ENDIF
350
351 IF(idel7n /= 0) THEN
352 WRITE(iout,'(A,A,I5/)')' DELETION FLAG ON FAILURE OF MAIN ELEMENT',' (1:yes-all/2:yes-any) : ',IDEL7N
353 IF(IDELKEEP == 1)THEN
354 WRITE(IOUT,'(a)') ' idel: DO not remove non-connected nodes from secondary surface'
355 ENDIF
356 ENDIF
357
358
359
360
361 RETURN
362
363
364 3014 FORMAT(' --- gap ---' )
365 3015 FORMAT(' --- stiffness ---' )
366
367 3017 FORMAT(' TYPE == 18 ale-lagrange coupling' /)
368 3018 FORMAT(
369 . ' igap flag formulation . . . . . . . . . . . ',I10/,
370 . ' istf flag formulation . . . . . . . . . . . ',I10/)
371
372 3020 FORMAT(
373 . ' scale factor. . . . . . . . . . . . . . . . ',1PG20.13)
374 3021 FORMAT(
375 . ' reference velocity. . . . . . . . . . . . . ',1PG20.13)
376 3024 FORMAT(
377 . ' constant user VALUE . . . . . . . . . . . . ',1PG20.13)
378 3025 FORMAT(
379 . ' automatic constant VALUE')
380 3026 FORMAT(
381 . ' automatic variable VALUE')
382 3028 FORMAT(
383 . /' start time. . . . . . . . . . . . . . . . . ',1PG20.13/,
384 . ' stop time . . . . . . . . . . . . . . . . . ',1PG20.13/,
385 . ' critical
damping factor . . . . . . . . . .
',1PG20.13/,
386 . ' sorting factor. . . . . . . . . . . . . . . ',1PG20.13)
387 3029 FORMAT(
388 . /' start time. . . . . . . . . . . . . . . . . ',1pg20.13/,
389 . ' STOP TIME . . . . . . . . . . . . . . . . . ',1pg20.13)
390
391 6001 FORMAT(
392 . ' NODE GROUP IDENTIFIER. . . . . . . . . ',i10)
393 6002 FORMAT(
394 . ' BRICK GROUP IDENTIFIER . . . . . . . . ',i10)
395 6003 FORMAT(
396 . ' SURFACE GROUP IDENTIFIER. . . . . . . . ',i10/)
397
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
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)