From 424a01ec77cabdabc6cd17ae76619dbd0e8e2906 Mon Sep 17 00:00:00 2001 From: Cristian C Lalescu <Cristian.Lalescu@ds.mpg.de> Date: Tue, 29 May 2018 21:41:14 +0200 Subject: [PATCH] tweak spectrum computation --- bfps/DNS.py | 17 ++++++----------- bfps/NavierStokes.py | 17 ++++++----------- bfps/test/test_Parseval.py | 6 ++++-- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/bfps/DNS.py b/bfps/DNS.py index 28291be5..538285e5 100644 --- a/bfps/DNS.py +++ b/bfps/DNS.py @@ -276,23 +276,18 @@ class DNS(_code): self.parameters['niter_stat']* (np.arange(ii0, ii1+1).astype(np.float))) phi_ij = data_file['statistics/spectra/velocity_velocity'][ii0:ii1+1] - discrete_Fourier_prefactor = 1. / (self.parameters['dkx']* - self.parameters['dky']* - self.parameters['dkz']) - pp_file['R_ij(t)'] = self.statistics['dk']*np.sum(phi_ij, axis = 1)*discrete_Fourier_prefactor - energy_tk = discrete_Fourier_prefactor*( + pp_file['R_ij(t)'] = np.sum(phi_ij, axis = 1) + energy_tk = ( phi_ij[:, :, 0, 0] + phi_ij[:, :, 1, 1] + phi_ij[:, :, 2, 2])/2 - pp_file['energy(t)'] = (self.statistics['dk'] * - np.sum(energy_tk, axis = 1)) + pp_file['energy(t)'] = np.sum(energy_tk, axis = 1) pp_file['energy(k)'] = np.mean(energy_tk, axis = 0) - enstrophy_tk = discrete_Fourier_prefactor*( + enstrophy_tk = ( data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 0, 0] + data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 1, 1] + data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 2, 2])/2 - pp_file['enstrophy(t)'] = (self.statistics['dk'] * - np.sum(enstrophy_tk, axis = 1)) + pp_file['enstrophy(t)'] = np.sum(enstrophy_tk, axis = 1) pp_file['enstrophy(k)'] = np.mean(enstrophy_tk, axis = 0) pp_file['vel_max(t)'] = data_file['statistics/moments/velocity'][ii0:ii1+1, 9, 3] pp_file['renergy(t)'] = data_file['statistics/moments/velocity'][ii0:ii1+1, 2, 3]/2 @@ -373,7 +368,7 @@ class DNS(_code): self.statistics['etaK' + suffix]) if self.parameters['dealias_type'] == 1: self.statistics['kMeta' + suffix] *= 0.8 - self.statistics['Lint'] = ((self.statistics['dk']*np.pi / + self.statistics['Lint'] = ((np.pi / (2*self.statistics['Uint']**2)) * np.nansum(self.statistics['energy(k)'] / self.statistics['kshell'])) diff --git a/bfps/NavierStokes.py b/bfps/NavierStokes.py index 62a2263e..d158f5b2 100644 --- a/bfps/NavierStokes.py +++ b/bfps/NavierStokes.py @@ -627,23 +627,18 @@ class NavierStokes(_fluid_particle_base): self.parameters['niter_stat']* (np.arange(ii0, ii1+1).astype(np.float))) phi_ij = data_file['statistics/spectra/velocity_velocity'][ii0:ii1+1] - discrete_Fourier_prefactor = 1. / (self.parameters['dkx']* - self.parameters['dky']* - self.parameters['dkz']) - pp_file['R_ij(t)'] = self.statistics['dk']*np.sum(phi_ij, axis = 1)*discrete_Fourier_prefactor - energy_tk = discrete_Fourier_prefactor*( + pp_file['R_ij(t)'] = np.sum(phi_ij, axis = 1) + energy_tk = ( phi_ij[:, :, 0, 0] + phi_ij[:, :, 1, 1] + phi_ij[:, :, 2, 2])/2 - pp_file['energy(t)'] = (self.statistics['dk'] * - np.sum(energy_tk, axis = 1)) + pp_file['energy(t)'] = np.sum(energy_tk, axis = 1) pp_file['energy(k)'] = np.mean(energy_tk, axis = 0) - enstrophy_tk = discrete_Fourier_prefactor*( + enstrophy_tk = ( data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 0, 0] + data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 1, 1] + data_file['statistics/spectra/vorticity_vorticity'][ii0:ii1+1, :, 2, 2])/2 - pp_file['enstrophy(t)'] = (self.statistics['dk'] * - np.sum(enstrophy_tk, axis = 1)) + pp_file['enstrophy(t)'] = np.sum(enstrophy_tk, axis = 1) pp_file['enstrophy(k)'] = np.mean(enstrophy_tk, axis = 0) pp_file['vel_max(t)'] = data_file['statistics/moments/velocity'][ii0:ii1+1, 9, 3] pp_file['renergy(t)'] = data_file['statistics/moments/velocity'][ii0:ii1+1, 2, 3]/2 @@ -727,7 +722,7 @@ class NavierStokes(_fluid_particle_base): self.statistics['etaK' + suffix]) if self.parameters['dealias_type'] == 1: self.statistics['kMeta' + suffix] *= 0.8 - self.statistics['Lint'] = ((self.statistics['dk']*np.pi / + self.statistics['Lint'] = ((np.pi / (2*self.statistics['Uint']**2)) * np.nansum(self.statistics['energy(k)'] / self.statistics['kshell'])) diff --git a/bfps/test/test_Parseval.py b/bfps/test/test_Parseval.py index b2afdbee..80a16d6a 100644 --- a/bfps/test/test_Parseval.py +++ b/bfps/test/test_Parseval.py @@ -31,13 +31,15 @@ def main(): energyk = c.statistics['energy(k)'] nshell = c.get_data_file()['kspace/nshell'].value renergy = np.mean(c.statistics['renergy(t)']) - print(renergy, np.sum(energyk[:-2]) * (c.parameters['dkx']*c.parameters['dky']*c.parameters['dkz'])) + print(renergy, np.sum(energyk[:-2])) print(c.parameters['dkx'], c.parameters['dky'], c.parameters['dkz']) + energyk_alt = (energyk / nshell)*(4*np.pi*c.statistics['kshell']**2) + print(renergy, np.sum(energyk_alt[:-2])*c.statistics['dk'] / (c.parameters['dkx']*c.parameters['dky']*c.parameters['dkz'])) f = plt.figure() a = f.add_subplot(111) a.plot(c.statistics['kshell'], energyk, label = 'unnormalized') - a.plot(c.statistics['kshell'], (energyk / nshell)*(4*np.pi*c.statistics['kshell']**2), label = 'normalized') + a.plot(c.statistics['kshell'], energyk_alt, label = 'normalized') #a.set_yscale('log') a.set_xscale('log') a.legend(loc = 'best') -- GitLab