Page MenuHomec4science

Bashforth.cpp
No OneTemporary

File Metadata

Created
Sun, Oct 20, 07:48

Bashforth.cpp

#include <cassert>
#include "Bashforth.h"
/**
* Constructor inherited from the VectorialODE class
* @param input : Input object containing all variables needed to solve the ODE.
* @param solution : Output object where we will store the solution.
*/
Bashforth::Bashforth(Input &input, Solution &solution) : VectorialODE(input, solution) {
assert(input.GetInitialConditionMatrix()[0].size() == input.GetOrder());
assert(input.GetPastStepMatrix()[0].size()==input.GetNumberSteps());
assert(GetColumnsOfMatrix(input.GetPastStepMatrix(),0).size()==input.GetDimension());
assert(input.GetChangingMatrix()[0].size()==GetColumnsOfMatrix(input.GetInitialConditionMatrix(), 0).size());
assert(GetColumnsOfMatrix(input.GetInitialConditionMatrix(), 0).size()==input.GetDimension());
}
/**
* \brief
* @param
* @param
*/
vector<double> Bashforth::GetColumnsOfMatrix(vector<vector<double>> matrix, int position) {
vector<double> column (matrix.size());
for (int i = 0; i < matrix.size(); ++i) {
column[i] = matrix[i][position];
}
return column;
}
vector<vector<double>> Bashforth::Multiply(const vector<vector<double>>& matrix, const double number )
{
unsigned long number_of_rows = matrix.size();
unsigned long number_of_columns = matrix[0].size();
vector<vector<double>> matrix_to_return (number_of_rows, vector<double>(number_of_columns,0));
for (int i = 0; i < number_of_rows; ++i)
{
for (int j = 0; j < number_of_columns; ++j)
{
matrix_to_return[i][j] = matrix[i][j]*number;
}
}
return matrix_to_return;
}
vector<vector<double>> Bashforth::Addition(const vector<vector<double>>& matrix, const double number )
{
unsigned long number_of_rows = matrix.size();
unsigned long number_of_columns = matrix[0].size();
vector<vector<double>> matrix_to_return (number_of_rows, vector<double>(number_of_columns,0));
for (int i = 0; i < number_of_rows; ++i)
{
for (int j = 0; j < number_of_columns; ++j)
{
matrix_to_return[i][j] = matrix[i][j]+number;
}
}
return matrix_to_return;
}
vector<double> Bashforth::MultiplyWithVectorByRight(const vector<vector<double>>& matrix, const vector<double> &matrix_columns )
{
unsigned long vector_size = matrix_columns.size();
assert(matrix[0].size() == vector_size);
unsigned long output_vector_size = matrix.size();
vector<double> output_vector(output_vector_size, 0);
for (int i = 0; i < output_vector_size; ++i)
{
for (int j = 0; j < vector_size; ++j)
{
output_vector[i] += (matrix[i][j]*matrix_columns[j]);
}
}
return output_vector;
}
vector<double> Bashforth::MultiplyVectorAndScalar(const vector<double>& vector_to_multiply, double scalar)
{
vector<double> vector_to_return(vector_to_multiply.size(),0);
for (int i = 0; i < vector_to_multiply.size(); ++i)
{
vector_to_return[i] = scalar*vector_to_multiply[i];
}
return vector_to_return;
}
vector<double> Bashforth::AddTwoVector(const vector<double>& vector_1, const vector<double>& vector_2){
assert(vector_1.size() == vector_2.size());
vector<double> vector_to_return (vector_1.size(),0);
for (int i = 0; i < vector_1.size(); ++i)
{
vector_to_return[i] = vector_1[i] + vector_2[i];
}
return vector_to_return;
}
vector<double> Bashforth::SubstractTwoVector(const vector<double>& vector_1, const vector<double>& vector_2){
assert(vector_1.size() == vector_2.size());
vector<double> vector_to_return (vector_1.size(),0);
for (int i = 0; i < vector_1.size(); ++i)
{
vector_to_return[i] = vector_1[i] - vector_2[i];
}
return vector_to_return;
}

Event Timeline