photon use
p;;;;;
gr ou x 1; gr ou x m
gr ou y 1; gr ou y m
gr ou z 1; gr ou z m
sur wdis x 0.2 col 1; sur wdis y 0.2 col 1; sur wdis z 0.2 col 1
sur wdis x 0.1 col 8; sur wdis y 0.1 col 8; sur wdis z 0.1 col 8
vi
1 2 3
pause
vi z 1
pause;cl
con wdis z 10 fi;0.001
pause;cl
con wgap z 10 fi;0.001
enduse
TEXT(Wall Distance Distribution Within A Box
TITLE
DISPLAY
******************************************************************
This short Q1 file concerns the application of the wall-distance
calculation scheme of PHOENICS to the inside of a box.
**
Interesting variants of the data include:
the box dimensions (vary VYLAST and/or ZWLAST, say);
the number of walls (move WALL lines 2 spaces right to remove);
the plotted iso-distance surfaces plotted by PHOTON (vary the 0.1
and 0.2 in the PHOTON USE sequence);
setting CARTES=F and RINNER=yvlast/2, say;
introducing a central blockage.
******************************************************************
ENDDIS
#pause
** Declarations **
BOOLEAN(BLOCK)
** Settings **
BLOCK=F
NX=20; NY=20; NZ=20
XULAST=1.0; YVLAST=1.0; ZWLAST=1.0
CARTES=T; RINNER=YVLAST/2
#UNIGRID
SOLVE(LTLS)
STORE(WGAP,WDIS)
** messages to screen **
LABEL DISPLAY
#cls
MESG(x, y & z dimensions are.. :xulast:, :yvlast:, :zwlast:
IF(CARTES) THEN
MESG(grid is cartesian
ELSE
MESG(grid is cylindrical polar
ENDIF
IF(BLOCK) THEN
MESG(there is a central blockage
ELSE S
MESG(the box is empty
ENDIF
** Questions **
MESG(Are data settings OK? (Y/n)
READVDU(ANS,CHAR,Y)
ANS
IF(:ANS:.EQ.Y) THEN
GOTO PROCEED
ELSE
IF(CARTES) THEN
+ MESG(change to polar grid? (Y/n)
+ READVDU(ANS,CHAR,Y)
+ IF(:ANS:.EQ.Y) THEN
+ CARTES=F
+ GOTO DISPLAY
+ ENDIF
ENDIF
IF(.NOT.BLOCK) THEN
+ MESG(introduce blockage? (Y/n)
+ READVDU(ANS,CHAR,Y)
+ IF(:ANS:.EQ.Y) THEN
+ BLOCK=T
+ GOTO DISPLAY
+ ENDIF
ENDIF
MESG(change dimensions of box? (Y/n)
READVDU(ANS,CHAR,Y)
IF(:ANS:.EQ.Y) THEN
+ MESG(x-dimension is :xulast: . New value?
+ MESG(in metres if cartesian, otherwise radians
+ READVDU(XULAST,REAL,XULAST)
+ MESG(y-dimension is :yvlast: . New value?
+ READVDU(YVLAST,REAL,YVLAST)
+ MESG(z-dimension is :zwlast: . New value?
+ READVDU(ZWLAST,REAL,ZWLAST)
+ IF(.NOT.CARTES) THEN
+ MESG(Inner radius = :rinner: . New value?)
+ READVDU(RINNER,REAL,RINNER)
+ ENDIF
+ GOTO DISPLAY
ENDIF
ENDIF
LABEL PROCEED
IF(BLOCK) THEN
STORE(PRPS)
PATCH(BLOCK,INIVAL,NX/4+1,3*NX/4,NY/4+1,3*NY/4,NZ/4+1,3*NZ/4,1,1)
COVAL(BLOCK,PRPS,0.0,100.0)
ENDIF
WALL(W,WEST ,1,1 ,1,NY ,1,NZ ,1,1)
WALL(E,EAST ,NX,NX,1,NY ,1,NZ ,1,1)
WALL(N,NORTH,1,NX ,NY,NY,1,NZ ,1,1)
WALL(S,SOUTH,1,NX ,1,1 ,1,NZ ,1,1)
WALL(H,HIGH ,1,NX ,1,NY ,NZ,NZ,1,1)
WALL(L,LOW ,1,NX ,1,NY ,1,1 ,1,1)
STOP