diff --git a/include/diffusion/BTCSUtils.hpp b/include/diffusion/BTCSUtils.hpp new file mode 100644 index 0000000..f574e7c --- /dev/null +++ b/include/diffusion/BTCSUtils.hpp @@ -0,0 +1,15 @@ +#ifndef BTCSUTILS_H_ +#define BTCSUTILS_H_ + +#include +#include + +#define throw_invalid_argument(msg) \ + throw std::invalid_argument(std::string(__FILE__) + ":" + \ + std::to_string(__LINE__) + ":" + \ + std::string(msg)) + +#define throw_out_of_range(msg) \ + throw std::out_of_range(std::string(__FILE__) + ":" + \ + std::to_string(__LINE__) + ":" + std::string(msg)) +#endif // BTCSUTILS_H_ diff --git a/src/BTCSBoundaryCondition.cpp b/src/BTCSBoundaryCondition.cpp index 927eaa2..71402e5 100644 --- a/src/BTCSBoundaryCondition.cpp +++ b/src/BTCSBoundaryCondition.cpp @@ -1,9 +1,10 @@ #include #include -#include -#include #include +#include +#include + constexpr uint8_t DIM_1D = 2; constexpr uint8_t DIM_2D = 4; @@ -29,10 +30,10 @@ Diffusion::BTCSBoundaryCondition::BTCSBoundaryCondition(int x, int y) { void Diffusion::BTCSBoundaryCondition::setSide( uint8_t side, Diffusion::boundary_condition &input_bc) { if (this->dim == 1) { - throw std::invalid_argument("setSide requires at least a 2D grid"); + throw_invalid_argument("setSide requires at least a 2D grid"); } if (side > 3) { - throw std::out_of_range("Invalid range for 2D grid"); + throw_out_of_range("Invalid range for 2D grid"); } uint32_t size = @@ -48,10 +49,10 @@ void Diffusion::BTCSBoundaryCondition::setSide( void Diffusion::BTCSBoundaryCondition::setSide( uint8_t side, std::vector &input_bc) { if (this->dim == 1) { - throw std::invalid_argument("setSide requires at least a 2D grid"); + throw_invalid_argument("setSide requires at least a 2D grid"); } if (side > 3) { - throw std::out_of_range("Invalid range for 2D grid"); + throw_out_of_range("Invalid range for 2D grid"); } uint32_t size = @@ -60,8 +61,7 @@ void Diffusion::BTCSBoundaryCondition::setSide( : this->sizes[1]); if (input_bc.size() > size) { - throw std::out_of_range( - "Input vector is greater than maximum excpected value"); + throw_out_of_range("Input vector is greater than maximum excpected value"); } for (int i = 0; i < size; i++) { @@ -72,10 +72,10 @@ void Diffusion::BTCSBoundaryCondition::setSide( auto Diffusion::BTCSBoundaryCondition::getSide(uint8_t side) -> std::vector { if (this->dim == 1) { - throw std::invalid_argument("getSide requires at least a 2D grid"); + throw_invalid_argument("getSide requires at least a 2D grid"); } if (side > 3) { - throw std::out_of_range("Invalid range for 2D grid"); + throw_out_of_range("Invalid range for 2D grid"); } uint32_t size = @@ -95,10 +95,10 @@ auto Diffusion::BTCSBoundaryCondition::getSide(uint8_t side) auto Diffusion::BTCSBoundaryCondition::col(uint32_t i) const -> Diffusion::bc_tuple { if (this->dim == 1) { - throw std::invalid_argument("Access of column requires at least 2D grid"); + throw_invalid_argument("Access of column requires at least 2D grid"); } if (i >= this->sizes[1]) { - throw std::out_of_range("Index out of range"); + throw_out_of_range("Index out of range"); } return {this->bc_internal[BC_SIDE_TOP * this->maxsize + i], @@ -108,7 +108,7 @@ auto Diffusion::BTCSBoundaryCondition::col(uint32_t i) const auto Diffusion::BTCSBoundaryCondition::row(uint32_t i) const -> Diffusion::bc_tuple { if (i >= this->sizes[0]) { - throw std::out_of_range("Index out of range"); + throw_out_of_range("Index out of range"); } return {this->bc_internal[BC_SIDE_LEFT * this->maxsize + i],