Solving PDEs in Python : The FEniCS Tutorial I.
| Main Author: | |
|---|---|
| Other Authors: | |
| Format: | eBook |
| Language: | English |
| Published: |
Cham :
Springer International Publishing AG,
2017.
|
| Edition: | 1st ed. |
| Series: | Simula SpringerBriefs on Computing Series
|
| Subjects: | |
| Online Access: | Click to View |
Table of Contents:
- Intro
- Foreword
- Contents
- Preface
- 1 Preliminaries
- 1.1 The FEniCS Project
- 1.2 What you will learn
- 1.3 Working with this tutorial
- 1.4 Obtaining the software
- 1.4.1 Installation using Docker containers
- 1.4.2 Installation using Ubuntu packages
- 1.4.3 Testing your installation
- 1.5 Obtaining the tutorial examples
- 1.6 Background knowledge
- 1.6.1 Programming in Python
- 1.6.2 The finite element method
- 2 Fundamentals: Solving the Poisson equation
- 2.1 Mathematical problem formulation
- 2.1.1 Finite element variational formulation
- 2.1.2 Abstract finite element variational formulation
- 2.1.3 Choosing a test problem
- 2.2 FEniCS implementation
- 2.2.1 The complete program
- 2.2.2 Running the program
- 2.3 Dissection of the program
- 2.3.1 The important first line
- 2.3.2 Generating simple meshes
- 2.3.3 Defining the finite element function space
- 2.3.4 Defining the trial and test functions
- 2.3.5 Defining the boundary conditions
- 2.3.6 Defining the source term
- 2.3.7 Defining the variational problem
- 2.3.8 Forming and solving the linear system
- 2.3.9 Plotting the solution using the plot command
- 2.3.10 Plotting the solution using ParaView
- 2.3.11 Computing the error
- 2.3.12 Examining degrees of freedom and vertex values
- 2.4 Deflection of a membrane
- 2.4.1 Scaling the equation
- 2.4.2 Defining the mesh
- 2.4.3 Defining the load
- 2.4.4 Defining the variational problem
- 2.4.5 Plotting the solution
- 2.4.6 Making curve plots through the domain
- 3 A Gallery of finite element solvers
- 3.1 The heat equation
- 3.1.1 PDE problem
- 3.1.2 Variational formulation
- 3.1.3 FEniCS implementation
- 3.2 A nonlinear Poisson equation
- 3.2.1 PDE problem
- 3.2.2 Variational formulation
- 3.2.3 FEniCS implementation
- 3.3 The equations of linear elasticity
- 3.3.1 PDE problem.
- 3.3.2 Variational formulation
- 3.3.3 FEniCS implementation
- 3.4 The Navier-Stokes equations
- 3.4.1 PDE problem
- 3.4.2 Variational formulation
- 3.4.3 FEniCS implementation
- 3.5 A system of advection-diffusion-reaction equations
- 3.5.1 PDE problem
- 3.5.2 Variational formulation
- 3.5.3 FEniCS implementation
- 4 Subdomains and boundary conditions
- 4.1 Combining Dirichlet and Neumann conditions
- 4.1.1 PDE problem
- 4.1.2 Variational formulation
- 4.1.3 FEniCS implementation
- 4.2 Setting multiple Dirichlet conditions
- 4.3 Defining subdomains for different materials
- 4.3.1 Using expressions to define subdomains
- 4.3.2 Using mesh functions to define subdomains
- 4.3.3 Using C++ code snippets to define subdomains
- 4.4 Setting multiple Dirichlet, Neumann, and Robin conditions
- 4.4.1 Three types of boundary conditions
- 4.4.2 PDE problem
- 4.4.3 Variational formulation
- 4.4.4 FEniCS implementation
- 4.4.5 Test problem
- 4.4.6 Debugging boundary conditions
- 4.5 Generating meshes with subdomains
- 4.5.1 PDE problem
- 4.5.2 Variational formulation
- 4.5.3 FEniCS implementation
- 5 Extensions: Improving the Poisson solver
- 5.1 Refactoring the Poisson solver
- 5.1.1 A more general solver function
- 5.1.2 Writing the solver as a Python module
- 5.1.3 Verification and unit tests
- 5.1.4 Parameterizing the number of space dimensions
- 5.2 Working with linear solvers
- 5.2.1 Choosing a linear solver and preconditioner
- 5.2.2 Choosing a linear algebra backend
- 5.2.3 Setting solver parameters
- 5.2.4 An extended solver function
- 5.2.5 A remark regarding unit tests
- 5.2.6 List of linear solver methods and preconditioners
- 5.3 High-level and low-level solver interfaces
- 5.3.1 Linear variational problem and solver objects
- 5.3.2 Explicit assembly and solve
- 5.3.3 Examining matrix and vector values.
- 5.4 Degrees of freedom and function evaluation
- 5.4.1 Examining the degrees of freedom
- 5.4.2 Setting the degrees of freedom
- 5.4.3 Function evaluation
- 5.5 Postprocessing computations
- 5.5.1 Test problem
- 5.5.2 Flux computations
- 5.5.3 Computing functionals
- 5.5.4 Computing convergence rates
- 5.5.5 Taking advantage of structured mesh data
- 5.6 Taking the next step
- References
- Index.


