diff options
Diffstat (limited to 'src/navier-stokes.c')
-rw-r--r-- | src/navier-stokes.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/navier-stokes.c b/src/navier-stokes.c index 755e829..6387fcf 100644 --- a/src/navier-stokes.c +++ b/src/navier-stokes.c @@ -1,3 +1,4 @@ +#include "constants.cpp" #include "io.h" #include "navier-stokes.h" #include "statistics.h" @@ -18,6 +19,7 @@ int uk( _Complex double* u0, _Complex double* g, bool irreversible, + unsigned int algorithm, uint64_t print_freq, uint64_t starting_time, unsigned int nthreads, @@ -51,7 +53,11 @@ int uk( // iterate for(t=starting_time;nsteps==0 || t<starting_time+nsteps;t++){ - ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + if(algorithm==ALGORITHM_RK2){ + ns_step_rk2(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, irreversible); + } else { + ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + } if(t%print_freq==0){ fprintf(stderr,"%lu % .8e ",t,t*delta); @@ -91,6 +97,7 @@ int eea( _Complex double* u0, _Complex double* g, bool irreversible, + unsigned int algorithm, uint64_t print_freq, uint64_t starting_time, unsigned int nthreads, @@ -127,7 +134,11 @@ int eea( // iterate for(t=starting_time;nsteps==0 || t<starting_time+nsteps;t++){ - ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + if(algorithm==ALGORITHM_RK2){ + ns_step_rk2(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, irreversible); + } else { + ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + } energy=compute_energy(u, K1, K2); alpha=compute_alpha(u, K1, K2, g, L); @@ -196,6 +207,7 @@ int quiet( _Complex double* u0, _Complex double* g, bool irreversible, + unsigned int algorithm, unsigned int nthreads, FILE* savefile ){ @@ -214,7 +226,11 @@ int quiet( // iterate for(t=starting_time;nsteps==0 || t<starting_time+nsteps;t++){ - ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + if(algorithm==ALGORITHM_RK2){ + ns_step_rk2(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, irreversible); + } else { + ns_step_rk4(u, K1, K2, N1, N2, nu, delta, L, g, fft1, fft2, ifft, tmp1, tmp2, tmp3, irreversible); + } } // save final entry to savefile |