47 . V ,ITAB ,ITABM1 ,X ,IKINE ,
48 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
49 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHTHERM,
50 . K ,OFFS ,IKINE1 ,IXS ,IXQ ,
67#include
"implicit_f.inc"
77#include "tabsiz_c.inc"
81 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
82INTEGER IFI,MFI,IDDLEVEL,NCHTHERM,K,OFFS
83 INTEGER NPRW(*), LPRW(*), ITAB(*), ITABM1(*),
84 . IKINE(*), IMERGE(*),ITAGND(*),IKINE1(3*NUMNOD),
87 my_real rwl(nrwlp,*), ms(*), v(3,*), x(3,*),rtrans(ntransf,*)
88 INTEGER NOM_OPT(LNOPT1,*)
90 TYPE () ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
94 INTEGER , ITYP, ITIED, NSL,
96 . iflagunit,sub_id, sub_index,ifunc,ne,kk,nd,k0,nn,nf
98 . dist, fric, diam, xmas, vx, vy, vz, xm1, ym1, zm1,
99 . xn, x1, y1, z1, disn, x2, y2, z2, x3, freq,
alpha, fac_m_r2r,
100 . temp,tstif,fheat,facx,fac_tstif
102 CHARACTER(LEN=NCHARKEY) :: OPT
103 CHARACTER(LEN=NCHARTITLE)::TITR
104 LOGICAL :: IS_AVAILABLE
108 INTEGER USR2SYS, NGR2USR
109 INTEGER,
DIMENSION(:),
POINTER :: INGR2USR
110 DATA MESS/
'STANDARD RIGID WALL DEFINITION '/
117 is_available = .false.
124 DO n = 1+offs, nchtherm+offs
133 . submodel_index = sub_index,
134 . submodel_id = sub_id,
135 . option_titr = titr)
138 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,n),ltitr)
143 IF (unitab%UNIT_ID(j) == uid)
THEN
148 IF (uid /= 0 .AND. iflagunit == 0)
THEN
149 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
150 . i2=uid,i1=nuser,c1=
'RIGID WALL',
156 CALL hm_get_intv(
'slidingflag',itied,is_available,lsubmodel)
157 CALL hm_get_intv(
'NodeSet_ID',igu,is_available,lsubmodel)
158 CALL hm_get_intv(
'excludeNodeSet_ID',igu2,is_available,lsubmodel)
165 CALL hm_get_floatv(
'offset' ,dist ,is_available, lsubmodel, unitab)
166 CALL hm_get_floatv(
'fric' ,fric ,is_available, lsubmodel, unitab)
167 CALL hm_get_floatv(
'Diameter' ,diam ,is_available, lsubmodel, unitab)
180 IF(sub_id /= 0)
CALL subrotpoint(x1,x2,x3,rtrans,sub_id,lsubmodel)
187 CALL hm_get_floatv(
'XH' ,xm1 ,is_available, lsubmodel, unitab)
188 CALL hm_get_floatv(
'YH' ,ym1 ,is_available, lsubmodel, unitab)
189 CALL hm_get_floatv(
'ZH' ,zm1 ,is_available, lsubmodel, unitab)
190 IF (sub_id /= 0)
CALL subrotpoint(xm1,ym1,zm1,rtrans,sub_id,lsubmodel)
193 CALL hm_get_intv(
'fct_IDt' ,ifunc,is_available, lsubmodel)
194 CALL hm_get_floatv(
'Fscale_T' ,temp ,is_available, lsubmodel, unitab)
195 CALL hm_get_floatv(
'Thermalresistance',tstif,is_available, lsubmodel, unitab)
200 rwl(1,n) = xm1-rwl(4,n)
201 rwl(2,n) = ym1-rwl(5,n)
202 rwl(3,n) = zm1-rwl(6,n)
203 xn = sqrt(rwl(1,n)**2+rwl(2,n)**2+rwl(3,n)**2)
206 . i1=nuser,c2=
'PLANE',c1=titr)
208 rwl(1,n) = rwl(1,n)/xn
209 rwl(2,n) = rwl(2,n)/xn
210 rwl(3,n) = rwl(3,n)/xn
219 IF (dist /= zero)
THEN
221 x1 = (x(1,i)-rwl(4,n))*rwl(1,n)
222 y1 = (x(2,i)-rwl(5,n))*rwl(2,n)
223 z1 = (x(3,i)-rwl(6,n))*rwl(3,n)
225 IF (disn >= zero .AND. disn <= dist .AND. i /= msr) lprw(k+i)=1
230 ingr2usr => igrnod(1:ngrnod)%ID
231 igrs = ngr2usr(igu,ingr2usr,ngrnod)
233 DO j = 1,igrnod(igrs)%NENTITY
234 nosys = igrnod(igrs)%ENTITY(j)
236 IF (itab(nosys) == nuser)
THEN
239 . anmode=aninfo_blind_1,
248 ingr2usr => igrnod(1:ngrnod)%ID
249 igrs = ngr2usr(igu2,ingr2usr,ngrnod)
251 DO j = 1,igrnod(igrs)%NENTITY
252 nosys = igrnod(igrs)%ENTITY(j)
260 IF (lprw(k+i) > 0)
THEN
262 IF(itagnd(i) /= 0) cycle
266 IF (iddlevel == 0)
THEN
267 CALL kinset(4,itab(i),ikine(i),1,n+numskw+1,ikine1(i))
272 IF (ns10e > 0 )
CALL remove_nd(nsl,lprw(k+1),itagnd)
276 srwsav = srwsav + 3 * nsl
280 WRITE(iout,1100) n,ityp,itied,nsl
281 WRITE(iout,2001)(rwl(l,n),l=4,6),(rwl(l,n),l=1,3)
282 IF (itied == 2)
WRITE(iout,2101)fric,ifq,freq
285 WRITE(iout,1201) (itab(lprw(i+k)),i=1,nsl)
289 nprw(n+nrwall) = itied
290 nprw(n+2*nrwall) = msr
291 nprw(n+3*nrwall) = ityp
299 DO nd = kk+1,kk+numnod
315 nn = lprw(ixs(2,i) + kk)
316 . + lprw(ixs(3,i) + kk)
317 . + lprw(ixs(4,i) + kk)
318 . + lprw(ixs(5,i) + kk)
320 lprw(k+ne) = i*10 + 1
322 nn = lprw(ixs(4,i) + kk)
323 . + lprw(ixs(5,i) + kk)
324 . + lprw(ixs(8,i) + kk)
325 . + lprw(ixs(9,i) + kk)
327 lprw(k+ne) = i*10 + 2
329 nn = lprw(ixs(6,i) + kk)
330 . + lprw(ixs(7,i) + kk)
331 . + lprw(ixs(8,i) + kk)
332 . + lprw(ixs(9,i) + kk)
334 lprw(k+ne) = i*10 + 3
336 nn = lprw(ixs(2,i) + kk)
337 . + lprw(ixs(3,i) + kk)
338 . + lprw(ixs(6,i) + kk)
339 . + lprw(ixs(7,i) + kk)
341 lprw(k+ne) = i*10 + 4
343 nn = lprw(ixs(3,i) + kk)
344 . + lprw(ixs(4,i) + kk)
345 . + lprw(ixs(7,i) + kk)
346 . + lprw(ixs(8,i) + kk)
348 lprw(k+ne) = i*10 + 5
350 nn = lprw(ixs(2,i) + kk)
351 . + lprw(ixs(5,i) + kk)
352 . + lprw(ixs(6,i) + kk)
353 . + lprw(ixs(9,i) + kk)
355 lprw(k+ne) = i*10 + 6
375 nn = lprw(ixq(2,i) + kk) + lprw(ixq(3,i) + kk)
377 lprw(k+ne) = i*10 + 1
379 nn = lprw(ixq(3,i) + kk) + lprw(ixq(4,i) + kk)
381 lprw(k+ne) = i*10 + 2
383 nn = lprw(ixq(4,i) + kk) + lprw(ixq(5,i) + kk)
385 lprw(k+ne) = i*10 + 3
387 nn = lprw(ixq(5,i) + kk) + lprw(ixq(2,i) + kk)
389 lprw(k+ne) = i*10 + 4
403 facx = one/unitab%FAC_T_WORK
405 IF (tstif == zero)
THEN
407 tstif = one*fac_tstif
410 WRITE(iout,2100) ifunc,temp,tstif
414 nprw(n+3*nrwall)=-ityp
419 IF (ifunc == npc(i))
THEN
447 offs = offs + nchtherm
451 1100
FORMAT(/5x,
'RIGID WALL NUMBER. . . . .',i10
452 . /10x,
'RIGID WALL TYPE . . . . .',i10
453 . /10x,
'TYPE SLIDE/TIED/FRICTION.',i10
454 . /10x,
'NUMBER OF NODES . . . . .',i10)
455 1200
FORMAT(/10x,
'SECONDARY NODES : ')
456 1201
FORMAT(/10x,10i10)
457 2001
FORMAT(/5x,
'INFINITE WALL CHARACTERISTICS',
458 . /10x,
'POINT M . . . . . . . . .',1p3g20.13
459 . /10x,
'NORMAL VECTOR . . . . . .',1p3g20.13)
460 2100
FORMAT(/5x,
'THERMAL CHARACTERISTICS',
461 . /10x,
'TEMPERATURE FUNCTION. . .',i10
462 . /10x,
'TEMPERATURE SCALE FACTOR.',1pg14.4
463 . /10x,
'THERMAL RESISTANCE. . . .',1pg14.4)
464 2101
FORMAT(/5x,
'COULOMB FRICTION CHARACTERISTICS',
465 . /10x,
'FRICTION COEFFICIENT . . .',1pg14.4
466 . /10x,
'FILTRATION FLAG. . . . . .',i10
467 . /10x,
'FILTRATION FACTOR. . . . .',1pg14.4)
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)