Open Source in Scientific Computation



Open Source in Scientific Computation

2 0


Sci-Computing


On Github rcos / Sci-Computing

Open Source in Scientific Computation

Created by Moorthy and @mskmoorthy

Documentation by Moorthy is licensed under a Creative Commons Attribution 3.0 Unported License.

Open Source in Scientific Computation has two axes

  • Heavy Lifting Backend Computations
  • Higher-level language Wrappers for rapid Deployment

Backend Computations

  • Usually written in C, C++ and Fortran
  • May use extensive well developed/researched library packages
  • Will have experts in the specific discipline (physics, mathematics, climate modeling, circuit designers. financial experts )
  • Will have support for Parallelism

Backend Computations (contd)

  • May test the algorithms in matlab, mathematica, python, before full fledged implementation
  • Arrays (multidimensional) are used extensively
  • Double precision Computations are used extensively.

Applications of Scientific Computation

  • Finite Element Modeling - Structural Safety
  • Fluid Mechanics - Aerodynamics - Aircraft Design
  • Circuit Simulation
  • Genomics and Drug Simulation
  • Image Processing Applications
  • Airline Scheduling, Linear and Nonlinear Programming Application
  • Astronomy and Space Computations

Applications of Scientific Computation (contd)

  • Simulation of Materials
  • Manufacturing Process
  • Network Simulation
  • Weapon Simulation/Modeling
  • Solving NP-hard/complete Problems
  • Protein Folding
  • SETI, Milkyway@Home
  • Physics Engines for Game Playing

Commonly Used Tools

  • matlab(simulink), maple, Sage(pure math), mathematica
  • cuda, mpi libraries for parallel computation
  • LINPACK, EISPACK Libraries to do Matrix computations (netlib)
  • cplex (for linear programming) and other mathematical programming packages
  • ACM Collected Algorithms

Commonly Used Tools(contd)

  • Finite Element Packages
  • boinc for distributed/volunteer computation - factoring large numbers, Milkyway@Home
  • Visualization toolkit vtk
  • Image Processing toolkit itk, opencv
  • Graphics rendering openGL
  • Spice (VLSI design)

Python

  • pypy, mplotlib, cpython, numpy, pygame, python notebook
  • networkx - graph/network manipulations
  • biopython - Biological libraries in Python

Other Languages Support

  • Julia - high performance numerical and scientific computing
  • R - Statistical Computing Data Science (next week)
  • Java - Special Package like cytoscape

Warm Up Exercise 1

  • Download pygame and go through the tutorials http://www.nerdparadise.com/tech/python/pygame/basics/part1/
  • At the end, you should make a simple game

Warm up exercise 2

  • Download angrybirds for python https://github.com/estevaofon/angry-birds-python and install pygame(in ubuntu sudo apt-get install pygame) before running it
  • Study the source code
  • Play the game
  • Understand where the physics occurs
  • How will the angry birds game will play in Moon
  • How will the angry birds game will game in vacuum
  • Read the Wired article http://www.wired.com/2010/10/physics-of-angry-birds/

The End

by Moorthy