From f611db80622384ef6ff70d97693c0dbb421ba79f Mon Sep 17 00:00:00 2001 From: Thibault Hallouin <thibault.hallouin@inrae.fr> Date: Tue, 19 Apr 2022 16:52:36 +0200 Subject: [PATCH] refactor function in namespace --- include/evalhyd/nse.hpp | 28 ++++++++++++++++++++++++++++ include/nse.hpp | 24 ------------------------ 2 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 include/evalhyd/nse.hpp delete mode 100644 include/nse.hpp diff --git a/include/evalhyd/nse.hpp b/include/evalhyd/nse.hpp new file mode 100644 index 0000000..5d12416 --- /dev/null +++ b/include/evalhyd/nse.hpp @@ -0,0 +1,28 @@ +#include <vector> +#include "xtensor/xexpression.hpp" +#include "xtensor/xmath.hpp" + +namespace eh { + + template <class A> + A nse(const xt::xexpression<A>& sim, + const xt::xexpression<A>& obs, + int axis = 0); + + template <class A> + A nse(const xt::xexpression<A>& sim, + const xt::xexpression<A>& obs, + int axis) + { + const A& q_sim = sim.derived_cast(); + const A& q_obs = obs.derived_cast(); + + A q_avg = xt::mean(q_obs, xt::keep_dims); + + A f_num = xt::sum(xt::square(q_obs - q_sim), std::vector<int> { axis }, xt::keep_dims); + A f_den = xt::sum(xt::square(q_obs - q_avg), xt::keep_dims); + + return 1 - (f_num / f_den); + } + +} diff --git a/include/nse.hpp b/include/nse.hpp deleted file mode 100644 index a775e89..0000000 --- a/include/nse.hpp +++ /dev/null @@ -1,24 +0,0 @@ -#include <vector> -#include <xtensor/xexpression.hpp> -#include <xtensor/xmath.hpp> - -template <class A> -A nse(const xt::xexpression<A>& sim, - const xt::xexpression<A>& obs, - int axis = 0); - -template <class A> -A nse(const xt::xexpression<A>& sim, - const xt::xexpression<A>& obs, - int axis) -{ - const A& q_sim = sim.derived_cast(); - const A& q_obs = obs.derived_cast(); - - A q_avg = xt::mean(q_obs, xt::keep_dims); - - A f_num = xt::sum(xt::square(q_obs - q_sim), std::vector<int> { axis }, xt::keep_dims); - A f_den = xt::sum(xt::square(q_obs - q_avg), xt::keep_dims); - - return 1 - (f_num / f_den); -} -- GitLab