docs | ||
src | ||
Makefile | ||
README.md |
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
make
which will place a binary at build/nstrophy
.
The syntax for the execution of Nstrophy is
./build/nstrophy [-p parameters] [-s savefile] <command>
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 printsstep_index time average_alpha average_enstrophy average_alphaxenstrophy alpha enstrophy alphaxenstrophy
where the averages are running averages overprint_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
: eitherirreverisible
(default) orreversible
. -
K
(int, default 16): cutoff in momentum space: -K<=k_i<=K -
K1
(int, defaultK
): cutoff in momentum space for the x component: -K<=k_x<=K -
K2
(int, defaultK
): cutoff in momentum space for the y component: -K<=k_y<=K -
N
(int, default smallest power of 2 that is larger than 3K
): size of fft vectors: must be at least 3 timesK
to avoid aliasing. -
N1
(int, defaultN
): same asN
but only for x component. -
N2
(int, defaultN
): same asN
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 everyprint_freq
steps. -
starting_time
(long int, default 0): start the computation at this step. -
driving
: eitherzero
for no driving,test
(default) for a testing driving force orfile:<filename>
orfile_txt:<filename>
to read the driving force from a file. When usingfile:<filename>
the file should be binary, whereas withfile_txt:<filename>
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 iskx ky real_part imag_part
. -
init
: eitherrandom
for a random initialization,gaussian
(default) for a Gaussian initial condition orfile:<filename>
orfile_txt:<filename>
to read the driving force from a file. When usingfile:<filename>
the file should be binary, whereas withfile_txt:<filename>
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 iskx ky real_part imag_part
. -
init_en
(double, default 1.54511597324389e+02): initial value of the energy ifequation=irreversible
or of the enstrophy ifequation=reversible
. -
random_seed
(int, default ): seed for random initialization. -
algorithm
: eitherRK4
for Runge-Kutta 4, orRK2
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:<savefile>
parameters. The data
written to the savefile
is binary.