From d4254c6b8e6d4a94a5448e771d8a0620f266cf05 Mon Sep 17 00:00:00 2001 From: Ian Jauslin Date: Thu, 26 May 2022 15:05:30 -0400 Subject: choose initial condition on cli --- src/navier-stokes.c | 70 ++++++++++++++--------------------------------------- 1 file changed, 18 insertions(+), 52 deletions(-) (limited to 'src/navier-stokes.c') diff --git a/src/navier-stokes.c b/src/navier-stokes.c index 798c86a..c52b810 100644 --- a/src/navier-stokes.c +++ b/src/navier-stokes.c @@ -12,6 +12,7 @@ int uk( double nu, double delta, double L, + _Complex double* u0, _Complex double (*g)(int,int), unsigned int print_freq, unsigned int nthreads @@ -27,7 +28,8 @@ int uk( int kx,ky; ns_init_tmps(&u, &tmp1, &tmp2, &tmp3, &fft1, &fft2, &ifft, K1, K2, N1, N2, nthreads); - ns_init_u(u, K1, K2); + // copy initial condition + copy_u(u, u0, K1, K2); // print column headers printf("# 1:i 2:t "); @@ -77,6 +79,7 @@ int energy( double nu, double delta, double L, + _Complex double* u0, _Complex double (*g)(int,int), unsigned int print_freq, unsigned int nthreads @@ -93,7 +96,8 @@ int energy( double energy; ns_init_tmps(&u, &tmp1, &tmp2, &tmp3, &fft1, &fft2, &ifft, K1, K2, N1, N2, nthreads); - ns_init_u(u, K1, K2); + // copy initial condition + copy_u(u, u0, K1, K2); // iterate for(t=0;t0){ - double x=-0.5+((double) rand())/RAND_MAX; - double y=-0.5+((double) rand())/RAND_MAX; - u[klookup(kx,ky,2*K1+1,2*K2+1)]=x+y*I; - u[klookup(-kx,-ky,2*K1+1,2*K2+1)]=conj(u[klookup(kx,ky,2*K1+1,2*K2+1)]); - } - } - } - - // rescale to match with Gallavotti's initialization - double rescale; - rescale=0; - for(kx=-K1;kx<=K1;kx++){ - for(ky=-K2;ky<=K2;ky++){ - rescale=rescale+((__real__ u[klookup(kx,ky,2*K1+1,2*K2+1)])*(__real__ u[klookup(kx,ky,2*K1+1,2*K2+1)])+(__imag__ u[klookup(kx,ky,2*K1+1,2*K2+1)])*(__imag__ u[klookup(kx,ky,2*K1+1,2*K2+1)]))*(kx*kx+ky*ky); - } - } - for(kx=-K1;kx<=K1;kx++){ - for(ky=-K2;ky<=K2;ky++){ - u[klookup(kx,ky,2*K1+1,2*K2+1)]=u[klookup(kx,ky,2*K1+1,2*K2+1)]*sqrt(1.54511597324389e+02/rescale); - } - } - */ - - - /* - // constant init - for(kx=-K1;kx<=K1;kx++){ - for(ky=-K2;ky<=K2;ky++){ - u[klookup(kx,ky,2*K1+1,2*K2+1)]=1.; - } - } - */ + int i; - // gaussian init - for(kx=-K1;kx<=K1;kx++){ - for(ky=-K2;ky<=K2;ky++){ - u[klookup(kx,ky,2*K1+1,2*K2+1)]=(kx*kx+ky*ky)*exp(-(kx*kx+ky*ky)); - } + for(i=0;i<(2*K1+1)*(2*K2+1);i++){ + u[i]=u0[i]; } return 0; -- cgit v1.2.3-54-g00ecf