Table of contents

Back to the main page Back to the documentation 1. Overview: Tidal tensor classification 2. Availiable methods

Overview: Tidal tensor classification

The cosmic web can be classified (void, sheet, filament, halo) by the eigenvalues (and eigenvectors) of the tidal tensor (see e.g. Section 3.3 of this). We provide a few methods that are useful for computing such a classification.

Availiable methods

// Computes the Hessian matrix of a grid [norm * f] via Fourier transforms.
// If hessian_of_potential_of_f is true then we compute the Hessian 
// phi_ij where D^2 phi = norm * f_real
// Since f_ij = f_ji we only compute the elements for j >= i and they are stored in
// the order fxx fxy ... fyy fyz ... etc. in hessian_real
// In 2D: [fxx fxy fyy]
// In 3D: [fxx fxy fxz fyy fyz fzz]
template<int N>
  void ComputeHessianWithFT(
    FFTWGrid<N> & f_real,
    std::vector< FFTWGrid<N> > & hessian_real,
    double norm = 1.0,
    bool hessian_of_potential_of_f = false)

// For each point in the grid compute eigenvectors and eigenvalues of the tensor
// H_ij where tensor_real contains the N(N-1)/2 grids [ 00,01,02,..,11,12,...,NN ]
// Eigenvalues are ordered in descending order 
// Eigenvectors are stored in row major order in the grid vector
// This allocates N grids if compute_eigenvectors = false and N(N+1) grids otherwise
template<int N>
  void SymmetricTensorEigensystem(
    std::vector< FFTWGrid<N> > & tensor_real,
    std::vector< FFTWGrid<N> > & eigenvalues,
    std::vector< FFTWGrid<N> > & eigenvectors,
    bool compute_eigenvectors = false)