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