diff --git a/CMakeLists.txt b/CMakeLists.txt index ae33cd44da5d2b80c8364eefe5f6b6b4709a4881..8fa823c72a6981d6182c91a3b905970a9143b91c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,6 +176,7 @@ set(cpp_for_lib ${PROJECT_SOURCE_DIR}/cpp/full_code/code_base.cpp ${PROJECT_SOURCE_DIR}/cpp/full_code/direct_numerical_simulation.cpp ${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE.cpp + ${PROJECT_SOURCE_DIR}/cpp/full_code/static_field.cpp ${PROJECT_SOURCE_DIR}/cpp/full_code/joint_acc_vel_stats.cpp ${PROJECT_SOURCE_DIR}/cpp/full_code/test.cpp ${PROJECT_SOURCE_DIR}/cpp/full_code/filter_test.cpp @@ -217,6 +218,7 @@ set(hpp_for_lib ${PROJECT_SOURCE_DIR}/cpp/full_code/code_base.hpp ${PROJECT_SOURCE_DIR}/cpp/full_code/direct_numerical_simulation.hpp ${PROJECT_SOURCE_DIR}/cpp/full_code/NSVE.hpp + ${PROJECT_SOURCE_DIR}/cpp/full_code/static_field.hpp ${PROJECT_SOURCE_DIR}/cpp/full_code/joint_acc_vel_stats.hpp ${PROJECT_SOURCE_DIR}/cpp/full_code/test.hpp ${PROJECT_SOURCE_DIR}/cpp/full_code/filter_test.hpp diff --git a/cpp/full_code/static_field.cpp b/cpp/full_code/static_field.cpp index 56435a9099f60844077e6578f4d43ecfc7128dad..b7aaad365be2286a4f3680a735a10583e7f38edf 100644 --- a/cpp/full_code/static_field.cpp +++ b/cpp/full_code/static_field.cpp @@ -23,8 +23,6 @@ -#define NDEBUG - #include <string> #include <cmath> #include "static_field.hpp" @@ -62,13 +60,13 @@ int static_field<rnumber>::initialize(void) std::endl; return EXIT_FAILURE; } - + this->vorticity = new field<rnumber, FFTW, THREE>( nx, ny, nz, this->comm, fftw_planner_string_to_flag[this->fftw_plan_rigor]); - this->stat_vel = new field<rnumber, FFTW, THREE>( + this->velocity = new field<rnumber, FFTW, THREE>( nx, ny, nz, this->comm, fftw_planner_string_to_flag[this->fftw_plan_rigor]); @@ -81,61 +79,57 @@ int static_field<rnumber>::initialize(void) this->kk = new kspace<FFTW, SMOOTH>( this->vorticity->clayout, this->dkx, this->dky, this->dkz); - // compute the velocity field and store + // compute the velocity field and store invert_curl( this->kk, this->vorticity, - stat_vel_field); - // transform velocity field to real space - this->stat_vel->ift(); + velocity); + // transform velocity and vorticity fields to real space + this->velocity->ift(); + this->vorticity->ift(); return EXIT_SUCCESS; } template <typename rnumber> -int NSVE<rnumber>::step(void) +int static_field<rnumber>::step(void) { - return EXIT_SUCCESS; + return EXIT_SUCCESS; } template <typename rnumber> -int NSVE<rnumber>::write_checkpoint(void) +int static_field<rnumber>::write_checkpoint(void) { return EXIT_SUCCESS; } template <typename rnumber> -int NSVE<rnumber>::finalize(void) +int static_field<rnumber>::finalize(void) { - TIMEZONE("NSVE::finalize"); + TIMEZONE("static_field::finalize"); if (this->myrank == 0) H5Fclose(this->stat_file); - delete this->vorticity; - delete this->stat_vel; + // good practice rule number n+1: always delete in inverse order of allocation delete this->kk; + delete this->velocity; + delete this->vorticity; return EXIT_SUCCESS; } -/** \brief Compute standard statistics for velocity and vorticity fields. +/** \brief Compute statistics. * - * IMPORTANT: at the end of this subroutine, `this->fs->cvelocity` contains - * the Fourier space representation of the velocity field, and - * `this->tmp_vec_field` contains the real space representation of the - * velocity field. - * This behavior is relied upon in the `NSVEparticles` class, so please - * don't break it. */ template <typename rnumber> -int NSVE<rnumber>::do_stats() +int static_field<rnumber>::do_stats() { return EXIT_SUCCESS; } template <typename rnumber> -int NSVE<rnumber>::read_parameters(void) +int static_field<rnumber>::read_parameters(void) { - TIMEZONE("NSVE::read_parameters"); + TIMEZONE("static_field::read_parameters"); this->direct_numerical_simulation::read_parameters(); hid_t parameter_file = H5Fopen((this->simname + ".h5").c_str(), H5F_ACC_RDONLY, H5P_DEFAULT); this->fftw_plan_rigor = hdf5_tools::read_string(parameter_file, "parameters/fftw_plan_rigor"); @@ -143,6 +137,6 @@ int NSVE<rnumber>::read_parameters(void) return EXIT_SUCCESS; } -template class NSVE<float>; -template class NSVE<double>; +template class static_field<float>; +template class static_field<double>; diff --git a/cpp/full_code/static_field.hpp b/cpp/full_code/static_field.hpp index e1cd0b44ece3abda73f6d94e76ec138d89c3de1b..c23b87dc211cd8375d83c6c09bbc7ff99dea3288 100644 --- a/cpp/full_code/static_field.hpp +++ b/cpp/full_code/static_field.hpp @@ -31,6 +31,8 @@ #include <cstdlib> #include "base.hpp" +#include "kspace.hpp" +#include "field.hpp" #include "full_code/direct_numerical_simulation.hpp" template <typename rnumber> @@ -43,8 +45,8 @@ class static_field: public direct_numerical_simulation /* other stuff */ kspace<FFTW, SMOOTH> *kk; + field<rnumber, FFTW, THREE> *vorticity; field<rnumber, FFTW, THREE> *velocity; - field<rnumber, FFTW, THREE> *stat_vel; static_field(