diff --git a/ExampleCodes/FFT/EnergySpectrum/main.cpp b/ExampleCodes/FFT/EnergySpectrum/main.cpp index bcb7759f..bb380250 100644 --- a/ExampleCodes/FFT/EnergySpectrum/main.cpp +++ b/ExampleCodes/FFT/EnergySpectrum/main.cpp @@ -22,6 +22,8 @@ int main (int argc, char* argv[]) cMultiFab cx, cy, cz; { + // Note that the complex Hermitian output array Y has (nx/2+1,ny,nz) elements. + // Y[nx-i,j,k] = Y[i,j,k]* FFT::R2C fft(geom.Domain()); auto const& [ba, dm] = fft.getSpectralDataLayout(); cx.define(ba,dm,1,0); @@ -55,6 +57,12 @@ int main (int argc, char* argv[]) Real value = amrex::norm(cxa[b](i,j,k)) + amrex::norm(cya[b](i,j,k)) + amrex::norm(cza[b](i,j,k)); + // Account for Hermitian symmetry in x-direction + // Hermitian symmetry Y[nx-i,j,k] = Y[i,j,k]* + if ((i > 0) && (2*i != nx)) { + // Multiply by 2 because we have +ki and -ki + value *= Real(2.0); + } HostDevice::Atomic::Add(pke+di, value); } });