1#ifndef TATOOINE_FIELDS_DETAIL_VORTEX_CORE_LINE_EXTRACTION_SUJUDI_HAIMES_H
2#define TATOOINE_FIELDS_DETAIL_VORTEX_CORE_LINE_EXTRACTION_SUJUDI_HAIMES_H
10template <
typename Field,
typename Real,
typename DomainX,
typename DomainY,
16 auto const filter_imaginary_eigenvalues = [&](
auto const& x) {
19 for (
auto const lambda : lambdas) {
20 if (
abs(lambda.imag()) > 1e-10) {
27 filter_imaginary_eigenvalues);
30template <
typename Gr
id,
typename Real,
bool HasNonConstReference>
44 return detail::calc_parallel_vectors<Real>(
46 [&](
auto const ix,
auto const iy,
auto const iz,
auto const& ) {
50 [&](
auto const ix,
auto const iy,
auto const iz,
auto const& ) {
51 return J(ix, iy, iz) * v(ix, iy, iz);
56template <
typename Gr
id,
typename Real,
bool HasNonConstReference>
58 Grid,
Vec3<Real>, HasNonConstReference>
const& v,
60 Grid,
Mat3<Real>, HasNonConstReference>
const& J) {
61 auto J_sampler = J.linear_sampler();
62 auto const filter_imaginary_eigenvalues = [&](
auto const& x) {
63 auto jxt = J_sampler(x);
66 std::cout <<
"==========\n";
67 std::cout << x <<
'\n';
68 std::cout << jxt <<
'\n';
69 std::cout << lambdas <<
'\n';
71 for (
auto const lambda : lambdas) {
72 if (
abs(lambda.imag()) > 1e-10) {
78 return detail::calc_parallel_vectors<Real>(
80 [&](
auto const ix,
auto const iy,
auto const iz,
auto const& ) {
84 [&](
auto const ix,
auto const iy,
auto const iz,
auto const& ) {
85 return J(ix, iy, iz) * v(ix, iy, iz);
Definition: rectilinear_grid.h:38
Definition: concepts.h:21
auto parallel_vectors(polymorphic::vectorfield< VReal, 3 > const &vf, polymorphic::vectorfield< WReal, 3 > const &wf, rectilinear_grid< XDomain, YDomain, ZDomain > const &g, TReal const t, execution_policy_tag auto const policy, Preds &&... preds)
This is an implementation of .
Definition: parallel_vectors.h:1043
Definition: sujudi_haimes.h:8
auto sujudi_haimes(vectorfield< Field, Real, 3 > const &v, integral auto const t, tatooine::rectilinear_grid< DomainX, DomainY, DomainZ > const &g)
Definition: sujudi_haimes.h:12
static constexpr parallel_t parallel
Definition: tags.h:60
constexpr auto abs(arithmetic auto const x)
Definition: math.h:26
constexpr auto eigenvalues(Mat &&A)
Definition: eigenvalues.h:85
constexpr auto diff(polynomial< Real, Degree > const &f)
Definition: polynomial.h:179
Definition: vertex_property.h:96