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,FRAME_ID,UID,ISENS,ISS,
85 . nofra,sub_indx,nseg,itable,nload_cyl,imov
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))
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)
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
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 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)