diff --git a/Solver.cpp b/Solver.cpp index 0f5f03d..2c470a2 100644 --- a/Solver.cpp +++ b/Solver.cpp @@ -10,7 +10,10 @@ Solver::Solver(double _A, double _B, double _C, double _D, int _N, int _l, int _ void Solver::Execute_Linear(double val1, double val2) { + // Локальная матрица жёсткости MatrixXd local = MatrixXd::Zero(2, 2); + + // Локальный вектор нагрузки VectorXd local_load(2); local(0, 0) = -A / L - B / 2. + C * L / 3.; @@ -21,7 +24,10 @@ void Solver::Execute_Linear(double val1, double val2) { local_load(0) = -D * L / 2.; local_load(1) = -D * L / 2.; + // Глобальная матрица жёсткости MatrixXd ansamb = MatrixXd::Zero(N + 1, N + 1); + + // Глобальный вектор нагрузок VectorXd global_load = VectorXd::Zero(N + 1); // Ансамблирование @@ -44,6 +50,7 @@ void Solver::Execute_Linear(double val1, double val2) { std::cout << "Ansamb load vector:\n" << global_load << std::endl; #endif + // Граничные условия double u_right = val2; ansamb.row(0).setZero(); ansamb.row(N).setZero(); @@ -61,6 +68,7 @@ void Solver::Execute_Linear(double val1, double val2) { std::cout << "Modified load vector:\n" << global_load << std::endl; #endif + // Решение системы VectorXd solution = ansamb.fullPivLu().solve(global_load); std::cout << "\nSolution:" << std::endl; std::cout << solution << std::endl; @@ -72,10 +80,15 @@ void Solver::Execute_Linear(double val1, double val2) { file << std::endl; } +// TODO: переделать под себя void Solver::Execute_Cubic(double val1, double val2) { int mat_dim = 1 + N * 3; + + // Глобальная матрица жёсткости Eigen::MatrixXd Amat(mat_dim, mat_dim); + + // Глобальный вектор нагрузок Eigen::VectorXd b(mat_dim); Amat.setZero(); b.setZero(); diff --git a/Solver.h b/Solver.h index 1139248..5eca8d3 100644 --- a/Solver.h +++ b/Solver.h @@ -2,9 +2,14 @@ class Solver { private: + // double A, B, C, D; + // double L; - int N, upper, lower; + // + int N; + // + int upper, lower; public: Solver(double _A, double _B, double _C, double _D, int _N, int _l, int _u); void Execute_Linear(double value_1, double value_2);