45 . NLAGMUL ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
46 . ITAB ,ITABM1 ,IGRNOD ,NOM_OPT ,X0 ,
47 . IXR ,IPART ,IPARTR ,ISKN ,IKINE ,
61#include "implicit_f.inc"
74 INTEGER ,
INTENT(IN ) :: NLAGMUL
75 INTEGER ,
INTENT(INOUT) :: INUM,IOPT
76 INTEGER ,
DIMENSION(*) :: ITAB,ITABM1,IPARTR,IKINE
77 INTEGER ,
DIMENSION(LIPART1,*) :: IPART
78 INTEGER ,
DIMENSION(NIXR,*) :: IXR
79 INTEGER ,
DIMENSION(NIFV,NFXVEL) :: IBFVEL
80 INTEGER ,
DIMENSION(LISKN,*),
INTENT(IN) :: ISKN
81 INTEGER ,
DIMENSION(LNOPT1,*) ,
INTENT(OUT) :: NOM_OPT
82 my_real ,
DIMENSION(LFXVELR,NFXVEL) :: fbfvel
83 my_real ,
DIMENSION(3,NUMNOD) ,
INTENT(IN):: x0
84 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
85 TYPE (
group_) ,
DIMENSION(NGRNOD) ,
INTENT(IN) :: igrnod
90 INTEGER I,J,K,N,N1,N2,NOD,NUM0,ILAGMUL,IUN,JPART,NNOD,NOFRAME,INOD,NOSKEW
91,FCT2_ID,ILAGM,GRNOD_ID,IGS,LEN,
92 . LAGMUL,IDIS,ICOOR,DISTRIBUTION,SKEW_ID
93 INTEGER ,
DIMENSION(NUMNOD) :: NOD1,NOD2,NWORK
94 INTEGER ,
DIMENSION(3*NUMNOD) :: IKINE1
95 my_real :: XSCALE,YSCALE,FSCAL_T,,T0,DMIN,DIST,
96 . XI,YI,ZI,XF,YF,ZF,TSTART,TSTOP
97 CHARACTER(LEN=NCHARKEY) :: KEY
98 CHARACTER(LEN=NCHARFIELD) :: XYZ
99 CHARACTER(LEN=NCHARTITLE) :: TITR,MESS
100 CHARACTER(LEN=2) :: X,Y,Z,XX,YY,ZZ
105 INTEGER NODGRNR5,USR2SYS
106 EXTERNAL NODGRNR5,USR2SYS
118 DATA mess/
'IMPOSED VELOCITY DEFINITION '/
120 is_available = .false.
130 DO ILAGMUL = 1,NLAGMUL
132 CALL HM_OPTION_READ_KEY(LSUBMODEL,
135 . OPTION_TITR = TITR,
139 NOM_OPT(1,IOPT) = OPTID
140 CALL FRETITL(TITR,NOM_OPT(LNOPT1-LTITR+1,IOPT),LTITR)
154 CALL HM_GET_INTV ('curveid
' ,FCT1_ID,IS_AVAILABLE,LSUBMODEL)
155 CALL HM_GET_STRING('rad_dir
' ,XYZ ,ncharfield,IS_AVAILABLE)
156 CALL HM_GET_INTV ('inputsystem
' ,SKEW_ID,IS_AVAILABLE,LSUBMODEL)
157 CALL HM_GET_INTV ('entityid
' ,GRNOD_ID ,IS_AVAILABLE,LSUBMODEL)
159 CALL HM_GET_FLOATV('xscale
' ,XSCALE ,IS_AVAILABLE,LSUBMODEL,UNITAB)
160 CALL HM_GET_FLOATV('magnitude
' ,YSCALE ,IS_AVAILABLE,LSUBMODEL,UNITAB)
164 DO J=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
165 IF (SKEW_ID == ISKN(4,J+1)) THEN
170.and.
IF (SKEW_ID > 0 NOSKEW == 0)
171 . CALL ANCMSG(MSGID=137,ANMODE=ANINFO,MSGTYPE=MSGERROR,
174 . C1='imposed velocity
',
175 . C2='imposed velocity
',
180 IF (XSCALE == ZERO) THEN
181 CALL HM_GET_FLOATV_DIM('xscale
' ,FSCAL_T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
184 IF (YSCALE == ZERO) THEN
185 CALL HM_GET_FLOATV_DIM('magnitude' ,fscal_v ,is_available,lsubmodel,unitab)
189 IF (xyz(1:2) == xx .OR. xyz(1:2) == yy .OR. xyz(1:2) == zz)
THEN
194 nnod = nodgrnr5(grnod_id ,igs ,nwork,igrnod ,itabm1 ,mess )
198 lag_ncf = lag_ncf + nnod
199 lag_nhf = lag_nhf + nnod
201 lag_nkf = lag_nkf + nnod
203 lag_nkf = lag_nkf + nnod*3
210 inod = iabs(nwork(j))
213 ibfvel(1 ,inum) = nwork(j)
215 ibfvel(3 ,inum) = fct1_id
216 ibfvel(4 ,inum) = sens_id
219 ibfvel(7 ,inum) = idis
220 ibfvel(8 ,inum) = ilagm
221 ibfvel(9 ,inum) = noframe
222 ibfvel(10,inum) = icoor
224 ibfvel(12,inum) = iopt
230 fbfvel(1,inum) = yscale
231 fbfvel(2,inum) = tstart
232 fbfvel(3,inum) = tstop
233 fbfvel(4,inum) = zero
234 fbfvel(5,inum) = one/xscale
235 fbfvel(6,inum) = zero
237 IF(xyz(1:2) == xx)
THEN
238 ibfvel(2,inum) = 4 + noskew*10
239 CALL kinset(16,nod,ikine(inod),4,noskew,ikine1(inod))
240 ELSEIF(xyz(1:2) == yy)
THEN
241 ibfvel(2,inum) = 5 + noskew*10
242 CALL kinset(16,nod,ikine(inod),5,noskew,ikine1(inod))
243 ELSEIF(xyz(1:2) == zz)
THEN
244 ibfvel(2,inum) = 6 + noskew*10
245 CALL kinset(16,nod,ikine(inod),6,noskew,ikine1(inod))
246 ELSEIF (xyz(1:1) == x)
THEN
247 ibfvel(2,inum)=1 + noskew*10
248 CALL kinset(16,nod,ikine(inod),1,noskew,ikine1(inod))
249 ELSEIF(xyz(1:1) == y)
THEN
250 ibfvel(2,inum) = 2 + noskew*10
251 CALL kinset(16,nod,ikine(inod),2,noskew,ikine1
252 ELSEIF(xyz(1:1) == z)
THEN
253 ibfvel(2,inum) = 3 + noskew*10
254 CALL kinset(16,nod,ikine(inod),3,noskew,ikine1(inod))
256 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo
263 WRITE (iout,4000) nod,iskn(4,noskew),0,xyz(1:len),fct1_id,sens_id,
264 . yscale,xscale,tstart,tstop,0
270 .
' IMPOSED VELOCITIES BY LAGRANGE MULTIPLIERS'/
271 .
' ------------------------------------------'/
272 .
' NODE SKEW FRAME DIRECTION LOAD_CURVE',
273 .
' SENSOR FSCALE ASCALE')
275 4000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
276 . 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)