diff --git a/.gitignore b/.gitignore index 3f2a4ab..d485aef 100644 --- a/.gitignore +++ b/.gitignore @@ -636,3 +636,4 @@ FodyWeavers.xsd *.msix *.msm *.msp +*.txt diff --git a/MemMAPR-MKE.cpp b/MemMAPR-MKE.cpp index 521821c..40a126d 100644 --- a/MemMAPR-MKE.cpp +++ b/MemMAPR-MKE.cpp @@ -2,9 +2,8 @@ #include "Solver.h" int main() { - std::ifstream file("matrix.txt"); - Solver slv(1., 0., 1., 3, 0, 1); - slv.Execute(); + Solver slv(1., 0., 1., 20, 0, 1); + slv.Execute_Linear(); return 0; } \ No newline at end of file diff --git a/Solver.cpp b/Solver.cpp index f8dddaa..ce0597e 100644 --- a/Solver.cpp +++ b/Solver.cpp @@ -9,7 +9,7 @@ Solver::Solver(double _A, double _B, double _C, int _N, int _l, int _u) { dx = L / N; } -void Solver::Execute() { +void Solver::Execute_Linear() { MatrixXd local = MatrixXd::Zero(2, 2); local(0, 0) = A / dx - B / 2; local(0, 1) = -A / dx + B / 2; @@ -76,4 +76,24 @@ void Solver::Execute() { VectorXd solution = ansamb.fullPivLu().solve(global_load); std::cout << "\nSolution:" << std::endl; std::cout << solution << std::endl; + + std::ofstream file("matrix_2.txt"); + for (int i = 0; i < N + 1; i++) { + file << solution(i) << ' '; + } + file << std::endl; +} + +void Solver::Execute_Cubic() { + MatrixXd local = MatrixXd::Zero(2, 2); + local(0, 0) = A * 37/(10 * dx) + B / 2; + local(0, 1) = -A / dx + B / 2; + local(0, 1) = A; + local(1, 0) = -A / dx - B / 2; + local(1, 1) = A / dx + B / 2; + std::cout << "Local matrix:\n" << local << std::endl; + + VectorXd local_load(2); + local_load(0) = C * dx / 2; + local_load(1) = C * dx / 2; } \ No newline at end of file diff --git a/Solver.h b/Solver.h index fed0ee8..6eb0c8d 100644 --- a/Solver.h +++ b/Solver.h @@ -5,5 +5,6 @@ private: int N, upper, lower; public: Solver(double _A, double _B, double _C, int _N, int _l, int _u); - void Execute(); + void Execute_Linear(); + void Execute_Cubic(); }; \ No newline at end of file