# channelflow.org

### Site Tools

gtspring2009:schedule:chflow1

# Channelflow tutorial: using utility programs

## Background

### What is channelflow?

• set of C++ libraries for high-level programming
• set of command-line utility programs
• set of matlab scripts for visualization
• database of invariant solutions
• website with documentation, discussion forums

### Why is CFD a hassle?

• Navier-Stokes is a stiff, 3D, nonlinear, constrained PDE
• Integration algorithms are complex, tailored to geometry
• Turbulence has multiple scales, requires fine resolution
• > 10^5-d state space, > 1 MB for each data point
• Integration is computationally expensive

• integrate a flow and save velocity field to disk at regular intervals
• read saved data from disk for visualization, statistics, etc.
• run jobs on number crunchers (PACE), transfer files via scp, …

• can't represent du/dt = F(u) simply
• can't compute a 10^5 x 10^5 Jacobian matrix (even with sparse structure)
• hard to choose projections for state-space portraits

All this makes numerical analysis of fluid dynamics a hassle, compared to low-dimensional ODE systems.

Channelflow tries to lower the hassle factor by giving packaging important data structures and algorithms and giving them simple, flexible, high-level interfaces:

• in C++ classes, for writing your own fluids codes
• in predefined utility programs, for common calculations

We will discuss programming in channelflow another day.

Today is about using predefined channelflow utility programs to do calculations.

The utilities plus Matlab form a crude interactive system for CFD.

## Important concepts

### FlowField

FlowField : C++ class representing spectral expansion of scalar, vector, tensor fields FlowField class has a platform-independent binary file format that retains coefficients, geometrical parameters, and other state information. We will discuss FlowField as a C++ class later, when we cover programming with channelflow. For, now, just think of a FlowField as a velocity field stored as a binary file (file extension .ff).

Why not ASCII? Binary floating-point IO is exact and much more efficient than ASCII. Gives efficient, exactly invertible IO. Plus the ordering of multidimensional spectral coefficients with complex symmetries is tricky enough that ASCII is incomprehensible, too. However, if you want ASCII values of velocity at each gridpoint, there's a utility for conversion (field2ascii).

In channelflow utilities, velocity fields u(x,t) are differences from the laminar flow so that they have Dirichlet boundary conditions and form a vector space. The Matlab visualization scripts add the laminar flow back on by default.

Note: I moved the rest of this class tutorial into the channelflow tutorial. John Gibson 2009-01-29 