# Channelflow 1.2.2

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

- LICENSE TYPE:
- GPL (GNU General Public License)
- USER RATING:
- DEVELOPED BY:
**John F. Gibson**- HOMEPAGE:
- www.nongnu.org
- CATEGORY:
- ROOT \ Science

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).

· 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.

· 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

· The documentation was improved.

· The dependency on Octave was removed.

· Minor bugs were fixed.

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

#### Add your review!

SUBMIT