summaryrefslogtreecommitdiff
path: root/dynamics.hpp
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2021-11-05 09:03:36 +0100
committerJaron Kent-Dobias <jaron@kent-dobias.com>2021-11-05 09:03:36 +0100
commit8209ca60b99594f26f3e9b21ccdbc8695526eb93 (patch)
tree73c64505e1f7b976c7e09958f6b0621245b0c589 /dynamics.hpp
parent433bc18e3b9ad16a85777f91c1cc6aa8cc6c7849 (diff)
downloadcode-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.hpp17
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;
+}