Deep-MI / LaPy

Toolbox for Differential Geometry on Triangle and Tetrahedra Meshes (FEM, Laplace, Poisson, Heat Flow ...)
MIT License
67 stars 14 forks source link

Anisotropic Laplace-Beltrami Operator Implementation and Interpretation #55

Closed VictorBarnes closed 3 months ago

VictorBarnes commented 7 months ago

Description

I have a few questions in regards to the anisotropic Laplace-Beltrami operator.

How does the sign of aniso affect the computation of the anisotropic Laplace-Beltrami operator? The anisotropic coefficient (aniso_mat) is defined as a negative exponential function (i.e. for the maximum curvature direction: $\delta{max} = e^{-a{max}|c{max, \space i}|}$, where $\delta{max}$ is the anisotropic coefficient in the direction of maximum curvature).

https://github.com/Deep-MI/LaPy/blob/98bc454ada478eef25b0aa7960eac1331c9cc5a6/lapy/solver.py#L78-L80

This means that, although the sign of the curvature doesn't affect the anisotropic coefficient, the sign of $a{min}$ and $a{max}$ does. For example, if $a{max} < 0$ then $\delta{max} > 1$, whereas if $a{max}>0$ then $0 < \delta{max}<1$.

In _fem_tria_aniso(), the triangle edges (transformed to a basis set defined by the min and max curvature directions) are scaled by the the $\delta{min}$ and $\delta{max}$. My understanding is that this effectively scales the size of each triangle (i.e. increases triangle size if $a{max}<0$ and decreases it if $a{max}>0$). Is this understanding correct?

Essentially, I'm trying to gain an intuition for how anisotropy modifies the computation of the LBO and how this affects the resulting eigenvalues and eigenvectors.

What is the rationale for defining the anisotropic coefficient as a negative exponential function? I understand that this is one of the proposed functions for the anisotropic diffusion coefficient (from the anisotropic diffusion wikipedia page). I am just wondering what the reason is for it being a negative exponential instead of a normal exponential function?

Can you provide any papers that describe the algorithm used for the anisotropic Laplace-Beltrami operator implementation?

Environment

Thanks in advance!

m-reuter commented 7 months ago

I don't remember the details right now. I think we had some issues with the transformation in Equ 4 here: https://www.di.ens.fr/~andreux/publications/andreux-nordia14.pdf and instead decided to use the exponential. Also aniso0 and aniso1 are supposed to be positive, I think.

That paper describes the idea behind the aniso matrix. The algorithm for us is different as we use a different Laplace Beltrami operator computation (via FEM approach).

m-reuter commented 7 months ago

Initially we had a single aniso value (alpha ) and in this commit a3bad14 we added functionality to permit two different values, to have more flexibility.