Tuesday, February 3, 2015


Automatic Differentiation - for CFD



Automatic Differentiation (AD) deals with differentiating a single / multi variable function w.r.t a set of independent parameters. Simply, its a package which differentiates a function, and function is given by a piece of code. 

This is particularly helpful in CFD in the case of implicit algorithms, where the Flux Jacobian is required. Of course, there are other ways of computing the Jacobian, like Numerical Differentiation, but it is computationally very expensive. 

We think TAPENADE package (and even MATLAB - Symbolic toolbox) is a good place to start in AD. The package takes the function, its dependent and independent variables and gives the differential (a slope - in case of single variable and Jacobian - in case of multi-variable function). 

As an example, the process of deriving the analytical flux Jacobians for the Roe flux formulation is tedious and may result in incorrect evaluation of the Jacobians. An efficient alternative to avoid both hand-derived Jacobians and computationally expensive finite-difference evaluation or Numerical differentiation of the Jacobians, is to generate the flux Jacobians using automatic-differentiation. Auto-differentiation uses the chain-rule to calculate the derivative of a function, in this case the flux formulation. In this method the flux formulation is passed as a differentiable function to the auto-differentiation package (TAPENADE). This generates the analytical expressions of the flux Jacobians.

Alternative info, obviously on AD on Wiki
TAPENADE Documentation

Tuesday, January 20, 2015



CFD Lectures (Comprehensive)





Lecture 1 - Introduction and first illustrations of CFD

Lecture 2 - Introduction to turbulence - Linear isotropic closures

Lecture 3 - Turbulence models - Towards non-linear anisotropic models

Lecture 4 - Hybrid LES turbulence closures
This last lecture concerning turbulence closures will be devoted to a brief description of LES and Hybrid LES turbulence closures. Illustrations will be provided on automotive flows.

Lecture 5 - Unstructured finite volume discretisation
This lecture is the first of a series of three lectures which will be devoted to the methodology used to build a generalized unstructured finite volume discretization.

Lecture 6 - Unstructured finite volume discretisation
Second part of the course on generalized unstructured finite volume discretization methods.

Lecture 7 - Pressure equation
To take into account the incompressibility of the flow and find the pressure, it is necessary to build a pressure equation. This lecture will be devoted to this topic and to the specific mass flux reconstruction schemes.

Lecture 8 - Fully coupled formulation and free surface capturing strategies
This lecture will present alternate strategies to solve the coupling between mass and momentum conservation equations. Free-surface capturing methodologies and specific compressive discretization schemes will be also presented

Lecture 9 - Various illustrations of up-to-date computations
This presentation shows some recent CFD applications devoted to viscous ship hydrodynamics
Lecture 10 - Verifcation and Validation - Part 1
Lecture 11 - Verifcation and Validation - Part 2
This lecture will describe the current recommended procedures used to verify and validate a numerical result obtained with the help of CFD. A new 2D procedure for estimating the local discretization error will be also presented.

Link to Source to find animations as well !



Friday, January 9, 2015

http://lsec.cc.ac.cn/lcfd/DEWENO/dg_code.htm


The above link is a Fortran77 code on the solution of burgers equation which uses DG and WENO for polynomial truncation of non linear terms to compute 1D conservation laws.....

Have a nice time!! enjoy coding!!! :)

Thursday, December 25, 2014

Here is a bit on Fortran basics. There will be a continuation of this with functions, subroutines and modules. If there are any mistakes, please do point out. Thanks.
Fortran_verybasics.pdf

Friday, December 12, 2014


CFD - Jargon

by A De Souza, NAFEMS




Monday, December 8, 2014


Hyperbolic, Convection dominated flows -- Lectures by Toro & Chi Wang Shu


This link shows the video of Toro talking about Hyperbolic equations and finite volume and DG frameworks. This lecture is very helpful to get a better understanding and kind of a crash course about  solving hyperbolic equations the numerical schemes that can used for specific problems their properties and so on... 




If you are interested in higher order methods and more of DG methods, follow the videos by Chi Wang Shu.





This channel on YouTube Link to Channel, will be very helpful to follow on lectures for convection dominated problems and higher order methods.

Have a good time breaking your head and finding the way around these very beautifully built numerical schemes!!!  Enjoy!!!  :) And we are open for discussions!!!



Wednesday, November 19, 2014



Intel Software Tools Webinar Series Archive


A collection of Intel webinars. Most of them related to MKL, MPI-3 and Xeon Phi.

Click here to open the page.



Thursday, October 30, 2014


far-fetched yet fun

Monday, October 27, 2014


Parallel debugging (MPI) - Part 1

Ahem, ahem, searching a needle in a hay stack is easy compared to parallel debugging in MPI, or as a matter parallel debugging. Having overstated the problem in our hands, there are few solutions or workarounds of how to get our hands in the dirty waters and have some fun.



There are two ways (as always) to get our work done, either use free tools or give an arm or leg to buy a fancy debugger.

1. Fancy debuggers,  Allinea DDTTotalViewIntel (Windows)Intel (Linux) to name some.
2. Free debuggers, gdb / valgrind to some extent, Eclipse PTP, etc
(Let us know for any others out there)

Read complete article by the chaps at OpenMPI.

1. gdb

gdb can be used as follows;

mpirun -np <NP> xterm -e gdb ./program 

This the launches xterm windows in which I can do

run <arg1> <arg2> ... <argN>

Should work the same with ddd (GUI for gdb)

2. valgrind (more at this link)

First of all, you have to make sure that Valgrind 3.2.0 or later is installed, and Open MPI is compiled with Memchecker enabled. Then simply run you application with Valgrind, e.g.:

mpirun -np 2 valgrind ./program



3. Eclipse PTP 

Official pageDownload page for Eclipse ParallelRelease Notes

More coming soon on this, looks interesting as they claim to have a parallel debugger !


Other Useful Links :

Some advanced tools, STAT.

A comparison on Wikipedia can be found here.


Sunday, October 26, 2014

Hello all,

I would like to bring in your attention about the power of python, for application in scientific computing. Whilst many people use Fortran,C/C++ for scientific python, a lot of tasks can be automated such as plotting graphs, creating contours calling several external libraries and coupling codes without the need of mixed language programming.

Here's a quick and basic introduction to scipy (Scientific python) which describes the scientific computing based in python:

Click here



Please do comment, suggest, correct and add to our posts
Subscribe to RSS Feed Follow me on Twitter!