43
44
45
46
53 USE sensor_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "param_c.inc"
63#include "com04_c.inc"
64#include "units_c.inc"
65#include "r2r_c.inc"
66#include "tabsiz_c.inc"
67
68
69
70 TYPE (),INTENT(IN) ::UNITAB
71 INTEGER NPC(SNPC),IFRAME(LISKN,NUMFRAM+1),NUMLOADP, ILOADP(SIZLOADP,NLOADP), LLOADP(SLLOADP)
72 my_real facloadp(lfacload,nloadp)
73
74 TYPE (SURF_) ,TARGET, DIMENSION(NSURF) :: IGRSURF
75 TYPE(SUBMODEL_DATA),INTENT(IN)::LSUBMODEL(NSUBMOD)
76 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
77
78
79
80 my_real fcx,fcy,fac_fcx,fac_fcy,fcx1,fcy1,fcx2,fcy2
81 INTEGER J,K, SUB_INDEX, SUB_ID, UID, ID, IFLAGUNIT,NN,IAD,TSENS,ISENS,IS,ISU,
82 . FUN_HSP,FUN_CX,FUN_VEL,IFRA1,IFRA2,ICFIELD8,ICFIELD12,ICFIELD9,ICFIELD13,
83 . NCUR_HSP,NCUR_VEL,NCUR_CX
84 CHARACTER MESS*40,char_X*1, char_Y*1, char_Z*1, char_XX*2, char_YY*2, char_ZZ*2
85 CHARACTER(LEN=NCHARFIELD) :: XYZ, XYZ1
86 CHARACTER(LEN=NCHARTITLE) :: TITR
87 LOGICAL IS_AVAILABLE
88
89 DATA char_x/'X'/
90 DATA char_y/'Y'/
91 DATA char_z/'Z'/
92 DATA char_xx/'XX'/
93 DATA char_yy/'YY'/
94 DATA char_zz/'ZZ'/
95 DATA mess/'FLUID PRESSURE LOAD DEFINITION '/
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161 nn = 0
162
163
164
166
167
168
169 DO k=1,nloadp_f
170
171
172
175 . unit_id = uid,
176 . submodel_id = sub_id,
177 . submodel_index = sub_index,
178 . option_titr = titr)
179
180 iflagunit = 0
181 DO j=1,unitab%NUNITS
182 IF (unitab%UNIT_ID(j) == uid) THEN
183 iflagunit = 1
184 EXIT
185 ENDIF
186 ENDDO
187 IF (uid /= 0.AND.iflagunit == 0) THEN
188 CALL ancmsg(msgid=659, anmode= aninfo, msgtype=msgerror,
189 . i2=uid,i1=
id,c1=
'FLUID PRESSURE LOAD',c2=
'FLUID PRESSURE LOAD',c3= titr)
190 ENDIF
191
193
194 iad = numloadp + 1
195 fun_hsp = 0
196 fun_cx = 0
197 fun_vel = 0
198 icfield9 = 0
199 icfield13 = 0
200
201 CALL hm_get_intv(
'surf_ID',isu,is_available,lsubmodel)
202 CALL hm_get_intv(
'sens_ID',isens,is_available,lsubmodel)
203
204
205 is=0
206 DO j=1,nsurf
207 IF (isu == igrsurf(j)%ID) is=j
208 ENDDO
209 IF(is /= 0)THEN
210 nn=igrsurf(is)%NSEG
211 DO j=1,nn
212 lloadp(iad+4*(j-1)) =igrsurf(is)%NODES(j,1)
213 lloadp(iad+4*(j-1)+1)=igrsurf(is)%NODES(j,2)
214 lloadp(iad+4*(j-1)+2)=igrsurf(is)%NODES(j,3)
215 IF(igrsurf(is)%ELTYP(j) == 7)THEN
216 lloadp(iad+4*(j-1)+3)=0
217 ELSE
218 lloadp(iad+4*(j-1)+3)=igrsurf(is)%NODES(j,4)
219 ENDIF
220 ENDDO
221 ENDIF
222 iloadp(1,k)=4*nn
223
224
225 tsens=0
226 DO j=1,sensors%NSENSOR
227 IF(isens /= 0) THEN
228 IF (isens == sensors%SENSOR_TAB(j)%SENS_ID) tsens=j
229 ENDIF
230 ENDDO
231 IF((tsens == 0).AND.(isens /= 0))THEN
232 CALL ancmsg(msgid=930, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, i2=isens)
233 ENDIF
234
235
236 CALL hm_get_intv(
'fct_hsp',ncur_hsp,is_available,lsubmodel)
237 CALL hm_get_floatv(
'Ascalex_hsp',fcx,is_available,lsubmodel,unitab)
239 CALL hm_get_floatv(
'Fscaley_hsp',fcy,is_available,lsubmodel,unitab)
241 IF (fcx == zero) fcx = fac_fcx
242 IF (fcy == zero) fcy = fac_fcy
243
244
245 IF(ncur_hsp /= 0)THEN
246 DO j=1,nfunct
247 IF(npc(nfunct+j+1) == ncur_hsp)fun_hsp=j
248 ENDDO
249 IF(fun_hsp == 0)THEN
250 CALL ancmsg(msgid=929, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1
251 ENDIF
252 ENDIF
253
254
255 xyz = ''
257
258 icfield8 = 0
259 IF(xyz(1:1) == char_x)icfield8=1
260 IF(xyz(1:1) == char_y)icfield8=2
261 IF(xyz(1:1) == char_z)icfield8=3
262
263 IF (ncur_hsp /= 0)THEN
264 IF(xyz(1:1) /= char_x .AND. xyz(1:1) /= char_y .AND. xyz(1:1) /= char_z) THEN
265 CALL ancmsg(msgid=927, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, c2=xyz)
266 ENDIF
267 ENDIF
268
269
270
271 CALL hm_get_intv(
'frahsp_ID',ifra1,is_available,lsubmodel)
272
273 IF(ifra1 == 0 .AND. sub_index /= 0)THEN
274 CALL ancmsg(msgid=1712, anmode=aninfo, msgtype=msgwarning,
275 . i1=
id, i2=sub_id, c1=
'/LOAD/PFLUID - frahsp_ID=0', c2=titr)
276 ENDIF
277
278 DO j=0,numfram
279 IF(ifra1 == iframe(4,j+1)) THEN
280 icfield9=j+1
281 ENDIF
282 ENDDO
283 IF(ifra1 == 0) icfield9 = 1
284 IF (ifra1 /= 0 .AND. icfield9 == 0) THEN
285 CALL ancmsg(msgid=928, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, i2=ifra1)
286 ENDIF
287
288
289 CALL hm_get_intv(
'fct_pc',ncur_cx,is_available,lsubmodel)
290 CALL hm_get_floatv(
'Ascalex_pc',fcx1,is_available,lsubmodel,unitab)
292 CALL hm_get_floatv(
'Fscaley_pc',fcy1,is_available,lsubmodel,unitab)
294 IF (fcx1 == zero) fcx1 = fac_fcx
295 IF (fcy1 == zero) fcy1 = fac_fcy
296
297
298 IF (ncur_cx /= 0)THEN
299 DO j=1,nfunct
300 IF(npc(nfunct+j+1) == ncur_cx)fun_cx=j
301 ENDDO
302 IF(fun_cx == 0)THEN
303 CALL ancmsg(msgid=929, msgtype=msgerror
304 ENDIF
305 ENDIF
306
307
308 CALL hm_get_intv(
'fct_vel',ncur_vel,is_available,lsubmodel)
309 CALL hm_get_floatv(
'Ascalex_vel',fcx2,is_available,lsubmodel,unitab)
313 IF (fcx2 == zero) fcx2 = fac_fcx
314 IF (fcy2 == zero) fcy2 = fac_fcy
315
316
317 IF (ncur_vel /= 0)THEN
318 DO j=1,nfunct
319 IF(npc(nfunct+j+1) == ncur_vel)fun_vel=j
320 ENDDO
321 IF(fun_vel == 0)THEN
322 CALL ancmsg(msgid=929, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, i2=ncur_vel)
323 ENDIF
324 ENDIF
325
327
328 icfield12 = 0
329 IF(xyz1(1:1) == char_x)icfield12=1
330 IF(xyz1(1:1) == char_y)icfield12=2
331 IF(xyz1(1:1) == char_z)icfield12=3
332 IF (ncur_vel /= 0)THEN
333 IF(xyz1(1:1) /= char_x .AND. xyz1(1:1) /= char_y .AND. xyz1(1:1) /= char_z) THEN
334 CALL ancmsg(msgid=927, msgtype=msgerror
335 ENDIF
336 ENDIF
337
338
339 CALL hm_get_intv(
'fravel_ID',ifra2,is_available,lsubmodel)
340
341 IF(ifra2 == 0 .AND. sub_index /= 0)THEN
342 CALL ancmsg(msgid=1712, anmode=aninfo, msgtype=msgwarning,
343 . i1 =
id, i2 = sub_id, c1 =
'/LOAD/PFLUID - fravel_ID=0', c2 = titr
344 ENDIF
345 DO j=0,numfram
346 IF(ifra2 == iframe(4,j+1)) THEN
347 icfield13=j+1
348 ENDIF
349 ENDDO
350 IF(ifra2 == 0) icfield13 = 1
351 IF (ifra2 /= 0 .AND. icfield13 == 0) THEN
352 CALL ancmsg(msgid=928, msgtype=msgerror, anmode=aninfo_blind_1, i1=
id, c1=titr, i2=ifra2)
353 ENDIF
354
355 iloadp(5,k)=2
356
357
358 IF(is /= 0)THEN
359 iloadp( 4,k) = iad
360 iloadp( 6,k) = isens
361 iloadp( 7,k) = fun_hsp
362 iloadp( 8,k) = icfield8
363 iloadp( 9,k) = icfield9
364 iloadp(10,k) = fun_cx
365 iloadp(11,k) = fun_vel
366 iloadp(12,k) = icfield12
367 iloadp(13,k) = icfield13
368
369 facloadp( 1,k) = fcy
370 facloadp( 2,k) = one/fcx
371 facloadp( 3,k) = fcy1
372 facloadp( 4,k) = one/fcx1
373 facloadp( 5,k) = fcy2
374 facloadp( 6,k) = one/fcx2
375
377 ENDIF
378
379
380 WRITE (iout,2002)
381 WRITE (iout,'(I10,2X,I10,9X,A1,2X,I10,2X,I10,2X,1PG20.13,2X,1PG20.13)')isu,ifra1,xyz(1:1),ncur_hsp,isens,fcx,fcy
382 WRITE (iout,2003)
383 WRITE (iout,'(I10,4X,1PG20.13,4X,1PG20.13)')ncur_cx,fcx1,fcy1
384 WRITE (iout,2004)
385 WRITE (iout,'(I10,9X,A1,2X,I10,2X,1PG20.13,2X,1PG20.13)')ifra2,xyz1(1:1),ncur_vel,fcx2,fcy2
386
387 numloadp = numloadp + 4*nn
388
389 ENDDO
390
391 RETURN
392
393 2002 FORMAT(//
394 .' PFLUID LOAD '/
395 .' ------------------ '/
396 .' SURFACE FRAME_HSP DIR_HSP FUNC_HSP SENSOR',
397 .' SCALE_X SCALE_Y')
398
399 2003 FORMAT(//
400 .' FUNC_CX SCALE_X SCALE_Y')
401
402 2004 FORMAT(//
403 .' FRAME_VEL DIR_VEL FUNC_VEL'
404 .' SCALE_X SCALE_Y')
405
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_get_string(name, sval, size, is_available)
subroutine hm_option_start(entity_type)
integer, parameter nchartitle
integer, parameter ncharfield
integer, dimension(:,:), allocatable isurf_r2r
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)