From 96a2d1cc5bb5c7e0c31770ab67c9a5b29f510193 Mon Sep 17 00:00:00 2001 From: Max Luebke Date: Wed, 1 Dec 2021 17:59:08 +0100 Subject: [PATCH] remove old library files --- src/CMakeLists.txt | 8 +-- src/diffusion.cpp | 132 --------------------------------------------- src/diffusion.hpp | 14 ----- src/main.cpp | 16 ++++-- src/test_class.cpp | 32 ----------- 5 files changed, 12 insertions(+), 190 deletions(-) delete mode 100644 src/diffusion.cpp delete mode 100644 src/diffusion.hpp delete mode 100644 src/test_class.cpp diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9678862..fab0508 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,11 +1,5 @@ -add_library(diffusion OBJECT diffusion.cpp diffusion.hpp) +add_library(diffusion OBJECT BTCSDiffusion.cpp BTCSDiffusion.hpp) target_link_libraries(diffusion Eigen3::Eigen) -add_library(diffusion_class OBJECT BTCSDiffusion.cpp BTCSDiffusion.hpp) -target_link_libraries(diffusion_class Eigen3::Eigen) - add_executable(test main.cpp) target_link_libraries(test PUBLIC diffusion) - -add_executable(test_class test_class.cpp) -target_link_libraries(test_class PUBLIC diffusion_class) diff --git a/src/diffusion.cpp b/src/diffusion.cpp deleted file mode 100644 index 5b398a2..0000000 --- a/src/diffusion.cpp +++ /dev/null @@ -1,132 +0,0 @@ -#include "diffusion.hpp" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void BTCS1D(int x, std::vector &c, std::vector &alpha, - double timestep, std::vector &bc) { - double dx = 1. / x; - - int size = x + 2; - - Eigen::VectorXd b = Eigen::VectorXd::Constant(size, 0); - Eigen::VectorXd x_out(size); - std::vector tripletList; - tripletList.reserve(c.size() * 3 + bc.size()); - - int A_line = 0; - - for (int i = 1; i < x + 1; i++) { - double sx = (alpha[i-1] * timestep) / (dx * dx); - - tripletList.push_back(T(A_line, i, (-1. - 2. * sx))); - - tripletList.push_back(T(A_line, i - 1, sx)); - tripletList.push_back(T(A_line, i + 1, sx)); - - b[A_line] = -c[i-1]; - A_line++; - } - - tripletList.push_back(T(A_line, 0, 1)); - b[A_line] = bc[0]; - - A_line++; - tripletList.push_back(T(A_line, size-1, 1)); - // b[A_line] = bc[1]; - b[A_line] = c[c.size()-1]; - - // std::cout << b << std::endl; - - Eigen::SparseMatrix A(size, size); - A.setFromTriplets(tripletList.begin(), tripletList.end()); - - // std::cout << A << std::endl; - Eigen::SparseQR, Eigen::COLAMDOrdering> - solver; - - // Eigen::SparseLU, Eigen::COLAMDOrdering> - // solver; - solver.analyzePattern(A); - - solver.factorize(A); - - std::cout << solver.lastErrorMessage() << std::endl; - - x_out = solver.solve(b); - - std::cout << std::setprecision(10) << x_out << std::endl << std::endl; - - for (int i=0; i < c.size(); i++) { - c[i] = x_out[i+1]; - } -} - -void BTCS2D(int x, int y, std::vector &c, std::vector &alpha, - double timestep) { - - double dx = 1. / x; - double dy = 1. / y; - - int size = (x - 2) * (y - 2); - - Eigen::VectorXd b = Eigen::VectorXd::Constant(size, 0); - Eigen::VectorXd x_out(x * y); - std::vector tripletList; - tripletList.reserve(size * 5); - - int A_line = 0; - - for (int i = 1; i < y - 1; i++) { - for (int j = 1; j < x - 1; j++) { - double sx = (alpha[i * x + j] * timestep) / (dx * dx); - double sy = (alpha[i * x + j] * timestep) / (dy * dy); - - tripletList.push_back(T(A_line, i * x + j, (1. + 2. * sx + 2. * sy))); - - std::cout << sx << std::endl; - - tripletList.push_back(T(A_line, (i - 1) * x + j, sy)); - tripletList.push_back(T(A_line, (i + 1) * x + j, sy)); - tripletList.push_back(T(A_line, i * x + (j + 1), sx)); - tripletList.push_back(T(A_line, i * x + (j - 1), sx)); - - b[A_line] = -c[i * x + j]; - A_line++; - } - } - - std::cout << b << std::endl; - - Eigen::SparseMatrix A(size, x * y); - A.setFromTriplets(tripletList.begin(), tripletList.end()); - - Eigen::SparseQR, Eigen::COLAMDOrdering> - solver; - - // Eigen::SparseLU, Eigen::COLAMDOrdering> - // solver; - solver.analyzePattern(A); - - solver.factorize(A); - - std::cout << A << std::endl; - std::cout << solver.lastErrorMessage() << std::endl; - - x_out = solver.solve(b); - - std::cout << x_out << std::endl; -} diff --git a/src/diffusion.hpp b/src/diffusion.hpp deleted file mode 100644 index 9d80e45..0000000 --- a/src/diffusion.hpp +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef DIFFUSION_H_ -#define DIFFUSION_H_ - -#include -#include - -typedef Eigen::Triplet T; - -extern void BTCS1D(int x, std::vector &c, std::vector &alpha, - double timestep, std::vector &bc); - -extern void BTCS2D(int x, int y, std::vector &c, - std::vector &alpha, double timestep); -#endif // DIFFUSION_H_ diff --git a/src/main.cpp b/src/main.cpp index 3613d17..fd28c85 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,4 @@ -#include "diffusion.hpp" +#include "BTCSDiffusion.hpp" #include #include #include @@ -11,15 +11,21 @@ int main(int argc, char *argv[]) { std::vector alpha(x, 1 * pow(10, -1)); std::vector input(x, 1 * std::pow(10, -6)); - std::vector bc; + std::vector bc_left, bc_right; - bc.push_back(5. * std::pow(10, -6)); - bc.push_back(1. * std::pow(10, -6)); + bc_left.push_back(5. * std::pow(10, -6)); + bc_right.push_back(-1); // input[x + 2] = 5.5556554 * std::pow(10, -6); // input[x + 3] = 5.234564213 * std::pow(10, -6); + BTCSDiffusion diffu(x); + + diffu.setBoundaryCondition(bc_left, BTCSDiffusion::LEFT); + diffu.setBoundaryCondition(bc_right, BTCSDiffusion::RIGHT); + for (int i = 0; i < 100; i++) { - BTCS1D(x, input, alpha, 1., bc); + diffu.simulate(input, alpha, 1.); + // BTCS1D(x, input, alpha, 1., bc); } return 0; diff --git a/src/test_class.cpp b/src/test_class.cpp deleted file mode 100644 index fd28c85..0000000 --- a/src/test_class.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "BTCSDiffusion.hpp" -#include -#include -#include - -using namespace std; - -int main(int argc, char *argv[]) { - - int x = 20; - - std::vector alpha(x, 1 * pow(10, -1)); - std::vector input(x, 1 * std::pow(10, -6)); - std::vector bc_left, bc_right; - - bc_left.push_back(5. * std::pow(10, -6)); - bc_right.push_back(-1); - // input[x + 2] = 5.5556554 * std::pow(10, -6); - // input[x + 3] = 5.234564213 * std::pow(10, -6); - - BTCSDiffusion diffu(x); - - diffu.setBoundaryCondition(bc_left, BTCSDiffusion::LEFT); - diffu.setBoundaryCondition(bc_right, BTCSDiffusion::RIGHT); - - for (int i = 0; i < 100; i++) { - diffu.simulate(input, alpha, 1.); - // BTCS1D(x, input, alpha, 1., bc); - } - - return 0; -}