FlowSieve
3.4.0
FlowSieve Coarse-Graining Documentation
|
The main executables for apply a Helmholtz decomposition are toroidal_projection
and potential_projection
, which respectively compute the streamfunction (giving the divergence-free velocity) and potential (giving the irrotational velocity) fields.
This is done using a sparse least-squares solver using the ALGLIB library.
The main variables controlling the convergence are the maximum number of iterations and the target relative tolerance. If the maximum number of iterations is reached, or if the error goes below the tolerance, the solver halts and outputs the computed terms.
In the case of high-resolution velocities, two logistical concerns arise.
A very practical work-around for this problem is to do coarsen/refine approach. For example, suppose you have global data at 1/20 degree resolution. Helmholtz-decomposition that grid directly would be very inefficient and computationally expensive. Instead, coarsen the data to multiple lower-resolution grids: 1 degree, 1/4 degree, 1/12 degree, for instance. Begin by first decomposing the 1 degree data, the result of which can be used as a seed to speed up the 1/4 degree decomposition. The 1/4 can then be fed into the 1/12 degree, and so on.
These steps can be summarized as:
Two auxiliary executables are provided for this purpose.
coarsen_grid
takes in velocity data and produces another data file on a coarse lat/lon grid (user specifies the coarsening factor as a command-line input)refine_Helmholtz_seed
takes in the Helmholtz outputs from one grid and interpolates (linear interpolation) onto a finer grid. The result is then output to a file that can be read in by the main Helmholtz decomposition routines.