Motivation

Why computer modelling?

Because it is cheaper than real-life experiment, or in the case when real-life experiment is not possible.

Typical steps of computer modelling

1. Formulate the mathematical problem as an equation for some quantities

2. Replace the continious problem by a discrete problem (discretization)

3. Solve the resulting discrete problem

The simplest cycle: Mathematical model - Discretization - Solve

Discretization

The discretization is replacement of the region by discrete elements:

Random notes

• Discretization and solve can be connected
• Fast solves are needed
• Only a subproblem in design and optimization
• Many physical problems are still too complex for math (turbulence!)

Consider

It takes a lot to create

1. A model
2. Discretization
3. Solvers

What if the computer time to computer a forecast for 1 day is more than 1 day?

Many process in physics are modelled as PDEs.

• Diffusion processes (heat transfer), electrostatics (circuit design) Poisson equation
• Sound propagation (noise on the streets, buildings) -- Helmholtz equation
• Electromagnetics -- fMRI (functional magnetic resonance imaging) - Maxwell equations
• Fluid flows -- Stokes / Navier Stokes equations

These are all partial differential equations!

PDE appear in:

• Financial math (Black Scholes equation)
• Chemical engineering (Smoluchowsky equation)
• Nanoworld (Schrodinger equation)

What we plan to cover:

• Both discretization and fast solvers part.

• Start thinking about the App Period projects now

• Look in the direction of computational 3d printing (i.e. elasticity, shape optimization).

• Or image processing :)

What we plan to cover (2)

• Finite elements (what are they, how to use them for discretization, what software packages to use)
• Fast solvers for sparse matrices (i.e. direct solvers, multigrid solvers, incomplete LU factorizations, ...)
• Basic integral equations: why do we need integral equations (exterior problems)
• Fast multipole method/hierarchical matrices
• Oscillatory problems and basic electromagnetics
• Connection to practical problems

Software packages

Suppose you want to do it all, but you do not want to implement from scratch.

What to do?

Use software packages that do it for you

• FEniCS project - beautiful finite element package, superhard to install
• FiPy - Finite volume solver
• deal.II - FEM solver, C++ (with some Python interface)
• DUNE - FEM solver


In [4]:

from IPython.core.display import HTML
def css_styling():
return HTML(styles)
css_styling()




Out[4]:

@font-face {
font-family: "Computer Modern";
src: url('http://mirrors.ctan.org/fonts/cm-unicode/fonts/otf/cmunss.otf');
}
div.cell{
/*width:80%;*/
/*margin-left:auto !important;
margin-right:auto;*/
}
h1 {
font-family: 'Alegreya Sans', sans-serif;
}
h2 {
font-family: 'Fenix', serif;
}
h3{
font-family: 'Fenix', serif;
margin-top:12px;
margin-bottom: 3px;
}
h4{
font-family: 'Fenix', serif;
}
h5 {
font-family: 'Alegreya Sans', sans-serif;
}
div.text_cell_render{
font-family: 'Alegreya Sans',Computer Modern, "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;
line-height: 1.2;
font-size: 160%;
/*width:70%;*/
/*margin-left:auto;*/
margin-right:auto;
}
.CodeMirror{
font-family: "Source Code Pro";
font-size: 90%;
}
/*    .prompt{
display: None;
}*/
.text_cell_render h1 {
font-weight: 200;
font-size: 50pt;
line-height: 110%;
color:#CD2305;
margin-bottom: 0.5em;
margin-top: 0.5em;
display: block;
}
.text_cell_render h5 {
font-weight: 300;
font-size: 16pt;
color: #CD2305;
font-style: italic;
margin-bottom: .5em;
margin-top: 0.5em;
display: block;
}

li {
line-height: 110%;
}
.warning{
color: rgb( 240, 20, 20 )
}

MathJax.Hub.Config({
TeX: {
extensions: ["AMSmath.js"]
},
tex2jax: {
inlineMath: [ ['$','$'], ["\$","\$"] ],
displayMath: [ ['$$','$$'], ["\$","\$"] ]
},
displayAlign: 'center', // Change this to 'center' to center equations.
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 4}}
}
});