diff --git a/dirneucoupling.cc b/dirneucoupling.cc index e7d2a02f7bfd91f38e5eed8b4caf9c2caca50707..da870fccce1db65c359437922ef897cb2120b22b 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 a05d71a0d6b5d6d04b2379078e6b51674edd444b..abac9b7c15a5de351fcdbee96a5f6f1a49bf1faf 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;