-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge commit '0f2f660321d9651753ebe89ccc93d3d6fdb2c25c' as '3-finite-…
…element-method'
- Loading branch information
Showing
793 changed files
with
77,268 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
.ipynb_checkpoints | ||
src/__pycache__/ | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"# Finite element method\n", | ||
"\n", | ||
"*A summary of \"Introduction to Numerical Methods for Variational Problems\", a great open source book by Hans Petter Langtangen and Kent-Andre Mardal. [http://folk.uio.no/kent-and/hpl-fem-book/doc/web/]. The source code has been obtained from [https://github.com/hplgit/fem-book]*\n", | ||
"\n", | ||
"\n", | ||
"* The present book is essentially a book on the finite element method, although we discuss many other choices of basis functions and other applications than partial differential equations. The literature on finite elements contains books of many different flavors, ranging from an abstract view of the method to a more practical, algorithmic treatment of the subject. The present book has a very strong algorithmic focus (\"how to compute\"), but formulate the method in abstract form with variational forms and function spaces.\n", | ||
"\n", | ||
"\n", | ||
"* It is not our aim to present the established mathematical theory here, but rather provide the reader with the gory details of the implementation in an explicit, user-friendly and simplistic manner to lower the threshold of usage. At the same time, we want to present tools for verification and debugging that are applicable in general situations such that the method can be used safely beyond what is theoretically proven. \n", | ||
"\n", | ||
"\n", | ||
"* It is our opinion that it still is important to develop codes from scratch in order to learn all the gory details. That is; \"programming is understanding\" as Kristen Nygaard put it - a favorite quite of both Hans Petter and me. As such, there is a need for teaching material that exposes the internals of a finite element engine and allow for scrutinous investigation in a clean environment. In particular, Hans Petter always wanted to lower the bar for introducing finite elements both by avoiding technical details of implementation as well as avoiding the theoretical issues with Sobolev spaces and functional analysis. This is the purpose of this book. \n", | ||
"\n", | ||
"\n", | ||
"* Through explicit, detailed and sometimes lengthy derivations, the reader will be able to get direct exposition of all components in a finite element engine. \n", | ||
"\n", | ||
"\n", | ||
"* The present book grew out of the need to explain variational formulations in the most intuitive way so FEniCS users can transform their PDE problem into the proper formulation for FEniCS programming. We then added material such that also the details of the most fundamental finite element algorithms could easily be understood.\n", | ||
"\n", | ||
"\n", | ||
"The learning outcomes of this book are five-fold:\n", | ||
"\n", | ||
"1. understanding various types of variational formulations of PDE problems,\n", | ||
"\n", | ||
"2. understanding the machinery of finite element algorithms,\n", | ||
" with an emphasis on one-dimensional problems,\n", | ||
"\n", | ||
"3. understanding potential artifacts in simulation results,\n", | ||
"\n", | ||
"4. understanding how variational formulations can be used in other\n", | ||
" contexts (generalized boundary conditions, solving linear systems)\n", | ||
"\n", | ||
"5. understanding how variational methods may be used \n", | ||
" for complicated PDEs (systems of non-linear and time-dependent PDEs)\n", | ||
"\n", | ||
"\n", | ||
"\n", | ||
"* The exposition is recognized by very explicit mathematics, i.e., we have tried to write out all details of the finite element \"engine\" such that a reader can calculate a finite element problem by hand.\n", | ||
"\n", | ||
"\n", | ||
"* **Although we imagine that the reader will use FEniCS or other similar software to actually solve finite element problems, we strongly believe that successful application of such complex software requires a thorough understanding of the underlying method, which is best gained by hand calculations of the steps in the algorithms.**\n", | ||
"\n", | ||
"\n", | ||
"* Also, hand calculations are indispensable for debugging finite element programs: one can run a one-dimensional problem, print out intermediate results, and compare with separate hand calculations. When the program is fully verified in 1D, ideally the program should be turned into a 2D/3D simulation simply by switching from a 1D mesh to the relevant 2D/3D mesh.\n", | ||
"\n", | ||
"\n", | ||
"* When working with algorithms and hand calculations in the present book, we emphasize the usefulness of symbolic computing. Our choice is the free SymPy package, which is very easy to use for students and which gives a seamless transition from symbolic to numerical computing. \n", | ||
"\n", | ||
"* Another learning outcome (although not needed to be a successful FEniCS user) is to understand how the finite element method is a special case of more general variational approaches to solving equations. We consider approximation in general, solution of PDEs, as well as solving linear systems in a way that hopefully gives the reader an understanding of how seemingly very different numerical methods actually are just variants of a common way of reasoning.\n" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.8.3" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |
Oops, something went wrong.