MTH 65X: Resources¶
Advanced Numerical Analysis¶
September 2023 - June 2024, Portland State University¶
Instructor: Jay Gopalakrishnan¶
Syllabus¶
Books on theory and grading information are in the course canvas site.
Software resources¶
We will extensively use the finite element software library called NGSolve in this course.
- NGSolve's webpage contains documentation, interactive "i-tutorials", and a Q&A "forum" for clarifications.
Those students who plan to continue using NGSolve, or conduct research into finite elements after the conclusion of this course should eventually build from source and install NGSolve themselves, on their own computers, following the instructions at NGsolve's install from source page.
Browse Lecture Notebooks¶
You can browse the lecture notebooks (exported to static html pages) online here.
Live Computing Environments¶
For use in class and for exercises in this course, two alternate no-install-required ngsolve options are offered. Note that both these options are brand new services being piloted first in this course sequence: thank you in advance for your patience!
Option 1: http://lab-jupyterhub.research.pdx.edu, login required:¶
Thanks to the university's Research Computing (RC) staff, a JupyterHub service has been set up for this course. It is accessible (using the above link) only from campus or via VPN and only after you have received permissions: you will authenticate using the university's single sign-on as usual. It runs on a local server, where a recent version of NGSolve and useful python modules are already installed and available for immediate use. When you run your code using this jupyterhub service, it will run on one of RC's linux computing servers where you can also store your files and codes in your home folder.
Option 2: https://jayggg.github.io/651-jupyterlite, public domain:¶
Thanks to the NGSolve development team, this option enables NGSolve to be run in your web browser on your computer without any install process and negligible startup time. The team made this possible by compiling NGSolve into a webassembly code (supported by most major modern browsers). It is then offered to you using pyodide
and a new service from the Jupyter ecosystem called JupyterLite (which per their page is still "unofficial" as of this writing). While this option should suffice for most purposes, Option 1 is expected to be better for more memory intensive tasks we might encounter.
Download¶
You can download a copy of all finite element notebooks provided in this course. The notebooks can be found under the folder 651-jupyterlite/FEMnotebooks
after you clone the public git repository github.com/jayggg/651-jupyterlite.git by typing the following into the command line:
git clone https://github.com/jayggg/651-jupyterlite.git
To update at any time, move to the cloned folder and type git pull
.
General Python resources¶
For introducing yourselves to python (outside of class) or for brushing up your python skills, please consult the following online resources:
- The official Python 3 tutorial, started by the inventor of Python: https://docs.python.org/3/tutorial/
- Online scipy lectures: https://scipy-lectures.org
- Basic python module for numerics: https://numpy.org
- Locally archived MTH 271 lectures (Mathematical Computing with Python) at Portland State University: A downloadable PDF version and a browsable HTML version version are available. Please ensure that you can understand the basic codes in Lectures 04, 05, 07, and 08 there.
- Free online book: https://jakevdp.github.io/WhirlwindTourOfPython/index.html
Further resources¶
Although bleeding-edge computational resources were highlighted above first, the crux of this course is mathematical theory of finite elements. Login to the course canvas site to access the remaining materials, including syllabus, overall list of topics, and a course diary with precise statements of each theorem covered. These are essential materials to follow along through the course.