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,IBAG,IDEL7N,IGAP,IGAP0,NTYP,INACTI,
88 . IDELKEEP,ISU1_user,ISU2_user,ISU3_user,ISTIFF
89 my_real GAP,VISC,FRIC,VREF,SCALE
90 CHARACTER(LEN=NCHARTITLE)::MSGTITL
91 INTEGER,
DIMENSION(:),
POINTER :: INGR2USR
92 INTEGER,
EXTERNAL :: NGR2USR
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)
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)
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
162!===check structure identifier :isu2=surf_id
164 msgtitl=
'LAGRANGIAN SURFACE IS EMPTY (SURF_ID)'
165 CALL ancmsg(msgid=1115,msgtype
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
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)
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)
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)
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)
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)
233 IF(stfac == zero)stfac=one
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)
243 IF(idel7n <= -1 .OR. idel7n >= 3)idel7n=0
244 IF(stfac == zero)stfac=one
250 IF (stopt == zero) stopt = ep30
251 IF(bumult == zero) bumult = bmul0
253 stfac=stfac*vref*vref
274 ipari(13) = is1*10+is2
294 ipari(83) = grbric_id
301 IF(grbric_id > 0)
THEN
302 WRITE(iout,6002)isu3_user
304 WRITE(iout,6001)isu1_user
306 WRITE(iout,6003) isu2_user
308 WRITE(iout,3018)igap0,istiff
317 WRITE(iout,3024)-stfac
321 WRITE(iout,3020)scale
344 IF(is_available_visc .OR. is_available_bumult)
THEN
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)