From e3ef5f8669d4f44fe62d7d1398224c483dd4057e Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Sun, 23 Jan 2011 15:35:25 +0000
Subject: [PATCH] generalization: solve Dirichlet problems for all rods

[[Imported from SVN: r6842]]
---
 .../rodcontinuumsteklovpoincarestep.hh        | 23 ++++++++++++++-----
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
index abac9b7c..a3f8ce76 100644
--- a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
+++ b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
@@ -703,16 +703,27 @@ template <class RodGridType, class ContinuumGridType>
 void RodContinuumSteklovPoincareStep<RodGridType,ContinuumGridType>::
 iterate(std::map<std::pair<std::string,std::string>, RigidBodyMotion<3> >& lambda)
 {
-    // temporary
-    std::pair<std::string,std::string> interfaceName = std::make_pair("rod","continuum");
-    
     ///////////////////////////////////////////////////////////////////
-    //  Evaluate the Dirichlet-to-Neumann map for the rod
+    //  Evaluate the Dirichlet-to-Neumann maps for the rods
     ///////////////////////////////////////////////////////////////////
 
-    std::map<std::pair<std::string,std::string>, RigidBodyMotion<3>::TangentVector> rodForceTorque 
-            = rodDirichletToNeumannMap("rod", lambda);
+    std::map<std::pair<std::string,std::string>, RigidBodyMotion<3>::TangentVector> rodForceTorque;
+    
+    for (RodIterator it = rods_.begin(); it != rods_.end(); ++it) {
+        
+        const std::string& rodName = it->first;
+    
+        std::map<std::pair<std::string,std::string>, RigidBodyMotion<3>::TangentVector> forceTorque = rodDirichletToNeumannMap(rodName, lambda);
+
+        int oldSize = rodForceTorque.size();  // for debugging
+        rodForceTorque.insert(forceTorque.begin(), forceTorque.end());
+        assert(rodForceTorque.size() == oldSize + forceTorque.size());
+        
+    }
 
+    // temporary
+    std::pair<std::string,std::string> interfaceName = std::make_pair("rod","continuum");
+    
     std::cout << "resultant rod force and torque: "  << rodForceTorque[interfaceName] << std::endl;
 
     ///////////////////////////////////////////////////////////////////
-- 
GitLab