From 6c10f8069518ee5af604895336de108020bdc296 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 10 May 2023 19:29:49 -0400 Subject: README --- README.md | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..2b4e35f --- /dev/null +++ b/README.md @@ -0,0 +1,106 @@ +Nstrophy is a tool to solve the two-dimensional Navier-Stokes equation as well +as Gallavotti's reversible Navier-Stokes equation and compare them. + +**Nstrophy is under active development** + +# Building + +Compile Nstrophy with +```bash +make +``` +which will place a binary at `build/nstrophy`. + +The syntax for the execution of Nstrophy is +```bash +./build/nstrophy [-p parameters] [-s savefile] +``` + +Nstrophy is written in C. The Makefile uses the GNU C Compiler. + +Nstrophy depends on `fftw`: [https://fftw.org] + + +# Commands + +The available commands are + +* `enstrophy`: to compute the enstrophy, the parameter alpha and + alpha times the enstrophy. This command prints + `step_index time average_alpha average_enstrophy average_alphaxenstrophy alpha enstrophy alphaxenstrophy` + where the averages are running averages over `print_freq` steps. + +* `uk`: to compute the Fourier transform of the solution. + +* `quiet`: does not print anything, useful for debugging. + + +# Parameters + +The parameters can be specified using the `-p` flag. The parameter string +should be a `;` sperated list of `key=value` pairs. The possible keys are + +* `equation`: either `irreverisible` (default) or `reversible`. + +* `K` (int, default 16): cutoff in momentum space: -K<=k_i<=K + +* `K1` (int, default `K`): cutoff in momentum space for the x component: + -K<=k_x<=K + +* `K2` (int, default `K`): cutoff in momentum space for the y component: + -K<=k_y<=K + +* `N` (int, default smallest power of 2 that is larger than 3`K`): size of fft + vectors: must be at least 3 times `K` to avoid aliasing. + +* `N1` (int, default `N`): same as `N` but only for x component. + +* `N2` (int, default `N`): same as `N` but only for y component. + +* `nsteps` (long int, default 10000000): number of steps in the computation. + Set to 0 to keep on going forever. + +* `nu` (double, default 0.00048828125): viscosity. + +* `delta` (double, default 0.0001220703125): step size. + +* `L` (double, default 2pi): size of box. + +* `print_freq` (long int, default 1000): only print every `print_freq` steps. + +* `starting_time` (long int, default 0): start the computation at this step. + +* `driving`: either `zero` for no driving, `test` (default) for a testing + driving force or `file:` or `file_txt:` to read the + driving force from a file. When using `file:` the file should be + binary, whereas with `file_txt:` it should be plaintext. The binary + file format is `(double)(double)` for each entry of the driving force, + excluding kx<0 and kx=0&&ky<=0. The plaintext file format is + `kx ky real_part imag_part`. + +* `init`: either `random` for a random initialization, `gaussian` (default) for + a Gaussian initial condition or `file:` or `file_txt:` to + read the driving force from a file. When using `file:` the file + should be binary, whereas with `file_txt:` it should be plaintext. + The binary file format is `(double)(double)` for each entry of the driving + force, excluding kx<0 and kx=0&&ky<=0. The plaintext file format is + `kx ky real_part imag_part`. + +* `init_en` (double, default 1.54511597324389e+02): initial value of the energy if + `equation=irreversible` or of the enstrophy if `equation=reversible`. + +* `random_seed` (int, default ): seed for random initialization. + +* `algorithm`: either `RK4` for Runge-Kutta 4, or `RK2` for Runge-Kutta 2. + + +# Interrupting/resuming the computation + +The computation can be interrupted by sending Nstrophy the `SIGINT` signal +(e.g. by pressing `Ctrl-C`.) When Nstrophy receives the `SIGINT` signal, it +finishes its current step and writes the value of uk, either to `savefile` if +such a file was specified on the command line (using the `-s` flag), or to +`stderr`. In addition, when a `savefile` is specified it writes the command +that needs to be used to resume the computation (which essentially just sets +the appropriate `starting_time` and `init:file:` parameters. The data +written to the `savefile` is binary. -- cgit v1.2.3-54-g00ecf