diff options
author | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-05 09:03:36 +0100 |
---|---|---|
committer | Jaron Kent-Dobias <jaron@kent-dobias.com> | 2021-11-05 09:03:36 +0100 |
commit | 8209ca60b99594f26f3e9b21ccdbc8695526eb93 (patch) | |
tree | 73c64505e1f7b976c7e09958f6b0621245b0c589 /dynamics.hpp | |
parent | 433bc18e3b9ad16a85777f91c1cc6aa8cc6c7849 (diff) | |
download | code-8209ca60b99594f26f3e9b21ccdbc8695526eb93.tar.gz code-8209ca60b99594f26f3e9b21ccdbc8695526eb93.tar.bz2 code-8209ca60b99594f26f3e9b21ccdbc8695526eb93.zip |
Work on Stokes lines, and new method involving parametric fits.
Diffstat (limited to 'dynamics.hpp')
-rw-r--r-- | dynamics.hpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/dynamics.hpp b/dynamics.hpp index 10b1be2..561714e 100644 --- a/dynamics.hpp +++ b/dynamics.hpp @@ -113,3 +113,20 @@ std::tuple<Real, Vector<Scalar>> metropolis(const Tensor<Scalar, p>& J, const Ve return {E, z}; } + +template <class Real, class Scalar, int p, class Distribution, class Generator> +Vector<Scalar> randomSaddle(const Tensor<Scalar, p>& J, Distribution d, Generator& r, Real ε) { + Vector<Scalar> zSaddle; + bool foundSaddle = false; + + while (!foundSaddle) { + Vector<Scalar> z0 = normalize(randomVector<Scalar>(J.dimension(0), d, r.engine())); + + try { + zSaddle = findSaddle(J, z0, ε); + foundSaddle = true; + } catch (std::exception& e) {} + } + + return zSaddle; +} |