44 . NDISP ,INUM ,IOPT ,FBFVEL ,IBFVEL ,
45 . ITAB ,ITABM1 ,IKINE ,IGRNOD ,NOM_OPT ,
46 . ISKN ,UNITAB ,LSUBMODEL)
60#include
"implicit_f.inc"
72 INTEGER ,
INTENT(IN) :: NDISP
73 INTEGER ,
INTENT(INOUT) :: INUM,IOPT
74 INTEGER ,
DIMENSION(*) :: ITAB,ITABM1,IKINE
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
81 TYPE (),
DIMENSION(*) ,
INTENT(IN) :: LSUBMODEL
85 INTEGER I,IDISP,NN,IDIS,INOD,NODID,NOSKEW,NOFRAME,LEN,
86 . IUNIT,FLAGUNIT,SENS_ID,OPTID,UID,SKEW_ID,FCT_ID,GRN_ID,IGS,
87 . IFGEO,ICOOR,ILAGM,SUBID,NOSUB,SYS_TYPE,FRAME_ID,J,JJ,NN_FM(3)
88 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: NODENUM
89 INTEGER ,
DIMENSION(:),
ALLOCATABLE :: IKINE1
90 my_real :: YSCALE,TSTART,TSTOP,XSCALE,FSCAL_T,FSCAL_L
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
110 DATA mess/
'IMPOSED DISPLACEMENT DEFINITION '/
112 CALL my_alloc(ikine1,3*numnod)
113 CALL my_alloc(nodenum,nfxvel)
115 is_available = .false.
133 . submodel_id = subid,
134 . submodel_index = nosub,
135 . option_titr = titr,
138 IF (key(1:4) ==
'FGEO') cycle
141 nom_opt(1,iopt) = optid
142 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,iopt),ltitr)
155 CALL hm_get_intv(
'rad_system_input_type' ,sys_type ,is_available
156 CALL hm_get_intv (
'curveid' ,fct_id ,is_available,lsubmodel)
159 CALL hm_get_intv (
'rad_sensor_id' ,sens_id ,is_available,lsubmodel)
160 CALL hm_get_intv (
'entityid' ,grn_id ,is_available,lsubmodel)
161 CALL hm_get_intv (
'rad_icoor' ,icoor ,is_available,lsubmodel)
162 CALL hm_get_intv (
'skew_ID' ,skew_id ,is_available,lsubmodel)
163 CALL hm_get_intv (
'frame_ID' ,frame_id ,is_available,lsubmodel)
164 IF (sys_type /= 2)
CALL hm_get_intv(
'inputsystem',skew_id ,is_available,lsubmodel)
166 CALL hm_get_floatv(
'xscale' ,xscale ,is_available,lsubmodel,unitab)
167 CALL hm_get_floatv(
'magnitude' ,yscale ,is_available,lsubmodel,unitab)
168 CALL hm_get_floatv(
'rad_tstart' ,tstart ,is_available,lsubmodel,unitab)
169 CALL hm_get_floatv(
'rad_tstop' ,tstop ,is_available,lsubmodel,unitab)
171 IF (xyz(1:2) == xx .OR. xyz(1:2) == yy .OR. xyz(1:2) == zz) len = 2
176 DO iunit=1,unitab%NUNITS
177 IF (unitab%UNIT_ID(iunit) == uid)
THEN
182 IF (uid > 0 .and. flagunit == 0)
THEN
183 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
193 IF ((skew_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 DISPLACEMENT',
209 . c2=
'IMPOSED DISPLACEMENT',
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 DISPLACEMENT',
227 . c2=
'IMPOSED DISPLACEMENT',
237 IF (xscale == zero) xscale = one * fscal_t
238 xscale = one / xscale
239 IF (yscale == zero) yscale = one * fscal_l
243 IF (tstop == zero) tstop = infinity
247 nn = nodgrnr5(grn_id,igs,nodenum,igrnod,itabm1,mess)
251 ibfvel(1, inum) = nodenum(i)
253 ibfvel(3 ,inum) = fct_id
254 ibfvel(4 ,inum) = sens_id
257 ibfvel(7 ,inum) = idis
258 ibfvel(8 ,inum) = ilagm
259 ibfvel(9 ,inum) = noframe
260 ibfvel(10,inum) = icoor
262 ibfvel(12,inum) = iopt
263 ibfvel(13,inum) = ifgeo
266 fbfvel(1,inum) = yscale
267 fbfvel(2,inum) = tstart
269 fbfvel(4,inum) = zero
270 fbfvel(5,inum) = xscale
271 fbfvel(6,inum) = zero
273 inod = iabs(nodenum(i))
279 IF (noframe > 0)
THEN
280 IF(xyz(1:2) == xx)
THEN
282 CALL kinset(16,nodid,ikine(inod),4,noframe,ikine1(inod))
283 ELSEIF(xyz(1:2) == yy)
THEN
285 CALL kinset(16,nodid,ikine(inod),5,noframe,ikine1(inod))
286 ELSEIF(xyz(1:2) == zz)
THEN
288 CALL kinset(16,nodid,ikine(inod),6,noframe,ikine1(inod))
289 ELSEIF (xyz(1:1) == x)
THEN
291 CALL kinset(16,nodid,ikine(inod),1,noframe,ikine1(inod))
292 ELSEIF(xyz(1:1) == y)
THEN
294 CALL kinset(16,nodid,ikine(inod),2,noframe,ikine1(inod))
295 ELSEIF(xyz(1:1) == z)
THEN
297 CALL kinset(16,nodid,ikine(inod),3,noframe,ikine1(inod))
299 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo,
305 WRITE (iout, 3000) nodid,noskew,frame_id,xyz(1:len),fct_id,sens_id,
306 . yscale,one/xscale,tstart,tstop,icoor
310 IF (inod==nn_fm(1) .OR. inod==nn_fm(2) .OR. inod==nn_fm(3))
THEN
311 CALL ancmsg(msgid=3091, msgtype=msgerror, anmode=aninfo,
318 IF(xyz(1:2) == xx)
THEN
319 ibfvel(2,inum) = 4 + noskew*10
320 CALL kinset(16,nodid,ikine(inod),4,noskew,ikine1(inod))
321 ELSEIF(xyz(1:2) == yy)
THEN
322 ibfvel(2,inum) = 5 + noskew*10
323 CALL kinset(16,nodid,ikine(inod),5,noskew,ikine1(inod))
324 ELSEIF(xyz(1:2) == zz)
THEN
325 ibfvel(2,inum) = 6 + noskew*10
326 CALL kinset(16,nodid,ikine(inod),6,noskew,ikine1(inod))
327 ELSEIF (xyz(1:1) == x)
THEN
328 ibfvel(2,inum)=1 + noskew*10
329 CALL kinset(16,nodid,ikine(inod),1,noskew,ikine1(inod))
330 ELSEIF(xyz(1:1) == y)
THEN
331 ibfvel(2,inum) = 2 + noskew*10
332 CALL kinset(16,nodid,ikine(inod),2,noskew,ikine1(inod))
333 ELSEIF(xyz(1:1) == z)
THEN
334 ibfvel(2,inum) = 3 + noskew*10
335 CALL kinset(16,nodid,ikine(inod),3,noskew,ikine1(inod))
337 CALL ancmsg(msgid=164, msgtype=msgerror, anmode=aninfo,
343 WRITE (iout,2000) nodid,iskn(4,noskew),0,xyz(1:len),fct_id,sens_id,
344 . yscale,one/xscale,tstart,tstop
357 .
' IMPOSED DISPLACEMENTS '/
358 .
' ------------------- '/
359 .
' NODE SKEW FRAME DIRECTION LOAD_CURVE',
360 .
' SENSOR FSCALE ASCALE',
361 .
' START_TIME STOP_TIME')
362 2000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
363 . 2x,1pg20.13,2x,1pg20.13,2x,g20.13,2x,g20.13)
364 3000
FORMAT(3x,i10,3x,i10,3x,i10,9x,a2,3x,i10,3x,i10,
365 . 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)