45 . NFVEL ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
46 . ITAB ,ITABM1 ,IKINE ,IKINE1LAG,NOM_OPT ,
47 . IGRNOD ,ISKN ,UNITAB ,LSUBMODEL)
60#include "implicit_f.inc"
72 INTEGER ,
INTENT(IN) :: NFVEL
73 INTEGER ,
INTENT(INOUT) :: INUM,IOPT
74 INTEGER ,
DIMENSION(*) :: ITAB,ITABM1,IKINE,IKINE1LAG
75 INTEGER ,
DIMENSION(LISKN,*) ,
INTENT(IN) :: ISKN
76 INTEGER ,
DIMENSION(LNOPT1,*) ,
INTENT(OUT) :: NOM_OPT
77 INTEGER ,
DIMENSION(NIFV,NFXVEL) ,
INTENT(OUT) :: IBFVEL
78 my_real ,
DIMENSION(LFXVELR,NFXVEL) ,
INTENT(OUT) :: fbfvel
79 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
80 TYPE (GROUP_) ,
DIMENSION(NGRNOD) ,
INTENT(IN) :: IGRNOD
85 INTEGER I,J,JJ,NN,IVEL,IDIS,INOD,NODID,NOD,NOSKEW,NOFRAME,SENS_ID,
86 . OPTID,SYS_TYPE,UID,FCT_ID,SKEW_ID,FRAME_ID,GRN,IGS,LEN,
87 . ILAGM,FGEO,ICOOR,IUNIT,FLAGUNIT,SUBID,NOSUB,NN_FM(3)
88 INTEGER ,
DIMENSION(NFXVEL) :: NODENUM
89 INTEGER ,
DIMENSION(3*NUMNOD) :: IKINE1
90 my_real :: YSCALE,TSTART,TSTOP,XSCALE,FSCAL_T,FSCAL_V
91 CHARACTER(LEN=2) :: X,Y,Z,XX,YY,ZZ
92 CHARACTER(LEN=NCHARFIELD) :: XYZ
93 CHARACTER(LEN=NCHARKEY) :: KEY
94 CHARACTER(LEN=NCHARTITLE) :: TITR,MESS
99 INTEGER NODGRNR5,USR2SYS
100 EXTERNAL NODGRNR5,USR2SYS
110 DATA mess/
'IMPOSED VELOCITY DEFINITION '/
112 is_available = .false.
130 . submodel_id = subid,
131 . submodel_index = nosub,
132 . option_titr = titr,
135 IF (key(1:4) ==
'FGEO') cycle
136 IF (key(1:6) ==
'LAGMUL') cycle
139 nom_opt(1,iopt) = optid
140 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,iopt),ltitr)
144 icoor = 0 ! icoor = 1 => axial coordinates
154 CALL hm_get_intv(
'rad_system_input_type' ,sys_type ,is_available,lsubmodel)
156 CALL hm_get_intv (
'curveid' ,fct_id ,is_available,lsubmodel)
158 CALL hm_get_intv (
'skew_ID' ,skew_id ,is_available,lsubmodel)
159 CALL hm_get_intv (
'rad_sensor_id' ,sens_id ,is_available,lsubmodel)
160 CALL hm_get_intv (
'entityid' ,grn ,is_available,lsubmodel)
161 CALL hm_get_intv (
'frame_ID' ,frame_id ,is_available,lsubmodel)
162 CALL hm_get_intv (
'rad_icoor' ,icoor ,is_available,lsubmodel)
164 CALL hm_get_floatv(
'xscale' ,xscale ,is_available,lsubmodel,unitab)
165 CALL hm_get_floatv(
'magnitude' ,yscale ,is_available,lsubmodel,unitab)
166 CALL hm_get_floatv(
'rad_tstart' ,tstart ,is_available,lsubmodel,unitab)
167 CALL hm_get_floatv(
'rad_tstop' ,tstop ,is_available,lsubmodel,unitab)
173 DO iunit=1,unitab%NUNITS
174 IF (unitab%UNIT_ID(iunit) == uid)
THEN
179 IF (uid > 0 .and. flagunit == 0)
THEN
180 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
193 IF ((skew_id == 0).AND.(frame_id == 0).AND.(subid /= 0))
THEN
194 skew_id = lsubmodel(nosub)%SKEW
197 IF ((sys_type == 0).OR.(sys_type == 1))
THEN
199 IF (skew_id == iskn(4,j+1))
THEN
204 IF (skew_id > 0 .and. noskew == 0)
205 .
CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
208 . c1=
'IMPOSED VELOCITY',
209 . c2=
'IMPOSED VELOCITY',
212 ELSEIF (sys_type == 2)
THEN
213 jj = (numskw+1) +
min(1,nspcond)*numsph+1 +
nsubmod
216 IF (frame_id == iskn(4,jj))
THEN
218 nn_fm(1:3) = iskn(1:3,jj)
222 IF (frame_id > 0 .and. noframe == 0)
223 .
CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,
226 . c1=
'IMPOSED VELOCITY',
227 . c2=
'IMPOSED VELOCITY',
232 IF (noskew > 0 .AND. noframe > 0)
THEN
233 CALL ancmsg(msgid=491,anmode=aninfo_blind_1,
246 IF (xscale == zero) xscale = one * fscal_t
247 xscale = one / xscale
248 IF (yscale == zero) yscale = one * fscal_v
249 IF (tstop == zero) tstop = infinity
251 IF (xyz(1:2) == xx .OR. xyz(1:2) == yy .OR. xyz(1:2) == zz)
THEN
258 nn = nodgrnr5(grn,igs,nodenum,igrnod,itabm1,mess)
263 ibfvel(1, inum) = nodenum(j)
265 ibfvel(3 ,inum) = fct_id
266 ibfvel(4 ,inum) = sens_id
269 ibfvel(7 ,inum) = idis
270 ibfvel(8 ,inum) = ilagm
271 ibfvel(9 ,inum) = noframe
272 ibfvel(10,inum) = icoor
274 ibfvel(12,inum) = iopt
275 ibfvel(13,inum) = fgeo
278 fbfvel(1,inum) = yscale
279 fbfvel(2,inum) = tstart
280 fbfvel(3,inum) = tstop
281 fbfvel(4,inum) = zero
282 fbfvel(5,inum) = xscale
283 fbfvel(6,inum) = zero
285 inod = iabs(nodenum(j))
290 IF (noframe > 0)
THEN
291 IF(xyz(1:2) == xx)
THEN
293 CALL kinset(16,nodid,ikine(inod),4,noframe,ikine1(inod))
294 ELSEIF(xyz(1:2) == yy)
THEN
296 CALL kinset(16,nodid,ikine(inod),5,noframe,ikine1(inod))
297 ELSEIF(xyz(1:2) == zz)
THEN
299 CALL kinset(16,nodid,ikine(inod),6,noframe,ikine1(inod))
300 ELSEIF (xyz(1:1) == x)
THEN
302 CALL kinset(16,nodid,ikine(inod),1,noframe,ikine1(inod))
303 ELSEIF(xyz(1:1) == y)
THEN
305 CALL kinset(16,nodid,ikine(inod),2,noframe,ikine1(inod))
306 ELSEIF(xyz(1:1) == z)
THEN
308 CALL kinset(16,nodid,ikine(inod),3,noframe,ikine1(inod))
310 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo,
316 WRITE (iout, 3000) nodid,noskew,frame_id,xyz(1:len),fct_id,sens_id,
317 . yscale,one/xscale,tstart,tstop,icoor
322 IF (inod==nn_fm(1) .OR. inod==nn_fm(2) .OR. inod==nn_fm(3))
THEN
323 CALL ancmsg(msgid=3091, msgtype=msgerror, anmode=aninfo,
331 IF(xyz(1:2) == xx)
THEN
332 ibfvel(2,inum) = 4 + noskew*10
333 CALL kinset(16,nodid,ikine(inod),4,noskew,ikine1(inod))
334 ELSEIF(xyz(1:2) == yy)
THEN
335 ibfvel(2,inum) = 5 + noskew*10
336 CALL kinset(16,nodid,ikine(inod),5,noskew,ikine1(inod))
337 ELSEIF(xyz(1:2) == zz)
THEN
338 ibfvel(2,inum) = 6 + noskew*10
339 CALL kinset(16,nodid,ikine(inod),6,noskew,ikine1(inod))
340 ELSEIF (xyz(1:1) == x)
THEN
341 ibfvel(2,inum)=1 + noskew*10
342 CALL kinset(16,nodid,ikine(inod),1,noskew,ikine1(inod))
343 ELSEIF(xyz(1:1) == y)
THEN
344 ibfvel(2,inum) = 2 + noskew*10
345 CALL kinset(16,nodid,ikine(inod),2,noskew,ikine1(inod))
346 ELSEIF(xyz(1:1) == z)
THEN
347 ibfvel(2,inum) = 3 + noskew*10
348 CALL kinset(16,nodid,ikine(inod),3,noskew,ikine1(inod))
350 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo,
356 WRITE (iout,4000) nodid,iskn(4,noskew),0,xyz(1:len),fct_id,sens_id,
357 . yscale,one/xscale,tstart,tstop,icoor
370 .
' IMPOSED VELOCITIES '/
371 .
' ------------------- '/
372 .
' NODE SKEW FRAME DIRECTION LOAD_CURVE',
373 .
' SENSOR FSCALE ASCALE',
374 .
' START_TIME STOP_TIME',
375 .
' COORDINATE SYSTEM')
378 .
' IMPOSED VELOCITIES BY LAGRANGE MULTIPLIERS '/
379 .
' ------------------------------------------ '/
380 .
' NODE SKEW FRAME DIRECTION LOAD_CURVE',
381 .
' SENSOR FSCALE ASCALE',
382 .
' START_TIME STOP_TIME',
383 .
' COORDINATE SYSTEM')
384 3000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
385 . 2x,1pg20.13,2x,1pg20.13,2x,g20.13,2x,g20.13,16x,i10)
386 4000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
387 . 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)