41 . FBFVEL ,IBFVEL ,IKINE ,IKINE1LAG,
42 . ITAB ,ITABM1 ,IGRNOD ,X0 ,IXR ,
43 . IPART ,IPARTR ,ISKN ,NOM_OPT ,
44 . NIMPDISP ,NIMPVEL ,UNITAB ,LSUBMODEL)
56#include "implicit_f.inc"
66 INTEGER :: NIMPDISP,NIMPVEL
67 INTEGER ,
DIMENSION(*) :: ITAB,ITABM1,IKINE,IKINE1LAG,IPARTR
68 INTEGER ,
DIMENSION(LISKN,*) ,
INTENT(IN) :: ISKN
69 INTEGER ,
DIMENSION(LIPART1,*) ,
INTENT(IN) :: IPART
70 INTEGER ,
DIMENSION(NIXR,*) ,
INTENT(IN) :: IXR
71 INTEGER ,
DIMENSION(LNOPT1,*) ,
INTENT(OUT) :: NOM_OPT
72 INTEGER ,
DIMENSION(NIFV,NFXVEL) ,
INTENT(OUT) :: IBFVEL
73 my_real ,
DIMENSION(LFXVELR,NFXVEL) ,
INTENT(OUT) :: fbfvel
74 TYPE(),
INTENT(IN) :: UNITAB
75 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN) :: x0
76 TYPE (GROUP_) ,
DIMENSION(NGRNOD) ,
INTENT(IN) :: IGRNOD
81 INTEGER IOPT,INUM,NOPT,NFDISP,NFVEL,FGEOD,FGEOV,NIMPDISP_0,LAGMULV
82 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: OPTID
83 CHARACTER(nchartitle) :: MESS
87 DATA mess/'imposed velocity definition
'/
89 INUM = 0 ! init index of IBFVEL,FBFVEL (imposed node counter)
90 IOPT = 0 ! init counter of impdisp, impvel and impacc options
95 CALL HM_OPTION_COUNT('/impdisp
' ,NIMPDISP )
97 CALL HM_OPTION_COUNT('/impdisp/fgeo
',FGEOD)
99 CALL HM_OPTION_COUNT('/impvel
' ,NIMPVEL )
100 CALL HM_OPTION_COUNT('/impvel/fgeo
' ,FGEOV)
101 CALL HM_OPTION_COUNT('/impvel/lagmul
',LAGMULV)
103 NFDISP = NIMPDISP - FGEOD
104 NFVEL = NIMPVEL - FGEOV - LAGMULV
105 NOPT = NFDISP + NFVEL
108 IF (NIMPDISP > 0) THEN
112 . NIMPDISP ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
113 . ITAB ,ITABM1 ,IKINE ,IGRNOD ,NOM_OPT ,
114 . ISKN ,UNITAB ,LSUBMODEL)
118 CALL READ_IMPDISP_FGEO(
119 . FGEOD ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
120 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
121 . IXR ,IPART ,IPARTR ,UNITAB ,LSUBMODEL)
126 ALLOCATE( OPTID(NIMPDISP) )
127 OPTID(1:NIMPDISP) = NOM_OPT(1,1:NIMPDISP)
128 CALL UDOUBLE(OPTID,1,NIMPDISP,MESS,0,ZERO)
131 END IF ! NIMPDISP > 0
137 IF (NIMPVEL > 0) THEN
142 . NIMPVEL ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
143 . ITAB ,ITABM1 ,IKINE ,IKINE1LAG,NOM_OPT ,
144 . IGRNOD ,ISKN ,UNITAB ,LSUBMODEL)
150 CALL READ_IMPVEL_FGEO(
151 . FGEOV ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
152 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
153 . IXR ,IPART ,IPARTR ,UNITAB ,LSUBMODEL)
158 IF (LAGMULV > 0) THEN
159 CALL READ_IMPVEL_LAGMUL(
160 . LAGMULV ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
161 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
162 . IXR ,IPART ,IPARTR ,ISKN ,IKINE ,
168 ALLOCATE( OPTID(NIMPVEL) )
169 OPTID(1:NIMPVEL) = NOM_OPT(1,NIMPDISP_0+1:NIMPVEL+NIMPDISP_0)
170 CALL UDOUBLE(OPTID,1,NIMPVEL,MESS,0,ZERO)
175 NIMPVEL = INUM - NIMPDISP
subroutine hm_read_impvel(fbfvel, ibfvel, ikine, ikine1lag, itab, itabm1, igrnod, x0, ixr, ipart, ipartr, iskn, nom_opt, nimpdisp, nimpvel, unitab, lsubmodel)