# channelflow.org

### Site Tools

docs:classes:flowfield

This is an old revision of the document!

# FlowField

The FlowField class represents vector-valued fields of the form and also scalar and tensor fields with appropriate changes in the dimensionality of the coefficients. The barred T function is a Chebyshev polynomial scaled to fit the domain y ∈ [a,b]. 1) The spatial domain of a FlowField is Ω = [0,Lx] x [a,b] x [0,Lz], with periodicity in x and z.

In channelflow programming, fields such as velocity, pressure, stress tensors, vorticity, etc. are stored as variables of type FlowField. The main functionality of the FlowField class is

• algebraic and differential operations, +/-, +=, ∇, ∇2, norms, inner products, etc.
• transforming back and forth between spectral coefficients and gridpoint values • serving as input to DNS algorithms, which map velocity fields forward in time: u(x,t) → u(x, t+Δt)
• setting and accessing scpetral coefficients and gridpoint values
• reading and writing to disk

## Constructors / Initialization

FlowFields are initialized with gridsize and cellsize parameters, read from disk, or assigned from computations. Examples:

   FlowField f;                                   // null value, 0-d field on 0x0x0 grid
FlowField u(Nx, Ny, Nz, Nd, Lx, Lz, a, b);     // Nd-dim field on Nx x Ny x Nz grid, [0,Lx]x[a,b]x[0,Lz]
FlowField g(Nx, Ny, Nz, Nd, 2, Lx, Lz, a, b);  // Nd-dim 2-tensor
FlowField h("h");                              // read from file "h.ff"
FlowField omega = curl(u);

## Algebraic and differential operators

Assume f,g,h etc. are FlowField variables with compatible cell and grid sizes. Examples of possible operations

   f += g;                  // f = f + g
f = curl(g);
f = lapl(g);
f = div(g);
f = diff(g, j, n);       // f_i  = d^n g_i /dx_j
f = grad(g);             // f_ij = dg_i / dx_j
f = cross(g,h);
f *= 2.7;                // f = 2.7*f

Real c = L2IP(f,g);      // L2 inner product of f,g
Real n = L2Norm(u);
Real D = dissipation(u);
Real E = energy(u);
Real I = wallshear(u);

The latter functions are defined as ## Transforms and data access

FlowField transforms are a complicated subject –there are transforms in x,y, and z and implicit symmetries in complex spectral coefficients due to the real-valuedness of the field, for instance. This section outlines the bare essentials of transforms and data access methods. For further details see the Channelflow User Guide.

1)  