![]() |
List of Jump Start Applications |
| Jump Start Applications |
|
The Jump Start Applications is a collection of more than 50 source codes program templates
for the purpose of quicly learning Diffpack programming.
The complexity varies from simple "Hello World" programs to extensive coupled simulators for complicated multi-physics problems. They are constructed with a step-wise pedagogical exposition and are written by the most experienced Diffpack programmers. You may download these applications from our Download Area. |
| Descriptions of Jump Start Applications | |
| AdvecA | Time-dependent advection-equation with adaptive grids |
| arraysyntax | Demonstration of vectors and matrices in Diffpack |
| Cd | Nonlinear time-dependent PDEs of convection-diffusion type |
| ComplexPDE1 | Variant of Poisson1 tailored to a complex PDE |
| ComplexPDE2 | Simulator for a complex PDE |
| ConvDiff1 | Finite element convection-diffusion simulator |
| Diffusion2D | 2D heat or diffusion equation on a rectangle |
| Elasticity1 | Thermo-elastic problems with a prescribed temperature field |
| ElastoVP1 | 2D/3D simulator for elasto-plastic problems |
| ExpBasisFunc | Example on how to implement new finite elements in Diffpack |
| GaussSeidelDemo | Gauss-Seidel for finite difference-discretized Poisson equation |
| Heat1 | Time-dep. heat and diffusion equation, extension Poisson1 |
| Heat1D0 | Variant of the Heat1D1 simulator |
| Heat1D1 | 1D linear stationary heat conduction |
| Heat1D-Mat | Stationary heat conduction solver coded in F77/C style |
| Heat1D-MatTri | As Heat1D-Mat, but with tridiagonal matrix format |
| Heat1Dn1 | Heat conduction with conductivity dependent on temperature |
| Heat1Dn-MatTri | 1D heat conduction |
| Heat2 | Extension of the Heat1 solver |
| HelloWorld1 | "Hello World!" program written in pure C++ |
| HelloWorld2 | "Hello World!" program written in Diffpack's C++ style |
| iLU | Example on a particular optimization of Heat1 |
| LinSys1 | Simple demo of solving linear systems in Diffpack |
| LinSys2 | Finite difference discretization of the Poisson equation |
| LinSys3 | As LinSys2, but preconditioning is allowed |
| LinSys4 | As LinSys3, but with convergence monitors++ |
| LongWave1 | The linear shallow water equations on a staggered C-grid |
| matlab-movie | The ode solver with Matlab movie |
| MyFirstFEM | Simple code for a two-point boundary value problem |
| MyVector | Simple C++ class implementing vectors |
| NlHeat1 | Extension of the Poisson1 and Heat1 applications |
| NlHeat1e | Subclass extension of the NlHeat1 solver |
| NsFD | 3D finite difference time-dependent Navier-Stokes on box grids |
| NsPenalty1 | Finite element Navier-Stokes based on the penalty-method |
| ode | Simple environment for solving ODEs |
| optimize | Examples of various optimizations of the Heat1 code |
| Parabolic1D1 | Time-dependent 1D heat or diffusion equation |
| Pipeflow | Coupled heat conduction and flow of a non-Newtonian fluid |
| Poisson0 | Poisson on unit square with Dirichlet boundary conditions |
| Poisson1 | More flexible version of the Poisson0 |
| Poisson2 | General and flexible solver for scalar elliptic equations |
| PoissonA | Variant of Posson1 with adaptive grids |
| SqueezeFilm | Fluid-structure interaction, so-called squeeze-film damping |
| Streamfunc1 | Poisson solver aimed at importing a velocity field |
| torsion | Variant of Poisson1 solver for torsion of bars |
| Wave0 | General finite element solver for the wave equation |
| Wave1 | Variant of Wave0 |
| Wave1D1 | Wave equation modeling waves on a string |
| Wave1D2 | Variant of Wave1D1 |
| Wave1D3 | Variant of Wave1D1 |
| Wave1D3e | Variant of Wave1D3 |
| Wave1D4 | Variant of Wave1D1 |
| Wave1D5 | Variant of Wave1D1 |
| Wave1D-f77 | 1D wave equation simulator written in Fortran 77 |
| Wave1D-func | 1D wave equation solver coded in F77/C style |
| Wave2D1 | Wave equation with variable coefficients, centered FDM |
| Wave2D-func | 2D wave equation with variable coefficients |
|
AdvecA A time-dependent advection-equation solver equipped with adaptive grids and a tool for handling local mesh refinement criteria. The purpose of this solver is to demonstrate how adaptive grid features are used in time-dependent problems. See chapter 3.6 in the book for more details. (Notice: adaptive grids are not a part of the standard Diffpack v4.0 libraries, but this application is included in compiled form to allow readers of the book to experiment with adaptive grid methods.) |
|
arraysyntax Demonstration of common operations on vectors and matrices in Diffpack, see chapter 1.5.3 for associated text. |
|
Cd A simulator for possibly nonlinear time-dependent scalar PDEs of convection-diffusion type. A precise description of the various classes in this simulator and what type of mathematical problems they deal with is given in chapter 6.1 of the book. The simulator demonstrates the use of a wide set of Diffpack programming styles and library tools. |
|
ComplexPDE1 A version of Poisson1 tailored to a complex PDE (the Helmholtz equation). The complex problem is solved by just redefining the NUMT parameter in Diffpack from real to Complex. |
|
ComplexPDE2 A simulator for a complex PDE (the Helmholtz equation). The same model problem as in ComplexPDE1 is solved, but Complex matrices and vectors are avoided by expressing the mathematical problem as a system of 2 PDEs (i.e. treating the real and imaginary part separately). |
|
ConvDiff1 A finite element convection-diffusion simulator aimed at a special test 2D case, see chapter 3.8 in the book. |
|
Diffusion2D A simulator for the 2D heat or diffusion equation on a rectangle, discretized by a centered finite difference method in space and a theta-rule in time. The code provides a good example on how to implement implicit finite difference solvers in Diffpack. Appendix D.7 in the book describes the mathematical model, the numerics, and the basics of the implementation. |
|
Elasticity1 A 2D/3D simulator for linear thermo-elastic problems (with a prescribed temperature field). Chapter 5.1 in the book presents the model, the numerics, and the implementation. |
|
ElastoVP1 A 2D/3D simulator for elasto-plastic problems modeled by a time-dependent elasto-viscoplastic constitutive law (the classical elasto-plastic solution is obtained as the stationary state of this solver). Details on the model, the numerics, and the implementation are given in chapter 5.2 of the book. |
|
ExpBasisFunc An example on how to implement new finite elements in Diffpack. This example also outlines how to couple the element to physical parameters in the simulator (here, the shape functions are of exponential type with the e-folding distance as a function of a physical parameter in the PDE). |
|
GaussSeidelDemo A simple demo program implementing the Gauss-Seidel method for solving a 2D finite difference-discretized Poisson equation on the unit square, with Dirichlet and Neumann boundary conditions. One purpose is to demonstrate the smoothing properties of high frequencies in the Gauss-Seidel method and the slow convergence towards the correct solution, that is, motivate for the multigrid method. See example C.1 in appendix C.1 of the book for a description of the solver. |
|
Heat1 A finite element simulator for the time-dependent heat or diffusion equation in 1D, 2D, or 3D, coded as a natural extension of the Poisson1 solver. See chapter 3.9 for complete information about the Heat1 application. |
|
Heat1D0 A simple edition of the Heat1D1 simulator, where the simulator is organized as a class, but where the use of grid and field abstractions is absent. The source code might be useful for those who think the step from Heat1D-MatTri to Heat1D1 is big. |
|
Heat1D1 A simulator for 1D (linear) stationary heat conduction. The code is merely a restructuring of the Heat1D-MatTri solver in terms of classes and basic Diffpack abstractions for grids and fields. See chapter 1.6.1 in the book for details. |
|
Heat1D-Mat A 1D (linear) stationary heat conduction solver coded in F77/C style. See chapter 1.2.1-1.2.4 in the book for documentation of the model and the finite difference scheme as well as detailed explanation of the elements in the code. |
|
Heat1D-MatTri As Heat1D-Mat, but the coefficient matrix is stored in tridiagonal form, making this solver much more efficient than Heat1D-Mat. See chapter 1.2.5 in the book for more information. |
|
Heat1Dn1 A simulator for 1D heat conduction, where the heat conductivity might depend on the temperature, leading to a nonlinear two-point boundary-value problem. The code is merely a restructuring of the Heat1Dn-MatTri solver in terms of classes and grid/field abstractions, equipped with convenient tools for learning about the model (accuracy, stability, efficiency etc.). See chapters 1.2.7 and 1.6.1-1.6.2 in the book for details. |
|
Heat1Dn-MatTri A simulator for 1D heat conduction, where the heat conductivity might depend on the temperature, leading to a nonlinear two-point boundary-value problem. See chapter 1.2.7 in the book for documentation of the model and the numerics. A more sophisticated version of this solver, more suitable for numerical experimentation, is available as the Heat1Dn1 application. |
|
Heat2 A quite general and flexible finite element simulator for the time-dependent heat or diffusion equation in 1D, 2D, or 3D, with Dirichlet, Neumann, and Robin (cooling) boundary conditions. The code is a natural extension of the Heat1 solver to time-dependent problems and constitutes the recommended Diffpack program template for time-dependent scalar PDE solvers. See chapter 3.10 for more information about the Heat2 solver. |
|
HelloWorld1 A basic "Hello World!" program written in pure C++, see chapter 1.1.2 in the book. |
|
HelloWorld2 A basic "Hello World!" program written in Diffpack's C++ style, see chapter 1.1.3 in the book. |
|
iLU Example on a particular optimization of the Heat1 code where one avoids refactorization of the coefficient matrix at each time step. See appendix B.6.1 for details. |
|
LinSys1 A simple demo program that reads the coefficient matrix and the right-hand side of a linear system and calls a linear solver in Diffpack for solving the system, see appendix D.2.2 in the book. |
|
LinSys2 A demo program that sets up the linear system corresponding to a finite difference discretization of the Poisson equation on the unit cube and solves the system by a run-time chosen linear solver (without preconditioning). See appendix D.2.3 in the book for details. |
|
LinSys3 As LinSys2, but preconditioning is allowed, see appendix D.5 in the book for details. |
|
LinSys4 As LinSys3, but convergence monitors and more flexibility are included in the code. This is a good example on how to program with the sparse linear solver utilities in Diffpack. See appendix D.6 for more details. |
|
LongWave1 A simple example on how to implement the linear shallow water equations on a staggered C-grid in two space dimensions. Chapter 6.2 in the book provides details on the equations being solved and the Diffpack implementation. |
|
matlab-movie Some extra features of the ode application that allows the computed functions in Diffpack to be displayed in Matlab during execution. See the end of chapter 1.5.4 in the book. |
|
MyFirstFEM A very simple finite element code for solving a 1D two-point boundary value problem, solely aimed at educational purposes. The code is described in chapter 2.5 of the book. |
|
MyVector A simple C++ class implementing vectors, used for educational purposes, taken from chapter 1.5.2 in the book. |
|
NlHeat1 A finite element simulator for a time-dependent and nonlinear heat (or diffusion) equation in 1D, 2D, or 3D. The code is a natural extension of the Poisson1 and Heat1 applications to nonlinear problems. See chapter 4.2.1 in the book for a discussion of the software features of the code and a documentation of the underlying numerical model. |
|
NlHeat1e This is a subclass extension of the NlHeat1 solver as explained in chapter 4.2.2 in the book. |
|
NsFD A rough 3D finite difference solver for the time-dependent Navier-Stokes equations on box grids. Chapter 6.4 in the book presents the solution process and outlines how the code is organized. |
|
NsPenalty1 A finite element Navier-Stokes solver based on the penalty-method for eliminating the pressure term. Can handle stationary and time-dependent flows. Details on the model, the numerics, and the implementation are provided in chapter 6.3 of the book. |
|
ode A very simple software environment for solving ordinary differential equations, see chapter 1.5.4 in the book for a discussion of the various classes in this solver. |
|
optimize Examples of various optimizations of the Heat1 code, see appendix B.6.3 in the book for details on the various techniques that are applied. The code is the main example on optimization of the finite element assembly process in Diffpack. |
|
Parabolic1D1 A simulator for the time-dependent 1D heat or diffusion equation, solved by finite differences. The user can choose among several initial and boundary conditions at run-time, thus allowing illustration of the effect of changing the initial and boundary conditions in a parabolic equation. See appendix A.5 in the book for more details. |
|
Pipeflow A simulator for coupled heat conduction and flow of a temperature-sensitive non-Newtonian fluid. The geometry is restricted to straight pipes, with arbitrary cross section, in order to simplify the system of governing PDEs. The simulator demonstrates how to create a solver for a compound system of PDEs by assembling independent solvers for each scalar PDE. Chapter 7.2 in the book is devoted to this simulator. |
|
Poisson0 A very simple finite element simulator for the 2D Poisson equation on the unit square with Dirichlet values on the boundary. Made for educational purposes, see chapter 3.1 in the book. |
|
Poisson1 A more flexible version of the Poisson0 code for solving the 1D, 2D, or 3D Poisson equation in a general geometry with Dirichlet boundary conditions. See chapter 3.2-3.4 in the book for details about the source code and Diffpack features used in the solver. |
|
Poisson2 A quite general and flexible 1D, 2D, or 3D solver for scalar elliptic equations discretized by the finite element method. The solver handles the most common types of boundary conditions (Dirichlet, Neumann, Robin) and is the recommended program template when developing scalar stationary Diffpack finite element simulators. Chapter 3.5 in the book contains more information about the features in this solver that are not also found in the Poisson0 and Poisson1 codes. |
|
PoissonA This is essentially a Poisson1 solver equipped with two types of adaptive finite element grids and a tool for handling local mesh refinement criteria, see chapter 3.6 for more information on adaptive grids in Diffpack. (Notice: adaptive grids are not a part of the standard Diffpack v4.0 libraries, but this application is included in compiled form to allow readers of the book to experiment with adaptive grid methods.) |
|
SqueezeFilm A simulator for a simple class of fluid-structure interaction, so-called squeeze-film damping, with coupled motion of a plate and the surrounding air. Chapter 7.1 in the Diffpack book describes the mathematical model, the numerical method, and the design principles of this simulator. |
|
Streamfunc1 A simple Poisson solver aimed at importing a velocity field (computed e.g. in a Navier-Stokes solver) and computing the corresponding stream function. See also chapter 6.3 in the book. |
|
torsion A specialized version of the Poisson1 solver aimed at simulating torsion of bars. See chapter 3.4.6 in the book for details. |
|
Wave0 A general finite element solver for the 1D, 2D, or 3D wave equation in general geometries (structured/unstructured grids). See chapter 3.11 in the book for precise information on the model, the numerics, and implementational features. |
|
Wave1 A general finite element solver for the 1D, 2D, or 3D wave equation in general geometries (structured/unstructured grids). The simulator is a more flexible version of the Wave1 application. See chapter 3.11 in the book for details. |
|
Wave1D1 A simulator for the 1D wave equation modeling waves on a string. The code is merely a restructuring of the Wave1D-func code in terms of classes and Diffpack abstractions for grids and fields. See chapters 1.3 and 1.6.3 for more details. |
|
Wave1D2 The same simulator as Wave1D1, but handles are used for the FieldLattice and TimePrm objects as well. |
|
Wave1D3 A simulator for the 1D wave equation similar to Wave1D1, but with a plug-shaped initial profile with adjustable smoothness. The simulator is used for illustrating the nature of numerical errors, see appendix A.4.8 for the background for and the use of this code. |
|
Wave1D3e As Wave1D3, but the exact discrete solution is coded and allows comparison of the real computed solution with the exact expression for the numerical solution. Appendix A.4 gives the background theory for such solver tests. |
|
Wave1D4 A simulator like Wave1D1, but tailored to solving the Laplace equation (by an invalid/unstable wave equation method). Used to illustrate that an explicit scheme for the Laplace equation is unconditionally unstable. See appendix A.5 for details about the mathematical problem and the numerical approach used by this simulator. |
|
Wave1D5 A 1D wave equation solver similar to Wave1D1, but with another initial condition and more flexible choice of the boundary condition at the right end. Used to illustrate the effect of changing boundary conditions in a hyperbolic equation. See appendix A.5 in the book for more details. |
|
Wave1D-f77 A 1D wave equation simulator written in Fortran 77. Corresponds directly to the Wave1D-func code in Diffpack/C++. |
|
Wave1D-func A 1D wave equation solver coded in F77/C style. See chapter 1.3 in the book for documentation of the model, the finite difference scheme, and the implementation. |
|
Wave2D1 A simulator for the 2D wave equation with variable coefficients, discretized by centered finite differences. One application area (referred to in the book) is the propagation of (long) ocean waves. See chapters 1.3.6 and 1.6.3 in the book for more information. |
|
Wave2D-func A simulator for the 2D wave equation with variable coefficients, discretized by centered finite differences. One application area, (referred to in the book) is the propagation of (long) ocean waves. The simulator adopts a classical F77/C coding style. A more sophisticated version of this solver, aimed simple ocean wave simulations, is available as the Wave2D1 application. |
Copyright © inuTech GmbH. All rights reserved.Questions and comments regarding this web site should be directed to |