TALK=T;RUN( 1, 1) DISPLAY Simulation of heat conduction in a steel slab of 0.1 m thickness, internallly heated by 1. kW/m**3 of electric power, with both its faces held to 0.0 deg Celsius. This file is a simple parameterised Q1, with 4 cases selected via caseno, They add additional features in succession, thus: caseno=0 is the basic case caseno=1 allows comparison with the exact solution caseno=2 adds line-printer plot of temperature profile caseno=3 declares reals THICK and HEATINPT with results unchanged caseno=4 substitutes copper for steel The case number can be set interactively, by answering the question which appears on the screen; alternatively the setting caseno= 1, 2, 3 or 4 can be made by editing the q1 file. saveXbegin and saveXend lines ensure that the settings between them are protected from being over-written if the Q1 is processed by the VR-Editor; but they do not influence the calculation. ENDDIS GROUP 1. Run title and other preliminaries TEXT(Steady conduction in electrically-heated slab save1begin integer(caseno) ! allows several cases to be run from the same file caseno=0 ! also the default value, if no seting is made. The following lines print messages to the screen mesg(caseno=0: mesg(basic case with minimum settings mesg(caseno=1: mesg(allows comparison with exact mesg(caseno=2: mesg(adds line-printer plot of profile mesg(caseno=3: mesg(declares reals THICK and HEATINPT mesg(caseno=4: mesg(changes the metal of the slab from steel to copper mesgm(caseno equals :caseno: OK? If not, enter required value The readvdu line below accepts the user's input via the keyboard. The default, if the user simply enters 'carriage return', is whatever caseno was set above, or 0 if none was set readvdu(caseno,int,caseno) Once caseno has been set, the following lines are executed by the satellite without interruption caseno save1end GROUP 3. X-direction grid specification save3begin if(caseno.ge.0) then ! basic case NX=100 ! Dividing the x dimension into 100 elements XULAST=0.1 ! The thickness of the slab GRDPWR(X,NX,XULAST,1.0) ! To create a uniform grid, namely one with ! a power-law distribution, the exponent ! being 1.0 save3end GROUP 7. Variables stored, solved & named save7begin SOLVE(TEM1) ! To solve for temperature STORE(PRPS) ! To be able to set material properties via PROPS file STORE(KOND) ! To be able to check the thermal conductivity endif ! End of if(caseno.ge.0) if(caseno.gt.0) then ! compare with exact solution CHAR(FORMULA) ! Declare the character variable FORMULA, and set it ! to the temperature calculated by PHOENICS viz TEM1, ! divided by the theoretical temperature: namely, ! that described by the following: FORMULA=TEM1/(0.5*1.E3*(XG-.005*:XULAST:)*(.995*:XULAST:-XG)/KOND) ! where ! 0.5 is a constant in the theoretical expression for ! the parabolic profile, ! 1.E3 is the volumetric heat input, ! xg = x value of any grid point, ! .005*:xulast: = xg of first grid point, ! .995*:xulast: = xg of last grid point, ! KOND is the thermal conductivity of the material (STORED var #RAT is :FORMULA:) ! Calculates the temperature ratio endif ! End of if(caseno.gt.0) save7end GROUP 11. Initialization of variable or porosity fields save11begin FIINIT(PRPS)=STEEL ! To require properties of steel to be used if(caseno.gt.3) then FIINIT(PRPS)=COPPER ! To require properties of copper to be used endif save11end GROUP 13. Boundary conditions and special sources save13begin PATCH(minXface,WEST,1,1,1,1,1,1,1,1) ! to locate the low-x face PATCH(maxXface,WEST,NX,NX,1,1,1,1,1,1) ! to locate the high-x face COVAL(minXface,TEM1,FIXVAL,0.0) ! to fix the values of both faces COVAL(maxXface,TEM1,FIXVAL,0.0) ! to zero PATCH(HEATER,volume,1,nx,1,1,1,1,1,1) ! to show that the volumetric ! heat flux extends from low x to high, i.e. from 1 to nx COVAL(HEATER,TEM1,FIXFLU,1.e3) ! to fix the heat flux 1kW/m**3 if(caseno.gt.2) then ! declare, set and use THICK and HEATINPT REAL(THICK,HEATINPT) THICK=0.1 ! The thickness of the slab HEATINPT=1.0E3 ! The volumetric heat input GRDPWR(X,NX,THICK,1.0) ! To create a uniform grid COVAL(HEATER,TEM1,FIXFLU,HEATINPT) ! fix the heat input to HEATINPT endif ! end of if(caseno.gt.2) save13end GROUP 23. Field print-out and plot control save23begin if(caseno.gt.1) then ! create line-printer temperature plot PATCH(TEM1PLOT,PROFIL,1,NX,1,1,1,1,1,1) COVAL(TEM1PLOT,TEM1,0.0,0.0) ! 0.0,0.0 means 'choose scale of plot ! to fit maximum and minimum ORSIZ=0.2 ! Determines how many lines are plotted endif ! end of if(caseno.gt.1) LIBREF=163 save23end STOP