diff --git a/.github/workflows/deploy-book.yml b/.github/workflows/deploy-book.yml
index b8bb9be..3c54462 100644
--- a/.github/workflows/deploy-book.yml
+++ b/.github/workflows/deploy-book.yml
@@ -1,41 +1,85 @@
-name: Build and Deploy Jupyter Book
+name: Build IGA-Python Jupyter Book
on:
push:
- branches:
- - master
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
jobs:
deploy-book:
- runs-on: ubuntu-latest
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ include:
+ - os: ubuntu-24.04
+ python-version: '3.12'
+
+ - os: macos-15
+ python-version: '3.12'
+
+ env:
+ FC: gfortran-14
+
+ name: ${{ matrix.os }} / Python ${{ matrix.python-version }}
+
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- - name: Set up Python
- uses: actions/setup-python@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v5
with:
- python-version: '3.9'
+ python-version: ${{ matrix.python-version }}
+ cache: 'pip'
+ cache-dependency-path: requirements.txt
- - name: Install dependencies
+ - name: Install non-Python dependencies on Ubuntu
+ if: startsWith(matrix.os, 'ubuntu')
+ uses: awalsh128/cache-apt-pkgs-action@latest
+ with:
+ packages: gfortran openmpi-bin libopenmpi-dev libhdf5-openmpi-dev
+ version: 1.0
+ execute_install_scripts: true
+
+ # When loading cached apt packages, the default MPI compiler isn't set.
+ # Workaround is to 'reinstall' openmpi-bin, which doesn't actually perform
+ # installation (since openmpi-bin already exists), but instead reruns
+ # `update-alternatives` which fixes the symlinks to mpicc/mpif90.
+ - name: Reconfigure non-Python dependencies on Ubuntu
+ if: startsWith(matrix.os, 'ubuntu')
run: |
- python -m pip install --upgrade pip
sudo apt-get update
- sudo apt-get install gfortran
- sudo apt-get install openmpi-bin libopenmpi-dev
- sudo apt-get install libhdf5-openmpi-dev
- git clone https://github.com/pyccel/psydac.git
- cd psydac
- python -m pip install -r requirements.txt
- python -m pip install -r requirements_extra.txt --no-build-isolation
- pip install .
- pip install jupyter-book ghp-import sphinx_proof
- python -m ipykernel install --user --name .iga-python --display-name "IGA-Python"
- python -m ipykernel install --user --name v_psydac --display-name "Python (v_psydac)"
+ sudo apt-get install --reinstall openmpi-bin libhdf5-openmpi-dev
+
+ - name: Install non-Python dependencies on macOS
+ if: startsWith(matrix.os, 'macos')
+ run: |
+ brew install open-mpi hdf5-mpi libomp
+
+ - name: Check gfortran version
+ run: |
+ if [[ "${{ matrix.os }}" == *"macos"* ]]; then
+ # pyccel searches for a Fortran compiler exactly named 'gfortran'
+ # which the macos runner doesn't have. A simple workaround is to
+ # create a symlink named 'gfortran'.
+ FC_path=$(which $FC)
+ FC_dir=$(dirname ${FC_path})
+ ln -sv ${FC_path} ${FC_dir}/gfortran
+ fi
+ gfortran --version
+
+ - name: Install Jupyter Book and Psydac
+ run: |
+ pip install --upgrade pip
+ pip install -r requirements.txt
- name: Build Jupyter Book
- run: jupyter-book build .
+ run: make docs
- name: Deploy to GitHub Pages
+ if: ${{ (github.ref == 'refs/heads/master') && startsWith(matrix.os, 'ubuntu') }}
run: ghp-import -n -p -f _build/html
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..fae28c5
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,4 @@
+Ahmed Ratnani
+Mohamed Jalal Maaouni
+Paul Rigor
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..6321b25
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,25 @@
+BUILD_DIR = ./_build
+SRC_DIR = .
+
+.PHONY: docs docs-strict clean clean-notebooks
+
+docs:
+ @echo "Building IGA-Python docs..."
+ @jupyter-book build .
+ @echo "Done."
+
+docs-strict:
+ @echo "Building IGA-Python docs with strict rules on..."
+ @jupyter-book build --warningiserror --nitpick --keep-going .
+ @echo "Done."
+
+clean:
+ @echo "Removing previous IGA-Python build artifacts..."
+ @jupyter-book clean .
+ @echo "Done."
+
+clean-notebooks:
+ @echo "Running 'nb-clean --remove-empty-cells --remove-all-notebook-metadata' on all '*.ipynb' files..."
+ @find . -type f -iname '*.ipynb' -exec nb-clean clean --remove-empty-cells --remove-all-notebook-metadata {} \+
+ @echo "Done."
+
diff --git a/README.md b/README.md
index a3a7fd2..ef03299 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,72 @@
# Welcome to IGA-Python
+
+This project provides a tutorial for isogeometric analysis (IGA) using Python and the Psydac library (pyccel/psydac). The numerical examples can be consulted online at pyccel.github.io/IGA-Python, or run with JupyterNotebook on a personal computer.
+
+## Editing and building IGA-Python locally
+
+1. Clone this repository and then install the required dependencies.
+
+```bash
+git clone https://github.com/pyccel/IGA-Python.git
+cd IGA-Python
+IGA_PYTHON_DIR=$(pwd)
+
+# Install dependencies on a virtual environment
+python3 -m venv iga-python-env
+source iga-python-env/bin/activate
+pip3 install -r requirements_ntbk.txt
+```
+
+2. Install Psydac. Skip this step if Psydac is already installed.
+
+```bash
+# Modify these variables if you're using your own psydac fork/branch
+PSYDAC_REMOTE="https://github.com/pyccel/psydac.git"
+BRANCH="devel"
+
+# Install psydac
+pip install git+${PSYDAC_REMOTE}@${BRANCH}
+```
+
+3. Run or modify the desired Python notebooks (`*.ipynb`) and Markdown files (`*.md`). Check the [MyST syntax cheat sheet](https://jupyterbook.org/en/stable/reference/cheatsheet.html) for reference.
+
+> [!NOTE]
+> Before committing changes to git, the notebooks have to be cleaned first. See ["Committing your changes to git"](#committing-your-changes-to-git) for more information.
+
+4. Build the docs by running `make` under the IGA-Python folder. This involves running all `*.ipynb` files in the background to make sure they are functional.
+
+```bash
+cd ${IGA_PYTHON_DIR}
+make
+```
+
+5. View your changes on the browser.
+
+```bash
+open ${IGA_PYTHON_DIR}/_build/html/index.html
+```
+
+## Committing your changes to git
+
+Running the Python notebooks embeds extra information like the name of virtual environment, Python version used, cell outputs, etc. The notebooks should be free of system- and runtime-specific information before committing them to source control. We suggest the following commit workflow:
+
+1. Run [`nb-clean`](https://github.com/srstevenson/nb-clean) on the modified notebook/s. There are different ways to run this command:
+
+```bash
+# Clean a single notebook
+nb-clean clean --remove-empty-cells --remove-all-notebook-metadata chapter1/poisson.ipynb
+
+# Clean all '.ipynb' files under IGA-Python
+make clean-notebooks
+
+# Automatically run nb-clean on `git add`-ed *.ipynb files
+nb-clean add-filter --remove-empty-cells --remove-all-notebook-metadata
+
+# Undo previous command
+nb-clean remove-filter
+```
+
+2. Create a branch for your local changes, e.g. `git checkout -b my-local-fixes`.
+3. Stage the modified files with `git add`. Then run `git diff` to check if the changed `*.ipynb` notebooks doesn't include unnecessary diffs (e.g. notebook metadata).
+4. `git commit` your changes.
+5. *OPTIONAL*. Share your changes to this repo via a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).
diff --git a/_toc.yml b/_toc.yml
index 8159f13..1db5e02 100644
--- a/_toc.yml
+++ b/_toc.yml
@@ -32,7 +32,7 @@ parts:
- file: chapter1/topology
- file: chapter1/space
- file: chapter1/rules
- - file: chapter1/poisson
+ - file: chapter1/poisson
- file: chapter1/boundary-conditions
- file: chapter1/geometry
sections:
diff --git a/chapter0/bezier-curves.md b/chapter0/bezier-curves.md
index f56d077..2b82015 100644
--- a/chapter0/bezier-curves.md
+++ b/chapter0/bezier-curves.md
@@ -1,5 +1,5 @@
# Bézier curves
-*Author: Ahmed Ratnani*
+
We recall the definition of a Bézier curve:
diff --git a/chapter0/bezier.md b/chapter0/bezier.md
index 0e549bf..03257ce 100644
--- a/chapter0/bezier.md
+++ b/chapter0/bezier.md
@@ -1,5 +1,5 @@
# Bernstein polynomials
-*Author: Ahmed Ratnani*
+
Without loss of generality, we restrict to the case of the unit interval, namely $a=0$ and $b=1$.
In figure (Fig. \ref{fig:bernstein-polynomials}), we plot the first sixth Bernstein polynomials.
diff --git a/chapter0/bsplines-curves.md b/chapter0/bsplines-curves.md
index 44ee3e8..fea8a3a 100644
--- a/chapter0/bsplines-curves.md
+++ b/chapter0/bsplines-curves.md
@@ -1,5 +1,5 @@
# B-Splines curves
-*Author: Ahmed Ratnani*
+
Let $(\mathbf{P}_i)_{ 0 \leqslant i \leqslant n}\in \mathbb{R}^d$ be a sequence of control points. Following the same approach as for Bézier curves, we define B-Splines curves as
diff --git a/chapter0/bsplines-operations.md b/chapter0/bsplines-operations.md
index 3a3e5e8..73751af 100644
--- a/chapter0/bsplines-operations.md
+++ b/chapter0/bsplines-operations.md
@@ -1,5 +1,5 @@
# Fundamental geometric operations for B-Splines
-*Author: Ahmed Ratnani*
+
Having more control on a curve, adding new control points, can be done in two different ways:
diff --git a/chapter0/bsplines-surfaces.md b/chapter0/bsplines-surfaces.md
index aba230c..0bc9b52 100644
--- a/chapter0/bsplines-surfaces.md
+++ b/chapter0/bsplines-surfaces.md
@@ -1,5 +1,5 @@
# B-Splines surfaces
-*Author: Ahmed Ratnani*
+
The B-spline surface in $\mathbb{R}^d$ associated to knots $(T_u, T_v)$ where $T_u=(u_i)_{0\leqslant i \leqslant n_u + p_u + 1}$ and $T_v=(v_i)_{0\leqslant i \leqslant n_v + p_v + 1}$, and control points $(\mathbf{P}_{ij})_{ 0 \leqslant i \leqslant n_u, 0 \leqslant j \leqslant n_v}$ is defined by :
diff --git a/chapter0/bsplines.md b/chapter0/bsplines.md
index ef47ad6..67cd145 100644
--- a/chapter0/bsplines.md
+++ b/chapter0/bsplines.md
@@ -1,5 +1,5 @@
# B-Splines
-*Author: Ahmed Ratnani*
+
Given a subdivision $\{x_0 < x_1 < \cdots < x_r\}$ of the interval $I = [x_0, x_r]$, the \textbf{Schoenberg space} is the space of piecewise polynomials of degree $p$, on the interval $I$ and given regularities $\{k_1, k_2, \cdots, k_{r-1}\}$ at the internal points $\{x_1, x_2, \cdots, x_{r-1}\}$.
diff --git a/chapter0/cad.md b/chapter0/cad.md
index 8481761..791d769 100644
--- a/chapter0/cad.md
+++ b/chapter0/cad.md
@@ -1,4 +1,4 @@
# Computer Aided Design
-*Author: Ahmed Ratnani*
+
TODO
diff --git a/chapter0/data-structure.md b/chapter0/data-structure.md
index b8287b5..ec4f02b 100644
--- a/chapter0/data-structure.md
+++ b/chapter0/data-structure.md
@@ -1,5 +1,5 @@
# Data Structure
-*Author: Ahmed Ratnani*
+
In the sequel, we shall use **StencilMatrix** and **StencilVector** from the **psydac** library.
diff --git a/chapter0/fem.md b/chapter0/fem.md
index a15fbe5..47942f9 100644
--- a/chapter0/fem.md
+++ b/chapter0/fem.md
@@ -1,5 +1,5 @@
# Introduction to B-Splines FEM
-*Author: Ahmed Ratnani*
+
Let $\Omega \subset \mathbb{R}^d$ be a computational domain that is the image of a logical domain $\mathcal{P}$, *i.e.* a unit line (in *1d*), square (in *2d*) or a cube (in *3d*) with a **mapping** function
diff --git a/chapter0/howto.md b/chapter0/howto.md
index d2a42e0..62df7f4 100644
--- a/chapter0/howto.md
+++ b/chapter0/howto.md
@@ -1,2 +1,2 @@
# What to expect from IGA-Python
-*Author: Ahmed Ratnani*
+
diff --git a/chapter0/iga.md b/chapter0/iga.md
index 47c0247..3f84aa3 100644
--- a/chapter0/iga.md
+++ b/chapter0/iga.md
@@ -1,4 +1,4 @@
# Isogeometric Analysis
-*Author: Ahmed Ratnani*
+
TODO
diff --git a/chapter0/performance-acceleration.md b/chapter0/performance-acceleration.md
index 2f28d62..4ad3654 100644
--- a/chapter0/performance-acceleration.md
+++ b/chapter0/performance-acceleration.md
@@ -1,5 +1,5 @@
# Performance and Acceleration
-*Author: Ahmed Ratnani*
+
In this section, we shall see how to accelerate our Python code assembly and get native speed.
We will be using [Numba](https://numba.pydata.org/) and [Pyccel](https://github.com/pyccel/pyccel).
diff --git a/chapter0/poisson-1d.md b/chapter0/poisson-1d.md
index 4383597..09ba9b6 100644
--- a/chapter0/poisson-1d.md
+++ b/chapter0/poisson-1d.md
@@ -1,5 +1,5 @@
# B-splines FEM solver for Poisson equation (1D)
-*Author: Ahmed Ratnani*
+
Following the previous [section](http://nbviewer.jupyter.org/github/ratnania/IGA-Python/blob/main/lessons/Chapter1/01_introduction_fem.ipynb), we implement here a B-Splines FEM for the Poisson problem in 1D, with homogeneous boundary conditions.
diff --git a/chapter0/poisson-2d.md b/chapter0/poisson-2d.md
index b3f34be..5282f12 100644
--- a/chapter0/poisson-2d.md
+++ b/chapter0/poisson-2d.md
@@ -1,5 +1,5 @@
# B-splines FEM solver for Poisson equation (2D)
-*Author: Ahmed Ratnani*
+
In this section, we show hoa to use **simplines** to solve a 2D Poisson problem with homogeneous boundary conditions
$$
diff --git a/chapter1/analytical-mapping.md b/chapter1/analytical-mapping.md
index 8edc9ec..5a987c1 100644
--- a/chapter1/analytical-mapping.md
+++ b/chapter1/analytical-mapping.md
@@ -1,5 +1,5 @@
# Analytical Mapping
-*Author: Ahmed Ratnani*
+
Analytical Mappings are provided as symbolic expressions, which allow us to compute automatically their jacobian matrices and all related geometrical information.
diff --git a/chapter1/boundary-conditions.md b/chapter1/boundary-conditions.md
index 6764b3d..45d7a36 100644
--- a/chapter1/boundary-conditions.md
+++ b/chapter1/boundary-conditions.md
@@ -1,5 +1,5 @@
# Boundary Conditions
-*Author: Ahmed Ratnani*
+
SymPDE & Psydac allows you to use both strong and weak boundary conditions.
We start first by explaining how to identify a boundary in **NCube** domains, such as **Line**, **Square** and a **Cube**.
diff --git a/chapter1/discrete-mapping.md b/chapter1/discrete-mapping.md
index 824fb1a..59ed3be 100644
--- a/chapter1/discrete-mapping.md
+++ b/chapter1/discrete-mapping.md
@@ -1,4 +1,4 @@
# Discrete Mapping
-*Author: Ahmed Ratnani*
+
diff --git a/chapter1/geometry.md b/chapter1/geometry.md
index a0dc6e0..6dc194b 100644
--- a/chapter1/geometry.md
+++ b/chapter1/geometry.md
@@ -1,5 +1,5 @@
# Geometry
-*Author: Ahmed Ratnani*
+
The IGA concept relies on the fact that the geometry (domain) is divided into subdomains, and each of these subdomains is the image of a **Line**, **Square** or a **Cube** by a geometric transformation (also called a **mapping**), that we shall call a **patch** or **logical domain**.
diff --git a/chapter1/images/ch1-jupyter-poisson-1.png b/chapter1/images/ch1-jupyter-poisson-1.png
new file mode 100644
index 0000000..4bcc1d2
Binary files /dev/null and b/chapter1/images/ch1-jupyter-poisson-1.png differ
diff --git a/chapter1/images/ch1-jupyter-poisson-2.png b/chapter1/images/ch1-jupyter-poisson-2.png
new file mode 100644
index 0000000..6ec82bd
Binary files /dev/null and b/chapter1/images/ch1-jupyter-poisson-2.png differ
diff --git a/chapter1/images/ch1-jupyter-root.png b/chapter1/images/ch1-jupyter-root.png
new file mode 100644
index 0000000..78aeafc
Binary files /dev/null and b/chapter1/images/ch1-jupyter-root.png differ
diff --git a/chapter1/install.md b/chapter1/install.md
index d846439..484d5f5 100644
--- a/chapter1/install.md
+++ b/chapter1/install.md
@@ -1,32 +1,60 @@
# Installation
-*Author: Ahmed Ratnani*
-It is recommanded to use a virtual environement.
+To run the examples in this guide, we recommend to follow these steps:
+1. Download the [IGA-Python] repository and then install its dependencies.
-```shell
-# create a virtual environement
-python3 -m venv .iga-python
+```bash
+# Download IGA-Python
+git clone https://github.com/pyccel/IGA-Python.git
+cd IGA-Python
+
+# Install required Python packages
+python3 -m venv iga-python-env
+source iga-python-env/bin/activate
+pip3 install -r requirements_ntbk.txt
+```
+
+2. Install Psydac. Skip this step if Psydac is already installed on your system.
-# activate this environement using
-source .iga-python/bin/activate
+```bash
+# Modify these variables if you're using your own psydac fork/branch
+PSYDAC_REMOTE="https://github.com/pyccel/psydac.git"
+BRANCH="devel"
+
+# Install psydac
+pip install git+${PSYDAC_REMOTE}@${BRANCH}
```
-Then install dependencies using
+3. Access [IGA-Python] examples through Jupyter notebook.
```shell
-pip3 install wheel
-pip3 install numpy
-pip3 install pyccel
-pip3 install ipykernel
-pip3 install git+https://github.com/pyccel/sympde.git
-pip3 install git+https://github.com/pyccel/gelato.git
-pip3 install git+https://github.com/pyccel/psydac.git
-pip3 install git+https://github.com/girving/igakit.git
+# Run this command under IGA-Python folder
+jupyter notebook
```
-Adding the virtual environement to Jupyter notebook, can be done using
+Running `jupyter notebook` should automatically launch your web browser and show you the files in the current directory—in this case the [IGA-Python] files:
+
+
+
+Try opening a sample notebook, e.g. `chapter1/poisson.ipynb`:
+
+
+
+
+Open `poisson.ipynb` and verify that you can successfully run all cells in this notebook.
+
+
+
+
+3. When you close Jupyter and would like to run the [IGA-Python] examples, just open your Terminal/Console app and run these commands:
```shell
-python3 -m ipykernel install --user --name=.iga-python
+cd /full/path/to/your/IGA-Python # Change this to where your IGA-Python folder is located
+source iga-python-env/bin/activate
+jupyter notebook
```
+
+**Congratulations!** You can now head over to the [Poisson example problem](poisson.ipynb) to get started.
+
+[IGA-Python]: https://github.com/pyccel/IGA-Python.git
diff --git a/chapter1/poisson.ipynb b/chapter1/poisson.ipynb
index 5315ae7..c8ec097 100644
--- a/chapter1/poisson.ipynb
+++ b/chapter1/poisson.ipynb
@@ -8,7 +8,7 @@
"# Your first code using SymPDE & PsyDAC\n",
"*Author: Ahmed Ratnani*\n",
"\n",
- "We first start by writing our first example using SymPDE.\n",
+ "We start by writing our first example using SymPDE.\n",
"Let $\\Omega := (0,1)^2$. We consider the Poisson problem with homogeneous Dirichlet boundary conditions. \n",
"\n",
"$$\n",
@@ -45,7 +45,7 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -116,7 +116,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -126,7 +126,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -137,7 +137,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -162,7 +162,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -196,18 +196,10 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.49756716724664e-07\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ue = sin(pi*x)*sin(pi*y)\n",
"\n",
@@ -236,18 +228,10 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.768702410721585e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -272,18 +256,10 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.769164089397408e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -297,35 +273,9 @@
"# print the result\n",
"print(h1_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter1/rules.md b/chapter1/rules.md
index 6e6e88a..e66604d 100644
--- a/chapter1/rules.md
+++ b/chapter1/rules.md
@@ -1,5 +1,5 @@
# Algebraic and differential operators evalution rules
-*Author: Ahmed Ratnani*
+
## Evaluation of the $\mathrm{grad}$ operator
diff --git a/chapter1/space.md b/chapter1/space.md
index 0f381e4..dd9a205 100644
--- a/chapter1/space.md
+++ b/chapter1/space.md
@@ -1,5 +1,5 @@
# Function Space concepts
-*Author: Ahmed Ratnani*
+
SymPDE provides two Python classes to describe scalar and vector function spaces, respectively. There is no notion of a discrete representation; for example, we do not need to mention that a space is a Brezzi-Douglas-Marini (BDM) space. In fact, these kind of function spaces can be seen as parametric types having as a basic type **ScalarFunctionSpace** or **VectorFunctionSpace**. SymPDE only needs to know if an element of the space can be indexed or not. A BDM space would then be identified by an annotation added by a third party library to uniquely define a function space at the discrete level.
diff --git a/chapter1/sympde.md b/chapter1/sympde.md
index ceefaa3..1a63ad7 100644
--- a/chapter1/sympde.md
+++ b/chapter1/sympde.md
@@ -1,5 +1,5 @@
# SymPDE concepts and their mathematical meaning
-*Author: Ahmed Ratnani*
+
## Domain
diff --git a/chapter1/topology.md b/chapter1/topology.md
index a1f8fcf..3352bb0 100644
--- a/chapter1/topology.md
+++ b/chapter1/topology.md
@@ -1,5 +1,5 @@
# Topology concepts
-*Author: Ahmed Ratnani*
+
## Domain
diff --git a/chapter2/advection-diffusion-stabilized.ipynb b/chapter2/advection-diffusion-stabilized.ipynb
index b1ad0f9..f82b87e 100644
--- a/chapter2/advection-diffusion-stabilized.ipynb
+++ b/chapter2/advection-diffusion-stabilized.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Stabilized advection-diffusion equation\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"In the sequel we consider two different stabilization methods, leading to formulations of the form\n",
"\n",
@@ -64,7 +63,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -102,18 +101,10 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "87e62069",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2*kappa*pi**2*sin(pi*x1)*sin(pi*x2) + 1.0*pi*sin(pi*x2)*cos(pi*x1)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"from sympde.expr import TerminalExpr\n",
"\n",
@@ -130,7 +121,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "e4bbd1a8",
"metadata": {},
"outputs": [],
@@ -186,7 +177,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -196,7 +187,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -207,24 +198,10 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -251,7 +228,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "67b32148",
"metadata": {},
"outputs": [],
@@ -262,7 +239,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -289,19 +266,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ">>> SUPG = 0.002139370600719921\n",
- ">>> GLS = 0.00021873265193415864\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -323,35 +291,9 @@
"# print the result\n",
"print('>>> GLS = ', l2_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "0a972a4f",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/advection-diffusion.ipynb b/chapter2/advection-diffusion.ipynb
index 144da7e..8d98601 100644
--- a/chapter2/advection-diffusion.ipynb
+++ b/chapter2/advection-diffusion.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Advection-diffusion equation\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider the advection-diffusion problem consisting of finding a scalar-valued function $u$ such that\n",
"\n",
@@ -54,7 +53,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -92,18 +91,10 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "87e62069",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2*kappa*pi**2*sin(pi*x1)*sin(pi*x2) + 1.0*pi*sin(pi*x2)*cos(pi*x1)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"from sympde.expr import TerminalExpr\n",
"\n",
@@ -120,7 +111,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "e4bbd1a8",
"metadata": {},
"outputs": [],
@@ -161,7 +152,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -171,7 +162,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -182,7 +173,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -209,7 +200,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "67b32148",
"metadata": {},
"outputs": [],
@@ -219,7 +210,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -245,18 +236,10 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.00022156219679932395\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -283,18 +266,10 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.013033907531543579\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -319,18 +294,10 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.013035790553238334\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -344,35 +311,9 @@
"# print the result\n",
"print(h1_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "0a972a4f",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/biharmonic.ipynb b/chapter2/biharmonic.ipynb
index a7a8bfb..8cc3d42 100644
--- a/chapter2/biharmonic.ipynb
+++ b/chapter2/biharmonic.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# The Biharmonic problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider the (inhomogeneous) biharmonic equation with homogeneous essential boundary conditions,\n",
"\n",
@@ -57,7 +56,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "811c0b9b",
"metadata": {},
"outputs": [],
@@ -72,7 +71,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -120,7 +119,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -130,7 +129,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -141,24 +140,10 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -180,7 +165,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -206,18 +191,10 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.5367871671842632\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -244,18 +221,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2.4343747827631277\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -280,18 +249,10 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "2.492853996086961\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -316,18 +277,10 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "8a4adf8d",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.115861322114647\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h2norm = SemiNorm(u - ue, domain, kind='h2')\n",
@@ -341,35 +294,9 @@
"# print the result\n",
"print(h2_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "531105ea",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/elliptic-curl.ipynb b/chapter2/elliptic-curl.ipynb
index a545198..08bba72 100644
--- a/chapter2/elliptic-curl.ipynb
+++ b/chapter2/elliptic-curl.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Elliptic-curl Problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Let $\\Omega \\subset \\mathbb{R}^d$ be an open Liptschitz bounded set, and we look for the solution of the following problem\n",
"\n",
@@ -70,7 +69,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -129,7 +128,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -139,7 +138,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -150,7 +149,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -175,7 +174,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -209,18 +208,10 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.49756716724664e-07\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"#u = element_of(V, name='u')\n",
"\n",
@@ -247,18 +238,10 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.768702410721585e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"#h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -283,18 +266,10 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.769164089397408e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"#h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -308,35 +283,9 @@
"# print the result\n",
"#print(h1_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/elliptic-div.ipynb b/chapter2/elliptic-div.ipynb
index 11974c6..fd4afd0 100644
--- a/chapter2/elliptic-div.ipynb
+++ b/chapter2/elliptic-div.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Elliptic-div Problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Let $\\Omega \\subset \\mathbb{R}^d$ be an open Liptschitz bounded set, and we look for the solution of the following problem\n",
"\n",
@@ -71,7 +70,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -130,7 +129,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -140,7 +139,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -151,24 +150,10 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -190,7 +175,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -216,18 +201,10 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.49756716724664e-07\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"#ue = sin(pi*x)*sin(pi*y)\n",
"\n",
@@ -256,18 +233,10 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.768702410721585e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"#h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -292,18 +261,10 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "9.769164089397408e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"#h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -317,35 +278,9 @@
"# print the result\n",
"#print(h1_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/elliptic-general-form.ipynb b/chapter2/elliptic-general-form.ipynb
index 724edc4..1612fd5 100644
--- a/chapter2/elliptic-general-form.ipynb
+++ b/chapter2/elliptic-general-form.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Elliptic equation in the general form\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider here, the following general form of an elliptic partial differential equation,\n",
"\n",
@@ -44,7 +43,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "c2cee2d9",
"metadata": {},
"outputs": [],
@@ -86,7 +85,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "2b05c79f",
"metadata": {},
"outputs": [],
@@ -108,7 +107,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "d0d386a2",
"metadata": {},
"outputs": [],
@@ -132,7 +131,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "96c29a27",
"metadata": {},
"outputs": [],
@@ -143,24 +142,10 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "ef6a9709",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -182,7 +167,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "3bafe9f5",
"metadata": {},
"outputs": [],
@@ -192,7 +177,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "b88daf50",
"metadata": {},
"outputs": [],
@@ -218,18 +203,10 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"id": "3440e74a",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.00021948770944141364\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -245,35 +222,9 @@
"# print the result\n",
"print(l2_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5d7d9180",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/linear-elasticity.ipynb b/chapter2/linear-elasticity.ipynb
index 72f2425..f4d1366 100644
--- a/chapter2/linear-elasticity.ipynb
+++ b/chapter2/linear-elasticity.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Linear Elasticity Problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Analysis of deformable structures is essential in engineering, with the equations of linear elasticity being fundamental in this field. In this section, we present the variational formulation of linear elasticity equations using the principle of virtual work.\n",
"\n",
@@ -79,7 +78,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -111,11 +110,9 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "b16cc745",
- "metadata": {
- "scrolled": true
- },
+ "metadata": {},
"outputs": [],
"source": [
"# bilinear form\n",
@@ -124,7 +121,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "0a0f152c",
"metadata": {},
"outputs": [],
@@ -167,7 +164,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -177,7 +174,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -188,24 +185,10 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -227,42 +210,16 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
"source": [
"uh = equation_h.solve(mu=1, rho=1, kappa=1.25)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/poisson-mixed-v1.ipynb b/chapter2/poisson-mixed-v1.ipynb
index 1f030b8..4f25a47 100644
--- a/chapter2/poisson-mixed-v1.ipynb
+++ b/chapter2/poisson-mixed-v1.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# First mixed formulation of the Poisson problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Instead of having one unknown, we now have two, along with the above two equations.\n",
"In order to get a mixed variational formulation, we first take the dot product of the first one by $ \\mathbf{v}$ and integrate by parts\n",
@@ -50,7 +49,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "bcb6daca",
"metadata": {},
"outputs": [],
@@ -106,7 +105,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "e5234456",
"metadata": {},
"outputs": [],
@@ -117,24 +116,10 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "1d8e59bb",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -158,7 +143,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "02abfb7d",
"metadata": {},
"outputs": [],
@@ -168,7 +153,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "e2d935e8",
"metadata": {},
"outputs": [],
@@ -205,7 +190,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "b6c85077",
"metadata": {},
"outputs": [],
@@ -222,19 +207,10 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "52fdeaec",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ">>> norm-l2 uh = 0.012985071480053038\n",
- ">>> norm-l2 ph = 0.004127522959699811\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"l2norm = l2norm_uh.assemble(u=uh)\n",
"print('>>> norm-l2 uh = ', l2norm)\n",
@@ -242,43 +218,9 @@
"l2norm = l2norm_ph.assemble(p=ph)\n",
"print('>>> norm-l2 ph = ', l2norm)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a82ae495",
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "494e2cca",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/poisson-mixed-v2.ipynb b/chapter2/poisson-mixed-v2.ipynb
index f30b455..1d200e6 100644
--- a/chapter2/poisson-mixed-v2.ipynb
+++ b/chapter2/poisson-mixed-v2.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Second mixed formulation of the Poisson problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Here, we get an alternative formulation by not integrating by parts, the mixed term in the first formulation but in the second. The first formulation simply becomes\n",
"\n",
@@ -56,7 +55,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "bcb6daca",
"metadata": {},
"outputs": [],
@@ -115,7 +114,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "e5234456",
"metadata": {},
"outputs": [],
@@ -126,24 +125,10 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "1d8e59bb",
"metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -167,7 +152,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "02abfb7d",
"metadata": {},
"outputs": [],
@@ -177,7 +162,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "e2d935e8",
"metadata": {},
"outputs": [],
@@ -214,7 +199,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "31967fb4",
"metadata": {},
"outputs": [],
@@ -231,19 +216,10 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "9c3f7e15",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ">>> norm-l2 uh = 64.20821457571618\n",
- ">>> norm-l2 ph = 3254706679445337.5\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"l2norm = l2norm_uh.assemble(u=uh)\n",
"print('>>> norm-l2 uh = ', l2norm)\n",
@@ -251,35 +227,9 @@
"l2norm = l2norm_ph.assemble(p=ph)\n",
"print('>>> norm-l2 ph = ', l2norm)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d7adf378",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/poisson-mixed.ipynb b/chapter2/poisson-mixed.ipynb
index 15b28ee..8859c9a 100644
--- a/chapter2/poisson-mixed.ipynb
+++ b/chapter2/poisson-mixed.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Mixed FEM for the Poisson problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Let $\\Omega \\subset \\mathbb{R}^3$ and consider the Poisson problem\n",
"\n",
@@ -24,35 +23,9 @@
"\n",
"$$ \\mathbf{u}=-\\nabla p, ~~~ \\nabla\\cdot \\mathbf{u}= f.$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "46339ba9",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/poisson-nitsche.ipynb b/chapter2/poisson-nitsche.ipynb
index 68d5626..6650735 100644
--- a/chapter2/poisson-nitsche.ipynb
+++ b/chapter2/poisson-nitsche.ipynb
@@ -5,8 +5,7 @@
"id": "119eb328",
"metadata": {},
"source": [
- "# The Poisson equation with weak imposition of Dirichlet conditions\n",
- "*Author: Ahmed Ratnani*"
+ "# The Poisson equation with weak imposition of Dirichlet conditions\n"
]
},
{
@@ -54,7 +53,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": null,
"id": "ecd1330a",
"metadata": {},
"outputs": [],
@@ -105,7 +104,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": null,
"id": "3d86674b",
"metadata": {},
"outputs": [],
@@ -116,7 +115,7 @@
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": null,
"id": "94c83267",
"metadata": {},
"outputs": [],
@@ -141,7 +140,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "8f1b2d68",
"metadata": {},
"outputs": [],
@@ -151,7 +150,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "e96f321c",
"metadata": {},
"outputs": [],
@@ -177,18 +176,10 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "068bdb95",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.00021402394834116976\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -206,25 +197,7 @@
]
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/poisson.ipynb b/chapter2/poisson.ipynb
index 0e26eb1..76aad47 100644
--- a/chapter2/poisson.ipynb
+++ b/chapter2/poisson.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# The Poisson equation\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"As a first example, we consider the Poisson equation\n",
"\n",
@@ -46,7 +45,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -107,7 +106,7 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -118,7 +117,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -143,7 +142,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"id": "004dfdb3",
"metadata": {},
"outputs": [],
@@ -153,7 +152,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -187,18 +186,10 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.00042499840633644024\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"u = element_of(V, name='u')\n",
"\n",
@@ -225,18 +216,10 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.025283770887649267\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = SemiNorm(u - ue, domain, kind='h1')\n",
@@ -261,18 +244,10 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.025287342563909892\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = Norm(u - ue, domain, kind='h1')\n",
@@ -288,25 +263,7 @@
]
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/stokes-v1.ipynb b/chapter2/stokes-v1.ipynb
index ee653e3..16f6d7d 100644
--- a/chapter2/stokes-v1.ipynb
+++ b/chapter2/stokes-v1.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# First mixed formulation of the Stokes problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"For the variational formulation, we take the dot product of the first equation with $v$ and integrate over the whole domain\n",
"\n",
@@ -54,7 +53,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -113,7 +112,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -124,7 +123,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -151,7 +150,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "6230e0ac",
"metadata": {},
"outputs": [],
@@ -161,7 +160,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -198,7 +197,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
"outputs": [],
@@ -215,19 +214,10 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ">>> norm-l2 uh = 5.852908166372369e-05\n",
- ">>> norm-l2 ph = 0.01411215698700372\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"l2norm = l2norm_uh.assemble(u=uh)\n",
"print('>>> norm-l2 uh = ', l2norm)\n",
@@ -235,35 +225,9 @@
"l2norm = l2norm_ph.assemble(p=ph)\n",
"print('>>> norm-l2 ph = ', l2norm)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/stokes-v2.ipynb b/chapter2/stokes-v2.ipynb
index 72c8847..62f6a9b 100644
--- a/chapter2/stokes-v2.ipynb
+++ b/chapter2/stokes-v2.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Second mixed formulation of the Stokes problem\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Another possibility to obtained a well posed variational formulation, is to integrate by parts the\n",
"$\\int_{\\Omega} \\nabla p \\cdot \\mathbf{v} ~\\mathrm{d} \\mathbf{x}$ term in the first formulation:\n",
@@ -49,7 +48,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -108,7 +107,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -119,7 +118,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -146,7 +145,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -156,7 +155,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "504a182d",
"metadata": {},
"outputs": [],
@@ -193,7 +192,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
"outputs": [],
@@ -210,19 +209,10 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- ">>> norm-l2 uh = 1.860724404008467e-05\n",
- ">>> norm-l2 ph = 0.024428172461472355\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"l2norm = l2norm_uh.assemble(u=uh)\n",
"print('>>> norm-l2 uh = ', l2norm)\n",
@@ -232,25 +222,7 @@
]
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/stokes.ipynb b/chapter2/stokes.ipynb
index d53ca5a..bd50ca1 100644
--- a/chapter2/stokes.ipynb
+++ b/chapter2/stokes.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Mixed FEM for the Stokes problem \n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider now the Stokes problem for the steady-state modelling of an incompressible fluid\n",
"\n",
@@ -24,25 +23,7 @@
]
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter2/vector-poisson.ipynb b/chapter2/vector-poisson.ipynb
index 26a1cec..47c46bb 100644
--- a/chapter2/vector-poisson.ipynb
+++ b/chapter2/vector-poisson.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Vector Poisson equation \n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"In this example we consider the vector Poisson equation with homogeneous Dirichlet boundary conditions:\n",
"\n",
@@ -45,7 +44,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "d742586c",
"metadata": {},
"outputs": [],
@@ -101,7 +100,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "a2a0a2a1",
"metadata": {},
"outputs": [],
@@ -111,7 +110,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "00e54163",
"metadata": {},
"outputs": [],
@@ -122,7 +121,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "5999c62b",
"metadata": {},
"outputs": [],
@@ -147,7 +146,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "541192ee",
"metadata": {},
"outputs": [],
@@ -181,18 +180,10 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": null,
"id": "5925c6cd",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.0003267962376349343\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ue1 = sin(pi*x)*sin(pi*y)*sin(pi*z)\n",
"ue2 = sin(pi*x)*sin(pi*y)*sin(pi*z)\n",
@@ -226,18 +217,10 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": null,
"id": "e5c1a8b8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.01956220393797005\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = SemiNorm(error, domain, kind='h1')\n",
@@ -262,18 +245,10 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": null,
"id": "d829e410",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.01956493339348906\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# create the formal Norm object\n",
"h1norm = Norm(error, domain, kind='h1')\n",
@@ -287,35 +262,9 @@
"# print the result\n",
"print(h1_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9250897b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter3/burgers.md b/chapter3/burgers.md
index 02ccde0..02b270d 100644
--- a/chapter3/burgers.md
+++ b/chapter3/burgers.md
@@ -1,5 +1,5 @@
# 1D Burgers equation
-*Author: Ahmed Ratnani*
+
We consider the 1d Burgers equation
diff --git a/chapter3/navier-stokes-steady-streamfunction-velocity.md b/chapter3/navier-stokes-steady-streamfunction-velocity.md
index 366e26a..27cb688 100644
--- a/chapter3/navier-stokes-steady-streamfunction-velocity.md
+++ b/chapter3/navier-stokes-steady-streamfunction-velocity.md
@@ -1,5 +1,5 @@
# The streamfunction-velocity formulation of the steady-state Navier-Stokes equations for incompressible fluids
-*Author: Ahmed Ratnani*
+
When $\Omega$ is a simply connected 2D domain, there exists a unique function $\psi$ such that $\mathbf{u} = \boldsymbol{\nabla} \times \psi:= \left( \partial_y \psi, - \partial_x \psi \right)$;
substituting this expression for $\mathbf{u}$ into \eqref{eq:steady-navier-stokes} leads to the so-called ``streamfunction-velocity formulation'' of the steady-state Navier-Stokes equations for an incompressible fluid.
diff --git a/chapter3/navier-stokes-steady.md b/chapter3/navier-stokes-steady.md
index ac748ce..7e66792 100644
--- a/chapter3/navier-stokes-steady.md
+++ b/chapter3/navier-stokes-steady.md
@@ -1,5 +1,5 @@
# the steady-state Navier-Stokes equations for incompressible fluids
-*Author: Ahmed Ratnani*
+
The steady-state Navier Stokes problem for an incompressible fluid, with homogeneous Dirichlet boundary conditions (``no slip'' condition), is defined as
diff --git a/chapter3/poisson.md b/chapter3/poisson.md
index bbd57b9..b64450b 100644
--- a/chapter3/poisson.md
+++ b/chapter3/poisson.md
@@ -1,5 +1,5 @@
# Nonlinear Poisson in 2D
-*Author: Ahmed Ratnani*
+
In this section, we consider the non-linear Poisson problem:
diff --git a/chapter4/poisson-multi-subdomains-nitsche.ipynb b/chapter4/poisson-multi-subdomains-nitsche.ipynb
index 6bfeb9e..2e7055d 100644
--- a/chapter4/poisson-multi-subdomains-nitsche.ipynb
+++ b/chapter4/poisson-multi-subdomains-nitsche.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# The Poisson problem using Nitsche method on multiple subdomains\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider a 2D domain $\\Omega$, that is subdivided into a grid of small squares, using the **meshgrid** function.\n",
"Each subdomain has the form $(x_{i}, x_{i+1}) \\times (y_{j}, y_{j+1})$, where $x_1, ..., x_{n_x}$ and $y_1, ..., y_{n_y}$ are subdivisions in each axis.\n"
@@ -22,7 +21,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "2ae922ff",
"metadata": {},
"outputs": [],
@@ -89,7 +88,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "dba29398",
"metadata": {},
"outputs": [],
@@ -100,26 +99,10 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "4c341883",
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "metadata": {},
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -141,7 +124,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "b6ad348a",
"metadata": {},
"outputs": [],
@@ -151,7 +134,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "11c1b23b",
"metadata": {},
"outputs": [],
@@ -177,18 +160,10 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "e295fb37",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "4.582516733061099e-05\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ue = sin(pi*x)*sin(pi*y)\n",
"\n",
@@ -206,35 +181,9 @@
"# print the result\n",
"print(l2_error)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8d687800",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter4/poisson-two-subdomains-nitsche.ipynb b/chapter4/poisson-two-subdomains-nitsche.ipynb
index 5c82cba..ae82d93 100644
--- a/chapter4/poisson-two-subdomains-nitsche.ipynb
+++ b/chapter4/poisson-two-subdomains-nitsche.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# The Poisson problem using Nitsche method on two subdomains\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"We consider a domain $\\Omega = \\Omega_1 \\bigcup \\Omega_2 = (0,1)^2$, where $\\Omega_1 = (0,\\frac{1}{2}) \\times (0,1)$ and $\\Omega_2 = (\\frac{1}{2}, 1) \\times (0,1)$\n",
"\n",
@@ -49,7 +48,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "2ae922ff",
"metadata": {},
"outputs": [],
@@ -118,7 +117,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "dba29398",
"metadata": {},
"outputs": [],
@@ -129,26 +128,10 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "4c341883",
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/home/ranania/PYCCEL/IGA-Python/.iga-python/lib/python3.10/site-packages/sympy/matrices/repmatrix.py:90: SymPyDeprecationWarning: \n",
- "\n",
- "non-Expr objects in a Matrix has been deprecated since SymPy 1.9. Use\n",
- "list of lists, TableForm or some other data structure instead. See\n",
- "https://github.com/sympy/sympy/issues/21497 for more info.\n",
- "\n",
- " ).warn()\n"
- ]
- }
- ],
+ "metadata": {},
+ "outputs": [],
"source": [
"# Create computational domain from topological domain\n",
"domain_h = discretize(domain, ncells=ncells, comm=None)\n",
@@ -170,7 +153,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "b6ad348a",
"metadata": {},
"outputs": [],
@@ -180,7 +163,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "11c1b23b",
"metadata": {},
"outputs": [],
@@ -206,18 +189,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "e295fb37",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0.0002193529744905818\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"ue = sin(pi*x)*sin(pi*y)\n",
"\n",
@@ -281,35 +256,9 @@
"\n",
"The **BoundaryExpression** terms should not appear in the TerminalExpr."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "645e631b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter4/subdomains.md b/chapter4/subdomains.md
index 51cb34d..61035c3 100644
--- a/chapter4/subdomains.md
+++ b/chapter4/subdomains.md
@@ -1,5 +1,5 @@
# Subdomains
-*Author: Ahmed Ratnani*
+
In this section, we consider a domain $\Omega$ which a union of multiple subdomain, *i.e.*
diff --git a/chapter5/cfd.md b/chapter5/cfd.md
index 5723ad8..c156b86 100644
--- a/chapter5/cfd.md
+++ b/chapter5/cfd.md
@@ -1,2 +1 @@
# Computational Fluid Dynamics
-*Author: Ahmed Ratnani*
\ No newline at end of file
diff --git a/chapter5/cfd/bingham_plastic_flow_in_a_pipe.ipynb b/chapter5/cfd/bingham_plastic_flow_in_a_pipe.ipynb
index ffdf167..5ebb812 100644
--- a/chapter5/cfd/bingham_plastic_flow_in_a_pipe.ipynb
+++ b/chapter5/cfd/bingham_plastic_flow_in_a_pipe.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Bingham Plastic Flow in a Pipe\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -45,35 +44,9 @@
"\n",
"for all test functions $v \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "3104c066",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/buoyancy-driven_natural_convection.ipynb b/chapter5/cfd/buoyancy-driven_natural_convection.ipynb
index 4889263..aa377a8 100644
--- a/chapter5/cfd/buoyancy-driven_natural_convection.ipynb
+++ b/chapter5/cfd/buoyancy-driven_natural_convection.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Buoyancy-Driven Natural Convection\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -48,35 +47,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "dc53cb64",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/casson_fluid_flow_in_a_channel.ipynb b/chapter5/cfd/casson_fluid_flow_in_a_channel.ipynb
index 68d3765..85728d2 100644
--- a/chapter5/cfd/casson_fluid_flow_in_a_channel.ipynb
+++ b/chapter5/cfd/casson_fluid_flow_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Casson Fluid Flow in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -41,35 +40,9 @@
"\n",
"for all test functions $u_i \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "52879066",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/compressible_flow_in_a_nozzle.ipynb b/chapter5/cfd/compressible_flow_in_a_nozzle.ipynb
index c5e585a..46c8e88 100644
--- a/chapter5/cfd/compressible_flow_in_a_nozzle.ipynb
+++ b/chapter5/cfd/compressible_flow_in_a_nozzle.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Compressible Flow in a Nozzle\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -47,35 +46,9 @@
"\n",
"for all test functions $\\phi, \\mathbf{w}, \\psi \\in H^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8a3bde01",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/convection-diffusion_equation_in_a_channel.ipynb b/chapter5/cfd/convection-diffusion_equation_in_a_channel.ipynb
index 527ea3f..f44235c 100644
--- a/chapter5/cfd/convection-diffusion_equation_in_a_channel.ipynb
+++ b/chapter5/cfd/convection-diffusion_equation_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Convection-Diffusion Equation in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -45,35 +44,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9d3c6c22",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/cross_power_law_fluid_flow_in_a_channel.ipynb b/chapter5/cfd/cross_power_law_fluid_flow_in_a_channel.ipynb
index fe910d5..5d60f00 100644
--- a/chapter5/cfd/cross_power_law_fluid_flow_in_a_channel.ipynb
+++ b/chapter5/cfd/cross_power_law_fluid_flow_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Cross Power Law Fluid Flow in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -44,35 +43,9 @@
"\n",
"for all test functions $v_i \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "85946710",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/free_surface_flow.ipynb b/chapter5/cfd/free_surface_flow.ipynb
index 052f68b..c04f5da 100644
--- a/chapter5/cfd/free_surface_flow.ipynb
+++ b/chapter5/cfd/free_surface_flow.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Free Surface Flow (Navier-Stokes with Free Surface)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -47,35 +46,9 @@
"\n",
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$, $q \\in L^2(\\Omega)$, and $r \\in H^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b3ac645a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/heat_conduction_in_a_solid.ipynb b/chapter5/cfd/heat_conduction_in_a_solid.ipynb
index d080ad6..9cf6e28 100644
--- a/chapter5/cfd/heat_conduction_in_a_solid.ipynb
+++ b/chapter5/cfd/heat_conduction_in_a_solid.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Heat Conduction in a Solid\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -41,35 +40,9 @@
"for all test functions $\\phi \\in H_0^1(\\Omega)$.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "55ba709f",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/herschel-bulkley_fluid_flow_in_a_pipe.ipynb b/chapter5/cfd/herschel-bulkley_fluid_flow_in_a_pipe.ipynb
index e176362..411e961 100644
--- a/chapter5/cfd/herschel-bulkley_fluid_flow_in_a_pipe.ipynb
+++ b/chapter5/cfd/herschel-bulkley_fluid_flow_in_a_pipe.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Herschel-Bulkley Fluid Flow in a Pipe\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -46,35 +45,9 @@
"\n",
"for all test functions $v \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "1f098463",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/incompressible_flow_past_a_cylinder.ipynb b/chapter5/cfd/incompressible_flow_past_a_cylinder.ipynb
index 6eef450..08bb4c2 100644
--- a/chapter5/cfd/incompressible_flow_past_a_cylinder.ipynb
+++ b/chapter5/cfd/incompressible_flow_past_a_cylinder.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Incompressible Flow Past a Cylinder\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model:\n",
"\n",
@@ -42,35 +41,9 @@
"\n",
"where $\\mathbf{w} \\in H_0^1(\\Omega)$ and $q \\in L^2(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ed14fcc5",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/magnetohydrodynamics_flow.ipynb b/chapter5/cfd/magnetohydrodynamics_flow.ipynb
index 5ee2a16..ce704ee 100644
--- a/chapter5/cfd/magnetohydrodynamics_flow.ipynb
+++ b/chapter5/cfd/magnetohydrodynamics_flow.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Magnetohydrodynamics (MHD) Flow\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -48,35 +47,9 @@
"\n",
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$, $q \\in L^2(\\Omega)$, $\\boldsymbol{\\psi} \\in H(\\text{curl}; \\Omega)$, and $r \\in L^2(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "850e45f1",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/non-newtonian-fluids.md b/chapter5/cfd/non-newtonian-fluids.md
index 9788318..9ae636c 100644
--- a/chapter5/cfd/non-newtonian-fluids.md
+++ b/chapter5/cfd/non-newtonian-fluids.md
@@ -1,2 +1 @@
# Non-Newtonian Fluids
-*Author: Ahmed Ratnani*
\ No newline at end of file
diff --git a/chapter5/cfd/oldroyd-b_fluid_flow_in_a_channel.ipynb b/chapter5/cfd/oldroyd-b_fluid_flow_in_a_channel.ipynb
index d0b3142..271af56 100644
--- a/chapter5/cfd/oldroyd-b_fluid_flow_in_a_channel.ipynb
+++ b/chapter5/cfd/oldroyd-b_fluid_flow_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Oldroyd-B Fluid Flow in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -46,35 +45,9 @@
"\n",
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b949a16a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/papanastasiou_fluid_flow_in_a_channel.ipynb b/chapter5/cfd/papanastasiou_fluid_flow_in_a_channel.ipynb
index 11c239e..a720a34 100644
--- a/chapter5/cfd/papanastasiou_fluid_flow_in_a_channel.ipynb
+++ b/chapter5/cfd/papanastasiou_fluid_flow_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Papanastasiou Fluid Flow in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -43,35 +42,9 @@
"\n",
"for all test functions $u_i \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "02de07e4",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/particle-laden_flow.ipynb b/chapter5/cfd/particle-laden_flow.ipynb
index 1dc88d8..7aa68cc 100644
--- a/chapter5/cfd/particle-laden_flow.ipynb
+++ b/chapter5/cfd/particle-laden_flow.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Particle-Laden Flow (Lagrangian-Eulerian Approach)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -46,35 +45,9 @@
"\n",
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$ and $q \\in L^2(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "fe99e28f",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/power_law_fluid_flow_in_a_channel.ipynb b/chapter5/cfd/power_law_fluid_flow_in_a_channel.ipynb
index 009157f..0cbaf65 100644
--- a/chapter5/cfd/power_law_fluid_flow_in_a_channel.ipynb
+++ b/chapter5/cfd/power_law_fluid_flow_in_a_channel.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Power Law Fluid Flow in a Channel\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -43,35 +42,9 @@
"\n",
"for all test functions $v_i \\in H_0^1(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f5664e1e",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/stokes_flow_in_a_lid-driven_cavity.ipynb b/chapter5/cfd/stokes_flow_in_a_lid-driven_cavity.ipynb
index 3c8d2b5..8d78d95 100644
--- a/chapter5/cfd/stokes_flow_in_a_lid-driven_cavity.ipynb
+++ b/chapter5/cfd/stokes_flow_in_a_lid-driven_cavity.ipynb
@@ -45,35 +45,9 @@
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ce2a125a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/cfd/two-phase_flow.ipynb b/chapter5/cfd/two-phase_flow.ipynb
index ca1217f..51148dc 100644
--- a/chapter5/cfd/two-phase_flow.ipynb
+++ b/chapter5/cfd/two-phase_flow.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Two-Phase Flow (Immersed Boundary Method)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"## Mathematical Model\n",
"\n",
@@ -45,35 +44,9 @@
"\n",
"for all test functions $\\mathbf{w} \\in H_0^1(\\Omega)$ and $q \\in L^2(\\Omega)$."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "2542c254",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/electromagnetics.md b/chapter5/electromagnetics.md
index 869d659..4a13efd 100644
--- a/chapter5/electromagnetics.md
+++ b/chapter5/electromagnetics.md
@@ -1,5 +1,5 @@
# Electromagnetics
-*Author: Ahmed Ratnani*
+
Electromagnetic problems are commonly described by Maxwell's equations, which govern the behavior of electric and magnetic fields. The Finite Element Method (FEM) provides a powerful numerical approach for solving these equations in complex geometries. This section provides a concise overview of the mathematical formulation for electromagnetic problems using finite elements.
diff --git a/chapter5/fsi.md b/chapter5/fsi.md
index 74dff80..c888695 100644
--- a/chapter5/fsi.md
+++ b/chapter5/fsi.md
@@ -1,5 +1,5 @@
# Fluid-Structure Interaction
-*Author: Ahmed Ratnani*
+
Fluid-Structure Interaction (FSI) involves the coupled interaction between a fluid and a structure, where the motion of one influences the behavior of the other. The Finite Element Method (FEM) is a powerful tool for simulating FSI problems. This section provides an overview of the mathematical formulation for fluid-structure interaction using finite elements.
diff --git a/chapter5/fsi/fluid-structure_interaction_in_a_flexible_channel.ipynb b/chapter5/fsi/fluid-structure_interaction_in_a_flexible_channel.ipynb
index 1f38d59..0f48fea 100644
--- a/chapter5/fsi/fluid-structure_interaction_in_a_flexible_channel.ipynb
+++ b/chapter5/fsi/fluid-structure_interaction_in_a_flexible_channel.ipynb
@@ -60,35 +60,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f77f76ce",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/fsi/flutter_analysis_of_a_flexible_wing_in_fluid_flow.ipynb b/chapter5/fsi/flutter_analysis_of_a_flexible_wing_in_fluid_flow.ipynb
index 82cf269..7f3381d 100644
--- a/chapter5/fsi/flutter_analysis_of_a_flexible_wing_in_fluid_flow.ipynb
+++ b/chapter5/fsi/flutter_analysis_of_a_flexible_wing_in_fluid_flow.ipynb
@@ -54,35 +54,9 @@
"for all $\\phi_s \\in V_s$ and $\\mathbf{\\phi}_f \\in V_f$.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c4278e28",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/fsi/two-way_fluid-structure_interaction_in_a_tube.ipynb b/chapter5/fsi/two-way_fluid-structure_interaction_in_a_tube.ipynb
index dec2cfa..66bd252 100644
--- a/chapter5/fsi/two-way_fluid-structure_interaction_in_a_tube.ipynb
+++ b/chapter5/fsi/two-way_fluid-structure_interaction_in_a_tube.ipynb
@@ -53,35 +53,9 @@
"for all $\\phi_s \\in V_s$ and $\\phi_f \\in V_f$.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d95797ce",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science.md b/chapter5/material-science.md
index 2e1f836..efc9c04 100644
--- a/chapter5/material-science.md
+++ b/chapter5/material-science.md
@@ -1,5 +1,5 @@
# Material Science
-*Author: Ahmed Ratnani*
+
These examples cover a variety of materials science scenarios, including heat conduction with phase change, elasticity with thermal expansion, creep in viscoelastic materials, diffusion and reaction in porous media, and piezoelectric materials. The weak formulations are presented in a variational form suitable for finite element methods. Adjustments can be made based on specific material properties and numerical considerations.
diff --git a/chapter5/material-science/additive-manifacturing.md b/chapter5/material-science/additive-manifacturing.md
index e6cfd54..cf377c3 100644
--- a/chapter5/material-science/additive-manifacturing.md
+++ b/chapter5/material-science/additive-manifacturing.md
@@ -1,4 +1,4 @@
# Additive Manifacturing Process Simulations
-*Author: Ahmed Ratnani*
+
These examples cover various scenarios in additive manufacturing process simulations, including thermal simulation in powder bed fusion (PBF), fluid flow simulation in directed energy deposition (DED), structural simulation in fused filament fabrication (FFF), multi-material simulation in material jetting, and residual stress simulation in selective laser melting (SLM). The weak formulations are presented in a variational form suitable for finite element methods. Adjustments can be made based on specific process parameters and numerical considerations.
diff --git a/chapter5/material-science/composite-materials-analysis.md b/chapter5/material-science/composite-materials-analysis.md
index 546c6da..8f3af1c 100644
--- a/chapter5/material-science/composite-materials-analysis.md
+++ b/chapter5/material-science/composite-materials-analysis.md
@@ -1,4 +1,4 @@
# Composite Materials Analysis
-*Author: Ahmed Ratnani*
+
These examples cover various scenarios in composite materials analysis, including laminate plate bending, composite shell structures, composite beam analysis, composite shaft analysis, and composite pressure vessel analysis. The weak formulations are presented in a variational form suitable for finite element methods. Adjustments can be made based on specific composite properties and numerical considerations.
diff --git a/chapter5/material-science/composite-materials.md b/chapter5/material-science/composite-materials.md
index 3f8bb23..a1bedc3 100644
--- a/chapter5/material-science/composite-materials.md
+++ b/chapter5/material-science/composite-materials.md
@@ -1,4 +1,4 @@
# Composite Materials
-*Author: Ahmed Ratnani*
+
These examples cover various scenarios in composite materials, including homogenization, thermal conductivity, fiber-reinforced composites, composite materials with piezoelectric fibers, and composite materials with thermal expansion. The weak formulations are presented in a variational form suitable for finite element methods. Adjustments can be made based on specific composite properties and numerical considerations.
diff --git a/chapter5/material-science/composite_beam_analysis.ipynb b/chapter5/material-science/composite_beam_analysis.ipynb
index d76fbd1..f5c5a6b 100644
--- a/chapter5/material-science/composite_beam_analysis.ipynb
+++ b/chapter5/material-science/composite_beam_analysis.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Beam Analysis\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "fab1c283",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/composite_materials_with_piezoelectric_fibers.ipynb b/chapter5/material-science/composite_materials_with_piezoelectric_fibers.ipynb
index 45a83f2..ef2e462 100644
--- a/chapter5/material-science/composite_materials_with_piezoelectric_fibers.ipynb
+++ b/chapter5/material-science/composite_materials_with_piezoelectric_fibers.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Materials with Piezoelectric Fibers\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "52494dd6",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/composite_materials_with_thermal_expansion.ipynb b/chapter5/material-science/composite_materials_with_thermal_expansion.ipynb
index 5a93dbb..ad741c7 100644
--- a/chapter5/material-science/composite_materials_with_thermal_expansion.ipynb
+++ b/chapter5/material-science/composite_materials_with_thermal_expansion.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Materials with Thermal Expansion\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "98acd7a7",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/composite_pressure_vessel_analysis.ipynb b/chapter5/material-science/composite_pressure_vessel_analysis.ipynb
index 751797a..c235421 100644
--- a/chapter5/material-science/composite_pressure_vessel_analysis.ipynb
+++ b/chapter5/material-science/composite_pressure_vessel_analysis.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Pressure Vessel Analysis\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -28,35 +27,9 @@
"$$\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b4fc4493",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/composite_shaft_analysis.ipynb b/chapter5/material-science/composite_shaft_analysis.ipynb
index 8d54747..38e7b31 100644
--- a/chapter5/material-science/composite_shaft_analysis.ipynb
+++ b/chapter5/material-science/composite_shaft_analysis.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Shaft Analysis\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9e364613",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/composite_shell_structures.ipynb b/chapter5/material-science/composite_shell_structures.ipynb
index 38a1ab1..8f9f374 100644
--- a/chapter5/material-science/composite_shell_structures.ipynb
+++ b/chapter5/material-science/composite_shell_structures.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Composite Shell Structures\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "60838184",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/creep_in_viscoelastic_materials.ipynb b/chapter5/material-science/creep_in_viscoelastic_materials.ipynb
index 9d834b5..0a7ac87 100644
--- a/chapter5/material-science/creep_in_viscoelastic_materials.ipynb
+++ b/chapter5/material-science/creep_in_viscoelastic_materials.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Creep in Viscoelastic Materials\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "640ff39a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/diffusion_and_reaction_in_porous_media.ipynb b/chapter5/material-science/diffusion_and_reaction_in_porous_media.ipynb
index f1b3e58..20dd088 100644
--- a/chapter5/material-science/diffusion_and_reaction_in_porous_media.ipynb
+++ b/chapter5/material-science/diffusion_and_reaction_in_porous_media.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Diffusion and Reaction in Porous Media\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c2f715b8",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/elasticity_with_thermal_expansion.ipynb b/chapter5/material-science/elasticity_with_thermal_expansion.ipynb
index 3098acf..a714b0e 100644
--- a/chapter5/material-science/elasticity_with_thermal_expansion.ipynb
+++ b/chapter5/material-science/elasticity_with_thermal_expansion.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Elasticity with Thermal Expansion\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a605733a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/fiber-reinforced_composite_materials.ipynb b/chapter5/material-science/fiber-reinforced_composite_materials.ipynb
index 12168fa..b1beb1a 100644
--- a/chapter5/material-science/fiber-reinforced_composite_materials.ipynb
+++ b/chapter5/material-science/fiber-reinforced_composite_materials.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Fiber-Reinforced Composite Materials\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "37f95771",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/fluid_flow_simulation_in_directed_energy_deposition.ipynb b/chapter5/material-science/fluid_flow_simulation_in_directed_energy_deposition.ipynb
index 85c292e..4c8ccc7 100644
--- a/chapter5/material-science/fluid_flow_simulation_in_directed_energy_deposition.ipynb
+++ b/chapter5/material-science/fluid_flow_simulation_in_directed_energy_deposition.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Fluid Flow Simulation in Directed Energy Deposition (DED)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a6c3c4a2",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/heat_conduction_with_phase_change.ipynb b/chapter5/material-science/heat_conduction_with_phase_change.ipynb
index a35d825..84b9275 100644
--- a/chapter5/material-science/heat_conduction_with_phase_change.ipynb
+++ b/chapter5/material-science/heat_conduction_with_phase_change.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Heat Conduction with Phase Change\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ff960922",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/homogenization_of_composite_structures.ipynb b/chapter5/material-science/homogenization_of_composite_structures.ipynb
index f28e9fa..b220b96 100644
--- a/chapter5/material-science/homogenization_of_composite_structures.ipynb
+++ b/chapter5/material-science/homogenization_of_composite_structures.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Homogenization of Composite Structures\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "fc9ff2d1",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/laminate_plate_bending.ipynb b/chapter5/material-science/laminate_plate_bending.ipynb
index a7e89c4..c54f597 100644
--- a/chapter5/material-science/laminate_plate_bending.ipynb
+++ b/chapter5/material-science/laminate_plate_bending.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Laminate Plate Bending\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b12075d0",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/multi-material_simulation_in_material_jetting.ipynb b/chapter5/material-science/multi-material_simulation_in_material_jetting.ipynb
index ea3ba4d..c6302a8 100644
--- a/chapter5/material-science/multi-material_simulation_in_material_jetting.ipynb
+++ b/chapter5/material-science/multi-material_simulation_in_material_jetting.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Multi-Material Simulation in Material Jetting\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "047cbee6",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/piezoelectric_material.ipynb b/chapter5/material-science/piezoelectric_material.ipynb
index 5c6c876..635b992 100644
--- a/chapter5/material-science/piezoelectric_material.ipynb
+++ b/chapter5/material-science/piezoelectric_material.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Piezoelectric Material\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -27,35 +26,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e169fdf9",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/residual_stress_simulation_in_selective_laser_melting.ipynb b/chapter5/material-science/residual_stress_simulation_in_selective_laser_melting.ipynb
index 2a5af24..dddb175 100644
--- a/chapter5/material-science/residual_stress_simulation_in_selective_laser_melting.ipynb
+++ b/chapter5/material-science/residual_stress_simulation_in_selective_laser_melting.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Residual Stress Simulation in Selective Laser Melting (SLM)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -25,35 +24,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a6c8774d",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/structural_simulation_in_fused_filament_fabrication.ipynb b/chapter5/material-science/structural_simulation_in_fused_filament_fabrication.ipynb
index fcf7f58..f8b6500 100644
--- a/chapter5/material-science/structural_simulation_in_fused_filament_fabrication.ipynb
+++ b/chapter5/material-science/structural_simulation_in_fused_filament_fabrication.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Structural Simulation in Fused Filament Fabrication (FFF)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -25,35 +24,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "21acc4a9",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/thermal_conductivity_of_composite_materials.ipynb b/chapter5/material-science/thermal_conductivity_of_composite_materials.ipynb
index d3be39d..d8e965f 100644
--- a/chapter5/material-science/thermal_conductivity_of_composite_materials.ipynb
+++ b/chapter5/material-science/thermal_conductivity_of_composite_materials.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Thermal Conductivity of Composite Materials\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9647a80c",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/material-science/thermal_simulation_in_powder_bed_fusion.ipynb b/chapter5/material-science/thermal_simulation_in_powder_bed_fusion.ipynb
index b5f5d86..a2ed042 100644
--- a/chapter5/material-science/thermal_simulation_in_powder_bed_fusion.ipynb
+++ b/chapter5/material-science/thermal_simulation_in_powder_bed_fusion.ipynb
@@ -6,7 +6,6 @@
"metadata": {},
"source": [
"# Thermal Simulation in Powder Bed Fusion (PBF)\n",
- "*Author: Ahmed Ratnani*\n",
"\n",
"Mathematical Model:\n",
"\n",
@@ -26,35 +25,9 @@
"\\end{align*}\n",
"$$"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c0100203",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd.md b/chapter5/mhd.md
index 3e40a9f..4e9447e 100644
--- a/chapter5/mhd.md
+++ b/chapter5/mhd.md
@@ -1,5 +1,5 @@
# MHD
-*Author: Ahmed Ratnani*
+
In magnetohydrodynamics (MHD), finite element analysis can be applied to solve a variety of problems related to the behavior of electrically conducting fluids (plasmas or liquid metals) in the presence of magnetic fields. Here are some common problems in magnetohydrodynamics that can be addressed using finite element methods.
diff --git a/chapter5/mhd/astrophysical_dynamo_in_a_stellar_interior.ipynb b/chapter5/mhd/astrophysical_dynamo_in_a_stellar_interior.ipynb
index 170c4db..f2fe7c4 100644
--- a/chapter5/mhd/astrophysical_dynamo_in_a_stellar_interior.ipynb
+++ b/chapter5/mhd/astrophysical_dynamo_in_a_stellar_interior.ipynb
@@ -23,35 +23,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "cf051a47",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/ferrofluid_damper_in_mechanical_system.ipynb b/chapter5/mhd/ferrofluid_damper_in_mechanical_system.ipynb
index 297a295..0056b50 100644
--- a/chapter5/mhd/ferrofluid_damper_in_mechanical_system.ipynb
+++ b/chapter5/mhd/ferrofluid_damper_in_mechanical_system.ipynb
@@ -23,35 +23,9 @@
"- Initialize the distribution of ferrofluid within the damper.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "cd025e19",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/ferrofluid_flow_in_a_microfluidic_device.ipynb b/chapter5/mhd/ferrofluid_flow_in_a_microfluidic_device.ipynb
index 85275c5..85633ac 100644
--- a/chapter5/mhd/ferrofluid_flow_in_a_microfluidic_device.ipynb
+++ b/chapter5/mhd/ferrofluid_flow_in_a_microfluidic_device.ipynb
@@ -22,35 +22,9 @@
"- Introduce a specified initial distribution of ferrofluid within the channel.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "4d819786",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/magnetic_fluid_actuator_in_valve_control.ipynb b/chapter5/mhd/magnetic_fluid_actuator_in_valve_control.ipynb
index ce9883b..918b343 100644
--- a/chapter5/mhd/magnetic_fluid_actuator_in_valve_control.ipynb
+++ b/chapter5/mhd/magnetic_fluid_actuator_in_valve_control.ipynb
@@ -28,35 +28,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "731572fc",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/magnetic_targeting_in_a_blood_vessel.ipynb b/chapter5/mhd/magnetic_targeting_in_a_blood_vessel.ipynb
index 21419cc..e4b80f4 100644
--- a/chapter5/mhd/magnetic_targeting_in_a_blood_vessel.ipynb
+++ b/chapter5/mhd/magnetic_targeting_in_a_blood_vessel.ipynb
@@ -23,35 +23,9 @@
"- Inject drug-carrying particles into the bloodstream.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "684ab37c",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/magnetic_targeting_in_the_eye_for_retinal_diseases.ipynb b/chapter5/mhd/magnetic_targeting_in_the_eye_for_retinal_diseases.ipynb
index 58e8506..591bcd3 100644
--- a/chapter5/mhd/magnetic_targeting_in_the_eye_for_retinal_diseases.ipynb
+++ b/chapter5/mhd/magnetic_targeting_in_the_eye_for_retinal_diseases.ipynb
@@ -28,35 +28,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a5b6bd71",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/magnetic_targeting_in_tumor_tissue.ipynb b/chapter5/mhd/magnetic_targeting_in_tumor_tissue.ipynb
index e88bf86..c62bce9 100644
--- a/chapter5/mhd/magnetic_targeting_in_tumor_tissue.ipynb
+++ b/chapter5/mhd/magnetic_targeting_in_tumor_tissue.ipynb
@@ -23,35 +23,9 @@
"- Release drug-carrying particles from a source point.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e3c83678",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_accretion_disk_in_binary_star_system.ipynb b/chapter5/mhd/mhd_accretion_disk_in_binary_star_system.ipynb
index 0560b80..2019e98 100644
--- a/chapter5/mhd/mhd_accretion_disk_in_binary_star_system.ipynb
+++ b/chapter5/mhd/mhd_accretion_disk_in_binary_star_system.ipynb
@@ -30,35 +30,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "10a896ff",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_aluminum_electromagnetic_stirring.ipynb b/chapter5/mhd/mhd_aluminum_electromagnetic_stirring.ipynb
index 106e409..71cf78d 100644
--- a/chapter5/mhd/mhd_aluminum_electromagnetic_stirring.ipynb
+++ b/chapter5/mhd/mhd_aluminum_electromagnetic_stirring.ipynb
@@ -23,35 +23,9 @@
"- Include initial magnetic field conditions.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a25ee1a9",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_continuous_casting_of_steel.ipynb b/chapter5/mhd/mhd_continuous_casting_of_steel.ipynb
index 5eba25c..a8afee7 100644
--- a/chapter5/mhd/mhd_continuous_casting_of_steel.ipynb
+++ b/chapter5/mhd/mhd_continuous_casting_of_steel.ipynb
@@ -23,35 +23,9 @@
"- Include initial magnetic field conditions.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "17cc6b7f",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_dynamo_in_a_rotating_sphere.ipynb b/chapter5/mhd/mhd_dynamo_in_a_rotating_sphere.ipynb
index 8b6f726..eebcbab 100644
--- a/chapter5/mhd/mhd_dynamo_in_a_rotating_sphere.ipynb
+++ b/chapter5/mhd/mhd_dynamo_in_a_rotating_sphere.ipynb
@@ -21,35 +21,9 @@
"- Incorporate a rotation-induced dynamo term.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "255489bd",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_heat_transfer_in_a_cylindrical_fusion_reactor.ipynb b/chapter5/mhd/mhd_heat_transfer_in_a_cylindrical_fusion_reactor.ipynb
index d662793..b5f47bb 100644
--- a/chapter5/mhd/mhd_heat_transfer_in_a_cylindrical_fusion_reactor.ipynb
+++ b/chapter5/mhd/mhd_heat_transfer_in_a_cylindrical_fusion_reactor.ipynb
@@ -19,35 +19,9 @@
"- Initial plasma temperature and velocity distribution.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b3132a7e",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_heat_transfer_in_a_magma_convection_model.ipynb b/chapter5/mhd/mhd_heat_transfer_in_a_magma_convection_model.ipynb
index bebd343..3d60e99 100644
--- a/chapter5/mhd/mhd_heat_transfer_in_a_magma_convection_model.ipynb
+++ b/chapter5/mhd/mhd_heat_transfer_in_a_magma_convection_model.ipynb
@@ -23,35 +23,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "899661bb",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_heat_transfer_in_a_rectangular_domain.ipynb b/chapter5/mhd/mhd_heat_transfer_in_a_rectangular_domain.ipynb
index 91b83d1..111d487 100644
--- a/chapter5/mhd/mhd_heat_transfer_in_a_rectangular_domain.ipynb
+++ b/chapter5/mhd/mhd_heat_transfer_in_a_rectangular_domain.ipynb
@@ -20,35 +20,9 @@
"- Initial fluid velocity $\\mathbf{v} = [0, 0]$, magnetic field $\\mathbf{B} = [B_0, 0]$, and uniform temperature $T = T_0$.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ded1b9da",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_kelvin-helmholtz_instability_in_magnetized_flows.ipynb b/chapter5/mhd/mhd_kelvin-helmholtz_instability_in_magnetized_flows.ipynb
index 0ba84c2..b167297 100644
--- a/chapter5/mhd/mhd_kelvin-helmholtz_instability_in_magnetized_flows.ipynb
+++ b/chapter5/mhd/mhd_kelvin-helmholtz_instability_in_magnetized_flows.ipynb
@@ -29,35 +29,9 @@
"- Boundary conditions: Appropriate conditions on $\\mathbf{v}, \\mathbf{B}, T$ at the interfaces.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d518610b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_metal_solidification_in_magnetic_field.ipynb b/chapter5/mhd/mhd_metal_solidification_in_magnetic_field.ipynb
index b2358b9..4bf34f5 100644
--- a/chapter5/mhd/mhd_metal_solidification_in_magnetic_field.ipynb
+++ b/chapter5/mhd/mhd_metal_solidification_in_magnetic_field.ipynb
@@ -27,35 +27,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e9102174",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_rayleigh-taylor_instability_in_a_conducting_fluid.ipynb b/chapter5/mhd/mhd_rayleigh-taylor_instability_in_a_conducting_fluid.ipynb
index 12e7569..3bb2f05 100644
--- a/chapter5/mhd/mhd_rayleigh-taylor_instability_in_a_conducting_fluid.ipynb
+++ b/chapter5/mhd/mhd_rayleigh-taylor_instability_in_a_conducting_fluid.ipynb
@@ -29,35 +29,9 @@
"- Boundary conditions: Appropriate conditions on $\\mathbf{v}, \\mathbf{B}, T$ at the fluid interfaces.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "23014644",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": ".iga-python",
- "language": "python",
- "name": ".iga-python"
- },
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_solar_wind_simulation.ipynb b/chapter5/mhd/mhd_solar_wind_simulation.ipynb
index a72185a..23c5f01 100644
--- a/chapter5/mhd/mhd_solar_wind_simulation.ipynb
+++ b/chapter5/mhd/mhd_solar_wind_simulation.ipynb
@@ -22,35 +22,9 @@
"- Set up initial plasma parameters.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a1eb5205",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_stability_of_a_current-carrying_plasma_column.ipynb b/chapter5/mhd/mhd_stability_of_a_current-carrying_plasma_column.ipynb
index 04fc79c..a0a7962 100644
--- a/chapter5/mhd/mhd_stability_of_a_current-carrying_plasma_column.ipynb
+++ b/chapter5/mhd/mhd_stability_of_a_current-carrying_plasma_column.ipynb
@@ -32,35 +32,9 @@
"\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "3b025a35",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_star_formation_in_a_protostellar_cloud.ipynb b/chapter5/mhd/mhd_star_formation_in_a_protostellar_cloud.ipynb
index f1c2cd4..a198f5a 100644
--- a/chapter5/mhd/mhd_star_formation_in_a_protostellar_cloud.ipynb
+++ b/chapter5/mhd/mhd_star_formation_in_a_protostellar_cloud.ipynb
@@ -22,35 +22,9 @@
"- Include a small seed magnetic field perturbation.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "6813d146",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_turbulence_in_accretion_disks.ipynb b/chapter5/mhd/mhd_turbulence_in_accretion_disks.ipynb
index 55bd425..7c3d5e9 100644
--- a/chapter5/mhd/mhd_turbulence_in_accretion_disks.ipynb
+++ b/chapter5/mhd/mhd_turbulence_in_accretion_disks.ipynb
@@ -27,35 +27,9 @@
"- Initial condition: Conditions representing the initial state of the accretion disk.\n",
"- Boundary conditions: Specify conditions at the inner and outer edges of the accretion disk."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ff062a2a",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_turbulence_in_laboratory_plasmas.ipynb b/chapter5/mhd/mhd_turbulence_in_laboratory_plasmas.ipynb
index 79eb746..32ee49a 100644
--- a/chapter5/mhd/mhd_turbulence_in_laboratory_plasmas.ipynb
+++ b/chapter5/mhd/mhd_turbulence_in_laboratory_plasmas.ipynb
@@ -29,35 +29,9 @@
"- Boundary conditions: Set appropriate conditions for the plasma confinement device.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "4b9c015b",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/mhd_turbulence_in_solar_winds.ipynb b/chapter5/mhd/mhd_turbulence_in_solar_winds.ipynb
index fae62d4..3763ebd 100644
--- a/chapter5/mhd/mhd_turbulence_in_solar_winds.ipynb
+++ b/chapter5/mhd/mhd_turbulence_in_solar_winds.ipynb
@@ -27,35 +27,9 @@
"- Initial condition: Appropriate conditions for solar wind parameters.\n",
"- Boundary conditions: Consider inflow conditions at the solar corona and outflow conditions at the outer boundary."
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "3af7c787",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/mhd/simple_kinematic_dynamo_model.ipynb b/chapter5/mhd/simple_kinematic_dynamo_model.ipynb
index bde7bf4..4c93a6b 100644
--- a/chapter5/mhd/simple_kinematic_dynamo_model.ipynb
+++ b/chapter5/mhd/simple_kinematic_dynamo_model.ipynb
@@ -21,35 +21,9 @@
"- Choose a constant $\\alpha$ to represent the dynamo term.\n",
"\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "6948d035",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.10.12"
- }
- },
+ "metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
diff --git a/chapter5/multiphysics.md b/chapter5/multiphysics.md
index 9cb657a..3748ec9 100644
--- a/chapter5/multiphysics.md
+++ b/chapter5/multiphysics.md
@@ -1,2 +1 @@
# Multiphysics
-*Author: Ahmed Ratnani*
\ No newline at end of file
diff --git a/intro.md b/intro.md
index b625ab8..efa75f3 100644
--- a/intro.md
+++ b/intro.md
@@ -1,5 +1,6 @@
# Home
-*Author: Ahmed Ratnani*
+
+*Author: Ahmed Ratnani* [^authors]
Welcome to IGA-Python, a tutorial for Isogeometric Analysis using Python.
@@ -13,3 +14,6 @@ Welcome to IGA-Python, a tutorial for Isogeometric Analysis using Python.
```{tableofcontents}
```
+
+[^authors]: Complete list of authors can be found here: https://github.com/pyccel/IGA-Python/blob/master/AUTHORS
+
diff --git a/references.bib b/references.bib
index e383e38..d84914e 100644
--- a/references.bib
+++ b/references.bib
@@ -320,7 +320,11 @@ @article{Buffa2011b
url = {http://dx.doi.org/10.1002/fld.2337},
doi = {10.1002/fld.2337},
pages = {1407--1422},
-keywords = {IsoGeometric Analysis, NURBS, stability, incompressibility, Stokes flow},
+keywords = {IsoGeometric Analysis,
+ NURBS,
+ stability,
+ incompressibility,
+ Stokes flow},
year = {2011},
}
@@ -386,11 +390,11 @@ @article{Vuong2010
doi = "10.1016/j.cagd.2010.06.006",
url = "http://www.sciencedirect.com/science/article/pii/S0167839610000713",
author = "A.-V. Vuong and Ch. Heinrich and B. Simeon",
-keywords = "Isogeometric Analysis",
-keywords = "MATLAB",
-keywords = "NURBS",
-keywords = "Exact geometry",
-keywords = "Tutorial code"
+keywords = {"Isogeometric Analysis",
+ "MATLAB",
+ "NURBS",
+ "Exact geometry",
+ "Tutorial code"}
}
@article{Gomez2010,
@@ -429,16 +433,16 @@ @article{deFalco2011
doi = "10.1016/j.advengsoft.2011.06.010",
url = "http://www.sciencedirect.com/science/article/pii/S0965997811001839",
author = "C. de Falco and A. Reali and R. Vázquez",
-keywords = "Isogeometric Analysis",
-keywords = "Finite element method",
-keywords = "NURBS",
-keywords = "B-Splines",
-keywords = "Matlab",
-keywords = "Octave"
+keywords = {"Isogeometric Analysis",
+ "Finite element method",
+ "NURBS",
+ "B-Splines",
+ "Matlab",
+ "Octave"}
}
-@article{Manni2011,
-title = "Isogeometric analysis in advection¿diffusion problems: Tension splines approximation",
+@article{Manni2011a,
+title = "Isogeometric analysis in advection-diffusion problems: Tension splines approximation",
journal = "Journal of Computational and Applied Mathematics",
volume = "236",
number = "4",
@@ -449,11 +453,11 @@ @article{Manni2011
doi = "10.1016/j.cam.2011.05.029",
url = "http://www.sciencedirect.com/science/article/pii/S037704271100286X",
author = "Carla Manni and Francesca Pelosi and M. Lucia Sampoli",
-keywords = "Advection¿diffusion problems",
-keywords = "Isogeometric Analysis",
-keywords = "Variable degree splines",
-keywords = "Exponential splines",
-keywords = "Splines in tension"
+keywords = {"Advection-diffusion problems",
+ "Isogeometric Analysis",
+ "Variable degree splines",
+ "Exponential splines",
+ "Splines in tension"}
}
@article{Costantini2010,
@@ -468,12 +472,12 @@ @article{Costantini2010
doi = "10.1016/j.cagd.2010.07.004",
url = "http://www.sciencedirect.com/science/article/pii/S0167839610000762",
author = "Paolo Costantini and Carla Manni and Francesca Pelosi and M. Lucia Sampoli",
-keywords = "Quasi-interpolation",
-keywords = "Isogeometric analysis",
-keywords = "Generalized B-splines"
+keywords = {"Quasi-interpolation",
+ "Isogeometric analysis",
+ "Generalized B-splines"}
}
-@article{Manni2011,
+@article{Manni2011b,
title = "Generalized B-splines as a tool in isogeometric analysis",
journal = "Computer Methods in Applied Mechanics and Engineering",
volume = "200",
@@ -485,10 +489,10 @@ @article{Manni2011
doi = "10.1016/j.cma.2010.10.010",
url = "http://www.sciencedirect.com/science/article/pii/S0045782510002884",
author = "Carla Manni and Francesca Pelosi and M. Lucia Sampoli",
-keywords = "Isogeometric analysis",
-keywords = "Generalized B-splines",
-keywords = "NURBS",
-keywords = "CAD"
+keywords = {"Isogeometric analysis",
+ "Generalized B-splines",
+ "NURBS",
+ "CAD"}
}
@article{Farouki2012,
@@ -503,12 +507,12 @@ @article{Farouki2012
doi = "10.1016/j.cagd.2012.03.001",
url = "http://www.sciencedirect.com/science/article/pii/S0167839612000192",
author = "Rida T. Farouki",
-keywords = "Bernstein basis",
-keywords = "Weierstrass theorem",
-keywords = "Polynomial approximation",
-keywords = "Bézier curves and surfaces",
-keywords = "Numerical stability",
-keywords = "Polynomial algorithms"
+keywords = {"Bernstein basis",
+ "Weierstrass theorem",
+ "Polynomial approximation",
+ "Bézier curves and surfaces",
+ "Numerical stability",
+ "Polynomial algorithms"}
}
@article{Schillinger2012,
@@ -523,12 +527,12 @@ @article{Schillinger2012
doi = "10.1016/j.cma.2012.03.017",
url = "http://www.sciencedirect.com/science/article/pii/S004578251200093X",
author = "Dominik Schillinger and Luca Ded\`e and Michael A. Scott and John A. Evans and Michael J. Borden and Ernst Rank and Thomas J.R. Hughes",
-keywords = "Isogeometric analysis",
-keywords = "Hierarchical refinement",
-keywords = "Adaptivity with NURBS",
-keywords = "Immersed boundary analysis",
-keywords = "Finite cell method",
-keywords = "T-spline CAD surfaces"
+keywords = {"Isogeometric analysis",
+ "Hierarchical refinement",
+ "Adaptivity with NURBS",
+ "Immersed boundary analysis",
+ "Finite cell method",
+ "T-spline CAD surfaces"}
}
@article{Schillinger2011,
@@ -543,12 +547,12 @@ @article{Schillinger2011
doi = "10.1016/j.cma.2011.08.002",
url = "http://www.sciencedirect.com/science/article/pii/S004578251100257X",
author = "Dominik Schillinger and Ernst Rank",
-keywords = "High-order B-spline finite elements",
-keywords = "Regular grid",
-keywords = "Hierarchical refinement",
-keywords = "Interface problems",
-keywords = "Complex geometries",
-keywords = "Finite Cell Method"
+keywords = {"High-order B-spline finite elements",
+ "Regular grid",
+ "Hierarchical refinement",
+ "Interface problems",
+ "Complex geometries",
+ "Finite Cell Method"}
}
@article{Collier2012,
@@ -563,11 +567,11 @@ @article{Collier2012
doi = "10.1016/j.cma.2011.11.002",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511003392",
author = "Nathan Collier and David Pardo and Lisandro Dalcin and Maciej Paszynski and V.M. Calo",
-keywords = "Isogeometric analysis",
-keywords = "Direct solvers",
-keywords = "Multi-frontal solvers",
-keywords = "k-Refinement",
-keywords = "Performance"
+keywords = {"Isogeometric analysis",
+ "Direct solvers",
+ "Multi-frontal solvers",
+ "k-Refinement",
+ "Performance"}
}
@article{Martin2010,
@@ -582,9 +586,9 @@ @article{Martin2010
doi = "10.1016/j.cag.2010.03.011",
url = "http://www.sciencedirect.com/science/article/pii/S0097849310000506",
author = "Tobias Martin and Elaine Cohen",
-keywords = "Trivariate b-spline modeling and generation",
-keywords = "Volumetric parameterization",
-keywords = "Model acquisition for simulation"
+keywords = {"Trivariate b-spline modeling and generation",
+ "Volumetric parameterization",
+ "Model acquisition for simulation"}
}
@article{Martin2012,
@@ -599,10 +603,10 @@ @article{Martin2012
doi = "10.1016/j.cag.2012.03.008",
url = "http://www.sciencedirect.com/science/article/pii/S0097849312000477",
author = "Tobias Martin and Elaine Cohen and Robert M. Kirby",
-keywords = "Model completion",
-keywords = "Volumetric parameterization",
-keywords = "Meshing",
-keywords = "Physically-based animation and simulation"
+keywords = {"Model completion",
+ "Volumetric parameterization",
+ "Meshing",
+ "Physically-based animation and simulation"}
}
@article{Wang2011,
@@ -617,11 +621,11 @@ @article{Wang2011
doi = "10.1016/j.cad.2011.08.026",
url = "http://www.sciencedirect.com/science/article/pii/S0010448511002259",
author = "Ping Wang and Jinlan Xu and Jiansong Deng and Falai Chen",
-keywords = "Isogeometric analysis (IGA)",
-keywords = "FEA",
-keywords = "PHT-splines",
-keywords = "RPHT-splines",
-keywords = "Residual-based a posteriori error estimator"
+keywords = {"Isogeometric analysis (IGA)",
+ "FEA",
+ "PHT-splines",
+ "RPHT-splines",
+ "Residual-based a posteriori error estimator"}
}
@article{NguyenThanh2011,
@@ -636,10 +640,10 @@ @article{NguyenThanh2011
doi = "10.1016/j.cma.2011.01.018",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511000338",
author = "N. Nguyen-Thanh and H. Nguyen-Xuan and S.P.A. Bordas and T. Rabczuk",
-keywords = "Isogeometric analysis",
-keywords = "T-spline",
-keywords = "T-meshes",
-keywords = "PHT-spline"
+keywords = {"Isogeometric analysis",
+ "T-spline",
+ "T-meshes",
+ "PHT-spline"}
}
@article{Giannelli2012,
@@ -654,10 +658,10 @@ @article{Giannelli2012
doi = "10.1016/j.cagd.2012.03.025",
url = "http://www.sciencedirect.com/science/article/pii/S0167839612000519",
author = "Carlotta Giannelli and Bert Juttler and Hendrik Speleers",
-keywords = "Hierarchical tensor¿product B-splines",
-keywords = "Truncated basis",
-keywords = "Local refinement",
-keywords = "Partition of unity"
+keywords = {"Hierarchical tensor¿product B-splines",
+ "Truncated basis",
+ "Local refinement",
+ "Partition of unity"}
}
@article{Tian2011,
@@ -672,11 +676,11 @@ @article{Tian2011
doi = "10.1016/j.cam.2011.05.016",
url = "http://www.sciencedirect.com/science/article/pii/S0377042711002639",
author = "Li Tian and Falai Chen and Qiang Du",
-keywords = "Numerical PDEs",
-keywords = "Adaptive finite element",
-keywords = "Adaptive PHT-splines",
-keywords = "A posteriori error estimations",
-keywords = "Hierarchical T-meshes"
+keywords = {"Numerical PDEs",
+ "Adaptive finite element",
+ "Adaptive PHT-splines",
+ "A posteriori error estimations",
+ "Hierarchical T-meshes"}
}
@article{Scott2012,
@@ -691,10 +695,10 @@ @article{Scott2012
doi = "10.1016/j.cma.2011.11.022",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511003689",
author = "M.A. Scott and X. Li and T.W. Sederberg and T.J.R. Hughes",
-keywords = "Isogeometric analysis",
-keywords = "T-splines",
-keywords = "Local refinement",
-keywords = "Bézier extraction"
+keywords = {"Isogeometric analysis",
+ "T-splines",
+ "Local refinement",
+ "Bézier extraction"}
}
@article{Rypl2012,
@@ -709,12 +713,12 @@ @article{Rypl2012
doi = "10.1016/j.advengsoft.2012.02.004",
url = "http://www.sciencedirect.com/science/article/pii/S096599781200035X",
author = "Daniel Rypl and Boek Patzák",
-keywords = "Isogeometric analysis",
-keywords = "B-splines",
-keywords = "NURBS",
-keywords = "T-splines",
-keywords = "Structural analysis",
-keywords = "Object oriented environment"
+keywords = {"Isogeometric analysis",
+ "B-splines",
+ "NURBS",
+ "T-splines",
+ "Structural analysis",
+ "Object oriented environment"}
}
@article{XinLi2012,
@@ -729,11 +733,11 @@ @article{XinLi2012
doi = "10.1016/j.cagd.2011.08.005",
url = "http://www.sciencedirect.com/science/article/pii/S0167839611000938",
author = "Xin Li and Jianmin Zheng and Thomas W. Sederberg and Thomas J.R. Hughes and Michael A. Scott",
-keywords = "T-splines",
-keywords = "Blending functions",
-keywords = "Linear independence",
-keywords = "NURBS",
-keywords = "Isogeometric analysis"
+keywords = {"T-splines",
+ "Blending functions",
+ "Linear independence",
+ "NURBS",
+ "Isogeometric analysis"}
}
@article{daVeiga2011,
@@ -748,10 +752,10 @@ @article{daVeiga2011
doi = "10.1016/j.cma.2011.02.005",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511000405",
author = "L. Beir\`ao da Veiga and A. Buffa and D. Cho and G. Sangalli",
-keywords = "IsoGeometric analysis",
-keywords = "T-splines",
-keywords = "Approximation",
-keywords = "Error estimates"
+keywords = {"IsoGeometric analysis",
+ "T-splines",
+ "Approximation",
+ "Error estimates"}
}
@article{Buffa2012,
@@ -766,10 +770,10 @@ @article{Buffa2012
doi = "10.1016/j.cma.2011.09.005",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511002945",
author = "A. Buffa and D. Cho and M. Kumar",
-keywords = "Isogeometric analysis",
-keywords = "T-splines",
-keywords = "Characterization",
-keywords = "Local refinement"
+keywords = {"Isogeometric analysis",
+ "T-splines",
+ "Characterization",
+ "Local refinement"}
}
@article{daVeiga2012,
@@ -784,10 +788,10 @@ @article{daVeiga2012
doi = "10.1016/j.cma.2012.02.025",
url = "http://www.sciencedirect.com/science/article/pii/S0045782512000679",
author = "L. Beir\`ao da Veiga and A. Buffa and D. Cho and G. Sangalli",
-keywords = "Isogeometric analysis",
-keywords = "Analysis-Suitable T-splines",
-keywords = "Dual-Compatible T-splines",
-keywords = "Dual basis"
+keywords = {"Isogeometric analysis",
+ "Analysis-Suitable T-splines",
+ "Dual-Compatible T-splines",
+ "Dual basis"}
}
@article{Berdinsky2012,
@@ -802,9 +806,9 @@ @article{Berdinsky2012
doi = "10.1016/j.cag.2012.03.005",
url = "http://www.sciencedirect.com/science/article/pii/S0097849312000441",
author = "Dmitry Berdinsky and Min-jae Oh and Tae-wan Kim and Bernard Mourrain",
-keywords = "Spline space",
-keywords = "T-mesh",
-keywords = "Dimension"
+keywords = {"Spline space",
+ "T-mesh",
+ "Dimension"}
}
@article{Xu2011b,
@@ -819,11 +823,11 @@ @article{Xu2011b
doi = "10.1016/j.cma.2011.03.005",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511001101",
author = "Gang Xu and Bernard Mourrain and R\'egis Duvigneau and Andr\'e Galligo",
-keywords = "Isogeometric analysis",
-keywords = "Injectivity of B-spline parameterization",
-keywords = "Constraint optimization method",
-keywords = "A posteriori error estimation",
-keywords = "r-Refinement"
+keywords = {"Isogeometric analysis",
+ "Injectivity of B-spline parameterization",
+ "Constraint optimization method",
+ "A posteriori error estimation",
+ "r-Refinement"}
}
@article{Ratnani2012b,
@@ -849,12 +853,12 @@ @article{Bazilevs2012
doi = "10.1016/j.cma.2012.03.028",
url = "http://www.sciencedirect.com/science/article/pii/S0045782512001041",
author = "Y. Bazilevs and M.-C. Hsu and M.A. Scott",
-keywords = "Isogeometric analysis",
-keywords = "NURBS",
-keywords = "T-splines",
-keywords = "Fluid-structure interaction",
-keywords = "Non-matching interface discretizations",
-keywords = "NREL 5 MW offshore wind turbine rotor"
+keywords = {"Isogeometric analysis",
+ "NURBS",
+ "T-splines",
+ "Fluid-structure interaction",
+ "Non-matching interface discretizations",
+ "NREL 5 MW offshore wind turbine rotor"}
}
@article{Buffa2010,
@@ -869,10 +873,10 @@ @article{Buffa2010
doi = "10.1016/j.cma.2009.12.002",
url = "http://www.sciencedirect.com/science/article/pii/S0045782509004010",
author = "A. Buffa and G. Sangalli and R. Vázquez",
-keywords = "Isogeometric analysis",
-keywords = "Compatible schemes",
-keywords = "Maxwell equations",
-keywords = "Eigenvalue problem"
+keywords = {"Isogeometric analysis",
+ "Compatible schemes",
+ "Maxwell equations",
+ "Eigenvalue problem"}
}
@article{Xu2011a,
@@ -887,11 +891,11 @@ @article{Xu2011a
doi = "10.1016/j.cad.2011.05.007",
url = "http://www.sciencedirect.com/science/article/pii/S0010448511001175",
author = "Gang Xu and Bernard Mourrain and R\'egis Duvigneau and Andr\'e Galligo",
-keywords = "Isogeometric analysis",
-keywords = "Analysis-aware parameterization of computational domain",
-keywords = "Injectivity",
-keywords = "Shape optimization",
-keywords = "Steepest descent method"
+keywords = {"Isogeometric analysis",
+ "Analysis-aware parameterization of computational domain",
+ "Injectivity",
+ "Shape optimization",
+ "Steepest descent method"}
}
@article{Heinrich2012,
title = "A finite volume method on NURBS geometries and its application in isogeometric fluid¿structure interaction",
@@ -905,12 +909,12 @@ @article{Heinrich2012
doi = "10.1016/j.matcom.2012.03.008",
url = "http://www.sciencedirect.com/science/article/pii/S0378475412000730",
author = "Ch. Heinrich and B. Simeon and St. Boschert",
-keywords = "Finite volume method",
-keywords = "NURBS",
-keywords = "Exact geometry",
-keywords = "Navier¿Stokes equations",
-keywords = "Fluid¿structure interaction",
-keywords = "Matching interface"
+keywords = {"Finite volume method",
+ "NURBS",
+ "Exact geometry",
+ "Navier¿Stokes equations",
+ "Fluid¿structure interaction",
+ "Matching interface"}
}
@article{Shojaee2012,
@@ -925,11 +929,11 @@ @article{Shojaee2012
doi = "10.1016/j.finel.2012.06.005",
url = "http://www.sciencedirect.com/science/article/pii/S0168874X12001199",
author = "S. Shojaee and E. Izadpanah and N. Valizadeh and J. Kiendl",
-keywords = "Free vibration",
-keywords = "Plate",
-keywords = "Isogeometric analysis",
-keywords = "NURBS",
-keywords = "Kirchhoff plate"
+keywords = {"Free vibration",
+ "Plate",
+ "Isogeometric analysis",
+ "NURBS",
+ "Kirchhoff plate"}
}
@article{Bazilevs2010,
@@ -944,14 +948,14 @@ @article{Bazilevs2010
doi = "10.1016/j.cma.2009.02.036",
url = "http://www.sciencedirect.com/science/article/pii/S0045782509000875",
author = "Y. Bazilevs and V.M. Calo and J.A. Cottrell and J.A. Evans and T.J.R. Hughes and S. Lipton and M.A. Scott and T.W. Sederberg",
-keywords = "T-splines",
-keywords = "NURBS",
-keywords = "Isogeometric analysis",
-keywords = "CAD",
-keywords = "FEA",
-keywords = "Fluid dynamics",
-keywords = "Structural analysis",
-keywords = "PB-splines"
+keywords = {"T-splines",
+ "NURBS",
+ "Isogeometric analysis",
+ "CAD",
+ "FEA",
+ "Fluid dynamics",
+ "Structural analysis",
+ "PB-splines"}
}
@article{Bornemann2013,
@@ -966,10 +970,10 @@ @article{Bornemann2013
doi = "10.1016/j.cma.2012.06.023",
url = "http://www.sciencedirect.com/science/article/pii/S0045782512002204",
author = "P.B. Bornemann and F. Cirak",
-keywords = "Finite elements",
-keywords = "Hierarchical b-splines",
-keywords = "Subdivision schemes",
-keywords = "Isogeometric analysis"
+keywords = {"Finite elements",
+ "Hierarchical b-splines",
+ "Subdivision schemes",
+ "Isogeometric analysis"}
}
@article{daVeiga2012b,
@@ -984,9 +988,9 @@ @article{daVeiga2012b
doi = "10.1016/j.cma.2011.10.016",
url = "http://www.sciencedirect.com/science/article/pii/S0045782511003379",
author = "L. Beir{\~a}o da Veiga and D. Cho and G. Sangalli",
-keywords = "Isogeometric analysis",
-keywords = "Anisotropic refinement",
-keywords = "Error estimates"
+keywords = {"Isogeometric analysis",
+ "Anisotropic refinement",
+ "Error estimates"}
}
@article{Buffa2013a,
@@ -1001,12 +1005,12 @@ @article{Buffa2013a
doi = "http://dx.doi.org/10.1016/j.cma.2013.05.014",
url = "http://www.sciencedirect.com/science/article/pii/S004578251300131X",
author = "Annalisa Buffa and Helmut Harbrecht and Angela Kunoth and Giancarlo Sangalli",
-keywords = "Isogeometric analysis",
-keywords = "Elliptic PDE",
-keywords = "B-splines",
-keywords = "Multilevel preconditioning",
-keywords = "BPX-preconditioner",
-keywords = "Uniformly bounded condition number "
+keywords = {"Isogeometric analysis",
+ "Elliptic PDE",
+ "B-splines",
+ "Multilevel preconditioning",
+ "BPX-preconditioner",
+ "Uniformly bounded condition number"}
}
@article{Gahalaut2013a,
@@ -1021,11 +1025,11 @@ @article{Gahalaut2013a
doi = "http://dx.doi.org/10.1016/j.cma.2013.07.002",
url = "http://www.sciencedirect.com/science/article/pii/S0045782513001722",
author = "K.P.S. Gahalaut and S.K. Tomar and J.K. Kraus",
-keywords = "Isogeometric analysis",
-keywords = "B-splines and NURBS",
-keywords = "Explicit form of B-splines",
-keywords = "AMLI methods",
-keywords = "Hierarchical spaces "
+keywords = {"Isogeometric analysis",
+ "B-splines and NURBS",
+ "Explicit form of B-splines",
+ "AMLI methods",
+ "Hierarchical spaces"}
}
% ********************************************************************
@@ -1202,9 +1206,9 @@ @article{Chen2015a
doi = "http://dx.doi.org/10.1016/j.camwa.2015.04.016",
url = "http://www.sciencedirect.com/science/article/pii/S0898122115001972",
author = "Long Chen and Junping Wang and Yanqiu Wang and Xiu Ye",
-keywords = "Weak Galerkin finite element methods",
-keywords = "Multigrid",
-keywords = "Preconditioner "
+keywords = {"Weak Galerkin finite element methods",
+ "Multigrid",
+ "Preconditioner"}
}
@Article{Grasedyck2015a,
@@ -1338,11 +1342,11 @@ @article{Li2015a
doi = "http://dx.doi.org/10.1016/j.cam.2015.03.043",
url = "http://www.sciencedirect.com/science/article/pii/S037704271500196X",
author = "Binjie Li and Xiaoping Xie",
-keywords = "Diffusion problem",
-keywords = "Weak Galerkin finite element",
-keywords = "Condition number",
-keywords = "Two-level algorithm",
-keywords = "X–Z identity "
+keywords = {"Diffusion problem",
+ "Weak Galerkin finite element",
+ "Condition number",
+ "Two-level algorithm",
+ "X–Z identity"}
}
@article{Li2016a,
@@ -1676,24 +1680,6 @@ @article{mazza2019
publisher={American Mathematical Society}
}
-@article{garoni2014,
- author="Garoni, Carlo
- and Manni, Carla
- and Pelosi, Francesca
- and Serra-Capizzano, Stefano
- and Speleers, Hendrik",
- title="On the spectrum of stiffness matrices arising from isogeometric analysis",
- journal="Numerische Mathematik",
- year="2014",
- volume="127",
- number="4",
- pages="751--799",
- issn="0945-3245",
- doi="10.1007/s00211-013-0600-2",
- url="http://dx.doi.org/10.1007/s00211-013-0600-2"
-}
-
-
@article{sangalli2016,
author = {Sangalli, Giancarlo and Tani, Mattia},
title = {Isogeometric Preconditioners Based on Fast Solvers for the Sylvester Equation},
@@ -2235,15 +2221,6 @@ @article{bossavit1998whitney
publisher={IET}
}
-@book{monk2003finite,
- title={Finite element methods for Maxwell's equations},
- author={Monk, Peter},
- year={2003},
- publisher={Oxford University Press}
-}
-
-
-
@book{hughes2012finite,
title={Finite Element Method: A Practical Course},
author={Hughes, Thomas JR},
diff --git a/requirements.txt b/requirements.txt
index 1841b8a..ad59e44 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,4 +5,7 @@ sphinx-proof
matplotlib
pyccel
ipykernel
-git+https://github.com/pyccel/psydac.git
+notebook
+nb-clean
+psydac @ git+https://github.com/pyccel/psydac.git@devel#egg=psydac
+
diff --git a/requirements_ntbk.txt b/requirements_ntbk.txt
new file mode 100644
index 0000000..abd6be3
--- /dev/null
+++ b/requirements_ntbk.txt
@@ -0,0 +1,10 @@
+wheel
+numpy
+jupyter-book
+sphinx-proof
+matplotlib
+ipykernel
+notebook
+nb-clean
+myst_parser
+