From b79e7f3053e63a2bdd29c123d2b2a2449e88e648 Mon Sep 17 00:00:00 2001 From: Maciej Waruszewski Date: Wed, 13 Mar 2019 15:35:45 +0100 Subject: [PATCH] make real_t typedefs public --- .../solvers/detail/mpdata_rhs_vip_common.hpp | 3 ++- .../detail/mpdata_rhs_vip_prs_sgs_common.hpp | 3 +++ .../detail/mpdata_rhs_vip_prs_sgs_smg.hpp | 3 +++ libmpdata++/solvers/detail/solver_1d.hpp | 18 ++++++++++------- libmpdata++/solvers/detail/solver_2d.hpp | 20 +++++++++++-------- libmpdata++/solvers/detail/solver_3d.hpp | 20 +++++++++++-------- libmpdata++/solvers/detail/solver_common.hpp | 2 +- 7 files changed, 44 insertions(+), 25 deletions(-) diff --git a/libmpdata++/solvers/detail/mpdata_rhs_vip_common.hpp b/libmpdata++/solvers/detail/mpdata_rhs_vip_common.hpp index 7f8c4fbf..b0898474 100644 --- a/libmpdata++/solvers/detail/mpdata_rhs_vip_common.hpp +++ b/libmpdata++/solvers/detail/mpdata_rhs_vip_common.hpp @@ -43,9 +43,10 @@ namespace libmpdataxx template class mpdata_rhs_vip_common : public mpdata_rhs, minhalo> { + using parent_t = mpdata_rhs, minhalo>; + public: using ix = typename ct_params_t::ix; - using parent_t = mpdata_rhs, minhalo>; using real_t = typename ct_params_t::real_t; protected: diff --git a/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_common.hpp b/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_common.hpp index ce1395e2..fd53692a 100644 --- a/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_common.hpp +++ b/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_common.hpp @@ -36,6 +36,9 @@ namespace libmpdataxx class mpdata_rhs_vip_prs_sgs_common : public mpdata_rhs_vip_prs { using parent_t = mpdata_rhs_vip_prs; + + public: + using real_t = typename ct_params_t::real_t; protected: diff --git a/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_smg.hpp b/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_smg.hpp index 56d102ac..aff23fba 100644 --- a/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_smg.hpp +++ b/libmpdata++/solvers/detail/mpdata_rhs_vip_prs_sgs_smg.hpp @@ -18,6 +18,9 @@ namespace libmpdataxx class mpdata_rhs_vip_prs_sgs_smg : public detail::mpdata_rhs_vip_prs_sgs_common { using parent_t = detail::mpdata_rhs_vip_prs_sgs_common; + + public: + using real_t = typename ct_params_t::real_t; protected: diff --git a/libmpdata++/solvers/detail/solver_1d.hpp b/libmpdata++/solvers/detail/solver_1d.hpp index 9ca9939f..f579a6bf 100644 --- a/libmpdata++/solvers/detail/solver_1d.hpp +++ b/libmpdata++/solvers/detail/solver_1d.hpp @@ -25,6 +25,10 @@ namespace libmpdataxx { using parent_t = solver_common; + public: + + using real_t = typename ct_params_t::real_t; + protected: const rng_t i; //TODO: to be removed @@ -65,21 +69,21 @@ namespace libmpdataxx this->mem->barrier(); } - typename parent_t::real_t courant_number(const arrvec_t &arrvec) final + real_t courant_number(const arrvec_t &arrvec) final { - stat_field(this->ijk) = typename parent_t::real_t(0.5) * (abs(arrvec[0](i+h) + arrvec[0](i-h))); + stat_field(this->ijk) = real_t(0.5) * (abs(arrvec[0](i+h) + arrvec[0](i-h))); return this->mem->max(this->rank, stat_field(this->ijk)); } - typename parent_t::real_t max_abs_vctr_div(const arrvec_t &arrvec) final + real_t max_abs_vctr_div(const arrvec_t &arrvec) final { stat_field(this->ijk) = abs((arrvec[0](i+h) - arrvec[0](i-h))); return this->mem->max(this->rank, stat_field(this->ijk)); } - void scale_gc(const typename parent_t::real_t time, - const typename parent_t::real_t cur_dt, - const typename parent_t::real_t old_dt) final + void scale_gc(const real_t time, + const real_t cur_dt, + const real_t old_dt) final { this->mem->GC[0](rng_t(i.first(), i.last()-1)^h) *= cur_dt / old_dt; this->xchng_vctr_alng(this->mem->GC); @@ -99,7 +103,7 @@ namespace libmpdataxx struct rt_params_t : parent_t::rt_params_t { - typename parent_t::real_t di = 0; + real_t di = 0; }; protected: diff --git a/libmpdata++/solvers/detail/solver_2d.hpp b/libmpdata++/solvers/detail/solver_2d.hpp index 2f63a84a..82c216a3 100644 --- a/libmpdata++/solvers/detail/solver_2d.hpp +++ b/libmpdata++/solvers/detail/solver_2d.hpp @@ -26,6 +26,10 @@ namespace libmpdataxx { using parent_t = solver_common; + public: + + using real_t = typename ct_params_t::real_t; + protected: const rng_t i, j; // TODO: to be removed @@ -191,23 +195,23 @@ namespace libmpdataxx // TODO: same in 1D if (!opts::isset(ct_params_t::opts, opts::dfl)) { - typename ct_params_t::real_t max_abs_div = max_abs_vctr_div(this->mem->GC); + real_t max_abs_div = max_abs_vctr_div(this->mem->GC); if (max_abs_div > this->max_abs_div_eps) throw std::runtime_error("initial advector field is divergent"); } } - typename parent_t::real_t courant_number(const arrvec_t &arrvec) final + real_t courant_number(const arrvec_t &arrvec) final { - stat_field(this->ijk) = typename parent_t::real_t(0.5) * ( + stat_field(this->ijk) = real_t(0.5) * ( abs(arrvec[0](i+h, j) + arrvec[0](i-h, j)) + abs(arrvec[1](i, j+h) + arrvec[1](i, j-h)) ) / formulae::G(*this->mem->G, i, j); return this->mem->max(this->rank, stat_field(this->ijk)); } - typename parent_t::real_t max_abs_vctr_div(const arrvec_t &arrvec) final + real_t max_abs_vctr_div(const arrvec_t &arrvec) final { stat_field(this->ijk) = abs( (arrvec[0](i+h, j) - arrvec[0](i-h, j)) @@ -216,9 +220,9 @@ namespace libmpdataxx return this->mem->max(this->rank, stat_field(this->ijk)); } - void scale_gc(const typename parent_t::real_t time, - const typename parent_t::real_t cur_dt, - const typename parent_t::real_t old_dt) final + void scale_gc(const real_t time, + const real_t cur_dt, + const real_t old_dt) final { this->mem->GC[0](rng_t(i.first(), i.last()-1)^h, j) *= cur_dt / old_dt; this->mem->GC[1](i, rng_t(j.first(), j.last()-1)^h) *= cur_dt / old_dt; @@ -241,7 +245,7 @@ namespace libmpdataxx struct rt_params_t : parent_t::rt_params_t { - typename parent_t::real_t di = 0, dj = 0; + real_t di = 0, dj = 0; }; protected: diff --git a/libmpdata++/solvers/detail/solver_3d.hpp b/libmpdata++/solvers/detail/solver_3d.hpp index 895211f6..595bf8e8 100644 --- a/libmpdata++/solvers/detail/solver_3d.hpp +++ b/libmpdata++/solvers/detail/solver_3d.hpp @@ -26,6 +26,10 @@ namespace libmpdataxx { using parent_t = solver_common; + public: + + using real_t = typename ct_params_t::real_t; + protected: const rng_t i, j, k; // TODO: we have ijk in solver_common - could it be removed? @@ -232,16 +236,16 @@ namespace libmpdataxx // TODO: same in 1D if (!opts::isset(ct_params_t::opts, opts::dfl)) { - typename ct_params_t::real_t max_abs_div = max_abs_vctr_div(this->mem->GC); + real_t max_abs_div = max_abs_vctr_div(this->mem->GC); if (max_abs_div > this->max_abs_div_eps) throw std::runtime_error("initial advector field is divergent"); } } - typename parent_t::real_t courant_number(const arrvec_t &arrvec) final + real_t courant_number(const arrvec_t &arrvec) final { - stat_field(this->ijk) = typename parent_t::real_t(0.5) * ( + stat_field(this->ijk) = real_t(0.5) * ( abs(arrvec[0](i+h, j, k) + arrvec[0](i-h, j, k)) + abs(arrvec[1](i, j+h, k) + arrvec[1](i, j-h, k)) + abs(arrvec[2](i, j, k+h) + arrvec[2](i, j, k-h)) @@ -249,7 +253,7 @@ namespace libmpdataxx return this->mem->max(this->rank, stat_field(this->ijk)); } - typename parent_t::real_t max_abs_vctr_div(const arrvec_t &arrvec) final + real_t max_abs_vctr_div(const arrvec_t &arrvec) final { stat_field(this->ijk) = abs( (arrvec[0](i+h, j, k) - arrvec[0](i-h, j, k)) @@ -260,9 +264,9 @@ namespace libmpdataxx return this->mem->max(this->rank, stat_field(this->ijk)); } - void scale_gc(const typename parent_t::real_t time, - const typename parent_t::real_t cur_dt, - const typename parent_t::real_t old_dt) final + void scale_gc(const real_t time, + const real_t cur_dt, + const real_t old_dt) final { this->mem->GC[0](rng_t(i.first(), i.last()-1)^h, j, k) *= cur_dt / old_dt; this->mem->GC[1](i, rng_t(j.first(), j.last()-1)^h, k) *= cur_dt / old_dt; @@ -289,7 +293,7 @@ namespace libmpdataxx struct rt_params_t : parent_t::rt_params_t { - typename parent_t::real_t di = 0, dj = 0, dk = 0; + real_t di = 0, dj = 0, dk = 0; }; protected: diff --git a/libmpdata++/solvers/detail/solver_common.hpp b/libmpdata++/solvers/detail/solver_common.hpp index 5c404a32..0dcc8074 100644 --- a/libmpdata++/solvers/detail/solver_common.hpp +++ b/libmpdata++/solvers/detail/solver_common.hpp @@ -40,7 +40,7 @@ namespace libmpdataxx enum { n_tlev = n_tlev_ }; using ct_params_t_ = ct_params_t; // propagate ct_params_t mainly for output purposes - typedef typename ct_params_t::real_t real_t; + using real_t = typename ct_params_t::real_t; typedef blitz::Array arr_t; using bcp_t = std::unique_ptr>;