summaryrefslogtreecommitdiff
path: root/get_energy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'get_energy.cpp')
-rw-r--r--get_energy.cpp23
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;
}