44 . IGRNOD ,NWORK ,UNITAB ,ISKN ,LSUBMODEL,
60#include "implicit_f.inc"
73 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
75 INTEGER IBCL(NIBCLD,*), ITAB(*), ITABM1(*),NWORK(*),
78 TYPE(),
INTENT(IN)::LSUBMODEL(*)
79 TYPE (LOADS_),
INTENT(INOUT) ::
81 TYPE (GROUP_)
DIMENSION(NGRNOD) :: IGRNOD
86 . fcx,fcy,fac_fcx,fac_fcy
87 INTEGER I,J,K,K1,K2,NOD, NCUR, NOSKEW, ISENS,NLD0,,IGU,IGS,
88 . UID,IAD,NS,IWA,ID,NUM0,IFLAGUNIT,COMPT,,IDIR,IFUNCTYPE
90 CHARACTER MESS*40,X*1, Y*1, Z*1, XX*2, YY*2, ZZ*2
91 CHARACTER(LEN=NCHARFIELD) :: XYZ
92 CHARACTER(LEN=NCHARTITLE) :: TITR
97 INTEGER NODGRNR5,NODGR_R2R
98 EXTERNAL NODGRNR5,NODGR_R2R
124 DATA MESS/'concentrated loads definition
'/
126 IS_AVAILABLE = .FALSE.
136 CALL HM_OPTION_START('/cload
')
148 CALL HM_OPTION_READ_KEY(LSUBMODEL,
151 . SUBMODEL_INDEX = SUB_INDEX,
152 . OPTION_TITR = TITR)
157 CALL HM_GET_STRING('rad_dir
',XYZ,ncharfield,IS_AVAILABLE)
161 CALL HM_GET_INTV('curveid
',NCUR,IS_AVAILABLE,LSUBMODEL)
162 CALL HM_GET_INTV('inputsystem
',NOSKEW,IS_AVAILABLE,LSUBMODEL)
163.AND.
IF(NOSKEW == 0 SUB_INDEX /= 0 ) NOSKEW = LSUBMODEL(SUB_INDEX)%SKEW
164 CALL HM_GET_INTV('rad_sensor_id
',ISENS,IS_AVAILABLE,LSUBMODEL)
165 CALL HM_GET_INTV('entityid
',IGU,IS_AVAILABLE,LSUBMODEL)
166 CALL HM_GET_INTV('itypfun
',IFUNCTYPE,IS_AVAILABLE,LSUBMODEL)
170 CALL HM_GET_FLOATV('xscale
',FCX,IS_AVAILABLE,LSUBMODEL,UNITAB)
171 CALL HM_GET_FLOATV_DIM('xscale
',FAC_FCX,IS_AVAILABLE,LSUBMODEL,UNITAB)
172 CALL HM_GET_FLOATV('magnitude
',FCY,IS_AVAILABLE,LSUBMODEL,UNITAB)
173 CALL HM_GET_FLOATV_DIM('magnitude
',FAC_FCY,IS_AVAILABLE,LSUBMODEL,UNITAB)
177 IF (UNITAB%UNIT_ID(J) == UID) THEN
183.AND.
IF (UID/=0IFLAGUNIT==0) THEN
184 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
185 . I2=UID,I1=ID,C1='concentred load
',
186 . C2='concentred load
',
189 DO J=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
190 IF(NOSKEW == ISKN(4,J+1)) THEN
195 CALL ANCMSG(MSGID=137,ANMODE=ANINFO,MSGTYPE=MSGERROR,
196 . C1='concentred load
',
197 . C2='concentred load
',
198 . I2=NOSKEW,I1=ID,C3=TITR)
201 IF (FCX == ZERO) FCX = FAC_FCX
202 IF (FCY == ZERO) FCY = FAC_FCY
207 IF(XYZ(1:1)==X) IDIR=1
208 IF(XYZ(1:1)==Y) IDIR=2
209 IF(XYZ(1:1)==Z) IDIR=3
210 IF(XYZ(1:2)==XX) IDIR=4
211 IF(XYZ(1:2)==YY) IDIR=5
212 IF(XYZ(1:2)==ZZ) IDIR=6
214 IF(IDIR == 1) NS=1+NOSKEW
215 IF(IDIR == 2) NS=2+NOSKEW
216 IF(IDIR == 3) NS=3+NOSKEW
217 IF(IDIR == 4) NS=4+NOSKEW
218 IF(IDIR == 5) NS=5+NOSKEW
219 IF(IDIR == 6) NS=6+NOSKEW
223 CALL ANCMSG(MSGID=149,ANMODE=ANINFO,MSGTYPE=MSGERROR,
224 . C2=XYZ,I1=ID,C1=TITR)
228 CALL ANCMSG(MSGID=845,ANMODE=ANINFO,MSGTYPE=MSGERROR,
229 . C2=XYZ,I1=ID,C1=TITR)
236 NN = NODGRNR5(IGU ,IGS ,NWORK(1+NIBCLD*NUM0),IGRNOD ,
240 NN = NODGR_R2R(IGU ,IGS ,NWORK(1+NIBCLD*NUM0),IGRNOD ,
245 CALL ANCMSG(MSGID=3026,
255 NWORK(1+NIBCLD*(J+I-1))=NWORK(J+NIBCLD*NUM0)
258 IF(IFUNCTYPE == 0) IFUNCTYPE = 1 ! Abscissa function is time (by default)
259 ! IFUNCTYPE = 2 ! Abscissa function is nodal displacement
260 ! IFUNCTYPE = 3 ! Abscissa function is nodal velocity
270 IBCL(9,I) = IFUNCTYPE
274 WRITE (IOUT,'(i10,2x,i10,5x,a,2x,i10,2x,i10,2x,
275 . 1pg20.13,2x,1pg20.13)
')
276 . ITAB(IBCL(1,I)),ISKN(4,NOSKEW/10),XYZ(1:1),
277 . IBCL(3,I),ISENS,FCX,FCY
278 ELSEIF (IDIR <= 6) THEN
279 WRITE (IOUT,'(i10,2x,i10,4x,a2,2x,i10,2x,i10,2x,
280 . 1pg20.13,2x,1pg20.13)
')
281 . ITAB(IBCL(1,I)),ISKN(4,NOSKEW/10),XYZ(1:2),
282 . IBCL(3,I),ISENS,FCX,FCY
287 LOADS%NLOAD_CLOAD = NUM
290 .' concentrated loads
'/
291 .' ------------------
'/
292 .' node skew dir load_curve sensor
',
subroutine hm_read_cload(ibcl, forc, num, itab, itabm1, igrnod, nwork, unitab, iskn, lsubmodel, loads)