42 SUBROUTINE hm_read_pcyl(LOADS ,IGRSURF ,NSENSOR ,SENSOR_TAB,TABLE ,
43 . IFRAME ,UNITAB ,LSUBMODEL, NUMBER_LOAD_CYL)
60#include "implicit_f.inc"
68#include "tabsiz_c.inc"
72 INTEGER ,
INTENT(IN) :: NSENSOR
73 INTEGER ,
DIMENSION(LISKN,NUMFRAM+1) ,
INTENT(IN) :: IFRAME
74 TYPE (SURF_) ,
DIMENSION(NSURF) ,
INTENT(IN) :: IGRSURF
75 TYPE (TTABLE) ,
DIMENSION(NTABLE) ,
INTENT(IN) :: TABLE
76 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR),
INTENT(IN) :: SENSOR_TAB
77 TYPE (SUBMODEL_DATA) ,
DIMENSION(*) ,
INTENT(IN) :: LSUBMODEL
78 TYPE (UNIT_TYPE_) ,
INTENT(IN) :: UNITAB
79 TYPE (LOADS_) ,
INTENT(INOUT) :: LOADS
80 INTEGER,
INTENT(INOUT) :: NUMBER_LOAD_CYL
84 INTEGER I,J,LOAD_ID,TABLE_ID,SURF_ID,SENS_ID
86 my_real :: x_r,x_t,yfac,fac_r,fac_t,fac_p
88 CHARACTER(LEN=NCHARTITLE) :: TITR
90 DATA mess/
'CYLINDRICAL PRESSURE LOADS DEFINITION '
113 is_available = .false.
119 loads%NLOAD_CYL = nload_cyl
120 ALLOCATE(loads%LOAD_CYL(nload_cyl))
127 CALL HM_OPTION_READ_KEY(LSUBMODEL,
128 . OPTION_ID = LOAD_ID,
130 . SUBMODEL_INDEX = SUB_INDX,
131 . OPTION_TITR = TITR)
134 CALL HM_GET_INTV('surf_id
' ,SURF_ID ,IS_AVAILABLE,LSUBMODEL)
135 CALL HM_GET_INTV('sens_id
' ,SENS_ID ,IS_AVAILABLE,LSUBMODEL)
136 CALL HM_GET_INTV('frame_id
' ,FRAME_ID ,IS_AVAILABLE,LSUBMODEL)
139 CALL HM_GET_INTV('table_id
' ,TABLE_ID ,IS_AVAILABLE,LSUBMODEL)
140 CALL HM_GET_FLOATV('xscale_r
',X_R ,IS_AVAILABLE,LSUBMODEL,UNITAB)
141 CALL HM_GET_FLOATV('xscale_t
',X_T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
142 CALL HM_GET_FLOATV('yscale_p
',YFAC ,IS_AVAILABLE,LSUBMODEL,UNITAB)
145 CALL HM_GET_FLOATV_DIM('xscale_r
' ,FAC_R ,IS_AVAILABLE,LSUBMODEL,UNITAB)
146 CALL HM_GET_FLOATV_DIM('xscale_t
' ,FAC_T ,IS_AVAILABLE,LSUBMODEL,UNITAB)
147 CALL HM_GET_FLOATV_DIM('yscale_p
' ,FAC_P ,IS_AVAILABLE,LSUBMODEL,UNITAB)
149 IF (X_R == ZERO) X_R = FAC_R
150 IF (X_T == ZERO) X_T = FAC_T
151 IF (YFAC == ZERO) YFAC = FAC_P
152 LOADS%LOAD_CYL(I)%XSCALE_R = X_R
153 LOADS%LOAD_CYL(I)%XSCALE_T = X_T
154 LOADS%LOAD_CYL(I)%YSCALE = YFAC
161 IF (SURF_ID > 0) THEN
163 IF (SURF_ID == IGRSURF(J)%ID) THEN
165 NSEG = IGRSURF(ISS)%NSEG
169 LOADS%LOAD_CYL(I)%ID = LOAD_ID
170 LOADS%LOAD_CYL(I)%NSEG = NSEG
171 CALL MY_ALLOC(LOADS%LOAD_CYL(I)%SEGNOD,NSEG,4)
173 LOADS%LOAD_CYL(I)%SEGNOD(J,1) = IGRSURF(ISS)%NODES(J,1)
174 LOADS%LOAD_CYL(I)%SEGNOD(J,2) = IGRSURF(ISS)%NODES(J,2)
175 LOADS%LOAD_CYL(I)%SEGNOD(J,3) = IGRSURF(ISS)%NODES(J,3)
176 LOADS%LOAD_CYL(I)%SEGNOD(J,4) = IGRSURF(ISS)%NODES(J,4)
177 IF (IGRSURF(ISS)%ELTYP(J)==7) LOADS%LOAD_CYL(I)%SEGNOD(J,4) = 0
179 NUMBER_LOAD_CYL = NUMBER_LOAD_CYL + 4*NSEG
184 IF (TABLE_ID > 0) THEN
186 IF (TABLE_ID == TABLE(J)%NOTABLE) THEN
192 IF (ITABLE == 0) THEN
193 CALL ANCMSG(MSGID=488,ANMODE=ANINFO,MSGTYPE=MSGERROR,
196 . I2=TABLE_ID,I1=LOAD_ID,C3=TITR)
203 IF (SENS_ID > 0) THEN
205 IF (SENS_ID == SENSOR_TAB(J)%SENS_ID) THEN
216 IF (FRAME_ID > 0) THEN
218 IF (FRAME_ID == IFRAME(4,J+1)) THEN
226 CALL ANCMSG(MSGID=490, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1,
232 ELSE IF (IMOV == 0) THEN
233 CALL ANCMSG(MSGID=3011, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1,
240 LOADS%LOAD_CYL(I)%ID = LOAD_ID
241 LOADS%LOAD_CYL(I)%IFRAME = NOFRA
242 LOADS%LOAD_CYL(I)%ITABLE = ITABLE
243 LOADS%LOAD_CYL(I)%ISENS = ISENS
247 WRITE (IOUT,1000) LOAD_ID,FRAME_ID,SENS_ID,TABLE_ID,SURF_ID,NSEG,
253 & 5X,'cylindrical pressure load
'/,
254 & 5X,'-------------------------
'/,
255 & 5X,'load
id. . . . . . . . . . . . . . . . .=
',I10/,
256 & 5X,'frame
id . . . . . . . . . . . . . . . .=
',I10/,
257 & 5X,'sensor
id. . . . . . . . . . . . . . . .=
',I10/,
258 & 5X,'table
id . . . . . . . . . . . . . . . .=
',I10/,
259 & 5X,'surface
id . . . . . . . . . . . . . . .=
',I10/,
260 & 5X,'number of segments . . . . . . . . . . .=
',I10/,
261 & 5X,'radius scale factor
for abscissa . . . .=
',1PG20.13/,
262 & 5X,'time scale factor
for abscissa . . . .=
',1PG20.13/,
263 & 5X,'pressure scale factor. . . . . . . . . .=
',1PG20.13/)
subroutine hm_read_pcyl(loads, igrsurf, nsensor, sensor_tab, table, iframe, unitab, lsubmodel, number_load_cyl)