diff --git a/libnufi_lib.a b/libnufi_lib.a index e0677ec..be1c94e 100644 Binary files a/libnufi_lib.a and b/libnufi_lib.a differ diff --git a/nufi/parameters.h b/nufi/parameters.h index 82e0d5d..dc35759 100644 --- a/nufi/parameters.h +++ b/nufi/parameters.h @@ -35,7 +35,7 @@ constexpr double F0_FACTOR = 0.39894228040143267793994; // 1/sqrt(2pi) // NUFI options constexpr double DT = 1. / 10.; constexpr unsigned int TMAX = 100; -constexpr unsigned int REFINE_FREQUENCY = 3; +constexpr unsigned int REFINE_FREQUENCY = 1; // Plotting options constexpr int PLOT_FREQUENCY = 1; diff --git a/nufi/poisson_problem.h b/nufi/poisson_problem.h index 35a4404..2e5bc28 100644 --- a/nufi/poisson_problem.h +++ b/nufi/poisson_problem.h @@ -56,8 +56,12 @@ #include "nufi/cells.h" #include "nufi/grids.h" #include "nufi/parameters.h" +#include "nufi/save_results.h" #include "omp.h" +void save_space_vector(const std::vector &vals, + const std::string &filename, size_t it); + using namespace dealii; // =-=-=-=-= Poisson Solver =-=-=-=-= @@ -432,6 +436,13 @@ template void PoissonProblem::coarse_and_refine_grid(size_t it) { std::string grid_file_name = Parameters::PLOT_DIR + "grid_" + std::to_string(it); + // std::vector Ex = + // sample_electric_potential(Parameters::X_DOMAIN_LEFT, + // Parameters::X_DOMAIN_RIGHT, + // Parameters::PLOT_NX); + // + // save_space_vector(Ex, "Ex_after_coarsed", it); + save_grid_to_file(grid_file_name); } diff --git a/nufi/save_results.h b/nufi/save_results.h index 8bb7d53..73d9ce0 100644 --- a/nufi/save_results.h +++ b/nufi/save_results.h @@ -2,12 +2,13 @@ #define SAVE_RESULTS_H #include "nufi/grids.h" -#include "nufi/nufi_solver.h" #include "nufi/poisson_problem.h" #include #include #include +class NuFISolver; + void save_f(const NuFISolver &solver, unsigned int n, std::vector> &grid_struct, std::vector> &phi_history, unsigned int Nx_out, diff --git a/src/nufi_solver.cc b/src/nufi_solver.cc index 60cf187..e99acab 100644 --- a/src/nufi_solver.cc +++ b/src/nufi_solver.cc @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -49,6 +50,15 @@ std::vector NuFISolver::eval_ftilda( for (size_t i = 0; i < x_size; ++i) X[i] = X[i] - Parameters::DT * U[i]; + AssertThrow( + phi_history[n].solution.size() == + grid_struct[phi_history[n].grid_version].dof_handler->n_dofs(), + ExcMessage("In eval_ftilda: Solution size = " + + std::to_string(phi_history[n].solution.size()) + + ", expected by grid_struct = " + + std::to_string(grid_struct[phi_history[n].grid_version] + .dof_handler->n_dofs()))); + tmp = eval(X, grid_struct[phi_history[n].grid_version], phi_history[n].solution); // call eval only once