/ibpm

Immersed Boundary Projection Method

Primary LanguageC++BSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

README for Immersed Boundary Projection Method (IBPM)
=====================================================

The code contained in this distribution uses an immersed boundary method to
solve the two-dimensional incompressible Navier-Stokes equations around
complex geometries, using the projection method described in Taira and
Colonius (2007). In particular, this code implements the "fast method"
described in Section 3.3 of Colonius and Taira (2008), using the multi-domain
approach for far-field boundary conditions, as described in section 4 of this
reference.


Getting started
===============

To run the code, first build the executables as described below. The main
executable is called 'ibpm' and will be created in the 'build' directory.

The code reads an input file to determine the geometry, and a sample input
file (for a cylinder) is contained in 'examples/cylinder.geom'.

To run the code for this example:
	cd examples
	../build/ibpm -geom cylinder.geom

This will initialize the solver with a zero initial condition, and evolve the
flow for 250 timesteps, writing binary 'restart' files (e.g. ibpm00100.bin)
and ASCII files readable by the Tecplot plotting software (ibpm00100.plt).
Lift and drag forces are written to the file ibpm.force, and the command
executed is written to a file ibpm.cmd (so the same run can be recreated
later).

The default options (numbers of gridpoints, names of output files, etc) can be
changed by command line arguments. To see the available options:
	../build/ibpm -h


Installation
============

Requirements:
	C++ compiler

	FFTW library, version 3
		http://www.fftw.org/

	Doxygen (to build documentation)
		http://www.stack.nl/~dimitri/doxygen/


Building the library and executables:

The default configuration is to compile the code with the GCC compiler, with
the FFTW library in a default location known to the compiler (e.g.
/usr/local/lib). If this is acceptable, then to build the library and
executables, all you need to do is type

	make

from the root directory of the distribution (we will call this <ibpm>). The
library and command-line tools will be generated in the 'build' directory.

To customize the build process for your system, make a copy of the file
'config/make.inc.gcc' and modify it as needed (this file is included by other
Makefiles, and the format is pretty self-explanatory). Save the new file as
<ibpm>/config/make.inc and type 'make' from the root <ibpm> directory, as
before.

Building and running the automated tests:
	make test

Building the documentation:
	make doc


Documentation
=============

The documentation consists of a user manual (in doc/ibpm_manual.tex), which
describes the main functionality of the code, as well as detailed
documentation automatically generated by Doxygen.

The user manual is the best starting place for new users, and explains the
format of the geometry files, among other things.

The default configuration for the automatically generated documentation is to
generate both html and LaTeX documentation, but this can be changed by
modifying the file 'doc/Doxyfile'. Once the documentation has been built, the
html documentation (usually the most useful) can be found in
'doc/html/index.html', and the LaTeX documentation can be found in
'doc/latex/refman.tex'.


References
==========
K. Taira and T. Colonius. The immersed boundary method: A projection approach. J. Comput. Phys., 225(2):2118-2137, August 2007.

T. Colonius and K. Taira. A fast immersed boundary method using a nullspace approach and multi-domain far-field boundary conditions. Comp. Meth. Appl. Mech. Eng., 197(25-28):2131–46, 2008.