Channelflow 1.0.0 review
DownloadChannelflow is a direct numerical simulator for incompressible NavierStokes channel flow, written in C++. Channelflow application


Channelflow is a direct numerical simulator for incompressible NavierStokes channel flow, written in C++.
Channelflow application simulates fluid flow in a rectangular box, with noslip 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 finitedifferencing in time, on primitive variables (3D velocity and pressure).
Here are some key features of "Channelflow":
Flexible objectoriented programming
Channelflow is written as a C++ class library. The classes act as building blocks for expressing particular channelflow 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 highlevel 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 sidebyside 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 objectoriented 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 channelflow simulation (diagram of class libraries). Each class forms a level of abstraction in which a set of mathematical operations are performed in terms of lowerlevel abstractions, from timestepping equations at the top to linear algebra at the bottom. The channelflow library code thus naturally reflects mathematical algorithm, both in overall structure and linebyline. 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 topdown or bottomup, 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 timestepping schemes, external constraints, and methods of calculating nonlinear terms.
Extendable: The library code is structured to take smallscale extensions such as additional timestepping schemes. Channelflow's objectoriented, 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, supportrequest and bugtracking systems, etc.
Fast: Channelflow is as fast as comparable Fortran codes
What's New in This Release:
Minor bugfixes.
Code cleanup.
Documentation cleanup.
Channelflow 1.0.0 keywords