Turing Patterns and Partial Differential Equations¶
Description¶
This code is a component of the Research Computing and Data Science Examples (ReCoDE) project. It comprises a non-linear partial differential equation (PDE) solver implemented in Fortran, designed to address both boundary value problems (BVP) and initial boundary value problems (IBVP) with temporal progression. The solver's versatility allows it to handle problems in one or two dimensions and can accommodate single equations or pairs of coupled equations. This exemplar showcases several key features of the code, including:
- Integration with the Fortran Package Manager (FPM)
- Utilization of LAPACK libraries
- Modular architecture for enhanced maintainability and extensibility
To demonstrate its practical application, the code solves a PDE derived from a predator-prey model. This model is renowned for generating solutions that exhibit Turing patterns, which are observed in various biological systems, such as the skin patterns of pufferfish. While prior knowledge of PDEs and predator-prey models is not prerequisite for understanding this example, all relevant mathematical concepts will be elucidated in the subsequent sections.
Learning Outcomes¶
- Complied Codes
- Fortran Package Manager (FPM)
- Modular Codes
- Multipurpose Codes
- Solving Mathematical Problems (PDEs)
- Generalising Problems
- Discretisation in multiple dimensions
- Use of external libraries (LAPACK and BLAS)
- Testing Fortran code
Task | Time |
---|---|
Reading | 7 hours |
Practising | 7 hours |
Requirements¶
This exemplar is for entry-level researchers with basic knowledge of Fortran syntax. An Introduction to Fortran Course is available to help you get started.
Academic¶
- Ordinary Differential Equations (ODEs): Ordinary differential equations are equations that involve functions of a single independent variable and their derivatives. These equations are fundamental in modeling various physical, biological, and economic phenomena where the rate of change of a quantity is related to the quantity itself. A discussion on ordinary differential equations can be found here
- Partial Differential Equations (PDEs): Partial differential equations are more complex than ODEs, as they involve functions of multiple independent variables and their partial derivatives. PDEs are crucial in describing many natural phenomena, including heat transfer, fluid dynamics, and quantum mechanics. They allow us to model systems that change with respect to multiple variables simultaneously, such as time and space. A discussion on partial differential equations can be found here.
- Numerical Techniques: While some differential equations can be solved analytically, many real-world problems require numerical methods for approximation. The numerical techniques used for solving PDEs are often similar to those used for ODEs, but they must account for the additional complexity introduced by multiple variables.
- Finite Difference Method: One common numerical approach for solving PDEs is the finite difference method. This technique approximates derivatives by differences over small intervals. It discretises the continuous domain of the PDE into a grid or mesh, and the solution is computed at discrete points. This method is particularly useful for problems with regular geometries and is relatively straightforward to implement.
Understanding these concepts is crucial for working with the non-linear PDE solver included in this exemplar. The solver's ability to handle both BVPs and IVBPs makes it a versatile tool for a wide range of applications in scientific computing and mathematical modeling.
System¶
- A Fortran compiler, such as
gfortran
: see here for an installation guide. - Fortran Package Manager (FPM): see here for an installation guide.
BLAS
external library: see here for aBLAS
installation guide here. Mac users can install with homebrew.LAPACK
external library: see theLAPACK
documentation here and here for an installation guide. Mac users can install with homebrew.BLAS
must be installed first.- Optional: For visualisation of solutions we have made use of
MATLAB_R2023a
code. These are given in thesolver/examples
directory. Other visualisation software can be used.
Getting Started¶
To begin working with this PDE solver, please follow these steps:
-
Introduction to Fortran Package Manager (FPM): Start by reading the review of Fortran Package Manager in Section 00 which is required for compiling this project. This will provide an introduction to FPM using the
fortran_fibonacci
repository as an example. -
Theoretical Background: Section 01 provides a general overview of the problem and the basic techniques employed in the solution.
-
Solver Configuration and Usage: The three parts of Section 03 describes how to run and use the code.
-
Example Problems: Consult Section 9 for detailed instructions on solving specific problems using this code.
-
Advanced Techniques: The remaining sections explain specific coding techniques used in the development of this solver.
This structured learning sequence provides a comprehensive overview of the PDE solver, encompassing its theoretical foundations, practical implementation, operational use, and critically, the coding techniques employed in its development.
License¶
This project is licensed under the BSD-3-Clause license