- May 04, 2021
-
-
AlexanderMüller authored
-
- Nov 20, 2020
-
-
Sander, Oliver authored
Previously, the rod3d code used a hand-implemented first derivative of the rod energy, and FD for the second derivatives. This patch replaces this by ADOL-C for both first and second derivatives. Advantages are: * The code is much shorter, and easier to understand. * The previous code contained interpolation formulae for first-order 1d geodesic finite elements. This restricted rod problems to first-order GFE. A follow-up patch will allow higher-order approximations. * The new code runs roughly twice as fast.
-
Sander, Oliver authored
ADOL-C implements most standard math functions for its 'adouble' type, and they are not in the namespace 'std'. dune-fufem contains a file adolcnamespaceinjections.hh which imports some of these methods into the 'std' namespace, but that is not the proper way to do it. Rather, they should be found by argument-dependent lookup (ADL), that is using std::sin; auto v = sin(x);
-
- Oct 22, 2019
-
-
Sander, Oliver authored
Because it really is a functionality of rotation matrices in quaternion representation. Only the Cosserat energies use it at the moment, but this is coincidental. In the same process, the method is renamed to quaternionTangentToMatrixTangent. That seems to be a more telling name.
-
Sander, Oliver authored
Assignment from initializer lists makes this much shorter.
-
- Jan 03, 2019
-
-
Sander, Oliver authored
WARNING: These methods implement the projection in quaternion space. This is NOT the canonical projection in matrix space.
-
- May 11, 2018
-
-
Sander, Oliver authored
This is necessary to compute H1 errors in matrix space.
-
- Jan 15, 2018
-
-
Sander, Oliver authored
-
- Dec 06, 2017
-
-
Sander, Oliver authored
-
- Nov 24, 2017
-
-
Jonathan Youett authored
When switching to the double covered quaternion pair, the corresponding distance was not computed correctly
-
- Nov 14, 2015
-
-
Sander, Oliver authored
-
- Oct 18, 2015
-
-
Sander, Oliver authored
-
- Oct 16, 2015
-
-
Sander, Oliver authored
Needed for projection-based finite elements. This patch also adds a unit test. So far this test passes.
-
- Aug 29, 2014
-
-
Oliver Sander authored
This fixes a dubious compiler error. [[Imported from SVN: r9871]]
-
- Aug 22, 2014
-
-
Oliver Sander authored
[[Imported from SVN: r9846]]
-
Oliver Sander authored
[[Imported from SVN: r9845]]
-
- Dec 13, 2013
-
-
Oliver Sander authored
[[Imported from SVN: r9588]]
-
- Dec 09, 2013
-
-
Oliver Sander authored
We normalize unit vectors again in the constructor and the assignment operator. This makes sure we never drift away from the unit sphere, and it also allows us to init unit spheres with any value in R^n and be sure we obtain a unit vector. This makes the test pass again. Leaving the projection out didn't really make a measurable difference anyway. [[Imported from SVN: r9574]]
-
- Dec 06, 2013
-
-
Oliver Sander authored
The old implementation used quaternion multiplication to transport the argument to the Lie algebra, and use the standard formula there. However, one may as well use the formula for the unit sphere in R^4, which is much simpler, and also faster. I fact, this patch gives a few percent of speedup for the overall code. [[Imported from SVN: r9562]]
-
- Dec 05, 2013
-
-
Oliver Sander authored
There is one copy which takes FieldVector<T,4> as its second argument. Since EmbeddedTangentVector ( = Quaternion<T>) derives from FieldVector<T,4>, that second implementation should work in all cases. [[Imported from SVN: r9560]]
-
Oliver Sander authored
The methods Rotation<T,3> exp(const Rotation<T,3>& p, const EmbeddedTangentVector& v) and otation<T,3> exp(const Rotation<T,3>& p, const Dune::FieldVector<T,4>& v) do literally the same. So they should be next to each other in the code. [[Imported from SVN: r9559]]
-
Oliver Sander authored
This effectively means that we use another prolongation of the distance function on M into the surrounding space. Since the prolongation does not matter this patch should not change the algorithm behavior. However, it shaves off a few norm calculations and division. I cannot really measure any difference though. A possible effect of this is that while all values should remain on the manifold, they may start to 'drift away' due to numerical artifacts. So we may have to add an occasional renormalization step eventually. [[Imported from SVN: r9558]]
-
- Sep 03, 2013
-
-
Oliver Sander authored
When using the classes with ADOL-C, T becomes an 'adouble', which is a non-trivial type. However, the convexityField is constexpr (and with a reason -- otherwise we could write the initialization together with the declaration), and constexpr and non-trivial types don't work together. [[Imported from SVN: r9444]]
-
Oliver Sander authored
Because ADOL-C doesn't like calls to sqrt(0), obviously. The use of sqrt(x) for small x can be avoided completely using modified series expansions, because the overall function exp is differentiable even at x=0. [[Imported from SVN: r9426]]
-
Oliver Sander authored
Makes for a more precise Hessian matrix when using automatic differentiation. [[Imported from SVN: r9425]]
-
Oliver Sander authored
[[Imported from SVN: r9424]]
-
Oliver Sander authored
Because ADOL-C cannot handle the latter [[Imported from SVN: r9386]]
-
Oliver Sander authored
[[Imported from SVN: r9385]]
-
Oliver Sander authored
[[Imported from SVN: r9384]]
-
- Feb 14, 2013
-
-
Oliver Sander authored
And use it in the test. This patch uses the new 'constexpr' macro. Hence it is C++11 only. [[Imported from SVN: r9195]]
-
- Nov 06, 2012
-
-
Oliver Sander authored
[[Imported from SVN: r8972]]
-
- Feb 08, 2012
-
-
Oliver Sander authored
with respect to the quaternion coordinates. Or, in other words, the second derivative of the map from quaternions to orthogonal matrices. [[Imported from SVN: r8407]]
-
- Jan 12, 2012
-
-
Oliver Sander authored
New implementation properly handles the two sheets. Now the TargetSpace test passes again. Yay! [[Imported from SVN: r8375]]
-
Oliver Sander authored
The new implementation should take proper care of the two-sheet structure. I am writing 'should' here: it still fails the test sometimes, but then the result appears to be close enough to think rounding errors are responsible. [[Imported from SVN: r8373]]
-
Oliver Sander authored
The new implementation properly handles the double-sheet structure [[Imported from SVN: r8372]]
-
Oliver Sander authored
don't keep a private implementation of derivativeOfArcCosSquared -- use the one from UnitVector instead [[Imported from SVN: r8371]]
-
Oliver Sander authored
Properly taking into account the two-sheet covering structure [[Imported from SVN: r8370]]
-
Oliver Sander authored
[[Imported from SVN: r8368]]
-
Oliver Sander authored
Now it properly handles the situation that p and q may be on different sheets of the double cover. [[Imported from SVN: r8367]]
-
- Jan 11, 2012
-
-
Oliver Sander authored
[[Imported from SVN: r8366]]
-