From 4971bbf52b56a2a21102ec65f6541de5af459335 Mon Sep 17 00:00:00 2001 From: Simon Praetorius <simon.praetorius@tu-dresden.de> Date: Fri, 29 Jun 2018 12:33:15 +0200 Subject: [PATCH] replaced symmetric DBC with unsymmetric one, since this seems to be wrong. Needs to be checked again --- examples/init/stokes.dat.2d | 7 ++++--- src/amdis/DirichletBC.hpp | 4 ++-- src/amdis/linear_algebra/mtl/DOFMatrix.hpp | 11 +++++++++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/examples/init/stokes.dat.2d b/examples/init/stokes.dat.2d index 19232d37..3fdf287e 100644 --- a/examples/init/stokes.dat.2d +++ b/examples/init/stokes.dat.2d @@ -1,7 +1,8 @@ dimension of world: 2 -stokesMesh->macro file name: ./macro/macro.stand.2d stokesMesh->global refinements: 0 +stokesMesh->dimension: 1.0 1.0 +stokesMesh->num cells: 4 4 stokes->mesh: stokesMesh @@ -14,7 +15,7 @@ stokes->solver->info: 2 stokes->output[0]->filename: stokes_u.2d stokes->output[0]->name: u -stokes->output[0]->subsampling: 0 +stokes->output[0]->subsampling: 2 stokes->output[0]->output directory: ./output stokes->output[0]->ParaView format: 1 stokes->output[0]->ParaView mode: 1 @@ -25,7 +26,7 @@ stokes->output[1]->output directory: ./output stokes->output[1]->ParaView format: 1 stokes->output[1]->ParaView mode: 1 -stokes->viscosity: 0.1 +stokes->viscosity: 1.0 stokes->density: 1.0 stokes->boundary velocity: 10.0 diff --git a/src/amdis/DirichletBC.hpp b/src/amdis/DirichletBC.hpp index 3cfd811a..1729ec65 100644 --- a/src/amdis/DirichletBC.hpp +++ b/src/amdis/DirichletBC.hpp @@ -78,8 +78,8 @@ namespace AMDiS finishImpl(matrix, rhs, solution, rowBasis, colBasis, ValueCategory_t<Range>{}); // subtract columns of dirichlet nodes from rhs - for (auto const& triplet : columns) - rhs[triplet.row] -= triplet.value * solution[triplet.col]; + // for (auto const& triplet : columns) + // rhs[triplet.row] -= triplet.value * solution[triplet.col]; } protected: diff --git a/src/amdis/linear_algebra/mtl/DOFMatrix.hpp b/src/amdis/linear_algebra/mtl/DOFMatrix.hpp index b8b4d85d..efadcc31 100644 --- a/src/amdis/linear_algebra/mtl/DOFMatrix.hpp +++ b/src/amdis/linear_algebra/mtl/DOFMatrix.hpp @@ -181,6 +181,7 @@ namespace AMDiS auto value = mtl::mat::value_map(*matrix); // iterate over the matrix +#if 0 for (auto r : mtl::major_of(*matrix)) { // rows or columns for (auto i : mtl::nz_of(r)) { // non-zeros within if (dirichletNodes[row(i)]) { @@ -193,6 +194,16 @@ namespace AMDiS } } } +#endif + + for (auto r : mtl::rows_of(*matrix)) { // rows or columns + if (dirichletNodes[r.value()]) { + for (auto i : mtl::nz_of(r)) { // non-zeros within + // set identity row + value(i, (row(i) == col(i) ? value_type(1) : value_type(0)) ); + } + } + } return columns; } -- GitLab