44
45
46
47 USE my_alloc_mod
53 USE loads_mod
55 USE sensor_mod
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "param_c.inc"
65#include "units_c.inc"
66#include "com04_c.inc"
67#include "sphcom.inc"
68#include "tabsiz_c.inc"
69
70
71
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
81
82
83
84 INTEGER I,J,LOAD_ID,TABLE_ID,SURF_ID,SENS_ID,FRAME_ID,UID,ISENS,ISS,
85 . NOFRA,SUB_INDX,NSEG,ITABLE,STAT,NLOAD_CYL,IMOV
86 my_real :: x_r,x_t,yfac,fac_r,fac_t,fac_p
87 CHARACTER MESS*40
88 CHARACTER(LEN=NCHARTITLE) :: TITR
89 LOGICAL IS_AVAILABLE
90 DATA mess/'CYLINDRICAL PRESSURE LOADS DEFINITION '/
91
92
93
94 INTEGER NGR2USR
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 is_available = .false.
114 number_load_cyl = 0
115
116
117
119 loads%NLOAD_CYL = nload_cyl
120 ALLOCATE(loads%LOAD_CYL(nload_cyl))
121
123
124 DO i=1,nload_cyl
125
126 titr = ''
128 . option_id = load_id,
129 . unit_id = uid,
130 . submodel_index = sub_indx,
131 . option_titr = titr)
132
133
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)
137
138
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)
143
144
148
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
155
156
157
158
159
160 nseg = 0
161 IF (surf_id > 0) THEN
162 DO j=1,nsurf
163 IF (surf_id == igrsurf(j)%ID) THEN
164 iss = j
165 nseg = igrsurf(iss)%NSEG
166 EXIT
167 ENDIF
168 ENDDO
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)
172 DO j=1,nseg
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
178 ENDDO
179 number_load_cyl = number_load_cyl + 4*nseg
180 ENDIF
181
182
183 itable = 0
184 IF (table_id > 0) THEN
185 DO j=1,ntable
186 IF (table_id == table(j)%NOTABLE) THEN
187 itable = j
188 EXIT
189 ENDIF
190 ENDDO
191 ENDIF
192 IF (itable == 0) THEN
193 CALL ancmsg(msgid=488,anmode=aninfo,msgtype=msgerror,
194 . c1='LOAD PCYL',
195 . c2='LOAD PCYL',
196 . i2=table_id,i1=load_id,c3=titr)
197 END IF
198
199
200
201
202 isens = 0
203 IF (sens_id > 0) THEN
204 DO j=1,nsensor
205 IF (sens_id == sensor_tab(j)%SENS_ID) THEN
206 isens = j
207 EXIT
208 ENDIF
209 ENDDO
210 ENDIF
211
212
213
214 nofra = 0
215 imov = 0
216 IF (frame_id > 0) THEN
217 DO j=0,numfram
218 IF (frame_id == iframe(4,j+1)) THEN
219 nofra = j
220 imov = iframe(5,j+1)
221 EXIT
222 ENDIF
223 ENDDO
224 ENDIF
225 IF (nofra == 0) THEN
226 CALL ancmsg(msgid=490, msgtype=msgerror, anmode=aninfo_blind_1,
227 . c1='/LOAD/PCYL',
228 . i1=load_id,
229 . c2='/LOAD/PCYL',
230 . c3=titr,
231 . i2=frame_id)
232 ELSE IF (imov == 0) THEN
233 CALL ancmsg(msgid=3011, msgtype=msgerror, anmode=aninfo_blind_1,
234 . c1='/LOAD/PCYL',
235 . i1=load_id,
236 . c2='/LOAD/PCYL',
237 . c3=titr)
238 ENDIF
239
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
244
245
246
247 WRITE (iout,1000) load_id,frame_id,sens_id,table_id,surf_id,nseg,
248 . x_r,x_t,yfac
249 ENDDO
250
251 1000 FORMAT(
252 & 5x,' '/,
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/)
264
265 RETURN
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_floatv_dim(name, dim_fac, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer function ngr2usr(iu, igr, ngr)
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)