In the spirit of documenting what I learn, to avoid having to search for it and re-learn it when I need it again, I want to make note of a nice function I found in NumPy that allows piecewise function definitions. The function is called… piecewise() (what a surprise!).

I use Python/NumPy/Matplotlib for post-processing and presenting my CFD results. Among the things I need to do is to reconstruct some of the quantities that go into the turbulence models (e.g. variable model coefficients, etc.), some of which have a piecewise definition depending on some parameter (e.g. Lumley flatness parameter, A), such as: While previously I would have used a selection statement like the following (where A is an array of floats corresponding to each node in a grid, and fA is some coefficient):

```def fA(A):
fA = np.zeros(np.shape(A))
for i,a in enumerate(A):
if a<0.05:
fA[i]=np.sqrt(a/14.)
elif a<0.7:
fA[i]=a/0.8367
else:
fA[i]=sqrt(a)
return(fA)
```

I now write something like this:

```fA= np.piecewise(A,[A<0.05,(A<0.7) & (A>=0.05)],
[lambda x: np.sqrt(x/14.),
lambda x: x/0.8367,
lambda x: np.sqrt(x)])
```

The basic format of the piecewise statement, ignoring optional arguments, is `numpy.piecewise(x, condlist, funclist) `, where x is a NumPy ndarray, ` condlist ` is the list of boolean arrays upon which the piecwise function defenition depends, and ` funclist ` is a list of functions corresponding to each of the boolean conditons. The number of functions in ` funclist ` must be the same as the number of conditions, or one more, as in my example, to provide a default case to be used when all the conditions are false.