43 1 INTBUF_FRIC_TAB,NPFRICORTH,IGRPART ,IPART ,PFRICORTH ,
44 2 IREPFORTH ,ISKN ,PHIFORTH ,VFORTH ,SKEW ,
45 3 IFLAG ,TAGPRT_FRIC ,RTRANS ,LSUBMODEL ,UNITAB )
61#include "implicit_f.inc"
73 INTEGER IFLAG ,NPFRICORTH
74 INTEGER IPART(LIPART1,*) ,PFRICORTH(*),IREPFORTH(*),TAGPRT_FRIC(*),
78 . phiforth(*) ,vforth(3,*) ,skew(lskew,*) ,rtrans(ntransf,*)
81 TYPE(intbuf_fric_struct_) INTBUF_FRIC_TAB(*)
83 TYPE (GROUP_) ,
DIMENSION(NGRPART) :: IGRPART
88 INTEGER NIF ,NIN ,ISK ,IERRR ,IREP ,NOINTFORTH ,IDSK ,
89 . FLAGP ,FLAGGRP ,GRPART ,IDPART ,N , ,IDTGRS ,IPL ,J ,IP ,
92 CHARACTER(LEN=NCHARTITLE) :: TITR
98 is_available = .false.
104 IF(iflag==1)
WRITE(iout,1000)
115 DO nin=1,nfric_orient
121 . option_id = nointforth,
122 . submodel_id = sub_id,
123 . option_titr = titr)
130 WRITE(iout,1500) nointforth, trim(titr)
135 CALL hm_get_intv(
'n_orient',ninput,is_available,lsubmodel)
144 CALL HM_GET_INT_ARRAY_INDEX('iorth
',IREP,NL,IS_AVAILABLE,LSUBMODEL)
148 CALL HM_GET_FLOAT_ARRAY_INDEX('vx
',VX,NL,IS_AVAILABLE,LSUBMODEL,UNITAB)
149 CALL HM_GET_FLOAT_ARRAY_INDEX('vy
',VY,NL,IS_AVAILABLE,LSUBMODEL,UNITAB)
150 CALL HM_GET_FLOAT_ARRAY_INDEX('vz
',VZ,NL,IS_AVAILABLE,LSUBMODEL,UNITAB)
151 CALL HM_GET_FLOAT_ARRAY_INDEX('phi
',PHI,NL,IS_AVAILABLE,LSUBMODEL,UNITAB)
154 . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
163 IF(IDPART == IPART(4,N))THEN
171 CALL ANCMSG(MSGID=1642,
173 . ANMODE=ANINFO_BLIND_1,
186 + NGRBRIC+NGRQUAD+NGRSHEL+NGRSH3N+NGRTRUS+NGRBEAM+NGRSPRI
188 IF (IGRPART(N)%ID == GRPART) THEN
194 IF(FLAGGRP == 0) THEN
195 CALL ANCMSG(MSGID=1642,
197 . ANMODE=ANINFO_BLIND_1,
209 AN=SQRT(VX*VX+VY*VY+VZ*VZ)
223 DO J=0,NUMSKW+NSUBMOD
224 IF(IDSK == ISKN(4,J+1)) THEN
231 CALL ANCMSG(MSGID=184,
234 . C1='friction orientation part
',
236 . C2='friction orientation part
',
247 IPG = TAGPRT_FRIC(IP)
250 CALL FRICTION_PARTS_SEARCH (
251 . IPG,INTBUF_FRIC_TAB(NIF)%S_TABPARTS_FRIC,
252 . INTBUF_FRIC_TAB(NIF)%TABPARTS_FRIC,IPL )
254 NPFRICORTH = NPFRICORTH + 1
256 PFRICORTH(IP) = NPFRICORTH
257 PHIFORTH(NPFRICORTH) = PHI
258 IREPFORTH(NPFRICORTH) = IREP
260 VFORTH(1,NPFRICORTH) = VX
261 VFORTH(2,NPFRICORTH) = VY
262 VFORTH(3,NPFRICORTH) = VZ
264 VFORTH(1,NPFRICORTH) = SKEW(1,ISK)
265 VFORTH(2,NPFRICORTH) = SKEW(2,ISK)
266 VFORTH(3,NPFRICORTH) = SKEW(3,ISK)
274 WRITE(IOUT,1501) IDPART
276 WRITE(IOUT,1503) IREP,VX,VY,VZ
278 WRITE(IOUT,1504) IREP,IDSK
284 DO J=1,IGRPART(IDTGRS)%NENTITY
285 IP=IGRPART(IDTGRS)%ENTITY(J)
286 IPG = TAGPRT_FRIC(IP)
289 CALL FRICTION_PARTS_SEARCH (
290 . IPG,INTBUF_FRIC_TAB(NIF)%S_TABPARTS_FRIC,
291 . INTBUF_FRIC_TAB(NIF)%TABPARTS_FRIC,IPL )
293 NPFRICORTH = NPFRICORTH + 1
295 PFRICORTH(IP) = NPFRICORTH
296 PHIFORTH(NPFRICORTH) = PHI
297 IREPFORTH(NPFRICORTH) = IREP
299 VFORTH(1,NPFRICORTH) = VX
300 VFORTH(2,NPFRICORTH) = VY
301 VFORTH(3,NPFRICORTH) = VZ
303 VFORTH(1,NPFRICORTH) = SKEW(1,ISK)
304 VFORTH(2,NPFRICORTH) = SKEW(2,ISK)
305 VFORTH(3,NPFRICORTH) = SKEW(3,ISK)
313 WRITE(IOUT,1502) GRPART
315 WRITE(IOUT,1503) IREP,VX,VY,VZ
317 WRITE(IOUT,1504) IREP,IDSK
324 ENDDO !NIN=1,NFRIC_ORIENT
329 1000 FORMAT( /1X,' friction orientations
' /
330 . 1X,' --------------
'// )
332 1500 FORMAT(/1X,' friction orientations card number :
',I10,1X,A/
333 . 1X,' -------------------------------
'/)
335 . ' part . . . . . . . . . . . . . . . . . .
',I10)
337 . ' gr_part . . . . . . . . . . . . . . . . .
',I10)
339 . ' local ortothropy system flag. . . . . . =
',I10/,
340 . ' x component of dir 1 of orthotropy. . . =
',1PG20.13/,
341 . ' y component of dir 1 of orthotropy. . . =
',1PG20.13/,
342 . ' z component of dir 1 of orthotropy. . . =
',1PG20.13/)
344 . ' local ortothropy system flag. . . . . . =
',I10/,
345 . ' skew of
the first orthotropy direction. =
',I10/)
subroutine hm_read_friction_orientations(intbuf_fric_tab, npfricorth, igrpart, ipart, pfricorth, irepforth, iskn, phiforth, vforth, skew, iflag, tagprt_fric, rtrans, lsubmodel, unitab)