#ifndef SAVE_RESULTS_H #define SAVE_RESULTS_H #include "nufi/grids.h" #include #include #include class NuFISolver; struct RhoESnapshot { unsigned int it = 0; double time = 0.0; std::vector x_eval; std::vector rho; std::vector E; double int_E_sqr = 0; }; RhoESnapshot compute_rho_E_snapshot(const NuFISolver &solver, unsigned int n, std::vector> &grid_struct, std::vector> &phi_history, unsigned int Nx_out, unsigned int Nv = Parameters::NV); void flush_rho_E_history(std::vector &history, const std::string &dir); struct DiagnosticsSnapshot { unsigned int Nx = 0; unsigned int Nv = 0; std::vector x_eval; std::vector v_eval; std::vector f; std::vector rho; std::vector E; }; DiagnosticsSnapshot compute_diagnostics(const NuFISolver &solver, unsigned int n, std::vector> &grid_struct, std::vector> &phi_history, unsigned int Nx_out, unsigned int Nv_out); void save_f(const DiagnosticsSnapshot &snap, const std::string &filepath); void save_rho(const DiagnosticsSnapshot &snap, const std::string &filepath); void save_Efield(const DiagnosticsSnapshot &snap, const std::string &filepath); double compute_int_E_squared(const std::vector &E, double Lx); void save_time_series(const std::vector &t, const std::vector &values, const std::string &filepath); #endif