Channelflow 1.2.2

Channelflow is a direct numerical simulator for incompressible Navier-Stokes channel flow, written in C++.
Channelflow is a direct numerical simulator for incompressible Navier-Stokes channel flow, written in C++.

Channelflow application simulates fluid flow in a rectangular box, with no-slip boundary conditions on the upper and lower surfaces of the box, and periodic boundary conditions in the stream and spanwise directions.

Channelflow uses a spectral discretization in spatial directions (Fourier x Chebyshev x Fourier) and finite-differencing in time, on primitive variables (3D velocity and pressure).

Here are some key features of "Channelflow":

Flexible object-oriented programming

· Channelflow is written as a C++ class library. The classes act as building blocks for expressing particular channel-flow simulations and associated data analysis, and underneath these, the mathematical structures needed to perform the calculations. Channelflow provides classes for representing Chebyshev expansions, Fourier x Chebyshev x Fourier expansions, DNS algorithms, and a number of differential equations. Each class has automatic memory management and a set of high-level elemental operations, so that auxiliary data fields and computations can be added to a program with a few lines of code.
· In channelflow, even the DNS algorithm is an object. This greatly increases the flexibility of DNS computations. For example, a DNS can be reparameterized and restarted multiple times within a single program, multiple independent DNS computations can run side-by-side within the same program, and DNS computations can run as small components within a larger, more complex computations. As a result, comparative calculations that formerly required coordination of several programs through shell scripts and saved data files can be done within single channelflow program.

Organized, readable library code

· Channelflow uses object-oriented programming and data abstraction to maximize the organization and readability of its library code. Channelflow defines about a dozen C++ classes that act as abstract data types for the major components of spectral channel-flow simulation (diagram of class libraries). Each class forms a level of abstraction in which a set of mathematical operations are performed in terms of lower-level abstractions, from time-stepping equations at the top to linear algebra at the bottom. The channelflow library code thus naturally reflects mathematical algorithm, both in overall structure and line-by-line. One can look at any part of the code and quickly understand what role it plays in the overall algorithm. One can learn the algorithm in stages, either top-down or bottom-up, by focusing on one level of abstraction at a time.

· Moderately general: Channelflow provides elemental algebraic and differential operators for its mathematical classes, so that most quantities of interest can be calculated with a few lines of code. However, Channelflow is not general regarding geometry: it works only with rectangular geometries with two periodic and one nonhomogeneous direction.
· Configurable: For example, channelflow's DNS algorithms implement a variety of time-stepping schemes, external constraints, and methods of calculating nonlinear terms.
· Extendable: The library code is structured to take small-scale extensions such as additional time-stepping schemes. Channelflow's object-oriented, modular structure allows channelflow simulations to be embedded as small components within larger, more complex computations.
· Verifiable: The source distribution contains a test suite that verifies the correct behavior of major classes.
· Documented: The Channelflow User's Manual contains annotated program examples, discussion of design, an overview of the main classes from a user's perspective, and a review of the mathematical algorithm.
· Supported: Channelflow has a support website. with public CVS access, support-request and bug-tracking systems, etc.
· Fast: Channelflow is as fast as comparable Fortran codes

What's New in This Release:

· The documentation was improved.
· The dependency on Octave was removed.
· Minor bugs were fixed.

last updated on:
April 27th, 2008, 10:50 GMT
price:
FREE!
developed by:
John F. Gibson
homepage:
www.nongnu.org
license type:
GPL (GNU General Public License) 
category:
ROOT \ Science

FREE!

In a hurry? Add it to your Download Basket!

user rating 18

3.3/5
 

0/5

Rate it!

Add your review!

SUBMIT