1. My project at Brandeis: PDE solver++

    I had designed and developed a sophisticated visualization software package called PDE solver++. It is a solver to simulate Partial Differential Equations (PDE), but more than a solver, where the first plus gives to the analyzers (stabilities and bifurcations), while the second plus to the viewers (real-time 2-D or 3-D rendering and data analyzing).

    It contains more than 400 classes, more than 110,000 lines of codes, and more than 50 megabytes of online(F1) help files. Here is the simplified architecture in UML.

    Platform: Microsoft Windows XP/98 IDE Visual C++ using MFC and OpenGL.

    Purpose: The package is a scientific application designed for scientists and engineers to solve dynamic systems, especially reaction-diffusion systems, to study pattern formation. The mathematic basis is described by ordinary-, especially, partial- differential equations. It contains:

    1. stability and bifurcation analysis of steady states, limit-cycles, and periodic structures; Hopf, Turing, or wave instabilities,
    2. pattern formations in one- two- or three-dimensional systems,
    3. Image analyzer and data extractor, and
    4. a movie-maker and movie-player of data playback.
    Fig.1: Spiral waves in BZ reaction model. The gray level stands for concentration of Ru(bpy)33+.

    Embedded Toolkits:

    • Text calculator --- An embedded compiler-free interpreter, which can interpret string types of formula or equations without program recompiling. This tool makes a user-defined model runs as fast as the embedded models.
    • Pointer collection --- A type-free name-point collection (npMixPtr), a key tool for building a unique dynamic dialog-box for data exchange across different data types.
    • Draw-interactive --- Every objects you draw (shapes, curves, text, or 3D primitives: points, polygon, sphere, torus, etc. are sensitive to mouse-click, which allows you re-access to modify its properties, or perform operations.
    • Multithreaded controls --- A proper way to achieve data integrity, synchronization, thread suspend and resume, or terminate.
    • Image analyzer --- Treat images pixel by pixel, RGB distinguishable, for FFT analysis; histogram; brightness, contrast, saturation, adjustment; resize, rotate, crop operations; data extraction; image algebra.

    Features:
    (Click to see viewers)

    • Integrated environment which combines fast integrators, vivid viewers and image analyzer.
    • Efficiency: kernel written by C++, plus better data structures and optimized algorithm.
    • Multithreaded tasks: separated work threads and Graphic User Interface.
    • Flexible: free to choose between embedded or user-define models; free to choose space dimension 1D, 2D or 3D; free to choose several integration methods; free to switch boundary conditions, free to work on a desired geometry,
    • Powerful:Various ways to set initial conditions, Various ways to apply external perturbation, forcing, or noise, Various ways to set spatial parametric gradients, inhomogeneity, and completely access to every control parameters
    • Vivid viewers: 1D plot and 2D bitmap to monitor dynamics of every pixel completely, and visually stunning Real-time 3D graphics with OpenGL.
    • Toolkit image analyzer and data extractor, movie-maker and movie-player ( movie link )

    Output: By use this program, we have papers published in Nature and Physical Review Letters.
    Ours was selected for Jornal Cover

    1. Phys. Rev. E 76, 016201 (2007).
    2. Physical Chemistry Chemical Physics 8, 4647 (2006).
    3. "Advanced Reaction-Diffusion Models for Texture Synthesis"
      Journal of Graphics Tools 11(3), 47 (2006).
    4. Phys. Rev. Lett. 95, 38303 (2005).
    5. J. Phys. Chem. A 109, 5382 (2005).
    6. Phys. Rev. E 70, 046219 (2004).
    7. Phys. Rev. Lett. 92, 198303 (2004).
    8. Phys. Rev. E 69, 026211 (2004).
    9. Phys. Rev. Lett. 91(5), 058302 (2003).
    10. Phys. Rev. Lett. 90(17), 178303 (2003).
    11. J. Phys. Chem. A 106(47), 11676-11682 (2002).
    12. Phys. Rev. Lett. 88(20), 208303(2002).
    13. J. Chem. Phys. 117(15), 7259 (2002).
    14. Phys. Rev. E 62(5), 6414-6420 (2000).
    15. NATURE | VOL 406 | 27 JULY 2000 | PAGE:389-391.
    (Click here for a full list of publications and authorships)


    Related topics: Architecture | ClassView | ResourceView | Quick Start | Geometry and boundary conditions | mesh | Viewer | Player
    A powerful dynamic dialog | Go to the same menu, see different dialog |
    Alias | Why Pointer? | Canonical Class Form | Operator overloading | Template ...
    Simulation movies by this software package | How to open a SDI window at run-time? | C/C++: Basic to Advanced

  2. CalcuTxt

    Microsoft does have a Calculator, but it does NOT accept a simple plain text string like "1+2=". My CalcuTxt recognizes any string and parameters, for example, "-a+b-a*b/a^2+sin(2*PI*a/b)+sqrt(a)+1,000" with "a=2, b=3" from your keyboard input, or copy and paste from anywhere else. It also memorize the calculation history for convenient backward and forward redoing.

    • Architecture: Dialog based
    • Running environment: Windows XP/NT/98/95
    • Mouse button response: Left,right, both
    • New feature:
      • Accept string arithmetic,
      • String redo/undo input,

  3. Minesweeper


    In addition to Windows's minesweeper, I add "undo" which allows you playback. I add "Save as" and "Load from" files. This little game is good for practicing recursion algorithm.

  4. Connect-Four - a graphic simulation computer game I developed by Visual C++

    Connect-Four is a popular kid game, which you can buy from everywhere such as Walmart, Kmart or Toys"R"s. I remember the day when my daughter bought it, she beat me several times, which triggered me to write this computer game for fun.

    Connect-Four is a tic-tac-toe-like two-player game in which players alternately place pieces on a vertical board 7 columns across and 6 rows high. Each player uses pieces of a particular color (commonly black and red, or sometimes yellow and red), and the object is to be the first to obtain four pieces in a horizontal, vertical, or diagonal line. Because the board is vertical, pieces inserted in a given column always drop to the lowest unoccupied row of that column. As soon as a column contains 6 pieces, it is full and no other piece can be placed in the column.

    (click to download)

    Both players begin with 21 identical pieces, and the first player to achieve a line of four connected pieces wins the game. If all 42 pieces are played and no player has placed four pieces in a row, the game is drawn.

    In 1988, as mathematic problem, Allis study it thoroughly, and the game has been completely analyzed. What I did in this graphic computer game is that I applied a few optimized steps, let the computer act like an expert, which turns out that it is hard for a person to beat the computer (The game lets you go first, and theoretically, you should win.)

  5. Billiards: a 3-D simulation game by OpenGL (recommended)

    OpenGL(Microsoft's Direct3D on the Windows platform) is a specification defining a cross-language cross-platform API for writing applications that produce 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex 3D scenes from simple primitives. Used in CAD, virtual reality, scientific visualisation, information visualisation and video game development.

    A shader is a program (process, virtual processor) used in 3D computer graphics to determine the final surface properties of an object or image. This can include arbitrarily complex descriptions of light absorption and diffusion, texture mapping, reflection and refraction, shadowing, surface displacement and post-processing effects.


    (by Marco Leon. Download to play)

  6. C60 --- 3D graphics
  7. Grab - a multiple-thread internet automatic download program

    Teleport is a widely used commercial offline webspider. My program Grab has similar features, which allows multiple-threading filter HTML files, dig out all of the linked files on a web site, download files based on extensions, HTML, GIF, JPG, PDF, MP3, etc. efficiently.

  8. SQL

| C/C++ | MyQt | Qt C++