diff options
Diffstat (limited to 'get_energy.cpp')
-rw-r--r-- | get_energy.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/get_energy.cpp b/get_energy.cpp index a388e0c..c33c04e 100644 --- a/get_energy.cpp +++ b/get_energy.cpp @@ -50,24 +50,27 @@ int main(int argc, char* argv[]) { unsigned n = pow(2, log2n); - Real Δτ = τₘₐₓ / M_PI / n; - Real Δω = M_PI / τₘₐₓ; + Real Δτ = (1 + τ₀ / 2) * τₘₐₓ / M_PI / n; + Real Δω = M_PI / ((1 + τ₀ / 2) * τₘₐₓ); Real y = y₀; - FourierTransform fft(n, Δω, Δτ, FFTW_ESTIMATE); + FourierTransform fft(n, Δω, Δτ); - while (y += Δy, y <= yₘₐₓ) { - std::vector<Real> C(2 * n); - std::vector<Real> R(2 * n); + std::vector<Real> C(2 * n); + std::vector<Real> R(2 * n); + while (y += Δy, y <= yₘₐₓ) { std::ifstream cfile(fourierFile("C", p, s, λ, τ₀, y, log2n, τₘₐₓ), std::ios::binary); if (cfile.is_open()) { - cfile.read((char*)(C.data()), C.size() * sizeof(Real)); + cfile.read((char*)(C.data()), (C.size() / 2) * sizeof(Real)); cfile.close(); + for (unsigned i = 1; i < n; i++) { + C[2 * n - i] = C[i]; + } std::ifstream rfile(fourierFile("R", p, s, λ, τ₀, y, log2n, τₘₐₓ), std::ios::binary); - rfile.read((char*)(R.data()), R.size() * sizeof(Real)); + rfile.read((char*)(R.data()), (R.size() / 2) * sizeof(Real)); rfile.close(); Real e = energy(C, R, p, s, λ, y, Δτ); @@ -75,9 +78,7 @@ int main(int argc, char* argv[]) { std::vector<Complex> Ct = fft.fourier(C); std::vector<Complex> Rt = fft.fourier(R); - auto [RddfCt, dfCt] = RddfCtdfCt(fft, C, R, p, s, λ); - - Real z = ((std::conj(Rt[0]) + pow(y, 2) * (RddfCt[0] * Ct[0] + dfCt[0] * std::conj(Rt[0]))) / Ct[0]).real(); + Real z = estimateZ(fft, C, Ct, R, Rt, p, s, λ, τ₀, y); std::cout << y << " " << e << " " << Ct[0].real() << " " << z << std::endl; } |