From cd44250b7d5d5bd591efb830e2442af04f21952a Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Mon, 10 Jan 2011 07:55:15 +0000 Subject: [PATCH] add a dummy method derivativeOfDistanceSquaredWRTSecondArgument. [[Imported from SVN: r6707]] --- dune/gfe/rigidbodymotion.hh | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/dune/gfe/rigidbodymotion.hh b/dune/gfe/rigidbodymotion.hh index f7ce7f78..34da7efb 100644 --- a/dune/gfe/rigidbodymotion.hh +++ b/dune/gfe/rigidbodymotion.hh @@ -67,12 +67,42 @@ struct RigidBodyMotion return result; } + + static EmbeddedTangentVector derivativeOfDistanceSquaredWRTSecondArgument(const RigidBodyMotion<dim,ctype>& a, + const RigidBodyMotion<dim,ctype>& b) { + + // linear part + Dune::FieldVector<ctype,dim> linearDerivative = a.r; + linearDerivative -= b.r; + linearDerivative *= -2; + + // rotation part + typename Rotation<dim,ctype>::EmbeddedTangentVector rotationDerivative + = Rotation<dim,ctype>::derivativeOfDistanceSquaredWRTSecondArgument(a.q, b.q); + + return concat(linearDerivative, rotationDerivative); + } // Translational part - Dune::FieldVector<ctype, dim> r; + Dune::FieldVector<ctype, dim> r;; // Rotational part Rotation<dim,ctype> q; + +private: + + /** \brief Concatenate two FieldVectors */ + template <int N, int M> + static Dune::FieldVector<ctype,N+M> concat(const Dune::FieldVector<ctype,N>& a, + const Dune::FieldVector<ctype,M>& b) + { + Dune::FieldVector<ctype,N+M> result; + for (int i=0; i<N; i++) + result[i] = a[i]; + for (int i=0; i<M; i++) + result[i+N] = b[i]; + return result; + } }; -- GitLab