From 5265963e9bc796aa9b91e072c4b7588d0c3e11d7 Mon Sep 17 00:00:00 2001 From: Louis Denis <louis.denis@student.uliege.be> Date: Wed, 18 May 2022 21:52:38 +0200 Subject: [PATCH] preparing merge --- srcs/BEM/functionsBEM.hpp | 2 +- srcs/BEM/mainBEM.cpp | 2 +- srcs/BEM/solverBEM.cpp | 2 +- srcs/main.cpp | 137 ++------------------------------------ 4 files changed, 10 insertions(+), 133 deletions(-) diff --git a/srcs/BEM/functionsBEM.hpp b/srcs/BEM/functionsBEM.hpp index 40e85db..ea63482 100644 --- a/srcs/BEM/functionsBEM.hpp +++ b/srcs/BEM/functionsBEM.hpp @@ -23,7 +23,7 @@ struct elementStruct{ }; -void solverBEM(std::map<int, double> &electrostaticPressure, std::map<int,std::pair<double,double>> & boundaryDisplacementMap, int & nbViews, bool postProcessing, const int iteration, bool untangleMesh); +void solverBEM(std::map<int, double> &electrostaticPressure, int & nbViews, std::map<int,std::pair<double,double>> & boundaryDisplacementMap, bool postProcessing, const int iteration, bool untangleMesh); void singleDomainSolverBEM(std::map<int, double> &electrostaticPressure, std::map<int,std::pair<double,double>> & boundaryDisplacementMap, int & nbViews, bool postProcessing, const int iteration, const int domainTag); void dispNodeCoordFun(const std::vector<size_t> &allNodeTags, const std::vector<double> &allCoord); void dispMatricesFun(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &c, const Eigen::MatrixXd &b, const Eigen::MatrixXd &x); diff --git a/srcs/BEM/mainBEM.cpp b/srcs/BEM/mainBEM.cpp index 1f23a17..9f35b0d 100644 --- a/srcs/BEM/mainBEM.cpp +++ b/srcs/BEM/mainBEM.cpp @@ -24,7 +24,7 @@ int main(int argc, char **argv) std::map<int,std::pair<double,double>> boundaryDisplacementMap; //solverBEM(argc, argv, finalElementTags, electrostaticPressure, nbViews); - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, true, 1, false); // iteration number randomly set to 1 + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, true, 1, false); // iteration number randomly set to 1 std::map<int, double>::iterator it; diff --git a/srcs/BEM/solverBEM.cpp b/srcs/BEM/solverBEM.cpp index afe6953..248d087 100644 --- a/srcs/BEM/solverBEM.cpp +++ b/srcs/BEM/solverBEM.cpp @@ -11,7 +11,7 @@ #include <omp.h> #include <list> -void solverBEM(std::map<int, double> &electrostaticPressure, std::map<int,std::pair<double,double>> & boundaryDisplacementMap, int & nbViews, bool postProcessing, const int iteration, bool untangleMesh) +void solverBEM(std::map<int, double> &electrostaticPressure, int & nbViews, std::map<int,std::pair<double,double>> & boundaryDisplacementMap, bool postProcessing, const int iteration, bool untangleMesh) { if(untangleMesh) diff --git a/srcs/main.cpp b/srcs/main.cpp index 90b59b9..1bacc6c 100644 --- a/srcs/main.cpp +++ b/srcs/main.cpp @@ -46,10 +46,9 @@ int main(int argc, char **argv) int viewTagU = gmsh::view::add("u"); // Ã modifier plus tard int viewTagF = gmsh::view::add("f"); - - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, 1, false); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, postProcessing, 1, false); solverFEMnonLinear(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, 1, viewTagU, viewTagF, false); std::vector<int> nodeTags(boundaryDisplacementMap.size()); @@ -71,7 +70,7 @@ int main(int argc, char **argv) for(iteration = 2; iteration <= maxNbIteration; iteration++) { - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, false); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, postProcessing, iteration, false); solverFEMnonLinear(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, viewTagU, viewTagF, false); i = 0; @@ -98,18 +97,18 @@ int main(int argc, char **argv) nbViews = 0; - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, false); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, postProcessing, iteration, false); postProcessing = true; solverFEMnonLinear(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, viewTagU, viewTagF, untangleMesh); if(untangleMesh) { std::map<int,std::pair<double,double>> boundaryDisplacementMap2; - solverBEM(electrostaticPressure, boundaryDisplacementMap2, nbViews, postProcessing, iteration, untangleMesh); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap2, postProcessing, iteration, untangleMesh); } else { - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, false); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, postProcessing, iteration, false); } } else @@ -121,7 +120,7 @@ int main(int argc, char **argv) int nbViews = 0; - solverBEM(electrostaticPressure, boundaryDisplacementMap, nbViews, true, 1, false); + solverBEM(electrostaticPressure, nbViews, boundaryDisplacementMap, true, 1, false); solverFEM(electrostaticPressure, nbViews); } @@ -136,126 +135,4 @@ int main(int argc, char **argv) gmsh::finalize(); return 0; -} - - - - - - -// #include "functionsBEM.hpp" -// #include "functionsFEM.hpp" - -// #include <gmsh.h> -// #include <iostream> -// #include <omp.h> - -// int main(int argc, char **argv) -// { -// if (argc < 2) -// { -// std::cout << "Usage: " << argv[0] << " <geo_file>\n"; -// return 0; -// } - -// bool nonLinearSolver = true; // use non-linear solver or not - -// // If compiled with OpenMP support, gmsh::initialize -// // also sets the number of threads to "General.NumThreads". -// int nthreads = omp_get_max_threads(); -// gmsh::initialize(); -// omp_set_num_threads(nthreads); - -// gmsh::open(argv[1]); -// gmsh::model::mesh::generate(2); - -// Eigen::initParallel(); - -// if(nonLinearSolver) -// { - -// bool postProcessing = 0; // pass it as an argument to the solver, only compute post processing at last iteration - -// std::map<int, double> electrostaticPressure; -// std::map<int,std::pair<double,double>> boundaryDisplacementMap; - -// int nbViews = 0; -// //double start = omp_get_wtime(); - -// int iteration; - -// int viewTagU = gmsh::view::add("u"); // Ã modifier plus tard -// int viewTagF = gmsh::view::add("f"); - -// solverBEM(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, 1); -// solverFEMnonLinear(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, 1, viewTagU, viewTagF); - -// std::vector<int> nodeTags(boundaryDisplacementMap.size()); -// std::vector<double> displacements(boundaryDisplacementMap.size()); -// std::vector<double> previousDisplacements(boundaryDisplacementMap.size()); -// std::vector<double> relativeDifference(boundaryDisplacementMap.size()); - -// double norm; -// const double criticalNorm = 0.0001; -// const int maxNbIteration = 40; - -// int i = 0; -// for(auto p : boundaryDisplacementMap) -// { -// nodeTags[i] = p.first; -// displacements[i] = sqrt(p.second.first*p.second.first + p.second.second*p.second.second); -// i++; -// } - -// for(iteration = 2; iteration <= maxNbIteration; iteration++) -// { -// solverBEM(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration); -// solverFEMnonLinear(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, viewTagU, viewTagF); - -// i = 0; -// norm = 0; -// for(auto p : boundaryDisplacementMap) -// { -// previousDisplacements[i] = displacements[i]; -// displacements[i] = sqrt(p.second.first*p.second.first + p.second.second*p.second.second); - -// if(previousDisplacements[i] != 0.0) -// relativeDifference[i] = abs( (displacements[i] - previousDisplacements[i]) / previousDisplacements[i] ); -// else -// relativeDifference[i] = 0; - -// norm += relativeDifference[i]*relativeDifference[i]; -// i++; -// } -// norm = sqrt(norm/i); -// std::cout << "Norm (iteration '" << iteration << "'): " << norm << "\n"; -// if(norm < criticalNorm) -// break; -// } - -// postProcessing = true; -// solverBEM(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration); -// solverFEMnonLinear(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, postProcessing, iteration, viewTagU, viewTagF); -// } -// else -// { - -// std::map<int, double> electrostaticPressure; - -// std::map<int,std::pair<double,double>> boundaryDisplacementMap; - -// int nbViews = 0; - -// solverBEM(argc, argv, electrostaticPressure, boundaryDisplacementMap, nbViews, true, 1); -// solverFEM(argc, argv, electrostaticPressure, nbViews); - -// } - -// //double fem_end = omp_get_wtime(); -// //std::cout << "time for FEM: " << fem_end - bem_end << "\n"; - -// gmsh::fltk::run(); - -// gmsh::finalize(); -// return 0; -// } +} \ No newline at end of file -- GitLab