## Interactive session for prepared example 9

```
*******************************************************
****  Welcome to the PDE2D 9.6 Interactive Driver  ****
*******************************************************

PDE2D can solve systems of (linear or nonlinear) steady-state,
time-dependent and eigenvalue partial differential equations
in 1D intervals, general 2D regions, and in a wide range of simple
3D regions.  Ordinary differential equation systems can also be
solved.

problem.  The answers you give will be used to construct a PDE2D
FORTRAN program, which can then be compiled and linked with the PDE2D
runtime routines to produce an executable program.  The FORTRAN
driver program created will be well-documented and highly readable
(most of the interactive messages are repeated in the comments),
so that minor modifications or corrections can be made directly to
the FORTRAN program, without the need to work through a new
interactive session.

You can alternatively create your PDE2D FORTRAN program using the
PDE2D graphical user interface (GUI) ("pde2d_gui [progname]").  It
[RETURN]
is extraordinarily easy to set up problems using the PDE2D GUI,
which handles 0D and 1D problems, and 2D and 3D problems in "a wide
range of simple regions".  However, the PDE2D GUI cannot handle
complex regions, so if you have a complex 2D region you must use
this Interactive Driver.

If this is your first time to use PDE2D, you may want to work
through an example problem before trying one of your own.  Do you
want to work through a prepared example?
|---- Enter yes or no
yes
Several prepared examples are available.  Enter:

1 - to see a simple problem: a simply-supported elastic plate
equation, with a unit load concentrated at the midpoint of
a square.
2 - to see a more complex problem: a non-linear, steady-state
PDE, solved in an annulus.  Dirichlet (U = ...) boundary
conditions are imposed on part of the boundary, and Neumann
(dU/dn = ...) conditions are imposed on the other part, in
this example.  The initial triangulation is generated
automatically, and adaptive grid refinement is illustrated.
3 - to see an eigenvalue problem.  The region has a curved
interface across which material properties vary abruptly, in
this example.
4 - to see the first part of a thermal stress problem.  In this
part, the temperature distribution in a V-notched block is
calculated by solving the time-dependent heat conduction
equation, using adaptive time step control.
5 - to see the second part of a thermal stress problem.  In
this part, the stresses induced in the V-notched block by
thermal expansion are calculated, using the temperature
distribution output by example 4.  You must run example 4
[RETURN]
and save the tabular output before you can run example 5.
Examples 4 and 5 illustrate communication between problems.
6 - to see a 1D time-dependent integro-differential equation for
a financial math application.  In this problem there is a
term involving an integral of the solution, which requires
that we use PDE2D's feature for interpolating the solution
at the last saved time step, for use in the integral term.
7 - to see a waveguide problem (an eigenvalue problem in which
the eigenvalue appears nonlinearly).  This example shows how
to handle boundary conditions of different types on the same
arc, and how to produce a plot of a computed integral vs time.
8 - to see the Navier-Stokes equations (penalty formulation)
solved for a fluid flowing around a bend.
9 - to see a 3D elasticity problem, solved in a torus.  This
example illustrates the use of user-defined coordinate
transformations to handle more general 3D regions.
10 - to see a time-dependent wave equation (reduced to a system
of two PDEs), solved in a 3D box.
11 - to see a 3D eigenvalue problem (the Schrodinger equation
in a hydrogen atom).  This example illustrates the use of
spherical coordinates and periodic boundary conditions.
12 - to see a 3D eigenvalue problem, solved in a composite region
[RETURN]
consisting of two cylinders of different material properties.
13 - to see the axisymmetric Navier-Stokes equations solved in a
non-rectangular channel, using the collocation FEM.
14 - to see a 1D saturated/unsaturated water flow problem.
15 - to see a 1D version of the Schrodinger eigenvalue equation
of example 11.
0 - (no example)

If you select one of the examples, the correct answer for each
interactive question will be supplied after the question.
|---- Enter an integer value in the range 0 to 15
9
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ This is a steady-state elasticity problem:                           \$
\$                                                                      \$
\$           dS11/dX + dS12/dY + dS13/dZ = 0                            \$
\$           dS12/dX + dS22/dY + dS23/dZ = 0                            \$
\$           dS13/dX + dS23/dY + dS33/dZ = 0                            \$
\$ where                                                                \$
\$      S11 = A*Ux + B*Vy + B*Wz         S12 = C*(Uy+Vx)                \$
\$      S22 = A*Vy + B*Ux + B*Wz         S13 = C*(Uz+Wx)                \$
\$      S33 = A*Wz + B*Ux + B*Vy         S23 = C*(Vz+Wy)                \$
\$                                                                      \$
\$ where (U,V,W) is the displacement vector and                         \$
\$   A = E*(1-Vnu)/(1+Vnu)/(1-2*Vnu)                                    \$
\$   B = E*Vnu/(1+Vnu)/(1-2*Vnu)                                        \$
\$   C = E/2.0/(1+Vnu)                                                  \$
\$ and E = 2, Vnu=0.33 are the elastic modulus and Poisson ratio, and   \$
\$ Ux means derivative with respect to X.                               \$
\$                                                                      \$
\$ The object modeled is a torus, of major radius R0=5 and minor radius \$
\$ R1=4, with a smaller torus, of minor radius 0.2*R1, removed; ie,     \$
\$ a cross-section of the torus is an annulus.                          \$
\$                                                                      \$
[RETURN]
\$ Toroidal coordinates will be used:                                   \$
\$         X = (R0 + P3*COS(P2))*COS(P1)                                \$
\$         Y = (R0 + P3*COS(P2))*SIN(P1)                                \$
\$         Z = P3*SIN(P2)                                               \$
\$ where P1 is the (toroidal) angle measured within the major circle,   \$
\$ P2 is the (poloidal) angle measured in the minor circle, and P3 is   \$
\$ radial distance from the center of the minor circle.  0 < P1 < 2*PI, \$
\$ 0 < P2 < 2*PI, 0.2*R1 < P3 < R1.                                     \$
\$                                                                      \$
\$ There are periodic boundary conditions on P1 and on P2, and at the   \$
\$ inner surface (P3=0.2*R1), the displacements U,V and W are 0.  On    \$
\$ the outer surface (P3=R1), there is a unit inward boundary force,    \$
\$ ie, the boundary force vector is -(NORMx,NORMy,NORMz), where         \$
\$ (NORMx,NORMy,NORMz) is the unit outward normal to the boundary, in   \$
\$ Cartesian coordinates.  This means the boundary condition is:        \$
\$      S11*NORMx + S12*NORMy + S13*NORMz = -NORMx                      \$
\$      S12*NORMx + S22*NORMy + S23*NORMz = -NORMy                      \$
\$      S13*NORMx + S23*NORMy + S33*NORMz = -NORMz                      \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
[RETURN]
In what follows, when you are told to enter a 'FORTRAN expression',
this means any valid FORTRAN expression of 65 characters or less.
In this expression, you may include references to FORTRAN function
subprograms.  You may define these functions line by line at the end
of the interactive session, when prompted, or add them later using an
editor.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you enter a "#" in the first column of any input line, this       +
+ instructs the interactive driver to read this and subsequent input   +
+ lines from the file "pde2d.in".  A "#" in the first column of an     +
+ input line in the file "pde2d.in" (or an end-of-file) instructs the  +
+ driver to switch back to interactive input.                          +
+                                                                      +
+ All lines input during an interactive session are echo printed to    +
+ a file "echo.out".  You may want to modify this file and rename it   +
+ "pde2d.in", and read some or all of your input from this file during +
+ your next interactive session.                                       +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++

PDE2D can solve problems with 0,1,2 or 3 space variables.  Enter the
[RETURN]

0 - to solve a time-dependent ordinary differential equation system,
or an algebraic or algebraic eigenvalue system
1 - to solve problems in 1D intervals
2 - to solve problems in general 2D regions
3 - to solve problems in a wide range of simple 3D regions

\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: 3                                                             \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter an integer value in the range 0 to 3
3
Is double precision mode to be used?  Double precision is recommended.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If double precision mode is used, variables and functions assigned   +
+ names beginning with a letter in the range A-H or O-Z will be DOUBLE +
+ PRECISION, and you should use double precision constants and FORTRAN +
+ expressions throughout; otherwise such variables and functions will  +
+ be of type REAL.  In either case, variables and functions assigned   +
+ names beginning with I,J,K,L,M or N will be of INTEGER type.         +
+                                                                      +
+ It is possible to convert a single precision PDE2D program to double +
+ precision after it has been created, using an editor.  Just change   +
+ all occurrences of "real" to "double precision"                      +
+                    " tdp" to "dtdp"  (note leading blank)            +
+ Any user-written code or routines must be converted "by hand", of    +
+ course.  To convert from double to single, reverse the changes.      +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: yes                                                           \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
yes
If you don't want to read the FINE PRINT, default NPROB.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you want to solve several similar problems in the same run, set   +
+ NPROB equal to the number of problems you want to solve.  Then NPROB +
+ loops through the main program will be done, with IPROB=1,...,NPROB, +
+ and you can make the problem parameters vary with IPROB.  NPROB      +
+ defaults to 1.                                                       +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ press [RETURN] to default NPROB                                      \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NPROB =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

PDE2D solves the time-dependent system (note: U,F,G,U0 may be vectors,
C,RHO may be matrices):

C(X,Y,Z,T,U,Ux,Uy,Uz)*d(U)/dT =
F(X,Y,Z,T,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz)

F(X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz) = 0

or the linear and homogeneous eigenvalue system:

F(X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz) = lambda*RHO(X,Y,Z)*U

with boundary conditions:

G(X,Y,Z,[T],U,Ux,Uy,Uz) = 0
(periodic boundary conditions are also permitted)

For time-dependent problems there are also initial conditions:

U = U0(X,Y,Z)   at T=T0
[RETURN]

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If your PDEs involve the solution at points other than (P1,P2,P3),   +
+ the function                                                         +
+             (D)OLDSOL3(IDER,IEQ,PP1,PP2,PP3,KDEG)                    +
+ will interpolate (using interpolation of degree KDEG=1,2 or 3) to    +
+ (PP1,PP2,PP3) the function saved in UOUT(*,*,*,IDER,IEQ,ISET) on the +
+ last time step or iteration (ISET) for which it has been saved.      +
+ Thus, for example, if IDER=1, this will return the latest value of   +
+ component IEQ of the solution at (PP1,PP2,PP3), assuming this has    +
+ not been modified using UPRINT... If your equations involve          +
+ integrals of the solution, for example, you can use (D)OLDSOL3 to    +
+ approximate these using the solution from the last time step or      +
+ iteration.                                                           +
+                                                                      +
+ CAUTION: For a steady-state or eigenvalue problem, you must reset    +
+ NOUT=1 if you want to save the solution each iteration.              +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ A system of NEQN complex partial differential equations must be      +
+ written as a system of 2*NEQN real equations, by separating the      +
+ equations into their real and imaginary parts.  However, note that   +
+ the complex arithmetic abilities of FORTRAN can be used to simplify  +
[RETURN]
+ this separation.  For example, the complex PDE:                      +
+      I*(Uxx+Uyy+Uzz) - 1/(1+U**10) = 0,   where U = UR + UI*I        +
+ would be difficult to split up analytically, but using FORTRAN       +
+ expressions it is easy:                                              +
+   F1 = -(UIxx+UIyy+UIzz) -  REAL(1.0/(1.0+CMPLX(UR,UI)**10))         +
+   F2 =  (URxx+URyy+URzz) - AIMAG(1.0/(1.0+CMPLX(UR,UI)**10))         +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
You may now define global parameters, which may be referenced in any
of the "FORTRAN expressions" you input throughout the rest of this
interactive session.  You will be prompted alternately for parameter
names and their values; enter a blank name when you are finished.

Parameter names are valid FORTRAN variable names, starting in
column 1.  Thus each name consists of 1 to 6 alphanumeric characters,
the first of which must be a letter.  If the first letter is in the
range I-N, the parameter must be an integer.

Parameter values are either FORTRAN constants or FORTRAN expressions
involving only constants and global parameters defined on earlier
lines.  They may also be functions of the problem number IPROB, if
you are solving several similar problems in one run (NPROB > 1).  Note
that you are defining global CONSTANTS, not functions; e.g., parameter
[RETURN]
values may not reference any of the independent or dependent variables

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you define other parameters here later, using an editor, you must +
+ add them to COMMON block /PARM8Z/ everywhere this block appears, if  +
+ they are to be "global" parameters.                                  +
+                                                                      +
+ The variable PI is already included as a global parameter, with an   +
+ accurate value 3.14159...                                            +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: R0                                                            \$
\$          5                                                           \$
\$        R1                                                            \$
\$          4                                                           \$
\$        E                                                             \$
\$          2                                                           \$
\$        VNU                                                           \$
\$          0.33                                                        \$
\$        A                                                             \$
\$          E*(1-VNU)/(1+VNU)/(1-2*VNU)                                 \$
[RETURN]
\$        B                                                             \$
\$          E*VNU/(1+VNU)/(1-2*VNU)                                     \$
\$        C                                                             \$
\$          E/2.0/(1+VNU)                                               \$
\$      [blank line]                                                    \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
Parameter name = (type blank line to terminate)
R0
R0     =
|----Enter constant or FORTRAN expression-----------------------|
5
Parameter name = (type blank line to terminate)
R1
R1     =
|----Enter constant or FORTRAN expression-----------------------|
4
Parameter name = (type blank line to terminate)
E
E      =
|----Enter constant or FORTRAN expression-----------------------|
2
Parameter name = (type blank line to terminate)
VNU
VNU    =
|----Enter constant or FORTRAN expression-----------------------|
0.33
Parameter name = (type blank line to terminate)
A
A      =
|----Enter constant or FORTRAN expression-----------------------|
E*(1-VNU)/(1+VNU)/(1-2*VNU)
Parameter name = (type blank line to terminate)
B
B      =
|----Enter constant or FORTRAN expression-----------------------|
E*VNU/(1+VNU)/(1-2*VNU)
Parameter name = (type blank line to terminate)
C
C      =
|----Enter constant or FORTRAN expression-----------------------|
E/2.0/(1+VNU)
Parameter name = (type blank line to terminate)

If you don't want to read the FINE PRINT, enter 'no'.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ Do you want to be given a chance to write a FORTRAN block before the +
+ definitions of many functions?  If you answer 'no', you will still   +
+ be given a chance to write code before the definition of the PDE     +
+ coefficients, but not other functions.  Of course, you can always    +
+ add code later directly to the resulting program, using an editor.   +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: no                                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
no
You can solve problems in your region only if you can describe it by
X = X(P1,P2,P3)
Y = Y(P1,P2,P3)
Z = Z(P1,P2,P3)
with constant limits on the parameters P1,P2,P3.  If your region is
rectangular, enter ITRANS=0 and the trivial parameterization
X = P1
Y = P2
Z = P3
will be used.  Otherwise, you need to read the FINE PRINT below.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If P1,P2,P3 represent cylindrical, spherical or other non-Cartesian  +
+ coordinates, you can reference the Cartesian coordinates X,Y,Z       +
+ and derivatives of your unknowns with respect to these coordinates,  +
+ when you define your PDE coefficients, boundary conditions, and      +
+ volume and boundary integrals, if you enter ITRANS .NE. 0.  Enter:   +
+   ITRANS = 1, if P1,P2,P3 are cylindrical coordinates, that is, if   +
+               P1=R, P2=Theta, P3=Z, where X = R*cos(Theta)           +
+                                           Y = R*sin(Theta)           +
+                                           Z = Z                      +
+   ITRANS = -1, same as ITRANS=1, but P1=Theta, P2=R, P3=Z            +
[RETURN]
+   ITRANS = 2, if P1,P2,P3 are spherical coordinates, that is, if     +
+               P1=Rho, P2=Phi, P3=Theta, where                        +
+                                    X = Rho*sin(Phi)*cos(Theta)       +
+                                    Y = Rho*sin(Phi)*sin(Theta)       +
+                                    Z = Rho*cos(Phi)                  +
+               (Theta is longitude, Phi is measured from north pole)  +
+   ITRANS = -2, same as ITRANS=2, but P1=Rho, P2=Theta, P3=Phi        +
+   ITRANS = 3, to define your own coordinate transformation.  In this +
+               case, you will be prompted to define X,Y,Z and their   +
+               first and second derivatives in terms of P1,P2,P3.     +
+               Because of symmetry, you will not be prompted for all  +
+               of the second derivatives.  If you make a mistake in   +
+               computing any of these derivatives, PDE2D will usually +
+               be able to issue a warning message. (X1 = dX/dP1, etc) +
+   ITRANS = -3, same as ITRANS=3, but you will only be prompted to    +
+               define X,Y,Z; their first and second derivatives will  +
+               be approximated using finite differences.              +
+   When ITRANS = -3 or 3, the first derivatives of X,Y,Z must all be  +
+   continuous.                                                        +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: ITRANS = -3                                                   \$
[RETURN]
\$                                                                      \$
\$ Then enter the following, when prompted:                             \$
\$   X = (R0 + P3*COS(P2))*COS(P1)                                      \$
\$   Y = (R0 + P3*COS(P2))*SIN(P1)                                      \$
\$   Z = P3*SIN(P2)                                                     \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
ITRANS =
|---- Enter an integer value in the range -3 to 3
-3
X =
|----Enter constant or FORTRAN expression-----------------------|
(R0 + P3*COS(P2))*COS(P1)
Y =
|----Enter constant or FORTRAN expression-----------------------|
(R0 + P3*COS(P2))*SIN(P1)
Z =
|----Enter constant or FORTRAN expression-----------------------|
P3*SIN(P2)
A collocation finite element method is used, with tri-cubic Hermite
basis functions on the elements (small boxes) defined by the grid
points:
P1GRID(1),...,P1GRID(NP1GRID)
P2GRID(1),...,P2GRID(NP2GRID)
P3GRID(1),...,P3GRID(NP3GRID)
You will first be prompted for NP1GRID, the number of P1-grid points,
then for P1GRID(1),...,P1GRID(NP1GRID).  Any points defaulted will be
uniformly spaced between the points you define; the first and last
points cannot be defaulted.  Then you will be prompted similarly
for the number and values of the P2 and P3-grid points.  The limits
on the parameters are then:
P1GRID(1) < P1 < P1GRID(NP1GRID)
P2GRID(1) < P2 < P2GRID(NP2GRID)
P3GRID(1) < P3 < P3GRID(NP3GRID)

\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: NP1GRID = 5                                                   \$
\$        P1GRID(1) = 0                                                 \$
\$        P1GRID(NP1GRID) = 2*PI                                        \$
\$ and default the other P1GRID points                                  \$
\$        NP2GRID = 8                                                   \$
[RETURN]
\$        P2GRID(1) = 0                                                 \$
\$        P2GRID(NP2GRID) = 2*PI                                        \$
\$ and default the other P2GRID points                                  \$
\$        NP3GRID = 8                                                   \$
\$        P3GRID(1) = 0.2*R1                                            \$
\$        P3GRID(NP3GRID) = R1                                          \$
\$ and default the other P3GRID points                                  \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NP1GRID =
|---- Enter an integer value in the range 1 to +INFINITY
5
P1GRID(1) =
|----Enter constant or FORTRAN expression-----------------------|
0
P1GRID(2) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P1GRID(3) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P1GRID(4) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P1GRID(NP1GRID) =
|----Enter constant or FORTRAN expression-----------------------|
2*PI
NP2GRID =
|---- Enter an integer value in the range 1 to +INFINITY
8
P2GRID(1) =
|----Enter constant or FORTRAN expression-----------------------|
0
P2GRID(2) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(3) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(4) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(5) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(6) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(7) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2GRID(NP2GRID) =
|----Enter constant or FORTRAN expression-----------------------|
2*PI
NP3GRID =
|---- Enter an integer value in the range 1 to +INFINITY
8
P3GRID(1) =
|----Enter constant or FORTRAN expression-----------------------|
0.2*R1
P3GRID(2) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(3) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(4) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(5) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(6) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(7) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3GRID(NP3GRID) =
|----Enter constant or FORTRAN expression-----------------------|
R1
If you don't want to read the FINE PRINT, enter ISOLVE = 1.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ The following linear system solvers are available:                   +
+                                                                      +
+ 1. Sparse direct method                                              +
+               Harwell Library routine MA27 (used by permission) is   +
+               used to solve the (positive definite) "normal"         +
+               equations A**T*A*x = A**T*b.  The normal equations,    +
+               which are essentially the equations which would result +
+               if a least squares finite element method were used     +
+               instead of a collocation method, are substantially     +
+               more ill-conditioned than the original system Ax = b,  +
+               so it may be important to use high precision if this   +
+               option is chosen.                                      +
+ 2. Frontal method                                                    +
+               This is an out-of-core band solver.  If you want to    +
+               override the default number of rows in the buffer (11),+
+               set a new value for NPMX8Z in the main program.        +
+ 3. Jacobi conjugate gradient iterative method                        +
+               A preconditioned conjugate gradient iterative method   +
+               is used to solve the (positive definite) normal        +
[RETURN]
+               equations.  High precision is also important if this   +
+               option is chosen.  (This solver is MPI-enhanced, if    +
+               MPI is available.)  If you want to override the        +
+               default convergence tolerance, set a new relative      +
+               tolerance CGTL8Z in the main program.                  +
+ 4. Local solver (normal equations)                                   +
+ 5. Local solver (original equations)                                 +
+               Choose these options ONLY if alterative linear system  +
+               solvers have been installed locally.  See subroutines  +
+               (D)TD3M, (D)TD3N in file (d)subs.f for instructions    +
+               on how to add local solvers.                           +
+ 6. MPI-based parallel band solver                                    +
+               This is a parallel solver which runs efficiently on    +
+               multiple processor machines, under MPI.  It is a       +
+               band solver, with the matrix distributed over the      +
+               available processors.  Choose this option ONLY if the  +
+               solver has been activated locally.  See subroutine     +
+               (D)TD3O in file (d)subs.f for instructions on how to   +
+               activate this solver and the MPI-enhancements to the   +
+                                                                      +
+ Enter ISOLVE = 1,2,3,4,5 or 6 to select a linear system solver.      +
[RETURN]
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++

If you don't want to read the FINE PRINT, enter ISOLVE = 1.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: ISOLVE = 3                                                    \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
ISOLVE =
|---- Enter an integer value in the range 1 to 6
3
What type of PDE problem do you want to solve?

2. a time-dependent problem
3. a linear, homogeneous eigenvalue problem

Enter 1,2 or 3 to select a problem type.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: 1                                                             \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter an integer value in the range 1 to 3
1
Is this a linear problem? ("linear" means all differential equations
and all boundary conditions are linear).  If you aren't sure, it is
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: yes                                                           \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
yes
How many differential equations (NEQN) are there in your problem?
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: NEQN = 3                                                      \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NEQN =
|---- Enter an integer value in the range 1 to 99
3
You may now choose names for the component(s) of the (possibly vector)
solution U.  Each must be an alphanumeric string of one to three
characters, beginning with a letter in the range A-H or O-Z.  The
variable names X,Y,Z,P and T must not be used.  The name should
start in column 1.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: U1 = U                                                        \$
\$        U2 = V                                                        \$
\$        U3 = W                                                        \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
U1 =
U
U2 =
V
U3 =
W
You may calculate one or more integrals (over the entire region) of
some functions of the solution and its derivatives.  How many integrals
(NINT), if any, do you want to calculate?

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ In the FORTRAN program created by the preprocessor, the computed     +
+ values of the integrals will be returned in the vector SINT8Z.  If   +
+ several iterations or time steps are done, only the last computed    +
+ values are saved in SINT8Z (all values are printed).                 +
+                                                                      +
+ A limiting value, SLIM8Z(I), for the I-th integral can be set        +
+ below in the main program.  The computations will then stop          +
+ gracefully whenever SINT8Z(I) > SLIM8Z(I), for any I=1...NINT.       +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: NINT = 1                                                      \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NINT =
|---- Enter an integer value in the range 0 to 20
1
Enter FORTRAN expressions for the functions whose integrals are to be
calculated and printed.  They may be functions of

X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz
V,Vx,Vy,Vz,Vxx,Vyy,Vzz,Vxy,Vxz,Vyz
W,Wx,Wy,Wz,Wxx,Wyy,Wzz,Wxy,Wxz,Wyz
and (if applicable) T

The parameters P1,P2,P3 and derivatives with respect to these may also
be referenced (U1 = dU/dP1, etc):
U1,U2,U3,U11,U22,U33,U12,U13,U23
V1,V2,V3,V11,V22,V33,V12,V13,V23
W1,W2,W3,W11,W22,W33,W12,W13,W23

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you only want to integrate a function over part of the region,    +
+ define that function to be zero in the rest of the region.           +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ We want to compute the total volume change, which is the integral    \$
\$ over our region of Ux+Vy+Wz ("true" value = -697.200).  Thus,        \$
\$ enter: INTEGRAL = Ux+Vy+Wz                                           \$
[RETURN]
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
INTEGRAL =
|----Enter constant or FORTRAN expression-----------------------|
Ux+Vy+Wz
You may calculate one or more boundary integrals (over the entire
boundary) of some functions of the solution and its derivatives.  How
many boundary integrals (NBINT), if any, do you want to calculate?

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ In the FORTRAN program created by the preprocessor, the computed     +
+ values of the integrals will be returned in the vector BINT8Z.  If   +
+ several iterations or time steps are done, only the last computed    +
+ values are saved in BINT8Z (all values are printed).                 +
+                                                                      +
+ A limiting value, BLIM8Z(I), for the I-th boundary integral can be   +
+ set below in the main program.  The computations will then stop      +
+ gracefully whenever BINT8Z(I) > BLIM8Z(I), for any I=1...NBINT.      +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: NBINT = 1                                                     \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NBINT =
|---- Enter an integer value in the range 0 to 20
1
Enter FORTRAN expressions for the functions whose integrals are to be
calculated and printed.  They may be functions of

X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz
V,Vx,Vy,Vz,Vxx,Vyy,Vzz,Vxy,Vxz,Vyz
W,Wx,Wy,Wz,Wxx,Wyy,Wzz,Wxy,Wxz,Wyz
and (if applicable) T

The components (NORMx,NORMy,NORMz) of the unit outward normal vector
may also be referenced.

The parameters P1,P2,P3 and derivatives with respect to these may
also be referenced:
U1,U2,U3,U11,U22,U33,U12,U13,U23
V1,V2,V3,V11,V22,V33,V12,V13,V23
W1,W2,W3,W11,W22,W33,W12,W13,W23
You can also reference the normal derivatives Unorm,Vnorm,Wnorm.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you only want to integrate a function over part of the boundary,  +
+ define that function to be zero on the rest of the boundary.         +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
[RETURN]
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ By the divergence theorem, the volume integral of Ux+Vy+Wz should    \$
\$ equal the boundary integral of U*NORMx+V*NORMy+W*NORMz, so we want   \$
\$ to compute this boundary integral to verify the equality.  Note that \$
\$ boundary integrals are computed over all 6 boundary pieces, but in   \$
\$ this case the integrals at p1=0 and p1=2*pi will cancel, and         \$
\$ similarly at p2=0 and p2=2*pi.  Thus enter:                          \$
\$ BND. INTEGRAL = U*NORMx+V*NORMy+W*NORMz                              \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
BND. INTEGRAL =
|----Enter constant or FORTRAN expression-----------------------|
U*NORMx+V*NORMy+W*NORMz
Now enter FORTRAN expressions to define the PDE coefficients, which
may be functions of

X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz
V,Vx,Vy,Vz,Vxx,Vyy,Vzz,Vxy,Vxz,Vyz
W,Wx,Wy,Wz,Wxx,Wyy,Wzz,Wxy,Wxz,Wyz

and, in some cases, of the parameter T.

Recall that the PDEs have the form

F1 = 0
F2 = 0
F3 = 0

The parameters P1,P2,P3 and derivatives with respect to these may also
be referenced (U1 = dU/dP1, etc):
U1,U2,U3,U11,U22,U33,U12,U13,U23
V1,V2,V3,V11,V22,V33,V12,V13,V23
W1,W2,W3,W11,W22,W33,W12,W13,W23
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ When asked if you want to write a FORTRAN block,                     \$
[RETURN]
\$ enter: no                                                            \$
\$   then enter the following, when prompted:                           \$
\$    F1 = A*Uxx+B*Vyx+B*Wzx + C*(Uyy+Vxy) + C*(Uzz+Wxz)                \$
\$    F2 = C*(Uyx+Vxx) + A*Vyy+B*Uxy+B*Wzy + C*(Vzz+Wyz)                \$
\$    F3 = C*(Uzx+Wxx) + C*(Vzy+Wyy) + A*Wzz+B*Uxz+B*Vyz                \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$

Do you want to write a FORTRAN block to define some parameters to be
used in the definition of these coefficients?
|---- Enter yes or no
no
F1 =
|----Enter constant or FORTRAN expression-----------------------|
A*Uxx+B*Vyx+B*Wzx + C*(Uyy+Vxy) + C*(Uzz+Wxz)
F2 =
|----Enter constant or FORTRAN expression-----------------------|
C*(Uyx+Vxx) + A*Vyy+B*Uxy+B*Wzy + C*(Vzz+Wyz)
F3 =
|----Enter constant or FORTRAN expression-----------------------|
C*(Uzx+Wxx) + C*(Vzy+Wyy) + A*Wzz+B*Uxz+B*Vyz
If you do not have any periodic boundary conditions, enter IPERDC=0.

Enter IPERDC=1 for periodic conditions at P1 = P1GRID(1),P1GRID(NP1GRID)
IPERDC=2 for periodic conditions at P2 = P2GRID(1),P2GRID(NP2GRID)
IPERDC=3 for periodic conditions at P3 = P3GRID(1),P3GRID(NP3GRID)
IPERDC=4 for periodic conditions on both P1 and P2
IPERDC=5 for periodic conditions on both P1 and P3
IPERDC=6 for periodic conditions on both P2 and P3
IPERDC=7 for periodic conditions on P1, P2 and P3.
+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ When periodic boundary conditions are selected, they apply to all    +
+ variables by default.  To turn off periodic boundary conditions on   +
+ the I-th variable, set PERDC(I) to 0 (or another appropriate value   +
+ of IPERDC) below in the main program and set the desired boundary    +
+ conditions in subroutine GB8Z, "by hand".                            +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: IPERDC = 4                                                    \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
IPERDC =
|---- Enter an integer value in the range 0 to 7
4
Enter FORTRAN expressions to define the boundary condition functions,
which may be functions of

X,Y,Z,U,Ux,Uy,Uz,
V,Vx,Vy,Vz,
W,Wx,Wy,Wz and (if applicable) T

Recall that the boundary conditions have the form

G1 = 0
G2 = 0
G3 = 0

Enter NONE to indicate "no" boundary condition.

The parameters P1,P2,P3 and derivatives with respect to these may also
be referenced (U1 = dU/dP1, etc):
U1,U2,U3
V1,V2,V3
W1,W2,W3
The components (NORMx,NORMy,NORMz) of the unit outward normal vector
may also be referenced, as well as the normal derivatives Unorm,
[RETURN]
Vnorm,Wnorm.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If "no" boundary condition is specified, the corresponding PDE is    +
+ enforced at points just inside the boundary (exactly on the          +
+ boundary, if EPS8Z is set to 0 in the main program).                 +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++

First define the boundary conditions on the face P1 = P1GRID(1).

IPERDC = 4, so periodic boundary conditions set automatically
[RETURN]

Now define the boundary conditions on the face P1 = P1GRID(NP1GRID).

IPERDC = 4, so periodic boundary conditions set automatically
[RETURN]

Now define the boundary conditions on the face P2 = P2GRID(1).

IPERDC = 4, so periodic boundary conditions set automatically
[RETURN]

Now define the boundary conditions on the face P2 = P2GRID(NP2GRID).

IPERDC = 4, so periodic boundary conditions set automatically
[RETURN]

Now define the boundary conditions on the face P3 = P3GRID(1).
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: G1 = U                                                        \$
\$        G2 = V                                                        \$
\$        G3 = W                                                        \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
G1 =
|----Enter constant or FORTRAN expression-----------------------|
U
G2 =
|----Enter constant or FORTRAN expression-----------------------|
V
G3 =
|----Enter constant or FORTRAN expression-----------------------|
W

Now define the boundary conditions on the face P3 = P3GRID(NP3GRID).
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter:                                                               \$
\$  G1 = (A*Ux+B*Vy+B*Wz)*NORMx+C*(Uy+Vx)*NORMy+C*(Uz+Wx)*NORMz + NORMx \$
\$  G2 = C*(Uy+Vx)*NORMx+(A*Vy+B*Ux+B*Wz)*NORMy+C*(Vz+Wy)*NORMz + NORMy \$
\$  G3 = C*(Uz+Wx)*NORMx+C*(Vz+Wy)*NORMy+(A*Wz+B*Ux+B*Vy)*NORMz + NORMz \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
G1 =
|----Enter constant or FORTRAN expression-----------------------|
(A*Ux+B*Vy+B*Wz)*NORMx+C*(Uy+Vx)*NORMy+C*(Uz+Wx)*NORMz + NORMx
G2 =
|----Enter constant or FORTRAN expression-----------------------|
C*(Uy+Vx)*NORMx+(A*Vy+B*Ux+B*Wz)*NORMy+C*(Vz+Wy)*NORMz + NORMy
G3 =
|----Enter constant or FORTRAN expression-----------------------|
C*(Uz+Wx)*NORMx+C*(Vz+Wy)*NORMy+(A*Wz+B*Ux+B*Vy)*NORMz + NORMz
If you don't want to read the FINE PRINT, default all of the following
variables.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ Normally, PDE2D saves the values of U,Ux,Uy,Uz,V,Vx,                 +
+ Vy,Vz,W,Wx,Wy,Wz at the output points.  If different                 +
+ variables are to be saved (for later printing or plotting) the       +
+ following functions can be used to re-define the output variables:   +
+    define UPRINT(1) to replace  U                                    +
+           UXPRINT(1)            Ux                                   +
+           UYPRINT(1)            Uy                                   +
+           UZPRINT(1)            Uz                                   +
+           UPRINT(2)             V                                    +
+           UXPRINT(2)            Vx                                   +
+           UYPRINT(2)            Vy                                   +
+           UZPRINT(2)            Vz                                   +
+           UPRINT(3)             W                                    +
+           UXPRINT(3)            Wx                                   +
+           UYPRINT(3)            Wy                                   +
+           UZPRINT(3)            Wz                                   +
+ Each function may be a function of                                   +
+                                                                      +
[RETURN]
+    X,Y,Z,U,Ux,Uy,Uz,Uxx,Uyy,Uzz,Uxy,Uxz,Uyz                          +
+          V,Vx,Vy,Vz,Vxx,Vyy,Vzz,Vxy,Vxz,Vyz                          +
+          W,Wx,Wy,Wz,Wxx,Wyy,Wzz,Wxy,Wxz,Wyz                          +
+                                            and (if applicable) T     +
+                                                                      +
+ Each may also be a function of the integral estimates SINT(1),...,   +
+ BINT(1),...                                                          +
+                                                                      +
+ The parameters P1,P2,P3 and derivatives with respect to these may    +
+ also be referenced (U1 = dU/dP1, etc):                               +
+       U1,U2,U3,U11,U22,U33,U12,U13,U23                               +
+       V1,V2,V3,V11,V22,V33,V12,V13,V23                               +
+       W1,W2,W3,W11,W22,W33,W12,W13,W23                               +
+                                                                      +
+ The default for each variable is no change, for example, UPRINT(1)   +
+ defaults to U.  Enter FORTRAN expressions for each of the            +
+ following functions (or default).                                    +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ We are going to plot the displacements at two P1=constant cross-     \$
\$ sections.  The in-plane axes at these cross-sections are in the      \$
\$ directions of unit vectors (cos(p1),sin(p1),0) and (0,0,1) and the   \$
[RETURN]
\$ out-of-plane axis is in the direction of (-sin(p1),cos(p1),0).  Thus \$
\$ the in-plane displacement components are (UPRINT(1),W) and the       \$
\$ out-of-plane displacement component is UPRINT(2) if we               \$
\$ enter: UPRINT(1) =  COS(P1)*U + SIN(P1)*V                            \$
\$        UPRINT(2) = -SIN(P1)*U + COS(P1)*V                            \$
\$        and default the other output modification variables           \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
Replace U for postprocessing?
UPRINT(1) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|
COS(P1)*U + SIN(P1)*V
Replace Ux for postprocessing?
UXPRINT(1) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Uy for postprocessing?
UYPRINT(1) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Uz for postprocessing?
UZPRINT(1) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace V for postprocessing?
UPRINT(2) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|
-SIN(P1)*U + COS(P1)*V
Replace Vx for postprocessing?
UXPRINT(2) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Vy for postprocessing?
UYPRINT(2) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Vz for postprocessing?
UZPRINT(2) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace W for postprocessing?
UPRINT(3) =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Wx for postprocessing?
UXPRINT(3) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Wy for postprocessing?
UYPRINT(3) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Replace Wz for postprocessing?
UZPRINT(3) =            (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

The solution is normally saved on an NP1+1 by NP2+1 by NP3+1
rectangular grid of points,
P1 = P1A + I*(P1B-P1A)/NP1,    I = 0,...,NP1
P2 = P2A + J*(P2B-P2A)/NP2,    J = 0,...,NP2
P3 = P3A + K*(P3B-P3A)/NP3,    K = 0,...,NP3
Enter values for NP1, NP2 and NP3.  Suggested values: NP1=NP2=NP3=16.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you want to save the solution at an arbitrary user-specified set  +
+ of points, set NP2=NP3=0 and NP1+1=number of points.  In this case   +
+ you can request tabular output, but no plots can be made.            +
+                                                                      +
+ If you set NEAR8Z=1 in the main program, the values saved at each    +
+ output point will actually be the solution as evaluated at a nearby  +
+ collocation point.  For most problems this obviously will produce    +
+ less accurate output or plots, but for certain (rare) problems, a    +
+ solution component may be much less noisy when plotted only at       +
+ collocation points.                                                  +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: NP1 = 12                                                      \$
\$        NP2 = 15                                                      \$
[RETURN]
\$        NP3 =  8                                                      \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NP1 =
|---- Enter an integer value in the range 1 to +INFINITY
12
NP2 =
|---- Enter an integer value in the range 0 to +INFINITY
15
NP3 =
|---- Enter an integer value in the range 1 to +INFINITY
8
The solution is saved on an NP1+1 by NP2+1 by NP3+1 rectangular grid
covering the box (P1A,P1B) x (P2A,P2B) x (P3A,P3B).  Enter values for
P1A,P1B,P2A,P2B,P3A,P3B.  These variables are usually defaulted.

The defaults are P1A = P1GRID(1), P1B = P1GRID(NP1GRID)
P2A = P2GRID(1), P2B = P2GRID(NP2GRID)
P3A = P3GRID(1), P3B = P3GRID(NP3GRID)

\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ press [RETURN] to default P1A,P1B,P2A,P2B,P3A,P3B                    \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
P1A =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P1B =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2A =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P2B =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3A =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

P3B =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

To generate tabular or graphical output, choose an output option from
the list below.

0. No further output is desired
1. Table of values at output points
The tabulated output is saved in a file.
2. A plot of the contour (level) surfaces of a scalar variable.
This plot gives only a coarse overview of the solution, but is
unique in that it shows the general form of the solution in a
single picture.  The different levels are identified by color.
These plots will only reflect the true geometry if ITRANS=0.
3. Surface plot of a scalar variable, at P1, P2 or P3 = constant
cross-sections.
4. Contour plot of a scalar variable, at P1, P2 or P3 = constant
cross-sections.  These plots can be made to reflect the true
geometry of the cross-section.
5. Vector field plot, at P1, P2 or P3 = constant cross-sections.
A 3D vector field is plotted using arrows to represent the
in-plane components, with a contour plot of the out-of-plane
component superimposed.  These plots can be made to reflect
the true geometry of the cross-section.
6. One dimensional cross-sectional plots (versus P1, P2, P3 or T)
[RETURN]

Enter 0,1,2,3,4,5 or 6 to select an output option.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you set NP2=NP3=0 and saved the solution at an arbitrary set of   +
+ user-specified output points, you can only request tabular output.   +
+                                                                      +
+ If you decide later that you want additional types of plots not      +
+ requested during this interactive session, you will have to work     +
+ through a new interactive session, so it is recommended that you     +
+ request all output or plots you think you MIGHT eventually want now, +
+ during this session.                                                 +
+                                                                      +
+ Regardless of the options you select, a dummy subroutine POSTPR      +
+ will be included in the program created by the interactive driver;   +
+ you can add your own postprocessing code to this subroutine.         +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: 5, the first time you see this message and                    \$
\$        0, the second time                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter an integer value in the range 0 to 6
5

1. P1 = constant cross-sections
2. P2 = constant cross-sections
3. P3 = constant cross-sections

Enter 1,2 or 3 to select the cross-section type.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: 1                                                             \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter an integer value in the range 1 to 3
1
Plots of the variable or vector as a function of P2 and P3 will be
made, at the output grid P1-points closest to
P1 = P1CROSS(1),...,P1CROSS(NP1VALS)

Enter values for NP1VALS and P1CROSS(1),...,P1CROSS(NP1VALS).
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ We want plots of the displacements at cross-sections P1 = 0,pi/2 so  \$
\$ enter: NP1VALS = 2                                                   \$
\$        P1CROSS(1) =  0                                               \$
\$        P1CROSS(2) =  pi/2                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
NP1VALS =
|---- Enter an integer value in the range 1 to 100
2
P1CROSS(1) =
|----Enter constant or FORTRAN expression-----------------------|
0
P1CROSS(2) =
|----Enter constant or FORTRAN expression-----------------------|
pi/2
If your region is rectangular, enter ITPLOT=0, and you need not read
the FINE PRINT.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ Enter:                                                               +
+   ITPLOT = 0  if you want a rectangular cross-section to be drawn,   +
+               with axes P2 and P3 (A1=P2,A2=P3, recommended when     +
+               ITRANS=0,1,-1,2 or -2).                                +
+   ITPLOT = 1  if you want a polar cross-section to be drawn, with    +
+               P2=radius, P3=angle (axes A1=P2*COS(P3) and            +
+               A2=P2*SIN(P3)).                                        +
+   ITPLOT = -1 if you want a polar cross-section to be drawn, with    +
+               P3=radius, P2=angle (axes A1=P3*COS(P2) and            +
+               A2=P3*SIN(P2)).                                        +
+   ITPLOT = 2  if the desired cross-section is neither rectangular    +
+               nor polar, and you want to define the axes A1,A2       +
+               yourself. (Sometimes recommended when ITRANS=3,-3.)    +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: ITPLOT = -1                                                   \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
ITPLOT =
|---- Enter an integer value in the range -1 to 2
-1
Enter values for IVAR1, IVAR2, IVAR3 to select the components Vr1,Vr2
and Vr3 of the vector to be plotted.
IVAR1,IVAR2,IVAR3 = 1 means U  (possibly as modified by UPRINT,...)
2       Ux
3       Uy
4       Uz
5       V
6       Vx
7       Vy
8       Vz
9       W
10       Wx
11       Wy
12       Wz

A vector plot of the in-plane components (Vr1,Vr2) will be made, with a
contour plot of the out-of-plane component Vr3 superimposed.

Caution: Vr1 and Vr2 are assumed to be the components of the in-plane
vector in the directions of the NEW axes A1,A2.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ UPRINT(1),UPRINT(2) were defined earlier so that at P1=constant      \$
[RETURN]
\$ cross-sections, after U and V are replaced by these, the in-plane    \$
\$ displacement components are (U,W) and the out-of-plane component is  \$
\$ V, so                                                                \$
\$ enter: IVAR1 = 1                                                     \$
\$        IVAR2 = 9                                                     \$
\$        IVAR3 = 5                                                     \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
IVAR1 =
|---- Enter an integer value in the range 1 to 12
1
IVAR2 =
|---- Enter an integer value in the range 1 to 12
9
IVAR3 =
|---- Enter an integer value in the range 1 to 12
5
If you don't want to read the FINE PRINT, enter 'no'.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ Do you want to scale the axes on the plot so that the region is      +
+ undistorted?  Otherwise the axes will be scaled so that the figure   +
+ approximately fills the plot space.                                  +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: no                                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
no
For the purpose of scaling the arrows, the ranges of the two components
of the vector are assumed to be (-VR1MAG,VR1MAG) and (-VR2MAG,VR2MAG).
Enter values for VR1MAG and VR2MAG.  VR1MAG and VR2MAG are often
defaulted.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ By default, VR1MAG and VR2MAG are the maxima of the absolute values  +
+ of the first and second components.  For a common scaling, you may   +
+ want to set VR1MAG=A1MAG, VR2MAG=A2MAG.  A1MAG, A2MAG are the        +
+ maxima of the absolute values over all output points and over all    +
+ saved time steps or iterations.                                      +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ press [RETURN] to default VR1MAG and VR2MAG                          \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
VR1MAG =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

VR2MAG =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Enter lower (VR3MIN) and upper (VR3MAX) bounds for the contour values
for the third component of the vector.  VR3MIN and VR3MAX are often
defaulted.

Contours will be drawn corresponding to the values

VR3MIN + S*(VR3MAX-VR3MIN),    for S=0.05,0.15,...0.95.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ By default, VR3MIN and VR3MAX are set to the minimum and maximum     +
+ values of the variable to be plotted.  For a common scaling, you may +
+ want to set VR3MIN=A3LOW, VR3MAX=A3HIGH.  A3LOW and A3HIGH are the   +
+ minimum and maximum values over all output points and over all saved +
+ time steps or iterations.                                            +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ Press [RETURN] to default VR3MIN and VR3MAX                          \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
VR3MIN =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

VR3MAX =             (Press [RETURN] to default)
|----Enter constant or FORTRAN expression-----------------------|

Enter a title, WITHOUT quotation marks.  A maximum of 40 characters
are allowed.  The default is no title.
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: Displacements at torus cross-sections                         \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
TITLE =             (Press [RETURN] to default)
|----Enter title or name---------------|
Displacements at torus cross-sections
To generate tabular or graphical output, choose an output option from
the list below.

0. No further output is desired
1. Table of values at output points
The tabulated output is saved in a file.
2. A plot of the contour (level) surfaces of a scalar variable.
This plot gives only a coarse overview of the solution, but is
unique in that it shows the general form of the solution in a
single picture.  The different levels are identified by color.
These plots will only reflect the true geometry if ITRANS=0.
3. Surface plot of a scalar variable, at P1, P2 or P3 = constant
cross-sections.
4. Contour plot of a scalar variable, at P1, P2 or P3 = constant
cross-sections.  These plots can be made to reflect the true
geometry of the cross-section.
5. Vector field plot, at P1, P2 or P3 = constant cross-sections.
A 3D vector field is plotted using arrows to represent the
in-plane components, with a contour plot of the out-of-plane
component superimposed.  These plots can be made to reflect
the true geometry of the cross-section.
6. One dimensional cross-sectional plots (versus P1, P2, P3 or T)
[RETURN]

Enter 0,1,2,3,4,5 or 6 to select an output option.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you set NP2=NP3=0 and saved the solution at an arbitrary set of   +
+ user-specified output points, you can only request tabular output.   +
+                                                                      +
+ If you decide later that you want additional types of plots not      +
+ requested during this interactive session, you will have to work     +
+ through a new interactive session, so it is recommended that you     +
+ request all output or plots you think you MIGHT eventually want now, +
+ during this session.                                                 +
+                                                                      +
+ Regardless of the options you select, a dummy subroutine POSTPR      +
+ will be included in the program created by the interactive driver;   +
+ you can add your own postprocessing code to this subroutine.         +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: 5, the first time you see this message and                    \$
\$        0, the second time                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter an integer value in the range 0 to 6
0
Do you want to define any FORTRAN function subprograms used in any of
the FORTRAN 'expressions' entered earlier, entering them line by line?

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ If you selected double precision accuracy earlier, be sure to        +
+ declare these functions and their arguments DOUBLE PRECISION.        +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: no                                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
no
If you don't want to read the FINE PRINT, enter 'no'.

+++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++
+ Do you want to define any FORTRAN function subprograms used in any   +
+ of the FORTRAN 'expressions' entered earlier, by interpolating the   +
+ tabular output saved in a file created on an earlier PDE2D run?      +
++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
\$ enter: no                                                            \$
\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$ EXAMPLE 9 \$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$\$
|---- Enter yes or no
no
More detailed information about PDE2D can be found in the book
"Solving Partial Differential Equation Applications with PDE2D,"
Granville Sewell, John Wiley & Sons, 2018.

*******************************************
***** Input program has been created  *****
*******************************************

```