Instructions for the "PDE4" Gray-Scott Exploration Program MIRRORED FILE The original is at: .../proj/PDE4/Instructions for PDE4 Gray-Scott Explorer.txt PDE4 is an interactive MacOS program for exploring pattern formation phenomena exhibited by the Gray-Scott model in a reaction-diffusion domain. For theory and background regarding the Gray-Scott reaction diffusion system, go to mrob.com/pub/comp/xmorphia This program was created by Robert Munafo in 1994 (with the name "pde") and has gradually evolved over the years. The command interface is simple for this reason; it has also enabled me to keep things fast and efficient. INSTALLATION and SETUP This program runs on any Apple system built since 2004 (PowerPC or Intel, with Mac OS "Tiger", "Leopard" or "Snow Leopard") Using System Preferences, in the "Accounts" section, create a new account with "munafo" as both the "Name" and "short name". Leave "Allow user to administer" disabled. Copy the applications (Single and Double) into the home folder. Also copy the Perl script "cvtmovie" into the home folder. Create a directory called "bin" in the home folder. Copy "rpmlib.pl" into that folder. Create a directory called "tmp" in the home folder. Create a directory called "pde4" inside "tmp". Create a directory called "data" in the home folder. Create a directory called "pde4" inside "data". TYPES OF INPUT The keyboard is the primary means of input; most commands and actions are initiated by typing things on the keyboard. Of secondary importance is the mouse. It is used to indicate a location for certain commands (as described below) such as cut and paste, inspecting U and V values at a point, and performing distance and velocity measurements. A single function -- selection of the grid height and width -- is performed by renaming the program itself and re-launching. TYPES OF OUTPUT The simulation occurs in realtime with frequent updates to the screen via a movable window. Various numerical values and data plots can also be displayed in this window (overlayed on top of the simulation image). The movie commands (described below) generate PPM files (a type of bitmap graphic image) in ~/tmp/pde4 The log function records its data into ~/data/pde4 The clipboard copy command writes the clipboard contents in a simple binary format into the file ~/tmp/pde4/clip SYSTEM REQUIREMENTS PDE4 runs on MacOS 10.4 "Leopard" and later (up to at least 10.13 "High Sierra") on Intel processors and on PowerPC G4 and G5. The 128-bit vector extensions (SSE2 for Intel, or AltiVec for PowerPC) are required. This means that PDE4 will not run on G3 processors or on MacOS installed on an older AppleTV, or certain other nonstandard installations. PDE4 uses memory in proportion to the gridsize -- about 16 bytes per grid cell in single precision, or 32 bytes for double precision. Disk space is insignificant unless you generate movies; movie frames use 3 bytes per pixel. WHEN YOU FIRST LAUNCH THE PROGRAM When you first start the PDE4 program, you will see a single window containing a Gray-Scott simulation with a "parameter space" view similar to the image seen here: http://www.mrob.com/pub/comp/xmorphia/colormodes/xcm-f.jpg To view the current parameter space center and range, press the '=' key. This displays information looking like this: k520 F440 s450:900 %6 $1 d2(Standard). The "k520" means that the k value at the center of the window is 0.0520. The "F440" means that the F value at the center of the window is 0.0440. The "s450:900" means that the "size" of view extends for a total of 0.0450 in the k direction (horizontal) and 0.0900 in the F direction (vertical). All of these options concerning k and F coordinates are changed by the commands in the "SELECTING PARAMETER VALUES AND PLOTTING" section below. The "%6" and "$1" relate to the random initial pattern used to start the simulation. To control initial patterns, see the section "INITIALIZING, and RANDOM SEEDS" below. The "d2(Standard)" indicates the precision (delta x and delta t) of the simulation. The "d" command changes this and is also described in the "SETTING THE DOMAIN SIZE AND RESOLUTION" section. The window will probably be 256x256 in size, unless you have changed the size by renaming the program as described below in the section "SETTING THE DOMAIN SIZE AND RESOLUTION". OVERVIEW OF COMMANDS; NUMERIC ARGUMENT Most commands are a single keystroke; many of these take an optional numeric argument. The following list presents the commands in quasi-lexicographic order; each tells which section below contains a complete description of the command. CMD Section Brief description 0-9 Enter digits of numeric prefix c PLOT Set coloring mode d PERF Select delta-x and delta-t from a fixed list of choices e Enter exponent of numeric prefix F PLOT Set parameter F g PLOT Display or hide gridlines i PERF Select iteration (calculation) algorithm I INIT Initialize grid k PLOT Set parameter k L Load clipboard from ~/tmp/pde4/clip m Set movie frame rate M Start or stop outputting movie frames n INIT Apply noise (at a level related to current 'W' setting) N INIT Apply noise at periodic intervals (once per movie frame, or at interval specified by prefix) o PERF Set "overscan" quantity for iteration (calculation) p PLOT Toggle image color gamma: pastel/normal/dark; Enable various data plots P PLOT Set precision (number of digits) for 'F', 'k', 's' and 'S' q Quit r Run calculation throughput benchmark s PLOT Set size of parameter variation for parameter-map views S PLOT Set size of parameter F variation (independently of k) T PERF Set number of threads for iteration (calculation) v EDIT Shift entire grid pattern down W RUN Set threshold for steady-state detection w RUN Set threshold for homogeneous state detection x Set numeric parameter for certain init pattern algorithms z RUN Sleep (suspend iteration); wake and decrement thresholds Z RUN Iterate a specified amount of simulated time, then sleep ' ' (Space) clear on-screen data displays (with prefix, clears the '=' display too) + PLOT Zoom in (reduce amount of k/F parameter variation) - PLOT (minus sign) Zoom out (increase amount of k/F parameter variation) = PLOT Various data and info displays on status line # Enter/exit split-screen mode [ EDIT Copy from current mouse position to clipboard and to file ~/tmp/pde4/clip ] EDIT Paste from clipboard to current mouse position { EDIT Decrease clipboard size } EDIT Increase clipboard size | EDIT Flip clipboard around vertical axis _ EDIT (underscore) Flip clipboard around horizontal axis \ EDIT Flip clipboard around diagonal axis / EDIT Flip clipboard around diagonal axis ) EDIT Rotate clipboard 90 degrees clockwise ( EDIT Rotate clipboard 90 degrees counter-clockwise . Set mark at current mouse position , Measure distance, time and velocity relative to mark : Set mark via census (integral of molecular quantity) ; Measure distance, time, velocity via census % INIT Select initial pattern algorithm $ INIT Set random sequence seed value < INIT Auto-decrement random seeds; EDIT shift entire grid pattern to the left > INIT Auto-increment random seeds; EDIT shift entire grid pattern to the right ^ INIT Do not change random seeds; EDIT shift entire grid pattern up ~ RUN Set timer duration also used as logfile number and logging increment ` RUN Start timer ! Enable/disable logfile logging: logfile name is ~/data/pde4/alog-NN.txt with NN set by previous ~ command & Statistics and options related to measure commands ',' and ';' @ unused * unused ' unused " unused ? unused [PERF]: SETTING THE DOMAIN SIZE AND RESOLUTION; PERFORMANCE OPTIONS By default, the program performs a 2-dimensional simulation using a grid size of 256x256 pixels, with delta-x = 1/143, corresponding to a domain of 1.79 x 1.79 dimensionless units, and a time step of 1/2 dimensionless units. (Hereafter, "dlu" and "dtu" will be used to refer to the dimensionless length unit and the dimensionless time unit, respectively). Selecting a different grid size (in pixels) is accomplished by changing the name of the program. Any string of the format "-sWWWxHHH" will set the pixel grid size, where WWW and HHH represent the width and height respectively. For example, if the program is renamed to "PDE4-s480x336.app", it will create a grid of 336 rows with 480 pixels per row, the next time it is launched. The time-step and grid-spacing resolutions (1/2 and 1/143 above) can be selected from seven pre-defined values. These are selected with a *command*, which takes an *argument*. The argument is entered first, followed by the command: N d Select delta-x and delta-t Here are the currently-implemented argument values: 0 "crude" model: delta-x = 1/70.7, delta-t = 1.7 1 "Pearson" model: delta-x = 1/102.4, delta-t = 1 2 "Standard" model: delta-x = 1/143, delta-t = 0.5 3 "Std-1.4" model: delta-x = 1/202.2, delta-t = 0.177 4 "Std-2" model: delta-x = 1/286, delta-t = 0.0625 5 "Std-2.8" model: delta-x = 1/404.5, delta-t = 0.0221 6 "Std-4" model: delta-x = 1/572, delta-t = 0.00781 Performance is affected by the 'i' (itermode), 'o' (overscan) and 'T' (threads) settings. By default, the program starts up with the fastest settings for the system it is running on (itermode 5, overscan 4, number of threads equal to the number of logical CPUs on the system). I use these settings for benchmarking. You may wish to use the 'T' option to diminish the CPU usage, in order to leave some of your CPU capacity free for other tasks, or to reduce battery usage. The 'i' command (iteration mode) selects one of five different scan/calculate routines. It takes a numeric prefix from 1 to 5; here are the five routines: Mode Vec Oscan Thr Description 1 Simple grid-scan to 2nd buffer and copy-back ("ping-pong") 2 Writes output 2 rows before input, to avoid copy-back and improve cache hits 3 * Uses SSE / Altivec instructions 4 * * Multiple overlapping scan to further improve cache hits 5 * * * Multithreaded The 'o' command (overscan) sets an option that affects itermodes 4 and 5. The argument should be a number from 1 to 9. The 'T' command selects the number of threads; this only affects itermode 5, as the other itermodes always use just 1 thread. The numeric argument selects the number of threads; it can be as low as 1 or as high as 4 times the number of logical CPUs in the system. However, the number of threads you request must be a divisor of the grid height (selected, as described above, by changing the name of the program and relaunching). [PLOT]: SELECTING PARAMETER VALUES AND PLOTTING When PDE4 starts, the initial system parameters are set to create a "parameter space view", in which the values of the parameters F and k vary throughout the grid. Specifically, F varies from 0.0 at the bottom edge to 0.09 at the top edge, and k varies from 0.03 at the left edge to 0.075 at the right edge. All four of these settings are computed from the "center" and "size" settings, which determine the F and k values at the center of the image and the amount of variation that is added to F (or k) across the height (or width) of the grid. The following four commands allow these settings to be changed to specific precide values: val F Set center F value The argument is a three-digit value; the F paramter setting for the center of the image will be set to the argument divided by 10^4. For example, the command "400F" sets F to the value 0.0400. val k Set center k value Similar to the F command, but sets the value of the k paramter. val s Set "size" (amount of variation) in F and k The argument is a three-digit value, and determines the total amount of variation in k across the horizontal extent of the grid, and half the amount of variation in F across the vertical extent of the grid. As with the 'F' and 'k' commands, the argument is divided by 10^4. For example, the command "200s" causes the value of k to vary by 0.02 across the width of the image, and the value of F to vary by 0.04 across the height of the image. The sign of this variation is always "positive", which results in the lower values of k being on the left edge, and the lower values of F being along the bottom edge. Note that this command can be given with no argument, or a 0 argument, to remove all variation in F and k. The system will then be simulated with uniform values of both parameters F and k. val S Set "size" for F parameter This command is like the 's' command but only affects the amount of variation in F. Thus, the sequence "200s200S" will set the variation in both parameters to the same amount (0.02). val P Set precision for 'F', 'k', 's' and 'S' commands The argument specifies the number of digits of precision for arguments given to the above four commands. Valid argument values are 2 through 6. When this command is given, the parameter settings are changed (if necessary) to the nearest values that comply with the given precision. For example, if F is 0.0476 and the command "2P" is given, F will be changed to 0.048. g View parameter grid The "g" command turns on and off a simple set of gridlines that indicate multiples of 0.004 in the F direction (vertical) and multiples of 0.002 in the k direction (horizontal). Press "g" again to see gridlines on a fixed 32-pixel spacing. Press it a third time to turn gridlines back off. + "Zoom in" to position indicated by mouse The values of the "size" parameters (variation in F and k across the grid) are divided by 2, and the F and k center coordinates are changed to the values that were in effect at the grid point indicated by the current position of the cursor (mouse). If the cursor is outside the window, F and k will not be changed, but in all cases the "size" is changed. This command has the effect of "zooming in" on a section of a parameter-space view. If the size parameters are both zero, it has no effect. - "Zoom out" The values of the "size" parameters (variation in F and k across the grid) are multiplied by 2. The F and k center coordinates are not changed. This command has the effect of "zooming out" in a parameter-space view. If the size parameters are both zero, it has no effect. = Display settings and measurements This command applies to several different sections and will be mentioned again where appropriate, but it is most commonly used in conjunction with adjusting the parameters and precision. '=' takes a numeric argument, which can be one of the following: 0 Gives arguments for 'F', 'k', 's' and 'd' necessary to reproduce the current simulation. The number of digits in 'F', etc. are the argument for 'P'. Also gives arguments for '%' and '$' (see below) for the current pattern. 1 Elapsed time in @tu@ since 'I' command, and timer values (see '~' and '`' below) 2 Census values (see ':' and ';') 3 Delta census (%%%) 4 Show actual (inexact) F and k values. This is necessary after a '+' or '-' command has been used, and the normal '0=' will no longer show F and k values because the F and k can no longer be expressed as an exact decimal fraction. 10 Display values of thresholds for homogeneous and steady-state detection (see 'w' and 'W' commands) 11 Display homogeneous threshold and current homogeneity level (see 'w' command) 12 Display steady-state threshold and current stability level (see 'W' command) 20 Display current movie frame and frame rate (see 'm' and 'M' commands below) 101 Display current keyboard input bitmap (for debugging) To clear the '=' text display, use ' ' with a numeric argument. c Color settings p Pastel colors and data-plotting The "c" and "p" commands have their own section below. [INIT]: INITIALIZING, and RANDOM SEEDS I Initialize grid An initial pattern is created and displayed. The type of initial pattern is selected by the '%' command described below. arg % Select starting pattern type Selects from one of the pre-defined initial pattern types. The pattern types are as follows: 0 "Pearson" (u,v) are set to (1,0) everywhere except for a central square of size 20x20 pixels, in which (u,v) are set to (0.5,0.25). Noise of amplitude (0.01,0.01) is superimposed on this, except that no u or v value is ever outside the range (0.0 ... 1.0). 1 "negative sparse" (u,v) are set to (u_h3,v_h3) everywhere except for a number of circular spots (about 4 or 5 spots per dlu^2). In these spots, which are about 0.01 dlu in diameter, the center of the spot has a randomly determined u and v value (both in the range (0.0 ... 1.0)), and the u and v values transition radially from the central value to the "background" value (u_h3,v_h3). This makes a number of circular spots that generally resemble the "solitons" and "negatons" that are often seen in well-evolved states. To the resulting pattern, random noise of amplitude (0.01,0.01) is superimposed, except that no u or v value is ever outside the range (0.0 ... 1.0). 2 "negative dense" Same as "negative sparse" except that the spot frequency is about 20 spots per dlu^2. 3 "positive sparse" Same as "negative sparse" except that the background is set to (u,v) = (1,0). 4 "positive dense" Same as "positive sparse" except that the spot frequency is about 20 spots per dlu^2. 5 "Munafo" (u,v) are set to (u_h3,v_h3) (or to (1,0) if there is no second homogeneous state) everywhere except for a number of rectangular regions. The number of rectangular regions is selected randomly, between 6 and 25 per dlu^2. The size of the rectangular regions is distributed in such a way that the number of rectangles of any given area is inversely proportional to the area, and the areas of the rectangles range between 0.005 to 0.04 dlu^2. The u and v values within each rectangle are determined randomly, from the range (0.0 ... 1.0). To the resulting pattern, random noise of amplitude (0.01,0.01) is superimposed, except that no u or v value is ever outside the range (0.0 ... 1.0). 6 "Mun-dense" Same as "Munafo" except that the number of rectangular regions ranges between 12 and 50 per dlu^2. 7 "Mun-500" Same as "Munafo" except that the number of rectangular regions ranges between 40 and 41 per dlu^2. 8 "Turing-0" (u,v) are set to (u_h3,v_h3), plus random noise of amplitude (10^-4,10^-4). A small pseudo-random sequence is used, resulting in a distinct diagonal patterning in the noise (of angle and frequency depending on the grid size and random seed). If run at parameters that allow pure Turing instability (such as F=0.06, k=0.062) the system will evolve to a Turing pattern dominated by stripes. 9 "Turing-1" Like "Turing-0", except that a much larger pseudo-random sequence is used, resulting in a less ordered Turing pattern (usually dominated by spots). 10 "WC4-t1" This pattern consists of one double-ended loop and 12 proto-uskates, and is designed specifically for use in the thin type-{pi} area which includes (F=0.06, k=0.0609). 11 "BZ-Rects" This is a mixture of type 5 "Munafo" with rectangular "ramped wavefront" patterns, which generate spirals throughout most of the type-{xi} area, which includes (F=0.014, k=0.047). In these areas, the other dense pattern types such as types 4 and 7 do not create long-lasting patterns. This pattern type also works well in most other (non-trivial) areas of the Gray-Scott parameter space. arg $ Select random seed Sets the numeric value that will be used to create the next initial pattern. Each number generates a different starting pattern. You can recreate a starting pattern at will by using the same seed and pattern type ('%' command above) that was used to create that starting pattern the previous time. The starting pattern also depends on the dimensions (height and width) of the simulation grid. > Auto-increment random number seed < Auto-decrement random number seed ^ Do not change random number seed By default, the random seed is increased by 1 each time you use 'I' to create a new starting pattern. The '<' command changes this to automatically subtract 1 each time. '^' will cause it to continue using the seed value that was used most recently. '>' restores the default behavior of incrementing the seed value. n Apply noise This command perturbs each pixel by a random amount. With a prefix, it sets that random amount in units of 1.0e-6 (for example, 1000n sets the noise amplitude to 1.0e-3). N Enable/disable periodic noise events Use a prefix of 0 to disable generating random noise at periodic intervals. Use a non-zero prefix to enable periodic noise events. In movie move, it will behave as if the 'n' command is being done exactly once per frame. In normal mode, the prefix specifies the number of @dtu@ between noise events. The image will be updated to the screen at least as often, but this update takes place right before the noise is applied, so you will usually be seeing the system at its "most recovered state" unless you hit the space bar to force frame updates. [RUN]: RUNNING SIMULATION; PAUSE, SINGLE-STEP and TIMER; AUTO-PAUSE z Sleep/wake Without an argument, the 'z' command pauses or un-pauses the simulation. Z Single-step If the simulation is paused, the 'Z' command runs for a specified period and then pauses again. With no argument, it runs for 10 @tu@. With an argument it runs for that many @tu@. If the argument is large enough to trigger automatic window update, then it will only run for that long. In all cases, after pausing it displays the actual number of @tu@ that elapsed. 1= Display elapsed time and timer values The command '1=' displays the total number of @tu@ that have elapsed and the current timer settings (if any). ~ Set timer The argument is remembered and used as the time interval for subsequent '`' commands (below). Use a zero argument to cancel any running timer and logging. ` Start timer Sets a time threshold equal to the current elapsed time (as shown by '1=') plus the timer setting set by the '~' command. The simulation will stop if the elapsed time exceeds the threshold. When you restart a simulation with 'I', the threshold is cleared; but the '~' setting is remembered and you can start the timer again using '`'. The timer is cancelled if you reinitialise with 'I', change k or F, or anything else that resets the simulation elapsed time as displayed by '1='. The only way to start the timer is to use '`' again. W Set homogeneity threshold Without an argument, 'w' sets the homogeneity threshold to the normal level, which is 0.01. If the threshold is T, the simulation will automatically stop if every U value is within +-T of every other U value, and likewise for V. With an argument X, sets the threshold to (100/X) times the normal level. For example, to set the threshold to 0.002 (which is 1/5 of the normal level), use an argument of 500. To set a threshold of 1/1000 of the normal level, use an argument of 1e5 (100000). w Set steady-state threshold The steady-state threshold works similarly to the homogeneity threshold. The default threshold is 6e-7, and a steady-state is detected if all dU/dt values are less than the threshold. Just as with the 'W' command, 'w' without an argument sets the standard steady-state threshold; with an argument X it sets a threshold which is (100/X) times the standard level. COLOURS AND OTHER PLOTTING MODES arg c Select colouring mode The 'c' command selects one of 23 different colouring modes. About half of these modes reflect only the value of *u*; the other half also show the time derivative *du/dt*. 0 The original colours from my "pde1" program. Low *u* is dark green, high *u* is magenta. 1 Like mode 0, but with derivative of *u* on the red component. 2,3 Early variations of colour mode 1 4-7 Early variations of colour mode 0 8 First approximation to the real (litmus test pH indicator) colouring with blue for low *u* and red for high *u*. 9 Close approximation of the colours used in the key map on Roy William's 1994 Xmorphia website. 10 Brightened version of colourmap 9, rendered in HSV (hue-saturation-value) colourspace with the derivative of *u* on the saturation axis. This makes the areas of increasing *u* appear in a lighter, pastel colour, while areas of decreasing *u* have a deeper more saturated colour. 11 Like colourmap 10, with *u* ranging from dark aqua to red. 12 Like colourmap 10, with *u* ranging from olive green through blue and purple to magenta. 13 Like colourmap 10, with *u* ranging from olive green through yellow and magenta to purple. 14 Like colourmap 10, with *u* ranging from deep purple through green, yellow and magenta to light blue. 15 Like colourmap 10, with *u* ranging from deep purple through green, and yellow to light orange. 16 Like colourmap 10, with *u* ranging from deep blue through green, yellow and magenta to light blue. Somewhat less saturated colours than colourmap 14. 17 Like colourmap 10, with *u* ranging from deep blue through green, yellow and orange to light red. This is a much-subdued version of colourmap 10 and is the colourmap I am using for all the stills and videos in my online Gray-Scott gallery at mrob.com/pub/comp/xmorphia 18 Monochrome mode with exaggerated contrast: low *u* is black, high *u* is white; grayscales represent *u* between 0.38 and 0.50. This was used for the illustrations in my paper. 19 Monochrome mode showing only the sign of *du/dt*, with grayscale where *du/dt* is very close to zero. 20 Monochrome mode showing only the sign of *du/dt*, with grayscale only where *du/dt* is too small to calculate. 21 Monochrome mode with no contrast adjustment. 22 A new mode showing du/dt on red, u on green and v on blue. I invented this for Tim Hutton's reaction-diffusion project which eventually led to the Ready program. 23 Close approximation of the colours used in the key map on John Pearson's 1993 paper. p Select pastel, dark or normal modes 'p' (without a numeric argument) cycles through three versions of the current colour mode. The first 'p' makes all colours lighter, like an overexposed photograph. Hitting 'p' again makes everything dark, and a third 'p' returns to the normal colours. arg p Select data plotting modes 'p' with a numeric argument plots various types of numeric and statistical data on top of the grid pattern image. The numeric argument selects one of the following: 1 A scatter-plot of *u* and *v* values at randomly-selected points in the grid. *u* is plotted on the vertical axis, and *v* on the horizontal axis; the full range of 0 to 1 is plotted across the full width or height of the image: the top-left corner is *u*=1, *v*=0 and the bottom-right corner is *u*=0, *v*=1. 2 Delta-census data (only relevant in '#' mode, described elsewhere) CREATING STILL IMAGES AND MOVIES M Start/stop saving frames The 'M' command with no numeric argument causes PDE4 to begin recording frames as 'PPM' files. The files will go into the directory "~/tmp/pde4", where "~" represents the home directory of the user account that is being used to run PDE4. If such a directory does not exist, no frames will be written. You can select a subdirectory of ~/tmp/pde4 with the repeated 'm' command (described below) When the specified number of frames (set with "arg M") has been generated, PDE4 automatically pauses as if with the 'z' command; un-pausing will not produce more frames, and repeating the 'M' command will start recording a new movie, overwriting existing frames starting with frame 1. Using the 'I' (initialize) command while a movie is generating will also start over with frame 1. Single frames in PPM format are the only output type generated by PDE4. A separate utility must be used to convert the PPM files to another still image format or to convert a set of frames into a digital video file. arg M Select number of frames to generate By default, the movie recording process will end after 1800 frames. Use 'M' with a numeric argument to set some other number of frames. arg m Set movie frame rate The 'm' command with a numeric argument selects the number of iterations (simulation frames) to perform between each frame recorded with the 'M' command. Note that the time-units are iteration frames, not the dimensionless units reported by e.g. the '1=' command. There are a few special frame rates that create accelerated time-lapse movies: 1234 Quadratic: Each frame-interval will be the square root of the elapsed time so far. 1248 Exponential: Each frame-interval is 1/144 of the elapsed time so far, or 20 iterations, whichever is larger. (At 15 fps, a 2-minute movie will cover 266M iterations; speed doubles every 6.7 seconds.) 1235 Exponential, slow: Each frame-interval is 1/200 of the elapsed time so far, or 50 iterations, whichever is larger. (At 15 fps, a 2-minute movie will cover 10.8M iterations; speed doubles every 9.25 seconds.) 2358 Exponential, other: Each frame-interval is 1/200 of the elapsed time so far, or 200 iterations, whichever is larger. (At 15 fps, a 2-minute movie will cover 116M iterations; speed doubles every 9.25 seconds.) arg m m Select movie output subdirectory The 'm' command twice in a row, with a numeric argument, selects a subdirectory in which to store the PPM files. The directory name will be of the format "~/tmp/pde4/mov-NN". For example, the key sequence '27mm' selects a directory named "~/tmp/pde4/mov-27". If no such directory exists, the command has no effect. If you in 1-D mode (height of window is less than 16) then '1 m' (setting the subdirectory to 1) makes it generate a "world line" image instead of a sequence of frames. The height of the output image will be the frame count that you set with the 'M' command (see above), and the width will match the width of the window; one row of pixels will be added every movie_rate frames, where movie_rate is set with the single 'm' command. For example, the sequence '25 M 1 m m 500 m' will generate a world line image of 500 rows where each row represents 25 steps of iteration. The output image is unsuitable for use until it is closed, which happens after all the 'frames' (rows) have been written. Note that when executing this command sequence, the frame rate is set on the first 'm' keystroke. Thus, after setting the output directory pathname, you will probably need to re-set the framerate with another numeric argument and a single 'm' command. For example, use the key sequence '27mm100m' to select output directory "~/tmp/pde4/mov-27" and set the frame rate to 100 tu per frame. 0 m Reset movie output subdirectory A single 'm' with a 0 numeric argument resets the movie output subdirectory to the original startup default, "~/tmp/pde4". [EDIT]: EDITING THE IMAGE CTRL Show clip location Hold down the CTRL key while moving the mouse to set the location of the selection-square. When you release the CTRL key, the location stops changing even if you move the mouse. The selection-square location is used for the copy '[', paste ']', census mark ':' and census measure ';' commands. { } Change cliprect size The commands '{' and '}' change the size of the clipboard copy/paste selection square, and also scale the image contained therein by sqrt(2). [ Copy (also saves to ~/tmp/pde4/clip) L Load from ~/tmp/pde4/clip to clipboard ] Paste The commands [, L, ] can be used to copy/paste within the current pattern and also to copy/paste between one running instance of #PDE4# and another (so long as the cliprect size is the same in both) ( ) Rotate left, right / \ Flip around diagonal axis | _ Flip around vertical, horizontal axis arg > Shift image to the right arg < Shift image to the left arg ^ Shift image up MEASURING DISTANCE AND VELOCITY . Set mark '.' takes note of the mouse position and the time counter. , Measure from mark ',' measures the distance from the mark '.' position to the current mouse position, the amount of elapsed time since the '.' command was given, and the velocity given by the ratio of the distance and time. : Set mark by census ':' works like '.', but computes the position by averaging the mass of U inside the selection-square (relative to the homogeneous steady-state U level for the current center F and k parameter values) ; Measure by census ';' works like ',', but computes position and velocity by averaging the mass of U inside the selection-square (as in the ':' command) OLD VERSIONS 20090323: To create the Uskate discovery animation, do the following: Run PDE4 20090323 on PowerPC (random seeds will be wrong on Intel) 'F620' (not F600) 'k609' 's000' '$0004^' (set rand seed and always use same seed) '%1' (set init type 1) 'm0521' (set frame rate) 'M' (start movie) 'I' (initialize) There is no '=' command. To see stats, move the mouse around inside the window. The blank space ' ' will clear any status message.