Another name for a simulation. When a case is defined by use of the PHOENICS Commander, the case name forms a unique filename for the Q1 file.
-------------- Advanced PIL command --- -
Examples are:
a) Numeric CASE
CASE NX OF 
WHEN 1 
+ MESG(NX=1 
WHEN 3 
+ MESG(NX=3 
ENDCASE 
b) Character CASE, with the WHEN's extra number of characters argument
CASE :CH1: OF 
WHEN XXXX,3 
+ MESG(CH1 = XXX 
WHEN YYYY,3 
+ MESG(CH1 = YYY 
ORELSE 
+ MESG(CH1 = something else 
ENDCASE 
The CASE statement is provided mainly for use when implementing menus. The syntax is:
       CASE    <numeric expression> OF
       WHEN    <value 1>
               <statements 1>
       WHEN    <value 2>
               <statements 2>
       WHEN    <value n>
               <statements n>
       ORELSE
               <statements o>
       ENDCASE
for example:
CASE NX OF 
WHEN 1 
MESG(NX=1 
WHEN 3 
MESG(NX=3 
ENDCASE 
The effect of this construct is to execute <statements 1> when the <numeric expression> equals <value 1>, <statements 2> when it equals <value 2> and so on. If the numeric expression does not match any of the WHEN values, the statements following the ORELSE (if present) are executed.
Character-case statements are similar in syntax to numeric constructs except for the presence of an optional extra parameter in the WHEN statement specifying the number of characters to be compared, eg:
CASE CH1 OF 
WHEN XXXX,3 
+ MESG(CH1 = XXX) 
WHEN YYYY,3 
+ MESG(CH1 = YYY) 
ENDCASE 
This will execute the command MESG(CH1 = XXX) if CH1 has the values XXX or XXXX, but not if it has the values XX, XXC, XXXC or XXXXX. If the number of characters to match is not specified, then all characters must match.
It should be noted that the character variable does not need to be enclosed in colons (:) in the CASE statement in order for its value to be evaluated, but it is allowed for compatibility.
The number of WHEN statements permitted within a CASE. ENDCASE construct is unlimited.
CASE constructs can be nested to a maximum depth of 20 and interleaved freely with DO loops and other "flow- control" constructs.
The following sequence sets up a 2-D duct in the X-Y plane, but asks whether to put the main flow direction along X or Y. There are also options to have a blockage at the inlet, and to include or dispense with relaxation.
TALK=F;RUN( 1, 1);VDU=WINDOWED
CHAR(ANS);INTEGER(I1);BOOLEAN(BLOCK) 
CHAR(TYP,TYPOUT,TYPTOP,TYPBOT,VEL1,VEL2) 
REAL(UIN) 
DO II=1,8 
+ INTEGER(IX:II:,IY:II:,IZ:II:,IXB:II:,IYB:II:) 
ENDDO 
MESG(Blockage ? (Y/N) 
READVDU(ANS,CHAR,N) 
CASE :ANS: OF 
+ WHEN YES,1 
+ BLOCK=T;I1=1 
+ MESG(Blockage activated 
ORELSE 
+ BLOCK=F;I1=0 
+ MESG(No blockage included 
ENDCASE 
MESG(Flow direction? (X/Y) 
READVDU(ANS,CHAR,X) 
+CASE :ANS: OF 
+ WHEN X,1 
+ GRDPWR(X,5,1,1);GRDPWR(Y,-5,.2,1.5) 
+ IX1=1+I1;IX2=IX1;IY1=1;IY2=NY;IZ1=1;IZ2=NZ 
+ IX3=NX;IX4=NX;IY3=1; IY4=NY;IZ3=1; IZ4=NZ 
+ IX5=1; IX6=NX;IY5=NY;IY6=NY;IZ5=1; IZ6=NZ 
+ IX7=1; IX8=NX;IY7=1; IY8=1; IZ7=1; IZ8=NZ 
+ IXB1=1;IXB2=1;IYB1=1;IYB2=NY 
+ TYP=WEST;TYPOUT=EAST;TYPTOP=NORTH;TYPBOT=SOUTH 
+ VEL1=U1;VEL2=V1 
+ ISOLX=1 
+ WHEN Y,1 
+ GRDPWR(Y,5,1,1);GRDPWR(X,-5,.2,1.5) 
+ IX1=1;IX2=NX;IY1=1+I1;IY2=IY1;IZ1=1;IZ2=NZ 
+ IX3=1; IX4=NX;IY3=NY;IY4=NY;IZ3=1; IZ4=NZ 
+ IX5=NX;IX6=NX;IY5=1; IY6=NY;IZ5=1; IZ6=NZ 
+ IX7=1; IX8=1; IY7=1; IY8=NY;IZ7=1; IZ8=NZ 
+ IXB1=1;IXB2=NX;IYB1=1;IYB2=1 
+ TYP=SOUTH;TYPOUT=NORTH;TYPTOP=EAST;TYPBOT=WEST 
+ VEL1=V1;VEL2=U1 
+ ISOLY=1 
+ENDCASE 
MESG(Main flow direction is :ans:
SOLVE(P1,:VEL1:,:VEL2:)
IF(BLOCK) THEN 
+ CONPOR(BLOCK,0.0,CELL,IXB1,IXB2,IYB1,IYB2,IZ1,IZ2) 
ENDIF 
UIN=5 
INLET(IN1,:TYP:,IX1,IX2,IY1,IY2,IZ1,IZ2,1,1) 
VALUE(IN1,P1,RHO1*UIN);VALUE(IN1,:VEL1:,UIN) 
OUTLET(OUT1,:TYPOUT:,IX3,IX4,IY3,IY4,IZ3,IZ4,1,1)
WALL(TOP_WALL,:TYPTOP:,IX5,IX6,IY5,IY6,IZ5,IZ6,1,1)
WALL(BOT_WALL,:TYPBOT:,IX7,IX8,IY7,IY8,IZ7,IZ8,1,1)
MESG(Relaxation ? (Y/N) 
READVDU(ANS,CHAR,N) 
IF(:ANS:.EQ.Y) THEN 
+ RELAX(U1,FALSDT,XULAST/UIN) 
+ RELAX(V1,FALSDT,XULAST/UIN) 
+ RELAX(P1,LINRLX,.5) 
ENDIF 
LSWEEP=40 
NPRINT=1 
ITABL=3;NPLT=1;ORSIZ=.4 
IYMON=NY/2;IXMON=NX/2 
STOP