From a40035bbcfea6735fd3f8023d9ddedba7aa0ab3e Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Mon, 24 Jan 2011 09:27:57 +0000
Subject: [PATCH] bugfix: set the correct Dirichlet nodes for the linearized
 continuum NtD map

[[Imported from SVN: r6858]]
---
 dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
index 45f66d5b..3a1f7657 100644
--- a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
+++ b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
@@ -660,6 +660,14 @@ linearizedContinuumNeumannToDirichletMap(const std::string& continuumName,
         boundaryFunctionalAssembler.assemble(localNeumannAssembler, rhs, false);
 
     }
+    
+    // Set the correct Dirichlet nodes
+    /** \brief Don't write this BitSetVector at each iteration */
+    Dune::BitSetVector<dim> dirichletNodes(rhs.size(),false);
+    for (size_t i=0; i<dirichletNodes.size(); i++)
+        dirichletNodes[i] = dirichletBoundary.containsVertex(i);
+    dynamic_cast<IterationStep<VectorType>* >(continuum(continuumName).solver_->iterationStep_)->ignoreNodes_ 
+           = &dirichletNodes;
 
     //   Solve the Neumann problem for the continuum
     VectorType x = complex_.continuum(continuumName).dirichletValues_;
-- 
GitLab