42 . SENSORS ,IGRSURF ,UNITAB ,IFRAME ,LSUBMODEL)
58#include "implicit_f.inc"
66#include "tabsiz_c.inc"
70 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
71 INTEGER NPC(SNPC),IFRAME(LISKN,NUMFRAM+1),NUMLOADP, ILOADP(SIZLOADP,NLOADP), LLOADP(SLLOADP)
72 my_real facloadp(lfacload,nloadp)
74 TYPE (SURF_) ,
TARGET,
DIMENSION(NSURF) :: IGRSURF
76 TYPE (SENSORS_) ,
INTENT(IN) :: SENSORS
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
83 . ncur_hsp,ncur_vel,ncur_cx
84 CHARACTER MESS*40,char_X*1, char_Y*1, *1, *2, char_YY*2, char_ZZ*2
85 CHARACTER(LEN=NCHARFIELD) :: XYZ, XYZ1
86 CHARACTER(LEN=NCHARTITLE) :: TITR
95 DATA mess/
'FLUID PRESSURE LOAD DEFINITION '/
176 . submodel_id = sub_id,
177 . submodel_index = sub_index,
178 . option_titr = titr)
182 IF (unitab%UNIT_ID(j) == uid)
THEN
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)
201 CALL hm_get_intv(
'surf_ID',isu,is_available,lsubmodel)
202 CALL hm_get_intv(
'sens_ID',isens,is_available,lsubmodel)
207 IF (isu == igrsurf(j)%ID) is=j
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
218 lloadp(iad+4*(j-1)+3)=igrsurf(is)%NODES
226 DO j=1,sensors%NSENSOR
228 IF (isens == sensors%SENSOR_TAB(j)%SENS_ID) tsens=j
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)
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)
240 CALL HM_GET_FLOATV_DIM('fscaley_hsp
',FAC_FCY,IS_AVAILABLE,LSUBMODEL,UNITAB)
241 IF (FCX == ZERO) FCX = FAC_FCX ! default value
242 IF (FCY == ZERO) FCY = FAC_FCY ! default value
244 !check function identifier if provided
245 IF(NCUR_HSP /= 0)THEN
247 IF(NPC(NFUNCT+J+1) == NCUR_HSP)FUN_HSP=J
250 CALL ANCMSG(MSGID=929, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, I2=NCUR_HSP)
254 !Reader for XYZ field
256 CALL HM_GET_STRING('dir_hsp
',XYZ,ncharfield,IS_AVAILABLE)
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 ! XYZ mandatory if hydrostatic pressure (HSP) expected
263 IF (NCUR_HSP /= 0)THEN
264.AND..AND.
IF(XYZ(1:1) /= char_X XYZ(1:1) /= char_Y XYZ(1:1) /= char_Z) THEN
265 CALL ANCMSG(MSGID=927, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, C2=XYZ)
271 CALL HM_GET_INTV('frahsp_id
',IFRA1,IS_AVAILABLE,LSUBMODEL)
273.AND.
IF(IFRA1 == 0 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)
279 IF(IFRA1 == IFRAME(4,J+1)) THEN
283 IF(IFRA1 == 0) ICFIELD9 = 1
284.AND.
IF (IFRA1 /= 0 ICFIELD9 == 0) THEN
285 CALL ANCMSG(MSGID=928, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, I2=IFRA1)
289 CALL HM_GET_INTV('fct_pc
',NCUR_CX,IS_AVAILABLE,LSUBMODEL)
290 CALL HM_GET_FLOATV('ascalex_pc
',FCX1,IS_AVAILABLE,LSUBMODEL,UNITAB)
291 CALL HM_GET_FLOATV_DIM('ascalex_pc
',FAC_FCX,IS_AVAILABLE,LSUBMODEL,UNITAB)
292 CALL HM_GET_FLOATV('fscaley_pc
',FCY1,IS_AVAILABLE,LSUBMODEL,UNITAB)
293 CALL HM_GET_FLOATV_DIM('fscaley_pc
',FAC_FCY,IS_AVAILABLE,LSUBMODEL,UNITAB)
294 IF (FCX1 == ZERO) FCX1 = FAC_FCX
295 IF (FCY1 == ZERO) FCY1 = FAC_FCY
297 !check user function identifier
298 IF (NCUR_CX /= 0)THEN
300 IF(NPC(NFUNCT+J+1) == NCUR_CX)FUN_CX=J
303 CALL ANCMSG(MSGID=929, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, I2=NCUR_CX)
308 CALL HM_GET_INTV('fct_vel
',NCUR_VEL,IS_AVAILABLE,LSUBMODEL)
309 CALL HM_GET_FLOATV('ascalex_vel
',FCX2,IS_AVAILABLE,LSUBMODEL,UNITAB)
310 CALL HM_GET_FLOATV_DIM('ascalex_vel
',FAC_FCX,IS_AVAILABLE,LSUBMODEL,UNITAB)
311 CALL HM_GET_FLOATV('fscaley_vel
',FCY2,IS_AVAILABLE,LSUBMODEL,UNITAB)
312 CALL HM_GET_FLOATV_DIM('fscaley_vel
',FAC_FCY,IS_AVAILABLE,LSUBMODEL,UNITAB)
313 IF (FCX2 == ZERO) FCX2 = FAC_FCX
314 IF (FCY2 == ZERO) FCY2 = FAC_FCY
316 !check user function identifier
317 IF (NCUR_VEL /= 0)THEN
319 IF(NPC(NFUNCT+J+1) == NCUR_VEL)FUN_VEL=J
322 CALL ANCMSG(MSGID=929, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, I2=NCUR_VEL)
326 CALL HM_GET_STRING('dir_vel
',XYZ1,ncharfield,IS_AVAILABLE)
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.AND..AND.
IF(XYZ1(1:1) /= char_X XYZ1(1:1) /= char_Y XYZ1(1:1) /= char_Z) THEN
334 CALL ANCMSG(MSGID=927, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, C2=XYZ1)
339 CALL HM_GET_INTV('fravel_id
',IFRA2,IS_AVAILABLE,LSUBMODEL)
341.AND.
IF(IFRA2 == 0 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)
346 IF(IFRA2 == IFRAME(4,J+1)) THEN
350 IF(IFRA2 == 0) ICFIELD13 = 1
351.AND.
IF (IFRA2 /= 0 ICFIELD13 == 0) THEN
352 CALL ANCMSG(MSGID=928, MSGTYPE=MSGERROR, ANMODE=ANINFO_BLIND_1, I1=ID, C1=TITR, I2=IFRA2)
355 ILOADP(5,K)=2 !type of load 2:PFLUID
357 !STORAGE : ILOADP (integer) - FACLOADP (real)
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
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 !Multidomains -> numbering common segments (one single time)
376 IF (IDDOM > 0) NN = NN-ISURF_R2R(1,IS)
379 !OUTPUT STARTER LISTING FILE
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
383 WRITE (IOUT,'(i10,4x,1pg20.13,4x,1pg20.13)
')NCUR_CX,FCX1,FCY1
385 WRITE (IOUT,'(i10,9x,a1,2x,i10
')IFRA2,XYZ1(1:1),NCUR_VEL,FCX2,FCY2
387 NUMLOADP = NUMLOADP + 4*NN
389 ENDDO ! next K (next /LOAD/PFLUID)
395 .' ------------------
'/
396 .' surface frame_hsp dir_hsp func_hsp sensor
',
400 .' func_cx scale_x scale_y
')
403 .' frame_vel dir_vel func_vel
',
subroutine pfluid(iloadp, rload, npc, tf, a, v, x, xframe, ms, nsensor, sensor_tab, wfexc, wfext, iadc, fsky, fskyv, lloadp, fext, h3d_data, th_surf, python)
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)