Compute energy
This commit is contained in:
@@ -68,6 +68,55 @@ int uk(
|
||||
return(0);
|
||||
}
|
||||
|
||||
// compute the energy as a function of time
|
||||
int energy(
|
||||
int K1,
|
||||
int K2,
|
||||
int N1,
|
||||
int N2,
|
||||
unsigned int nsteps,
|
||||
double nu,
|
||||
double delta,
|
||||
_Complex double (*g)(int,int),
|
||||
unsigned int print_freq,
|
||||
unsigned int nthreads
|
||||
){
|
||||
_Complex double* u;
|
||||
_Complex double* tmp1;
|
||||
_Complex double* tmp2;
|
||||
_Complex double* tmp3;
|
||||
unsigned int t;
|
||||
fft_vect fft1;
|
||||
fft_vect fft2;
|
||||
fft_vect ifft;
|
||||
int kx,ky;
|
||||
double energy;
|
||||
|
||||
ns_init_tmps(&u, &tmp1, &tmp2, &tmp3, &fft1, &fft2, &ifft, K1, K2, N1, N2, nthreads);
|
||||
ns_init_u(u, K1, K2);
|
||||
|
||||
// iterate
|
||||
for(t=0;t<nsteps;t++){
|
||||
ins_step(u, K1, K2, N1, N2, nu, delta, g, fft1, fft2, ifft, tmp1, tmp2, tmp3);
|
||||
|
||||
if(t%print_freq==0){
|
||||
|
||||
energy=0.;
|
||||
for(kx=-K1;kx<=K1;kx++){
|
||||
for (ky=-K2;ky<=K2;ky++){
|
||||
energy+=__real__ (u[klookup(kx,ky,2*K1+1,2*K2+1)]*conj(u[klookup(kx,ky,2*K1+1,2*K2+1)]));
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr,"%d % .8e % .8e\n",t,t*delta, energy);
|
||||
printf("%8d % .15e % .15e\n",t,t*delta,energy);
|
||||
}
|
||||
}
|
||||
|
||||
ns_free_tmps(u, tmp1, tmp2, tmp3, fft1, fft2, ifft);
|
||||
return(0);
|
||||
}
|
||||
|
||||
// compute enstrophy as a function of time in the I-NS equation
|
||||
int enstrophy(
|
||||
int K1,
|
||||
|
||||
Reference in New Issue
Block a user