From 189467d54d897ca1b29f91aee310b0959a2b2131 Mon Sep 17 00:00:00 2001
From: Oliver Sander <sander@igpm.rwth-aachen.de>
Date: Sun, 23 Jan 2011 14:40:02 +0000
Subject: [PATCH] hack removal: RodAssembler::getResultantForce returns a
 tangent vector now

[[Imported from SVN: r6841]]
---
 dirneucoupling.cc                                    | 11 +++++++++--
 dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh | 12 +-----------
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/dirneucoupling.cc b/dirneucoupling.cc
index e7d2a02f..da870fcc 100644
--- a/dirneucoupling.cc
+++ b/dirneucoupling.cc
@@ -385,9 +385,16 @@ int main (int argc, char *argv[]) try
             //   Extract Neumann values and transfer it to the 3d object
             // ///////////////////////////////////////////////////////////
 
+            RigidBodyMotion<3>::TangentVector resultantForceTorque 
+                    = rodAssembler.getResultantForce(complex.couplings_[interfaceName].rodInterfaceBoundary_, rodX);
+            
+            // separate into translational and rotational part
             FieldVector<double,dim> resultantForce, resultantTorque;
-            resultantForce  = rodAssembler.getResultantForce(complex.couplings_[interfaceName].rodInterfaceBoundary_, rodX, resultantTorque);
-
+            for (int j=0; j<dim; j++) {
+                resultantForce[j]  = resultantForceTorque[j];
+                resultantTorque[j] = resultantForceTorque[dim+j];
+            }
+            
             // Flip orientation
             resultantForce  *= -1;
             resultantTorque *= -1;
diff --git a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
index a05d71a0..abac9b7c 100644
--- a/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
+++ b/dune/gfe/coupling/rodcontinuumsteklovpoincarestep.hh
@@ -603,17 +603,7 @@ rodDirichletToNeumannMap(const std::string& rodName,
         
         const LeafBoundaryPatch<RodGridType>& couplingBoundary = complex_.coupling(couplingName).rodInterfaceBoundary_;
 
-        /** \todo Hack: this should be a tangent vector right away */
-        Dune::FieldVector<double,dim> rodForce, rodTorque;
-        rodForce = rod(rodName).assembler_->getResultantForce(couplingBoundary, rodX, rodTorque);
-    
-        dune_static_assert(RigidBodyMotion<3>::TangentVector::size == 2*dim, "TangentVector does not have appropriate size");
-        result[couplingName][0] = rodForce[0];
-        result[couplingName][1] = rodForce[1];
-        result[couplingName][2] = rodForce[2];
-        result[couplingName][3] = rodTorque[0];
-        result[couplingName][4] = rodTorque[1];
-        result[couplingName][5] = rodTorque[2];
+        result[couplingName] = rod(rodName).assembler_->getResultantForce(couplingBoundary, rodX);
     }
     
     return result;
-- 
GitLab