37 1 IPARI ,STFAC ,FRIGAP ,NOINT ,
38 3 IGRNOD ,IGRSURF ,IGRBRIC ,XFILTR ,FRIC_P ,
39 3 TITR ,UNITAB ,LSUBMODEL ,MULTI_FVM ,NPARI ,
61#include "implicit_f.inc"
72 INTEGER,
INTENT(IN) :: NPARI, NPARIR
73 INTEGER ISU1,ISU2,IS1,IS2,NOINT
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
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
87 INTEGER GRBRIC_ID,IDEL7N,IGAP,IGAP0,NTYP,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,
123 CALL hm_get_intv(
'ALEnodesEntityids', isu1, is_available, lsubmodel)
124 IF (.NOT. is_available)
THEN
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)
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)
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)
152 IF(igap == 0)igap=1000
153 IF(igap /= 1000 .AND. igap /= 1)igap = 1000
154 IF(igap == 1)inter18_is_variable_gap_defined = .true.
158 IF(istiff==0)istiff=1
159 IF(istiff <= -1 .OR. istiff >2)istiff = 1
160 IF(istiff == 2) inter18_autoparam = 1
164 msgtitl=
'LAGRANGIAN SURFACE IS EMPTY (SURF_ID)'
165 CALL ancmsg(msgid=1115,msgtype=msgerror,anmode=aninfo, i1=noint,c1=titr,c2=msgtitl)
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
176 IF(isu1 /= 0 .AND. grbric_id /= 0)grbric_id=0
187 ingr2usr => igrnod(1:ngrnod)%ID
188 isu1=ngr2usr(isu1,ingr2usr,ngrnod)
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)
198 !GRBRIC_ID,GRQUAD_ID,GRTRIA_ID
199 IF(GRBRIC_ID /= 0)THEN
200 INGR2USR => IGRBRIC(1:NGRBRIC)%ID
201 GRBRIC_ID = NGR2USR(GRBRIC_ID,INGR2USR,NGRBRIC)
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)
208 ISU1=GRBRIC_ID !ISU1 outgoing argument used to get nodes in grbrick
212!===CHECK GRBRIC_ID IS PROVIDED TO CALL LATER LECINT > INGRBRIC_DX (automatic gap)
214 !Variable gap (Igap=1) requires a Group of Bricks
215.AND.
IF(IGAP == 1 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)
220 !Constant gap with Gap=0.0 requires a Group of Bricks
221.AND..AND.
IF(IGAP == 1000 GRBRIC_ID == 0 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)
227.AND.
IF(STFAC <= ZERO 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)
233 IF(STFAC == ZERO)STFAC=ONE
237.AND.
IF(ISTIFF == 2 GRBRIC_ID == 0)THEN
238 MSGTITL='group of ale cells(grbric_id) must be
'
239 CALL ANCMSG(MSGID=1115, MSGTYPE=MSGERROR, ANMODE=ANINFO, I1=NOINT, C1=TITR, C2=MSGTITL)
243.OR.
IF(IDEL7N <= -1 IDEL7N >= 3)IDEL7N=0
244 IF(STFAC == ZERO)STFAC=ONE
247 !IF DEFINTER IS CALLED IN A FURTHER VERSION : remove this line
250 IF (STOPT == ZERO) STOPT = EP30
251 IF(BUMULT == ZERO) BUMULT = BMUL0
253 STFAC=STFAC*VREF*VREF ! will be updated in lecint.F
261 FRIGAP(10)=FLOAT(0) !FRIGAP(10) is initialized but used only in engine for storing number of couples candidates
263 FRIGAP(13)=ONE !GAPSCALE
266 FRIGAP(16)=EP30 !GAPMAX
267 FRIGAP(17)=ZERO !STMIN
268 FRIGAP(18)=ZERO !STMAX
270 FRIC_P(1:6) = ZERO !C1..C6
274 IPARI(13) = IS1*10+IS2
275 IPARI(14) = 0 ! tag for collocated scheme
281 IPARI(23) = 4 !MULTIMP
292 IPARI(61) = 0 !IDELKEEP
294 IPARI(83) = GRBRIC_ID
299 !==OUTPUTS USER IDS FOR MAIN/SECONDARY DEFINITION
301 IF(GRBRIC_ID > 0)THEN
302 WRITE(IOUT,6002)ISU3_user !SECONDARY side from grbrick_id
304 WRITE(IOUT,6001)ISU1_user !SECONDARY side from grnod_id
306 WRITE(IOUT,6003) ISU2_user !MAIN side from surf_id
308 WRITE(IOUT,3018)IGAP0,ISTIFF
312 ! ISTIFF=0,1 -> 1 (constant)
313 ! ISTIFF=2 -> 2 (calculated from Vref & scale factor)
317 WRITE(IOUT,3024)-STFAC
319 !automatic constat value (needs VREF to be calculated)
321 WRITE(IOUT,3020)SCALE !scale factor
328 ! IGAP = 0.1000 -> 0 (Constant Gap: DEFAUT = AUTO)
329 ! IGAP=1 -> 1 (variable gap)
344.OR.
IF(IS_AVAILABLE_VISC IS_AVAILABLE_BUMULT)THEN
345 !VISC & BUMULT may be available with old input version
346 WRITE(IOUT,3028)STARTT,STOPT,VISC,BUMULT
348 WRITE(IOUT,3029)STARTT,STOPT
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
'
364 3014 FORMAT(' --- gap ---
' )
365 3015 FORMAT(' --- stiffness ---
' )
367 3017 FORMAT(' TYPE == 18 ale-lagrange coupling
' /)
369 . ' igap flag formulation . . . . . . . . . . .
',I10/,
370 . ' istf flag formulation . . . . . . . . . . .
',I10/)
373 . ' scale factor. . . . . . . . . . . . . . . .
',1PG20.13)
375 . ' reference
velocity. . . . . . . . . . . . .
',1PG20.13)
377 . ' constant user
VALUE . . . . . . . . . . . .
',1PG20.13)
379 . ' automatic constant
VALUE')
381 . ' automatic variable
VALUE')
383 . /' start time. . . . . . . . . . . . . . . . .
',1PG20.13/,
384 . ' stop time . . . . . . . . . . . . . . . . .
',1PG20.13/,
385 . ' critical
damping factor . . . . . . . . . .
',1PG20.13/,
386 . ' sorting factor. . . . . . . . . . . . . . .
',1PG20.13)
388 . /' start time. . . . . . . . . . . . . . . . .
',1PG20.13/,
389 . ' stop time . . . . . . . . . . . . . . . . .
',1PG20.13)
392 . ' node group identifier. . . . . . . . .
',I10)
394 . ' brick group identifier . . . . . . . .
',I10)
396 . ' surface group identifier. . . . . . . .
',I10/)
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)