# channelflow.org

### Site Tools

gtspring2009:schedule:chflow1

# Differences

This shows you the differences between two versions of the page.

 gtspring2009:schedule:chflow1 [2009/01/29 12:44]gibson gtspring2009:schedule:chflow1 [2010/02/02 07:55] Line 1: Line 1: - ====== 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 - \\ - \\ - //​this changes your workflow...// ​ - * 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, ... - \\ - \\ - //...and changes your analytic framework// - * 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 - - <​latex>​ - {\bf u}({\bf x},t) = \sum_{k_x k_y k_z} a_{k_x k_y k_z} T_{k_y}(y) \; e^{2 \pi i (k_x x / L_x + k_z z / L_z)} - ​ - - 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** - - <​latex>​ - {\bf u}_{total}({\bx x}, t) = {\bf u}({\bx x}, t) + y {\bf e}_x - ​ - - 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 ** [[doc:​tutorial|channelflow tutorial]]. //John Gibson 2009-01-29//​