45 . NLAGMUL ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
46 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
47 . IXR ,IPART ,IPARTR ,ISKN ,IKINE ,
58 use element_mod ,
only : nixr
62#include "implicit_f.inc"
75 INTEGER ,
INTENT(IN ) :: NLAGMUL
76 INTEGER ,
INTENT(INOUT) :: INUM,IOPT
77 INTEGER ,
DIMENSION(*) :: ITAB,ITABM1,IPARTR,IKINE
78 INTEGER ,
DIMENSION(LIPART1,*) :: IPART
79 INTEGER ,
DIMENSION(NIXR,*) :: IXR
80 INTEGER ,
DIMENSION(NIFV,NFXVEL) :: IBFVEL
81 INTEGER ,
DIMENSION(LISKN,*),
INTENT(IN) :: ISKN
82 INTEGER ,
DIMENSION(LNOPT1,*) ,
INTENT(OUT) :: NOM_OPT
83 my_real ,
DIMENSION(LFXVELR,NFXVEL) :: fbfvel
84 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN):: x0
85 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
86 TYPE (GROUP_) ,
DIMENSION(NGRNOD) ,
INTENT(IN) :: IGRNOD
91 INTEGER J,NOD,NUM0,ILAGMUL,IUN,NNOD,NOFRAME,INOD,NOSKEW,
92 . SENS_ID,OPTID,UID,FCT1_ID,,GRNOD_ID,IGS,LEN,
94 INTEGER ,
DIMENSION(NUMNOD) :: NWORK
95 INTEGER ,
DIMENSION(3*NUMNOD) :: IKINE1
96 my_real :: XSCALE,YSCALE,FSCAL_T,FSCAL_V,
98 CHARACTER(LEN=NCHARKEY) :: KEY
99 CHARACTER(LEN=NCHARFIELD) :: XYZ
100 CHARACTER(LEN=NCHARTITLE) :: TITR,MESS
101 CHARACTER(LEN=2) :: X,Y,Z,XX,YY,ZZ
106 INTEGER NODGRNR5,USR2SYS
107 EXTERNAL NODGRNR5,USR2SYS
119 DATA mess/
'IMPOSED VELOCITY DEFINITION '/
121 is_available = .false.
131 DO ilagmul = 1,nlagmul
136 . option_titr = titr,
141 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,iopt),ltitr)
155 CALL hm_get_intv (
'curveid' ,fct1_id,is_available,lsubmodel)
158 CALL hm_get_intv (
'entityid' ,grnod_id ,is_available,lsubmodel)
160 CALL hm_get_floatv(
'xscale' ,xscale ,is_available,lsubmodel,unitab)
161 CALL hm_get_floatv(
'magnitude' ,yscale ,is_available,lsubmodel,unitab)
166 IF (skew_id == iskn(4,j+1))
THEN
171 IF (skew_id > 0 .and. noskew == 0)
172 .
CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
175 . c1=
'IMPOSED VELOCITY',
176 . c2=
'IMPOSED VELOCITY',
181 IF (xscale == zero)
THEN
185 IF (yscale == zero)
THEN
190 IF (xyz(1:2) == xx .OR. xyz(1:2) == yy .OR. xyz(1:2) == zz)
THEN
195 nnod = nodgrnr5(grnod_id ,igs ,nwork,igrnod ,itabm1 ,mess )
199 lag_ncf = lag_ncf + nnod
200 lag_nhf = lag_nhf + nnod
202 lag_nkf = lag_nkf + nnod
204 lag_nkf = lag_nkf + nnod*3
211 inod = iabs(nwork(j))
214 ibfvel(1 ,inum) = nwork(j)
216 ibfvel(3 ,inum) = fct1_id
217 ibfvel(4 ,inum) = sens_id
220 ibfvel(7 ,inum) = idis
221 ibfvel(8 ,inum) = ilagm
222 ibfvel(9 ,inum) = noframe
223 ibfvel(10,inum) = icoor
225 ibfvel(12,inum) = iopt
231 fbfvel(1,inum) = yscale
232 fbfvel(2,inum) = tstart
233 fbfvel(3,inum) = tstop
234 fbfvel(4,inum) = zero
235 fbfvel(5,inum) = one/xscale
236 fbfvel(6,inum) = zero
238 IF(xyz(1:2) == xx)
THEN
239 ibfvel(2,inum) = 4 + noskew*10
240 CALL kinset(16,nod,ikine(inod),4,noskew,ikine1(inod))
241 ELSEIF(xyz(1:2) == yy)
THEN
242 ibfvel(2,inum) = 5 + noskew*10
244 ELSEIF(xyz(1:2) == zz)
THEN
245 ibfvel(2,inum) = 6 + noskew*10
246 CALL kinset(16,nod,ikine(inod),6,noskew,ikine1(inod))
247 ELSEIF (xyz(1:1) == x)
THEN
248 ibfvel(2,inum)=1 + noskew*10
249 CALL kinset(16,nod,ikine(inod),1,noskew,ikine1(inod))
250 ELSEIF(xyz(1:1) == y)
THEN
251 ibfvel(2,inum) = 2 + noskew*10
252 CALL kinset(16,nod,ikine(inod),2,noskew,ikine1(inod))
253 ELSEIF(xyz(1:1) == z)
THEN
254 ibfvel(2,inum) = 3 + noskew*10
255 CALL kinset(16,nod,ikine(inod),3,noskew,ikine1(inod))
257 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo,
264 WRITE (iout,4000) nod,iskn(4,noskew),0,xyz(1:len),fct1_id,sens_id,
265 . yscale,xscale,tstart,tstop,0
271 .
' IMPOSED VELOCITIES BY LAGRANGE MULTIPLIERS'/
272 .
' ------------------------------------------'/
273 .
' NODE SKEW FRAME DIRECTION LOAD_CURVE',
274 .
' SENSOR FSCALE ASCALE')
276 4000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
277 . 2x,1pg20.13,2x,1pg20.13,2x,g20.13,2x,g20.13,16x,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)