-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Change the way dim and spacedim work.
- Loading branch information
1 parent
6d00429
commit 37253bc
Showing
8 changed files
with
2,249 additions
and
1,151 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,22 +6,23 @@ interaction problems: mathematical modeling and numerical approximation"** | |
| <!-- --> | <!-- --> | | ||
| -- | -- | | ||
| **Author** | Luca Heltai <[email protected]> | | ||
| **GitHub Repository:** | https://github.com/luca-heltai/fsi-suite | | ||
| **GitHub Pages:** | https://luca-heltai.github.io/fsi-suite/ | | ||
| **GitHub Repository:** | <https://github.com/luca-heltai/fsi-suite> | | ||
| **GitHub Pages:** | <https://luca-heltai.github.io/fsi-suite/> | | ||
| **Licence:** | see the file [LICENCE.md](./LICENCE.md) | | ||
|
||
## Course Introduction | ||
|
||
Fluid-structure interaction (FSI) refers to the multiphysics coupling between | ||
the laws that describe fluid dynamics and structural mechanics. | ||
the laws that describe fluid dynamics and structural mechanics. | ||
|
||
This page collects the material that I have used for a course given at Kaust | ||
(https://www.kaust.edu.sa/en) during the spring semester of 2022. | ||
(<https://www.kaust.edu.sa/en>) during the spring semester of 2022. | ||
|
||
The course covers three main topics: i) basics of continuum mechanics, ii) | ||
mathematical modeling of FSI problems, and iii) numerical implementations based | ||
on the finite element method. Theoretical lectures are backed up by applied | ||
laboratories based on the C++ language, using example codes developed with the | ||
open source finite element library deal.II (www.dealii.org). I cover basic | ||
open source finite element library deal.II (<www.dealii.org>). I cover basic | ||
principles of continuum mechanics, discuss Lagrangian, Eulerian, and Arbitrary | ||
Lagrangian-Eulerian formulations, and cover different coupling strategies, both | ||
from the theoretical point of view, and with the aid of computational | ||
|
@@ -32,8 +33,8 @@ finite element approximations for the solution of continuum mechanics problems, | |
including non-linear mechanics, computational fluid dynamics, and | ||
fluid-structure-interaction problems. | ||
|
||
A glimpse of the PDEs that are discussed in the course is given by the following | ||
graph | ||
A glimpse of the PDEs that are discussed in the course is given by the following | ||
graph | ||
|
||
@dotfile serial.dot width=100% | ||
|
||
|
@@ -42,7 +43,7 @@ graph | |
The laboratory part should enable a PhD student working on numerical analysis | ||
of PDEs to implement state-of-the-art adaptive finite element codes for FSI | ||
problems, that run in parallel, using modern C++ libraries. The implementation | ||
are based on the `deal.II` library (www.dealii.org). | ||
are based on the `deal.II` library (<www.dealii.org>). | ||
|
||
Main topics covered by these lectures: | ||
|
||
|
@@ -57,27 +58,27 @@ Main topics covered by these lectures: | |
Continuous Integration Status | ||
----------------------------- | ||
|
||
Up to date online documentation for the codes used in the laboratories is here: | ||
Up to date online documentation for the codes used in the laboratories is here: | ||
|
||
https://luca-heltai.github.io/fsi-suite/ | ||
<https://luca-heltai.github.io/fsi-suite/> | ||
|
||
| System | Status | | ||
| ------ | ------- | | ||
| ------ | ------- | | ||
| **Continous Integration** | [![GitHub CI](https://github.com/luca-heltai/fsi-suite/actions/workflows/tests.yml/badge.svg)](https://github.com/luca-heltai/fsi-suite/actions/workflows/tests.yml) | | ||
| **Docker** | [![github-docker](https://github.com/luca-heltai/fsi-suite/actions/workflows/docker.yml/badge.svg)](https://github.com/luca-heltai/fsi-suite/actions/workflows/docker.yml) | | ||
| **Doxygen** | [![Doxygen](https://github.com/luca-heltai/fsi-suite/actions/workflows/doxygen.yml/badge.svg)](https://github.com/luca-heltai/fsi-suite/actions/workflows/doxygen.yml) | | ||
| **Indent** | [![Indent](https://github.com/luca-heltai/fsi-suite/actions/workflows/indentation.yml/badge.svg)](https://github.com/luca-heltai/fsi-suite/actions/workflows/indentation.yml) | | ||
|
||
|
||
## Useful links | ||
|
||
One of my courses on theory and practice of finite elements: | ||
- https://www.math.sissa.it/course/phd-course/theory-and-practice-finite-element-methods | ||
|
||
- <https://www.math.sissa.it/course/phd-course/theory-and-practice-finite-element-methods> | ||
|
||
Exceptional video lectures by Prof. Wolfgang Bangerth, that cover all the | ||
things you will ever need for finite element programming. | ||
|
||
- https://www.math.colostate.edu/~bangerth/videos.html | ||
- <https://www.math.colostate.edu/~bangerth/videos.html> | ||
|
||
## Quick start | ||
|
||
|
@@ -94,23 +95,23 @@ you should see the following output: | |
|
||
Will run program-name with program-options, possibly via mpirun, passing -np N to mpirun. | ||
Here is a list of programs you can run: | ||
linear_elasticity.g mpi_stokes.g | ||
distributed_lagrange mesh_handler poisson | ||
distributed_lagrange.g mesh_handler.g poisson.g | ||
dof_plotter mpi_linear_elasticity reduced_lagrange | ||
dof_plotter.g mpi_linear_elasticity.g reduced_lagrange.g | ||
fsi_test mpi_poisson stokes | ||
fsi_test.g mpi_poisson.g stokes.g | ||
linear_elasticity mpi_stokes | ||
linear_elasticity.g mpi_stokes.g | ||
distributed_lagrange mesh_handler poisson | ||
distributed_lagrange.g mesh_handler.g poisson.g | ||
dof_plotter mpi_linear_elasticity reduced_lagrange | ||
dof_plotter.g mpi_linear_elasticity.g reduced_lagrange.g | ||
fsi_test mpi_poisson stokes | ||
fsi_test.g mpi_poisson.g stokes.g | ||
linear_elasticity mpi_stokes | ||
|
||
Programs ending with .g are compiled with debug symbols. To see help on how to run | ||
any of the programs, add a -h flag at the end. | ||
|
||
The above command will download the latest docker image from the `main` branch | ||
of this repository (which is built and uploaded to | ||
https://hub.docker.com/r/heltai/fsi-suite at every commit to master), mount the | ||
<https://hub.docker.com/r/heltai/fsi-suite> at every commit to master), mount the | ||
current directory, in a directory with the same path inside the container, and | ||
the program you selected. For example, | ||
the program you selected. For example, | ||
|
||
./fsi-suite.sh -np 4 mpi_poisson.g | ||
|
||
|
@@ -119,10 +120,10 @@ problem in parallel, using 4 processors. You can change grid, boundary | |
conditions, forcing terms, finite element spaces, etc. by editing the | ||
configuration file which is created the first time you run the program, and then | ||
passing it as an argument to the program itself, i.e., in the example above, the | ||
parameter file that would be generated is `used_mpi_poisson.g_2d.prm`, which you | ||
parameter file that would be generated is `used_mpi_poisson.g.prm`, which you | ||
can edit and then pass as input to the program itself: | ||
|
||
./fsi-suite.sh -np 4 mpi_poisson.g used_mpi_poisson.g_2d.prm | ||
./fsi-suite.sh -np 4 mpi_poisson.g used_mpi_poisson.g.prm | ||
|
||
If you want to read some documentation of what each parameter does and how it | ||
works, you can call the program passing a non-existing parameter file: | ||
|
@@ -143,7 +144,7 @@ works, you can call the program passing a non-existing parameter file: | |
|
||
The created parameter file will also contain documentation for each parameter. | ||
Running again the same command will now use the parameter file that was just | ||
created: | ||
created: | ||
|
||
./fsi-suite.sh -np 4 mpi_poisson.g my_test.prm | ||
|
||
|
@@ -170,28 +171,29 @@ created: | |
| setup_system | 1 | 0.0124s | 18% | | ||
| solve | 1 | 0.00547s | 7.8% | | ||
+---------------------------------+-----------+------------+------------+ | ||
|
||
## Course program | ||
|
||
A tentative detailed program is shown below | ||
A tentative detailed program is shown below | ||
(this will be updated during the course to reflect the actual course content) | ||
|
||
1. Course introduction. | ||
1. Course introduction. | ||
- Motivating examples | ||
- Basic principles and background knowledge. | ||
|
||
2. Recap on Finite Element Methods | ||
- Introduction to deal.II. | ||
|
||
3. Basic principles of continuum mechanics | ||
- conservation equations | ||
3. Basic principles of continuum mechanics | ||
- conservation equations | ||
- constitutive equations | ||
- kinematics | ||
- transport theorems | ||
|
||
3. Lagrangian formulation of continuum mechanics (solids). | ||
- Static and compressible linear elasticity | ||
|
||
4. Recap on mixed problems | ||
4. Recap on mixed problems | ||
- Static incompressible linear elasticity | ||
|
||
5. Eulerian formulation of continuum mechanics | ||
|
@@ -200,13 +202,13 @@ A tentative detailed program is shown below | |
6. Recap on time discretization schemes | ||
- Time dependent Stokes problem | ||
- Time dependent linear elasticity (wave equations) | ||
7. Treating non-linearities | ||
|
||
7. Treating non-linearities | ||
- IMEX | ||
- predictor corrector | ||
- fixed point | ||
- Newton | ||
|
||
8. Navier-Stokes equations | ||
|
||
9. Segregated coupling | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.