mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-15 18:38:23 +01:00
refactor: adjust const qualifications for Grid class
This commit is contained in:
parent
a21023ec9d
commit
f0d5220a48
@ -43,7 +43,7 @@ public:
|
|||||||
* must have correct dimensions as defined in row and col. (Or length, in 1D
|
* must have correct dimensions as defined in row and col. (Or length, in 1D
|
||||||
* case).
|
* case).
|
||||||
*/
|
*/
|
||||||
void setConcentrations(Eigen::MatrixXd concentrations);
|
void setConcentrations(const Eigen::MatrixXd &concentrations);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the concentrations matrix for a Grid.
|
* @brief Gets the concentrations matrix for a Grid.
|
||||||
@ -51,7 +51,7 @@ public:
|
|||||||
* @return MatrixXd An Eigen3 matrix holding the concentrations and having the
|
* @return MatrixXd An Eigen3 matrix holding the concentrations and having the
|
||||||
* same dimensions as the grid.
|
* same dimensions as the grid.
|
||||||
*/
|
*/
|
||||||
const Eigen::MatrixXd getConcentrations();
|
const Eigen::MatrixXd &getConcentrations() { return this->concentrations; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the alpha coefficients of a 1D-Grid. Grid must be one
|
* @brief Set the alpha coefficients of a 1D-Grid. Grid must be one
|
||||||
@ -60,7 +60,7 @@ public:
|
|||||||
* @param alpha An Eigen3 MatrixXd with 1 row holding the alpha coefficients.
|
* @param alpha An Eigen3 MatrixXd with 1 row holding the alpha coefficients.
|
||||||
* Matrix columns must have same size as length of grid.
|
* Matrix columns must have same size as length of grid.
|
||||||
*/
|
*/
|
||||||
void setAlpha(Eigen::MatrixXd alpha);
|
void setAlpha(const Eigen::MatrixXd &alpha);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the alpha coefficients of a 2D-Grid. Grid must be two
|
* @brief Set the alpha coefficients of a 2D-Grid. Grid must be two
|
||||||
@ -71,7 +71,7 @@ public:
|
|||||||
* @param alphaY An Eigen3 MatrixXd holding the alpha coefficients in
|
* @param alphaY An Eigen3 MatrixXd holding the alpha coefficients in
|
||||||
* y-direction. Matrix must be of same size as the grid.
|
* y-direction. Matrix must be of same size as the grid.
|
||||||
*/
|
*/
|
||||||
void setAlpha(Eigen::MatrixXd alphaX, Eigen::MatrixXd alphaY);
|
void setAlpha(const Eigen::MatrixXd &alphaX, const Eigen::MatrixXd &alphaY);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the matrix of alpha coefficients of a 1D-Grid. Grid must be one
|
* @brief Gets the matrix of alpha coefficients of a 1D-Grid. Grid must be one
|
||||||
@ -79,7 +79,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return MatrixXd A matrix with 1 row holding the alpha coefficients.
|
* @return MatrixXd A matrix with 1 row holding the alpha coefficients.
|
||||||
*/
|
*/
|
||||||
const Eigen::MatrixXd getAlpha();
|
const Eigen::MatrixXd &getAlpha();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the matrix of alpha coefficients in x-direction of a 2D-Grid.
|
* @brief Gets the matrix of alpha coefficients in x-direction of a 2D-Grid.
|
||||||
@ -87,7 +87,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return MatrixXd A matrix holding the alpha coefficients in x-direction.
|
* @return MatrixXd A matrix holding the alpha coefficients in x-direction.
|
||||||
*/
|
*/
|
||||||
const Eigen::MatrixXd getAlphaX();
|
const Eigen::MatrixXd &getAlphaX();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the matrix of alpha coefficients in y-direction of a 2D-Grid.
|
* @brief Gets the matrix of alpha coefficients in y-direction of a 2D-Grid.
|
||||||
@ -95,7 +95,7 @@ public:
|
|||||||
*
|
*
|
||||||
* @return MatrixXd A matrix holding the alpha coefficients in y-direction.
|
* @return MatrixXd A matrix holding the alpha coefficients in y-direction.
|
||||||
*/
|
*/
|
||||||
const Eigen::MatrixXd getAlphaY();
|
const Eigen::MatrixXd &getAlphaY();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the dimensions of the grid.
|
* @brief Gets the dimensions of the grid.
|
||||||
@ -165,12 +165,12 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
int col; // number of grid columns
|
int col; // number of grid columns
|
||||||
int row; // number of grid rows
|
int row{1}; // number of grid rows
|
||||||
int dim; // 1D or 2D
|
int dim; // 1D or 2D
|
||||||
double domainCol; // number of domain columns
|
double domainCol; // number of domain columns
|
||||||
double domainRow; // number of domain rows
|
double domainRow{0}; // number of domain rows
|
||||||
double deltaCol; // delta in x-direction (between columns)
|
double deltaCol; // delta in x-direction (between columns)
|
||||||
double deltaRow; // delta in y-direction (between rows)
|
double deltaRow{0}; // delta in y-direction (between rows)
|
||||||
Eigen::MatrixXd concentrations; // Matrix holding grid concentrations
|
Eigen::MatrixXd concentrations; // Matrix holding grid concentrations
|
||||||
Eigen::MatrixXd alphaX; // Matrix holding alpha coefficients in x-direction
|
Eigen::MatrixXd alphaX; // Matrix holding alpha coefficients in x-direction
|
||||||
Eigen::MatrixXd alphaY; // Matrix holding alpha coefficients in y-direction
|
Eigen::MatrixXd alphaY; // Matrix holding alpha coefficients in y-direction
|
||||||
|
|||||||
43
src/Grid.cpp
43
src/Grid.cpp
@ -3,42 +3,38 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <tug/Grid.hpp>
|
#include <tug/Grid.hpp>
|
||||||
|
|
||||||
Grid::Grid(int length) {
|
constexpr double MAT_INIT_VAL = 0;
|
||||||
|
|
||||||
|
Grid::Grid(int length) : col(length), domainCol(length) {
|
||||||
if (length <= 3) {
|
if (length <= 3) {
|
||||||
throw_invalid_argument(
|
throw_invalid_argument(
|
||||||
"Given grid length too small. Must be greater than 3.");
|
"Given grid length too small. Must be greater than 3.");
|
||||||
}
|
}
|
||||||
|
|
||||||
this->row = 1;
|
|
||||||
this->col = length;
|
|
||||||
this->domainCol = length; // default: same size as length
|
|
||||||
this->deltaCol = double(this->domainCol) / double(this->col); // -> 1
|
|
||||||
this->dim = 1;
|
this->dim = 1;
|
||||||
|
this->deltaCol = double(this->domainCol) / double(this->col); // -> 1
|
||||||
|
|
||||||
this->concentrations = Eigen::MatrixXd::Constant(1, col, 20);
|
this->concentrations = Eigen::MatrixXd::Constant(1, col, MAT_INIT_VAL);
|
||||||
this->alphaX = Eigen::MatrixXd::Constant(1, col, 1);
|
this->alphaX = Eigen::MatrixXd::Constant(1, col, MAT_INIT_VAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
Grid::Grid(int row, int col) {
|
Grid::Grid(int _row, int _col)
|
||||||
|
: row(_row), col(_col), domainRow(_row), domainCol(_col) {
|
||||||
if (row <= 3 || col <= 3) {
|
if (row <= 3 || col <= 3) {
|
||||||
throw_invalid_argument(
|
throw_invalid_argument(
|
||||||
"Given grid dimensions too small. Must each be greater than 3.");
|
"Given grid dimensions too small. Must each be greater than 3.");
|
||||||
}
|
}
|
||||||
|
|
||||||
this->row = row;
|
this->dim = 2;
|
||||||
this->col = col;
|
|
||||||
this->domainRow = row; // default: same size as row
|
|
||||||
this->domainCol = col; // default: same size as col
|
|
||||||
this->deltaRow = double(this->domainRow) / double(this->row); // -> 1
|
this->deltaRow = double(this->domainRow) / double(this->row); // -> 1
|
||||||
this->deltaCol = double(this->domainCol) / double(this->col); // -> 1
|
this->deltaCol = double(this->domainCol) / double(this->col); // -> 1
|
||||||
this->dim = 2;
|
|
||||||
|
|
||||||
this->concentrations = Eigen::MatrixXd::Constant(row, col, 20);
|
this->concentrations = Eigen::MatrixXd::Constant(row, col, MAT_INIT_VAL);
|
||||||
this->alphaX = Eigen::MatrixXd::Constant(row, col, 1);
|
this->alphaX = Eigen::MatrixXd::Constant(row, col, MAT_INIT_VAL);
|
||||||
this->alphaY = Eigen::MatrixXd::Constant(row, col, 1);
|
this->alphaY = Eigen::MatrixXd::Constant(row, col, MAT_INIT_VAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::setConcentrations(Eigen::MatrixXd concentrations) {
|
void Grid::setConcentrations(const Eigen::MatrixXd &concentrations) {
|
||||||
if (concentrations.rows() != this->row ||
|
if (concentrations.rows() != this->row ||
|
||||||
concentrations.cols() != this->col) {
|
concentrations.cols() != this->col) {
|
||||||
throw_invalid_argument(
|
throw_invalid_argument(
|
||||||
@ -48,9 +44,7 @@ void Grid::setConcentrations(Eigen::MatrixXd concentrations) {
|
|||||||
this->concentrations = concentrations;
|
this->concentrations = concentrations;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eigen::MatrixXd Grid::getConcentrations() { return this->concentrations; }
|
void Grid::setAlpha(const Eigen::MatrixXd &alpha) {
|
||||||
|
|
||||||
void Grid::setAlpha(Eigen::MatrixXd alpha) {
|
|
||||||
if (dim != 1) {
|
if (dim != 1) {
|
||||||
throw_invalid_argument("Grid is not one dimensional, you should probably "
|
throw_invalid_argument("Grid is not one dimensional, you should probably "
|
||||||
"use 2D setter function!");
|
"use 2D setter function!");
|
||||||
@ -63,7 +57,8 @@ void Grid::setAlpha(Eigen::MatrixXd alpha) {
|
|||||||
this->alphaX = alpha;
|
this->alphaX = alpha;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Grid::setAlpha(Eigen::MatrixXd alphaX, Eigen::MatrixXd alphaY) {
|
void Grid::setAlpha(const Eigen::MatrixXd &alphaX,
|
||||||
|
const Eigen::MatrixXd &alphaY) {
|
||||||
if (dim != 2) {
|
if (dim != 2) {
|
||||||
throw_invalid_argument("Grid is not two dimensional, you should probably "
|
throw_invalid_argument("Grid is not two dimensional, you should probably "
|
||||||
"use 1D setter function!");
|
"use 1D setter function!");
|
||||||
@ -81,7 +76,7 @@ void Grid::setAlpha(Eigen::MatrixXd alphaX, Eigen::MatrixXd alphaY) {
|
|||||||
this->alphaY = alphaY;
|
this->alphaY = alphaY;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eigen::MatrixXd Grid::getAlpha() {
|
const Eigen::MatrixXd &Grid::getAlpha() {
|
||||||
if (dim != 1) {
|
if (dim != 1) {
|
||||||
throw_invalid_argument("Grid is not one dimensional, you should probably "
|
throw_invalid_argument("Grid is not one dimensional, you should probably "
|
||||||
"use either getAlphaX() or getAlphaY()!");
|
"use either getAlphaX() or getAlphaY()!");
|
||||||
@ -90,7 +85,7 @@ const Eigen::MatrixXd Grid::getAlpha() {
|
|||||||
return this->alphaX;
|
return this->alphaX;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eigen::MatrixXd Grid::getAlphaX() {
|
const Eigen::MatrixXd &Grid::getAlphaX() {
|
||||||
if (dim != 2) {
|
if (dim != 2) {
|
||||||
throw_invalid_argument(
|
throw_invalid_argument(
|
||||||
"Grid is not two dimensional, you should probably use getAlpha()!");
|
"Grid is not two dimensional, you should probably use getAlpha()!");
|
||||||
@ -99,7 +94,7 @@ const Eigen::MatrixXd Grid::getAlphaX() {
|
|||||||
return this->alphaX;
|
return this->alphaX;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Eigen::MatrixXd Grid::getAlphaY() {
|
const Eigen::MatrixXd &Grid::getAlphaY() {
|
||||||
if (dim != 2) {
|
if (dim != 2) {
|
||||||
throw_invalid_argument(
|
throw_invalid_argument(
|
||||||
"Grid is not two dimensional, you should probably use getAlpha()!");
|
"Grid is not two dimensional, you should probably use getAlpha()!");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user