From f0c1c692fa37c67b8ab1cdefc4df4055f4feb66a Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Wed, 24 May 2017 11:08:33 +0200 Subject: [PATCH] [BL] moved code, fixed includes --- BaseLib/Subdivision.cpp | 26 ++++++++++++++++++++++++++ BaseLib/Subdivision.h | 23 +---------------------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/BaseLib/Subdivision.cpp b/BaseLib/Subdivision.cpp index a2141d04d77..b9ba827c5bc 100644 --- a/BaseLib/Subdivision.cpp +++ b/BaseLib/Subdivision.cpp @@ -9,6 +9,9 @@ #include "Subdivision.h" +#include <algorithm> +#include <cmath> + #include <BaseLib/Error.h> namespace BaseLib @@ -31,6 +34,29 @@ GradualSubdivision::GradualSubdivision(const double L, } } +std::vector<double> GradualSubdivision::operator()() const +{ + std::vector<double> vec_x; + + double x = 0; + unsigned i = 0; + do { + vec_x.push_back(x); + x += std::min(_max_dL, + _dL0 * std::pow(_multiplier, static_cast<double>(i))); + i++; + } while (x < _length); + + if (vec_x.back() < _length) { + double last_dx = vec_x[vec_x.size() - 1] - vec_x[vec_x.size() - 2]; + if (_length - vec_x.back() < last_dx) + vec_x[vec_x.size() - 1] = _length; + else + vec_x.push_back(_length); + } + return vec_x; +} + GradualSubdivisionFixedNum::GradualSubdivisionFixedNum( const double L, const std::size_t num_subdivisions, const double multiplier) : _length{L}, _num_subdivisions{num_subdivisions}, _multiplier{multiplier} diff --git a/BaseLib/Subdivision.h b/BaseLib/Subdivision.h index f6c87e86984..442fb514af9 100644 --- a/BaseLib/Subdivision.h +++ b/BaseLib/Subdivision.h @@ -9,7 +9,6 @@ #pragma once -#include <cmath> #include <vector> namespace BaseLib @@ -77,27 +76,7 @@ public: const double multiplier); /// Returns a vector of subdivided points - std::vector<double> operator()() const override - { - std::vector<double> vec_x; - - double x = 0; - unsigned i=0; - do { - vec_x.push_back(x); - x += std::min(_max_dL, _dL0*std::pow(_multiplier, static_cast<double>(i))); - i++; - } while (x<_length); - - if (vec_x.back() < _length) { - double last_dx = vec_x[vec_x.size()-1] - vec_x[vec_x.size()-2]; - if (_length-vec_x.back()<last_dx) - vec_x[vec_x.size()-1] = _length; - else - vec_x.push_back(_length); - } - return vec_x; - } + std::vector<double> operator()() const override; private: const double _length; -- GitLab