Channelflow 1.0.0 review
DownloadChannelflow is a direct numerical simulator for incompressible Navier-Stokes channel flow, written in C++. Channelflow application
|
|
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:
Minor bugfixes.
Code cleanup.
Documentation cleanup.
Channelflow 1.0.0 search tags