******************************************************* **** 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. You will now be asked a series of interactive questions about your 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ The Schrodinger equation in a hydrogen atom is $ $ $ $ Laplacian(U) + C1/Rho*U = lambda*C2*U $ $ where $ $ C1 = 3.7796 $ $ C2 = -0.26248 $ $ U**2 = probability density function for the electron $ $ Rho = distance from origin (nucleus), in Angstroms $ $ lambda = energy level (in ev) of electron (the eigenvalue) $ $ $ $ The boundary condition is U=0 at infinity (we will apply this $ $ boundary condition at Rho=10). $ $ $ $ This problem was solved as a 3D problem in example 11, but some of $ $ the eigenfunctions are functions of Rho only, such as the one $ $ corresponding to the lowest energy level. These we can find by $ $ solving as a 1D problem: $ $ $ $ Uxx + 2/x*Ux + C1/x*U = lambda*C2*U $ $ $ $ where X represents the spherical coordinate Rho. We will find this $ [RETURN] $ lowest eigenvalue, about -13.6 ev. $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ [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 dimension of your problem: [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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 1 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 0 to 3 1 Which finite element method do you want to use: 1. Galerkin method 2. Collocation method Enter 1 or 2 to select a finite element method. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + If you have a problem with discontinuous material parameters, you + + should use the Galerkin method. If your partial differential + + equations and boundary conditions are difficult to put into the + + "divergence" form required by the Galerkin method, or if you have + + periodic boundary conditions, use the collocation method. The + + collocation method produces approximate solutions with continuous + + first derivatives; the Galerkin solutions are continuous but their + + first derivatives are not. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 2 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 1 to 2 2 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: yes $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ press [RETURN] to default NPROB $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 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,T,U,Ux)*d(U)/dT = F(X,T,U,Ux,Uxx) or the steady-state system: F(X,U,Ux,Uxx) = 0 or the linear and homogeneous eigenvalue system: F(X,U,Ux,Uxx) = lambda*RHO(X)*U with boundary conditions: G(X,[T],U,Ux) = 0 (periodic boundary conditions are also permitted) at two X values. For time-dependent problems there are also initial conditions: [RETURN] U = U0(X) at T=T0 +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + If your PDEs involve the solution at points other than X, the + + function + + (D)OLDSOL1(IDER,IEQ,XX,KDEG) + + will interpolate (using interpolation of degree KDEG=1,2 or 3) to XX + + 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 XX, assuming this has not been modified using UPRINT... + + If your equations involve integrals of the solution, for example, + + you can use (D)OLDSOL1 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 - 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 - REAL(1.0/(1.0+CMPLX(UR,UI)**10)) + + F2 = URxx - 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 of your problem. +++++++++++++++ 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: C1 $ $ 3.7796 $ $ C2 $ $ -0.26248 $ $ [blank line] $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Parameter name = (type blank line to terminate) C1 C1 = |----Enter constant or FORTRAN expression-----------------------| 3.7796 Parameter name = (type blank line to terminate) C2 C2 = |----Enter constant or FORTRAN expression-----------------------| -0.26248 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: no $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter yes or no no A collocation finite element method is used, with cubic Hermite basis functions on the subintervals defined by the grid points: XGRID(1),XGRID(2),...,XGRID(NXGRID) You will first be prompted for NXGRID, the number of X-grid points, then for XGRID(1),...,XGRID(NXGRID). Any points defaulted will be uniformly spaced between the points you define; the first and last points cannot be defaulted. The interval over which the PDE system is to be solved is then: XGRID(1) < X < XGRID(NXGRID) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: NXGRID = 21 $ $ XGRID(1) = 0 $ $ XGRID(6) = 0.5 $ $ XGRID(11) = 1.0 $ $ XGRID(16) = 3.0 $ $ XGRID(NXGRID) = 10.0 $ $ and default the other XGRID points. $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ NXGRID = |---- Enter an integer value in the range 2 to +INFINITY 21 XGRID(1) = |----Enter constant or FORTRAN expression-----------------------| 0 XGRID(2) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(3) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(4) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(5) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(6) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| 0.5 XGRID(7) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(8) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(9) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(10) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(11) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| 1.0 XGRID(12) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(13) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(14) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(15) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(16) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| 3.0 XGRID(17) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(18) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(19) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(20) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| XGRID(NXGRID) = |----Enter constant or FORTRAN expression-----------------------| 10.0 What type of PDE problem do you want to solve? 1. a steady-state (time-independent) problem 2. a time-dependent problem 3. a linear, homogeneous eigenvalue problem Enter 1,2 or 3 to select a problem type. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 3 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 1 to 3 3 The shifted inverse power method will be used to find one eigenvalue and the corresponding eigenfunction. You can later find ALL eigenvalues (without eigenfunctions), including complex eigenvalues, by changing ITYPE from 3 to 4 below in the FORTRAN program. All eigenvalues will be written to a file 'pde2d.eig'; the 50 eigenvalues closest to P8Z (P8Z is 0 by default but can be set by the user below) will be printed and also available in the main program as EVR8Z(k) + i*EVI8Z(k), for k=1,...,min(50,N). +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + Caution: for ITYPE=4, the memory and computer time requirements are + + much greater than for ITYPE=3, for a given grid. However, this + + calculation runs efficiently on multi-processor machines, under MPI. + + + + The calculation is also dramatically faster for symmetric 1D + + Galerkin problems, and symmetric 2D Galerkin problems (IDEG=-1,-3) + + because the algorithm can take advantage of the band structure of A + + in finding all eigenvalues of the generalized eigenvalue problem + + Az=lambda*Bz, but only when A is symmetric and B is diagonal (hence + + the requirement that IDEG=-1 or -3 for 2D Galerkin problems; the RHO + + matrix must also be diagonal (if NEQN > 1) and of constant sign). + + High precision is STRONGLY recommended in these cases. + [RETURN] ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ [RETURN] If you don't want to read the FINE PRINT below, enter 'no'. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + Are your eigenvalue PDEs complex? If 'yes', you must write each of + + the unknown eigenfunctions, but NOT the eigenvalue (i.e., pretend + + the eigenvalue is real even though it may not be), in terms of its + + real and imaginary parts, and separate the equations into real and + + imaginary parts. Then it is assumed that your unknowns represent + + alternately the real and imaginary parts of the eigenfunctions, and + + that your equations represent alternately the real and imaginary + + parts of the eigenvalue differential equations. Note that your + + first equation must represent exactly the real part of the first + + complex PDE, your second equation must represent exactly the + + imaginary part, etc. You must not reorder the equations, nor + + multiply any equation through by a constant. + + + + Even if your eigenvalue PDEs are real, if a desired eigenvalue/ + + eigenfunction is complex, you should answer 'yes' and treat the + + PDEs as if they were complex, as outlined above. If you are going + + to set ITYPE=4 to find all eigenvalues without eigenfunctions, + + however, you should answer 'no' even if some eigenvalues are complex.+ ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ [RETURN] If you don't want to read the FINE PRINT above, enter 'no'. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: no $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter yes or no no The (shifted) inverse power method will be used to find the eigenvalue closest to EV0R; enter a value for EV0R. The closer you choose EV0R to the desired eigenvalue, the faster the convergence will be. The default is EV0R = 0.0, that is, the smallest eigenvalue (in absolute value) is found. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ To find the eigenvalue near -13.6, $ $ enter: EV0R = -15.0 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EV0R = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| -15.0 How many iterations (NSTEPS) of the inverse power method do you want to do? NSTEPS defaults to 25. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + After convergence of the inverse power method, the solution each + + iteration will be a normalized eigenfunction corresponding to the + + eigenvalue closest to EV0R (or EV0R+EV0I*I) and this eigenvalue will + + be printed. In the FORTRAN program created by the preprocessor, + + the last computed estimate of this eigenvalue will be returned as + + EVLR8Z (or EVLR8Z+EVLI8Z*I), and ECON8Z will be .TRUE. if the + + inverse power method has converged. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ press [RETURN] to default NSTEPS $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ NSTEPS = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| How many differential equations (NEQN) are there in your problem? $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: NEQN = 1 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ NEQN = |---- Enter an integer value in the range 1 to 99 1 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 and T must not be used. The name should start in column 1. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: U1 = U $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ U1 = U 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: NINT = 1 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 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,U,Ux,Uxx and (if applicable) T +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + If you only want to integrate a function over part of the interval, + + define that function to be zero on the rest of the interval. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ We want to compute the integral of U**2 over the entire 3D space, $ $ which will be used later in normalizing the probability density for $ $ plotting. The integral over the entire 3D space can be calculated $ $ as the integral from X=0 to X=infinity of 4*PI*X**2*U**2, where X is $ $ the spherical coordinate Rho. Thus, $ $ enter: INTEGRAL = 4*PI*X**2*U**2 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ INTEGRAL = |----Enter constant or FORTRAN expression-----------------------| 4*PI*X**2*U**2 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: NBINT = 0 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ NBINT = |---- Enter an integer value in the range 0 to 20 0 Now enter FORTRAN expressions to define the PDE coefficients. RHO may be a function of X, while F may be a function of X,U,Ux,Uxx Recall that the PDE has the form F = lambda*RHO*U $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ The differential equation is $ $ $ $ Uxx + 2/x*Ux + C1/x*U = lambda*C2*U $ $ $ $ When asked if you want to write a FORTRAN block, $ $ enter: no $ $ then enter the following, when prompted: $ $ F = Uxx + 2/x*Ux + C1/x*U RHO = C2 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 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 F = |----Enter constant or FORTRAN expression-----------------------| Uxx + 2/x*Ux + C1/x*U RHO = |----Enter constant or FORTRAN expression-----------------------| C2 If you don't want to read the FINE PRINT, default the initial values. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + Now the initial values for the inverse power method may be defined + + using FORTRAN expressions. They may be functions of X. + + + + By default, the initial values are generated by a random number + + generator. This virtually eliminates any possibility of convergence + + to the wrong eigenvalue, due to an unlucky choice of initial values. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ press [RETURN] to default U0 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ U0 = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| If you don't want to read the FINE PRINT, enter 'no'. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + Do you want to read the initial conditions from the restart file, + + if it exists (and use the conditions supplied above if it does not + + exist)? + + + + If so, PDE2D will dump the final solution at the end of each run + + into a restart file "pde2d.res". Thus the usual procedure for + + using this dump/restart option is to make sure there is no restart + + file in your directory left over from a previous job, then the + + first time you run this job, the initial conditions supplied above + + will be used, but on the second and subsequent runs the restart file + + from the previous run will be used to define the initial conditions. + + + + You can do all the "runs" in one program, by setting NPROB > 1. + + Each pass through the DO loop, T0,TF,NSTEPS and possibly other + + parameters may be varied, by making them functions of IPROB. + + + + If the 2D or 3D collocation method is used, the coordinate + + transformation should not change between dump and restart. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ [RETURN] $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: no $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter yes or no no If you do not have periodic boundary conditions, enter IPERDC=0. Enter IPERDC=1 for periodic conditions at X = XGRID(1),XGRID(NXGRID) +++++++++++++++ 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 below in the main program and + + set the desired boundary conditions in subroutine GB8Z, "by hand". + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: IPERDC = 0 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ IPERDC = |---- Enter an integer value in the range 0 to 1 0 Enter FORTRAN expressions to define the boundary condition functions, which may be functions of X,U,Ux and (if applicable) T Recall that the boundary conditions have the form G = 0 Enter NONE to indicate "no" boundary condition. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + If "no" boundary condition is specified, the PDE is enforced at a + + point 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 at the point X = XGRID(1). $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: G = NONE $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ G = |----Enter constant or FORTRAN expression-----------------------| NONE Now define the boundary conditions at the point X = XGRID(NXGRID). $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: G = U $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ G = |----Enter constant or FORTRAN expression-----------------------| U 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 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 + + Each function may be a function of + + + + X,U,Ux,Uxx and (if applicable) T + + + + Each may also be a function of the integral estimates SINT(1),..., + + BINT(1),... + + + + 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ [RETURN] $ We want to plot the probability density, which is proportional to $ $ U**2, but normalized so that the integral of the probability density $ $ is equal to 1. Since SINT(1) will contain the integral of U**2, $ $ to get plots of the probability density, $ $ enter: UPRINT(1) = U**2/SINT(1) $ $ and default the other output modification variable $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ Replace U for postprocessing? UPRINT(1) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| U**2/SINT(1) Replace Ux for postprocessing? UXPRINT(1) = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| The solution is saved on a uniform grid of NX+1 points XA + I*(XB-XA)/NX I=0,...,NX. Enter a value for NX (suggested value = 50). +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + If you want to save the solution at an arbitrary user-specified set + + of NX+1 points, enter -NX. + + + + 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 or integration 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 or integration points. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 50 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value 50 The solution is saved on a uniform grid of NX+1 points, covering the interval (XA,XB). Enter values for XA,XB. These variables are usually defaulted. The defaults are XA = XGRID(1), XB = XGRID(NXGRID) $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: XA = 0 $ $ XB = 2 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ XA = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| 0 XB = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| 2 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. One dimensional cross-sectional plots (versus X or T) or, if applicable: 3. Surface plot of variable as function of X and T Enter 0,1,2 or 3 to select an output option. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + 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. + [RETURN] ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 2, the first time you see this message and $ $ 0, the second time $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 0 to 2 2 Enter a value for IVAR, to select the variable to be plotted or printed: IVAR = 1 means U (possibly as modified by UPRINT,..) 2 Ux $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: IVAR = 1 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ IVAR = |---- Enter an integer value in the range 1 to 2 1 Which type of cross-sectional plots do you want? 1. Plots of output variable as function of X (constant [T]) or, if applicable: 2. Plots of output variable as function of T (constant X) Enter 1 or 2 to select a plot type. $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 1 $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 1 to 1 1 Specify the range (UMIN,UMAX) for the dependent variable axis. UMIN and UMAX are often defaulted. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + By default, each plot will be scaled to just fit in the plot area. + + For a common scaling, you may want to set UMIN=ALOW, UMAX=AHIGH. + + ALOW and AHIGH are the minimum and maximum values over all output + + points and over all saved time steps or iterations. + ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ press [RETURN] to default UMIN and UMAX $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ UMIN = (Press [RETURN] to default) |----Enter constant or FORTRAN expression-----------------------| UMAX = (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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: Probability density $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ TITLE = (Press [RETURN] to default) |----Enter title or name---------------| Probability density 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. One dimensional cross-sectional plots (versus X or T) or, if applicable: 3. Surface plot of variable as function of X and T Enter 0,1,2 or 3 to select an output option. +++++++++++++++ THE "FINE PRINT" (CAN USUALLY BE IGNORED) ++++++++++++++ + 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. + [RETURN] ++++++++++++++++++++++++++ END OF "FINE PRINT" +++++++++++++++++++++++++ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: 2, the first time you see this message and $ $ 0, the second time $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- Enter an integer value in the range 0 to 2 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: no $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- 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 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ $ enter: no $ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$ EXAMPLE 15 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ |---- 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 ***** *******************************************