gtspring2009:schedule:chflow1

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

- | </latex> | ||

- | |||

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

- | </latex> | ||

- | |||

- | 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// |

gtspring2009/schedule/chflow1.txt ยท Last modified: 2010/02/02 07:55 (external edit)