From 527365d62e8c770142c3c1065b5f973433bd60b2 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Wed, 26 Apr 2023 11:13:50 -0400 Subject: Implement RK2 --- src/navier-stokes.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- src/navier-stokes.h | 5 ++++- 2 files changed, 50 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/navier-stokes.c b/src/navier-stokes.c index ce07077..755e829 100644 --- a/src/navier-stokes.c +++ b/src/navier-stokes.c @@ -51,7 +51,7 @@ int uk( // iterate for(t=starting_time;nsteps==0 || t0 ? -K2 : 1);ky<=K2;ky++){ + tmp2[klookup_sym(kx,ky,K2)]=u[klookup_sym(kx,ky,K2)]+delta/2*tmp1[klookup_sym(kx,ky,K2)]; + } + } + // k2 + ns_rhs(tmp1, tmp2, K1, K2, N1, N2, nu, L, g, fft1, fft2, ifft, irreversible); + // add to output + for(kx=0;kx<=K1;kx++){ + for(ky=(kx>0 ? -K2 : 1);ky<=K2;ky++){ + u[klookup_sym(kx,ky,K2)]+=delta*tmp1[klookup_sym(kx,ky,K2)]; + } + } + + return(0); +} + // right side of Irreversible/Reversible Navier-Stokes equation int ns_rhs( _Complex double* out, diff --git a/src/navier-stokes.h b/src/navier-stokes.h index d12f908..77b4cdb 100644 --- a/src/navier-stokes.h +++ b/src/navier-stokes.h @@ -36,7 +36,10 @@ int ns_free_tmps( _Complex double* u, _Complex double* tmp1, _Complex double *tm int copy_u( _Complex double* u, _Complex double* u0, int K1, int K2); // next time step for Irreversible/reversible Navier-Stokes equation -int ns_step( _Complex double* u, int K1, int K2, int N1, int N2, double nu, double delta, double L, _Complex double* g, fft_vect fft1, fft_vect fft2,fft_vect ifft, _Complex double* tmp1, _Complex double *tmp2, _Complex double *tmp3, bool irreversible); +// RK4 +int ns_step_rk4( _Complex double* u, int K1, int K2, int N1, int N2, double nu, double delta, double L, _Complex double* g, fft_vect fft1, fft_vect fft2,fft_vect ifft, _Complex double* tmp1, _Complex double *tmp2, _Complex double *tmp3, bool irreversible); +// RK2 +int ns_step_rk2( _Complex double* u, int K1, int K2, int N1, int N2, double nu, double delta, double L, _Complex double* g, fft_vect fft1, fft_vect fft2,fft_vect ifft, _Complex double* tmp1, _Complex double *tmp2, bool irreversible); // right side of Irreversible/reversible Navier-Stokes equation int ns_rhs( _Complex double* out, _Complex double* u, int K1, int K2, int N1, int N2, double nu, double L, _Complex double* g, fft_vect fft1, fft_vect fft2, fft_vect ifft, bool irreversible); -- cgit v1.2.3-54-g00ecf