Learn Scientific Computing

This is a repo for sharing ideas/codes/demo's related to Numerical Methods used in CFD, FEA, DL, ML and/or its HPC aspects, with a purpose of academic, professional or lesiure satisfaction. Be organized !!!

Whats new today?

Blogs on

The blog demonstrates and describes finite differences approach, issues with it and briefly introduces complex-step-differentiation. We hope to add next part in continuation of complex-step-differentiation as a motivation for automatic differentiation.

The blog demonstrates and describes naive and commonly popular ways of computing discrete fourier transform(DFT), and it's benchmarking with the standard FFT based packages. This blog serves as a pre-requisite know-how of DFTs for future demo's on spectral differentiation (especially FFT based differentiation methods).

Guidelines for contributors

  • For those interested in contributing to the demonstrations, please contribute your ideas here in Julia/MATLAB like readable pseudocode syntax. For HPC related stuff, you can digress later into other languages if needed.

  • Request to review your contributions from other contributors

  • Get familiar with github first or keep a github cheatsheet ready with you. It should help you in effectively expressing yourself in Issues or PRs or Discussions

Trends in Numerical Methods used in CFD/ FEA/ ML and DL these days

Lets start with

1) Differentiation

A lot depends on how we approximate differential operators or calculate gradients in these numerical methods. To put it succinctly, there are challenges to approximate these differential operators properly, and it's a useful skill for a computational science student. If one keeps up with major ways of approximating differential operators are by following way:

  • Automatic differentiation (a numerical approach used in automatic differentiation libraries like Tensorflow/PyTorch/Zygote. An ongoing discussion is here)

  • Traditional Numerical differentiation (good old Taylor series, majorly used in CFD softwares) We have been exposed to traditional numerical differentiation a lot times, but a bulk of us don't know how to create automatically stencils and Differential operators matrices and applying boundary conditions on them.

On going discussion of creating general finite difference stencils, here.

On going discussion of creating general spectral differentiation operators, here

  • Symbolic differentiation (used in Maple/Mathematica/Sage like Libraries)

In coming weeks, a small demonstration/blog of these would be added, along with useful references

References(more to be added soon)