Code Monkey home page Code Monkey logo

am225_examples's Introduction

Harvard Applied Math 225: Code examples
=======================================
Harvard AM225 is a graduate course in scientific computing that covers a
variety of advanced topics in numerical analysis, algorithm design, and
high-performance computing.

See the main website here:

https://courses.seas.harvard.edu/courses/am225/

This Git repository contains example codes from the course. The codes are
primarily written in C++ using the OpenMP library for multithreading. Some
additional programs in Python are provided.

Compiling
=========
The programs make use of the GNU Make utility for automatic building. Each
directory contains a "Makefile", which contains the compilation rules for
each program.

Each directory looks for a common configuration file called "config.mk" in the
top level of the repository, which sets the compiler name and various compiler
options.

To begin, you must create a "config.mk" file from one of the templates
provided in the "config" directory. The simplest method is to create a symlink
(shortcut) from one of the templates. On a Linux system, this can be done by
typing:

ln -s config/config.mk.linux config.mk

On a Mac system using GCC 10 installed with MacPorts (www.macports.org), use
the following:

ln -s config/config.mk.mac_mp config.mk

On a Mac system using GCC 10 installed with Homebrew (https://brew.sh), use
the following:

ln -s config/config.mk.mac_hb config.mk

For a custom configuration, copy one of the files from the "config" directory
into the root directory, and then manually edit it.

Once the "config.mk" file is created, change into one of the project
directories and type "make" to compile everything.

Organization
============
The course is divided into six units:

- Unit 0: Introduction and multithreaded programming
- Unit 1: Advanced ODE integration methods and theory
- Unit 2: Advanced numerical linear algebra
- Unit 3: Finite element methods
- Unit 4: Finite volume methods
- Unit 5: Special topics in scientific computing

Each Unit has several different directories with programs within them:

0a_root_finding - Introductory root finding examples

0b_cpp+openmp - C++ and OpenMP examples

1a_ode_solvers - A variety of ODE solvers (RK4, Euler, Ralston, etc.)

1b_extrap+do - Dense output examples and extrapolation solvers

1c_dop853 - The eighth-order Dormand-Prince DOP853 integrator

1d_symplectic - Symplectic integration examples

2a_linking - Small example of linking to precompiled binary object files.

2b_lapack+krylov - Examples using BLAS, LAPACK. Krylov methods applied to a
radial basis function test case.

2c_fft+ddecomp - Fast Fourier Transform and domain decomposition examples

3a_f_element - Finite element examples

4a_f_volume - Finite volume examples. Comparison to finite difference methods.

4b_traffic - Example programs to simulate the traffic equation, a nonlinear
hyperbolic conservation law

5a_fluid_sim - Simulation of incompressible fluids using Chorin's projection
method

5b_lsm_fmm - Level set method and the fast marching method examples

tgmg - An prototype 2D templated multigrid library developed by the Rycroft
group, which is required by the incompressible fluid simulation

am225_examples's People

Contributors

chr1shr avatar danfortunato avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.