{"id":1951,"date":"2025-10-20T22:47:37","date_gmt":"2025-10-20T22:47:37","guid":{"rendered":"https:\/\/summergeometry.org\/sgi2025\/?p=1951"},"modified":"2025-10-27T14:51:03","modified_gmt":"2025-10-27T14:51:03","slug":"the-log-diffusion-solver","status":"publish","type":"post","link":"https:\/\/summergeometry.org\/sgi2025\/the-log-diffusion-solver\/","title":{"rendered":"The Log Diffusion Solver"},"content":{"rendered":"\n<figure id=\"fig:kitten\">\n        <img decoding=\"async\" src=\"https:\/\/summergeometry.org\/sgi2025\/wp-content\/uploads\/2025\/10\/teaser-scaled.jpg\" alt=\"Teaser Figure\">\n        <figcaption><strong>Figure 1:<\/strong> Comparison of distance estimation by heat methods. Standard diffuse-then-log (middle) suffers from numerical issues when the heat is small (large geodesic distances), leading to noisy and inaccurate isolines. Our proposed log-space diffusion (right) performs diffusion directly in the log-heat domain, producing smooth and accurate estimates, closely matching the ground-truth distances (left). It is worth noting that our solver outperforms others primarily for smaller time step values. This example was done at a time step of 0.01 with 50 time steps.<\/figcaption>\n    <\/figure>\n\n<p>SGI Mentor: Justin Solomon\n<p>SGI Fellows: Shree Singhi, Nhu (Jade) Tran, Haojun Qiu, Eva Kato\n\n    <h2>Introduction<\/h2>\n    <p>The heat equation is one of the canonical diffusion PDEs: it models how &#8220;heat&#8221; (or any diffusive quantity) spreads out over space as time progresses. Mathematically, let \\(u(x,t) \\in \\mathbb{R}_{\\geq 0}\\) denote the temperature at spatial location \\(x \\in \\mathbb{R}^{d}\\) and time \\(t \\in \\mathbb{R}\\). The continuous heat equation is given by<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\partial u}{\\partial t} = \\Delta u,\\]\n    <\/div>\n    \n    <p>where \\(\\Delta u (x, t) = \\sum_{i=1}^{d} \\frac{\\partial^2 u}{\\partial x_i^2}\\) is the Laplace operator representing how local temperature gradients drive heat from hotter to colder regions. On a surface mesh, the spatial domain is typically discretized so that the PDE reduces to a system of ODEs in time, which can be integrated using stable and efficient schemes such as backward Euler. Interestingly, in many applications\u2014including geodesic distance computation <sup><a href=\"#ref1\" class=\"citation\">1<\/a><\/sup> and optimal transport <sup><a href=\"#ref2\" class=\"citation\">2<\/a><\/sup>\u2014it is often more useful to work with the <em>logarithm<\/em> of the heat rather than the heat itself. For example, Varadhan&#8217;s formula states that the geodesic distance \\(\\phi\\) between two points \\(x\\) and \\(x^*\\) on a curved domain can be recovered from the short-time asymptotics of the heat kernel:<\/p>\n    \n    <div class=\"equation\">\n        \\[\\phi(x, x^{*}) = \\lim_{t \\to 0} \\sqrt{-4t \\,\\log k_{t,x^{*}}(x)},\\]\n    <\/div>\n    \n    <p>where \\(k_{t,x^{*}}(x) = u(x,t)\\) is the heat distribution at time \\(t\\) resulting from an initial Dirac delta at \\(x^*\\), i.e., \\(u(x,0) = \\delta(x-x^{*})\\). In practice, this leads to a two-step workflow: (1) simulate the heat equation to obtain \\(u_t\\), and (2) take the logarithm to recover the desired quantity. However, this approach can be numerically unstable in regions where \\(u\\) is very small: tiny relative errors in \\(u\\) can be greatly magnified in the log domain. For example, an absolute error of \\(10^{-11}\\) in \\(u\\) becomes an error of roughly \\(25.33\\) in \\(\\log u\\).<\/p>\n    \n    <p>A natural idea is therefore to evolve the logarithm of the heat directly. Let \\(u&gt;0\\) satisfy the heat equation and define \\(w = \\log u\\). One can show that \\(w\\) obeys the nonlinear PDE <sup><a href=\"#ref3\" class=\"citation\">3<\/a><\/sup><\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\partial w}{\\partial t} = \\Delta w + \\|\\nabla w\\|_2^2.\\]\n    <\/div>\n    \n    <p>This formulation has the appealing property that it avoids taking the logarithm <em>after<\/em> simulation, thereby reducing the amplification of small relative errors in \\(u\\) when \\(u\\) is tiny. However, the price of this reformulation is the additional nonlinear term \\(\\|\\nabla w\\|_2^2\\), which complicates time integration as each step requires iterative optimization, and introduces a discrepancy with the discretized heat equation. In practice, evaluating \\(\\|\\nabla w\\|_2^2\\) requires a discrete gradient operator, and the resulting ODE is generally <em>not<\/em> equivalent to the one obtained by first discretizing the heat equation for \\(u\\) (which involves only a discrete Laplacian) up to a log transform. This non-equivalence stems from (1) there is a new spatially discretized gradient operator, and (2) the fact that the logarithm is nonlinear and does not commute with discrete differential operators.<\/p>\n    \n    <p>Motivated by this discrepancy, we take a different approach that preserves the exact relationship to the standard discretization. We first discretize the heat equation in space, yielding the familiar linear ODE system for \\(u\\). We then apply the transformation \\(w = \\log u\\) to this <em>discrete<\/em> system, producing a new ODE for \\(w\\). Now, by construction, the new ODE is equivalent to the heat ODE up to a log transform of variable. This still allows us to integrate directly in log-space, which allows more accurate and stable computation. We show that this formulation offers improved numerical robustness in regions where \\(u\\) is very small, and demonstrate its effectiveness in applications such as geodesic distance computation.<\/p>\n\n    <table>\n        <caption><strong>Table 1:<\/strong> Side-by-side procedures for computing \\(\\log u\\) in heat diffusion, note the highlighted steps are the same for standard heat diffusion and ours.<\/caption>\n        <tr>\n            <th>Standard (post-log)<\/th>\n            <th>Continuous log-PDE<\/th>\n            <th>Proposed discrete-log<\/th>\n        <\/tr>\n        <tr>\n            <td class=\"blue-highlight\">1. Start with the heat PDE for \\(u\\).<\/td>\n            <td>1. Start with the log-heat PDE for \\(w=\\log u\\).<\/td>\n            <td class=\"blue-highlight\">1. Start with the heat PDE for \\(u\\).<\/td>\n        <\/tr>\n        <tr>\n            <td class=\"blue-highlight\">2. Discretize in space \\(\\Rightarrow\\) ODE for \\(u\\).<\/td>\n            <td>2. Discretize in space for \\(\\nabla\\) and \\(\\Delta\\) \\(\\Rightarrow\\) ODE for \\(w\\).<\/td>\n            <td class=\"blue-highlight\">2. Discretize in space \\(\\Rightarrow\\) ODE for \\(u\\).<\/td>\n        <\/tr>\n        <tr>\n            <td>3. Time-integrate in \\(u\\)-space.<\/td>\n            <td>3. Time-integrate in \\(w\\)-space and output \\(w\\).<\/td>\n            <td>3. Apply change of variables \\(w=\\log u\\) \\(\\Rightarrow\\) ODE for \\(w\\).<\/td>\n        <\/tr>\n        <tr>\n            <td>4. Compute \\(w=\\log u\\) as a post-process.<\/td>\n            <td><\/td>\n            <td>4. Time-integrate in \\(w\\)-space and output \\(w\\).<\/td>\n        <\/tr>\n    <\/table>\n\n    <h2>Background<\/h2>\n    <p>We begin by reviewing how previous approaches are carried out, focusing on the original heat method <sup><a href=\"#ref1\" class=\"citation\">1<\/a><\/sup> and the log-heat PDE studied in <sup><a href=\"#ref3\" class=\"citation\">3<\/a><\/sup>. In particular, we discuss two key stages of the discretization process: (1) <em>spatial discretization<\/em>, where continuous differential operators such as the Laplacian and gradient are replaced by their discrete counterparts, turning the PDE into an ODE; and (2) <em>time discretization<\/em>, where a numerical time integrator is applied to solve the resulting ODE. Along the way, we introduce notation that will be used throughout.<\/p>\n    \n    <h3>Heat Method<\/h3>\n    <p><strong>Spatial discretization.<\/strong> In the heat method <sup><a href=\"#ref1\" class=\"citation\">1<\/a><\/sup>, the heat equation is discretized on triangle mesh surfaces by representing the heat values at mesh vertices as a vector \\(u \\in \\mathbb{R}^{|V|}\\), where \\(|V|\\) is the number of vertices. A corresponding discrete Laplace operator is then required to evolve \\(u\\) in time. Many Laplacian discretizations are possible, each with its own trade-offs <sup><a href=\"#ref4\" class=\"citation\">4<\/a><\/sup>. The widely used <em>cotangent Laplacian<\/em> is written in matrix form as \\(M^{-1}L\\), where \\(M, L \\in \\mathbb{R}^{|V| \\times |V|}\\). The matrix \\(L\\) is defined via<\/p>\n    \n    <div class=\"equation\">\n        \\[L_{ij} = \\begin{cases} \\frac{1}{2}(\\cot \\alpha_{ij} + \\cot \\beta_{ij}) \\quad &amp; i \\neq j \\\\ -\\sum_{i \\neq j}L_{ij} &amp; i = j \\end{cases},\\]\n    <\/div>\n    \n    <p>where \\(i,j\\) are vertex indices and \\(\\alpha_{ij}, \\beta_{ij}\\) are the two angles opposite the edge \\((i,j)\\) in the mesh. The mass matrix \\(M = \\mathrm{diag}(m_1, \\dots, m_{|V|})\\) is a lumped (diagonal) area matrix, with \\(m_i\\) denoting the area associated with vertex \\(i\\). Note that \\(L\\) has several useful properties: it is sparse, symmetric, and each row sums to zero. This spatial discretization converts the continuous PDE into an ODE for the vector-valued heat function \\(u(t)\\):<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d}u}{\\mathrm{d}t} = M^{-1}L\\,u.\\]\n    <\/div>\n    \n    <p><strong>Time discretization and integration.<\/strong> The ODE is typically advanced in time using a fully implicit backward Euler scheme, which is unconditionally stable. For a time step \\(\\Delta t = t_{n+1} &#8211; t_n\\), backward Euler yields:<\/p>\n    \n    <div class=\"equation\">\n        \\[(M &#8211; \\Delta t\\,L)\\,u_{n+1} = M\\,u_n,\\]\n    <\/div>\n    \n    <p>where \\(u_n\\) is given and we solve for \\(u_{n+1}\\). Thus, each time stepping requires solving a sparse linear system with system matrix \\(M &#8211; \\Delta t\\,L\\). Since this matrix remains constant throughout the simulation, it can be factored once (e.g., by Cholesky decomposition) and reused at every iteration, greatly improving efficiency.<\/p>\n    \n    <h3>Log Heat PDE<\/h3>\n    <p><strong>Spatial discretization.<\/strong> In prior work <sup><a href=\"#ref3\" class=\"citation\">3<\/a><\/sup> on the log-heat PDE, solving this requires discretizing not only the Laplacian term but also the additional nonlinear term \\(\\|\\nabla w\\|_2^{2}\\). After spatial discretization, the squared gradient norm of a vertex-based vector \\(w \\in \\mathbb{R}^{|V|}\\) is computed as<\/p>\n    \n    <div class=\"equation\">\n        \\[g(w) = W \\left( \\sum_{k=1}^{3} (G_k w) \\odot (G_k w) \\right) \\in \\mathbb{R}^{|V|}\\]\n    <\/div>\n    \n    <p>where \\(G_{k} \\in \\mathbb{R}^{|F| \\times |V|}\\) is the discrete gradient operator on mesh faces for the \\(k\\)-th coordinate direction, and \\(W \\in \\mathbb{R}^{|V| \\times |F|}\\) is an averaging operator that maps face values to vertex values. With this discretization, the ODE for \\(w(t) \\in \\mathbb{R}^{|V|}\\) becomes<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d}w}{\\mathrm{d}t} = M^{-1}L\\,w + g(w)\\]\n    <\/div>\n    \n    <p><strong>Time discretization and integration.<\/strong> If we apply fully implicit Euler, we would find \\(w^{n+1}\\) by solving a nonlinear equation. To avoid this large nonlinear solve, prior work <sup><a href=\"#ref3\" class=\"citation\">3<\/a><\/sup> splits the problem into two substeps:<\/p>\n    \n    <ul>\n        <li>a <em>linear diffusion part:<\/em> \\(\\frac{\\mathrm{d}w}{\\mathrm{d}t} = M^{-1}L\\,w\\), which is stiff but easy to solve implicitly,<\/li>\n        <li>a <em>nonlinear part:<\/em> the full equation, which is nonlinear but convex.<\/li>\n    <\/ul>\n    \n    <p>This separation lets each component be treated with the method best suited for it: a direct linear solve for the diffusion, and a convex optimization problem for the nonlinear term. Using Strang-Marchuk splitting:<\/p>\n    \n    <ol>\n        <li><strong>Half-step diffusion:<\/strong> \\((M &#8211; \\frac{\\Delta t}{2} L)\\,w^{(1)} = Mw^n\\)<\/li>\n        <li><strong>Full-step nonlinear term:<\/strong> Solve a convex optimization problem to find \\(w^{(2)}\\)<\/li>\n        <li><strong>Half-step diffusion:<\/strong> \\((M &#8211; \\frac{\\Delta t}{2} L)\\,w^{(3)} = Mw^{(2)}\\), and set \\(w^{n+1} = w^{(3)}\\)<\/li>\n    <\/ol>\n\n    <h2>A New ODE in Log-Domain<\/h2>\n    <p>Let us revisit the spatially discretized heat (or diffusion) equation. For each vertex \\(i \\in \\{1, \\dots |V|\\}\\) on a mesh, its evolution is described by<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d} u_i}{\\mathrm{d} t} = \\frac{1}{m_i} (L u)_i\\]\n    <\/div>\n    \n    <p>where \\(u\\) represents our heat, and \\(L\\) is the discrete Laplacian operator. A key insight is that the Laplacian term can be rewritten as a sum of local differences between a point and its neighbors:<\/p>\n    \n    <div class=\"equation\">\n        \\[(Lu)_i = \\sum_{j \\sim i}L_{ij} (u_j &#8211; u_i).\\]\n    <\/div>\n    \n    <p>This shows that the change in \\(u_i\\) depends on how different it is from its neighbors, weighted by the Laplacian matrix entries. Now, before doing time discretization, we use a change of variable \\(w \\Leftarrow\\log u\\), accordingly, \\(u = \\mathrm{e}^{w}\\), to obtain the ODE<\/p>\n    \n    <div class=\"equation\">\n        \\[\\mathrm{e}^{w_i}\\frac{\\mathrm{d} w_i}{\\mathrm{d}t} = \\frac{1}{m_i} \\sum_{j \\sim i}L_{ij} (\\mathrm{e}^{w_j} &#8211; \\mathrm{e}^{w_i}),\\]\n    <\/div>\n    \n    <p>which can be rearranged into<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d} w_i}{\\mathrm{d}t} = \\frac{1}{m_i} \\sum_{j \\sim i}L_{ij} (\\mathrm{e}^{w_j \\, &#8211; \\, w_i} &#8211; 1).\\]\n    <\/div>\n    \n    <p>In vectorized notation, we construct a matrix \\(\\tilde{L} \\Leftarrow L &#8211; \\mathrm{diag}(L_{11}, \\dots, L_{|V| \\,|V|})\\), which zeros out the diagonals of \\(L\\). Then the log heat \\(w(t) \\in \\mathbb{R}^{|V|}\\) follows the ODE<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d} w}{\\mathrm{d}t} = M^{-1} \\left( \\mathrm{diag}(\\mathrm{e}^{-w})\\, \\tilde{L}\\,\\mathrm{e}^{w} &#8211; \\tilde{L} 1 \\right),\\]\n    <\/div>\n    \n    <p>and another equivalent way to put it is<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{\\mathrm{d} w}{\\mathrm{d}t} = M^{-1} \\left( \\left(\\tilde{L} \\odot \\exp(1 w^{\\top} &#8211; w 1^{\\top} ) \\right) 1  &#8211; \\tilde{L} 1 \\right).\\]\n    <\/div>\n    \n    <p>This ODE is equivalent to the standard heat ODE up to a log transform of the integrated results, but crucially it avoids the amplification of small relative errors in \\(u\\) when \\(u\\) is tiny by integrating directly in log-space.<\/p>\n\n    <h2>Numerical Solvers for Our New ODE<\/h2>\n    \n    <h3>Forward (Explicit Euler)<\/h3>\n    <p>The most straightforward approach uses explicit Euler to update the solution at each time step. The update rule is<\/p>\n    \n    <div class=\"equation\">\n        \\[w_{n+1} = w_{n} + \\Delta t\\, M^{-1} \\left( \\mathrm{diag}(\\mathrm{e}^{-w_n})\\, \\tilde{L}\\,\\mathrm{e}^{w_n} &#8211; \\tilde{L} 1 \\right)\\]\n    <\/div>\n    \n    <p>While this is efficient and can be solved linearly, it causes instability.<\/p>\n    \n    <h3>Semi-Implicit<\/h3>\n    <p>We can discretize with both explicit and implicit parts by decomposing the exponential function as a linear and nonlinear part:<\/p>\n    \n    <div class=\"equation\">\n        \\[\\mathrm{e}^{x} = \\underbrace{(1 + x)}_{\\text{implicit}} + \\underbrace{(\\mathrm{e}^{x} &#8211; x &#8211; 1)}_{\\text{explicit}}\\]\n    <\/div>\n    \n    <p>Applying this decomposition yields a linear system for solving \\(w_{n+1}\\):<\/p>\n    \n    <div class=\"equation\">\n        \\[\\left( M + \\Delta t \\left(\\tilde{L} &#8211; \\mathrm{diag}(\\tilde{L} 1) \\right) \\right) w_{n+1} = M w_{n} &#8211; \\Delta t \\left( \\mathrm{diag}(\\mathrm{e}^{-w_n}) \\tilde{L} \\mathrm{e}^{w_{n}} &#8211; \\tilde{L} w_{n} + \\mathrm{diag}(w_{n}) \\tilde{L} 1 &#8211; \\tilde{L} 1 \\right)\\]\n    <\/div>\n    \n    <p>This retains efficiency but does not fully address instability issues.<\/p>\n    \n    <h3>Backward (Convex Optimization)<\/h3>\n    <p>Solving the backward Euler equation involves finding the vector \\(w^{t+1}\\) that satisfies<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{w^{t+1}_i &#8211; w^{t}_i}{\\Delta t} = \\frac{1}{m_i} \\sum_{j \\sim i}L_{ij} (\\mathrm{e}^{w^{t+1}_j \\, &#8211; \\, w^{t+1}_i} &#8211; 1)\\]\n    <\/div>\n    \n    <p>Taking inspiration from prior work <sup><a href=\"#ref3\" class=\"citation\">3<\/a><\/sup>, we find that relaxing this equality into an inequality leads to a convex constraint on \\(w^{t+1}_i\\):<\/p>\n    \n    <div class=\"equation\">\n        \\[\\frac{w^{t+1}_i &#8211; w^{t}_i}{\\Delta t} \\geq \\frac{1}{m_i} \\sum_{j \\sim i}L_{ij} (\\mathrm{e}^{w^{t+1}_j \\, &#8211; \\, w^{t+1}_i} &#8211; 1)\\]\n    <\/div>\n    \n    <p>It can be shown that minimizing the objective function<\/p>\n    \n    <div class=\"equation\">\n        \\[f(w) = \\sum_{i}M_iw_i\\]\n    <\/div>\n    \n    <p>with the inequality constraint defined above yields the exact solution to the original equation. We have written a complete proof for this finding <a href=\"https:\/\/drive.google.com\/file\/d\/1J2BL6jqECoJqlQqRQSlehZSEt5PlqM-6\/view?usp=sharing\">here<\/a>. We implement this constrained optimization problem using the Clarabel solver <sup><a href=\"#ref6\" class=\"citation\">6<\/a><\/sup> in CVXPY <sup><a href=\"#ref7\" class=\"citation\">7<\/a><\/sup>, a Python library for convex optimization problems.<\/p>\n\n  \n\n    <h2>Experiments<\/h2>\n<p>\nAs mentioned earlier, the log heat equation is widely used to efficiently approximate geodesic distances. To evaluate our method, we selected a point on each mesh as a heat source and computed approximate geodesic distances from that point using the log-heat solution with Varadhan\u2019s formula. For comparison, all solvers were applied within the same log-heat framework described in Equation 2 and tested on meshes of varying complexity. As ground truth, we used libigl\u2019s <sup><a href=\"#ref5\" class=\"citation\">5<\/a><\/sup> implementation of exact discrete geodesic distances. All experiments used 10 diffusion time-steps equally spaced between \\(t = 0\\) and \\(t = 10^{-2}\\). The results are shown in <a href=\"correlation\">Table 2<\/a>.\n<\/p>\n\n\n<table id=\"tab:correlation\">\n    <caption><strong>Table 2:<\/strong> Correlation analysis results.<\/caption>\n    <tr>\n        <th>Mesh<\/th>\n        <th># of verts<\/th>\n        <th>Method<\/th>\n        <th>Pearson \\(r\\) \u2191<\/th>\n        <th>RMSE \u2193<\/th>\n        <th>MAE \u2193<\/th>\n    <\/tr>\n    <tr>\n        <td rowspan=\"3\">Lilium<\/td>\n        <td rowspan=\"3\">3389<\/td>\n        <td>HeatBackward<\/td>\n        <td>0.992<\/td>\n        <td>0.267<\/td>\n        <td>0.207<\/td>\n    <\/tr>\n    <tr>\n        <td>LogHeatBackward<\/td>\n        <td>0.653<\/td>\n        <td>0.510<\/td>\n        <td>0.385<\/td>\n    <\/tr>\n    <tr>\n        <td>NewLogHeatBackward (ours)<\/td>\n        <td><strong>0.997<\/strong><\/td>\n        <td><strong>0.070<\/strong><\/td>\n        <td><strong>0.063<\/strong><\/td>\n    <\/tr>\n    <tr>\n        <td rowspan=\"3\">Cat<\/td>\n        <td rowspan=\"3\">9447<\/td>\n        <td>HeatBackward<\/td>\n        <td>0.991<\/td>\n        <td><strong>0.063<\/strong><\/td>\n        <td><strong>0.043<\/strong><\/td>\n    <\/tr>\n    <tr>\n        <td>LogHeatBackward<\/td>\n        <td>0.513<\/td>\n        <td>0.531<\/td>\n        <td>0.474<\/td>\n    <\/tr>\n    <tr>\n        <td>NewLogHeatBackward (ours)<\/td>\n        <td><strong>0.998<\/strong><\/td>\n        <td>0.150<\/td>\n        <td>0.140<\/td>\n    <\/tr>\n    <tr>\n        <td rowspan=\"3\">Spot<\/td>\n        <td rowspan=\"3\">11533<\/td>\n        <td>HeatBackward<\/td>\n        <td>0.992<\/td>\n        <td>0.318<\/td>\n        <td>0.248<\/td>\n    <\/tr>\n    <tr>\n        <td>LogHeatBackward<\/td>\n        <td>0.382<\/td>\n        <td>0.982<\/td>\n        <td>0.853<\/td>\n    <\/tr>\n    <tr>\n        <td>NewLogHeatBackward (ours)<\/td>\n        <td><strong>0.994<\/strong><\/td>\n        <td><strong>0.121<\/strong><\/td>\n        <td><strong>0.115<\/strong><\/td>\n    <\/tr>\n<\/table>\n   \n<figure id=\"fig:lilium\">\n        <img decoding=\"async\" src=\"https:\/\/summergeometry.org\/sgi2025\/wp-content\/uploads\/2025\/10\/lilium-scaled.jpg\" alt=\"Distance computations by different solvers\">\n        <figcaption><strong>Figure 2:<\/strong> Comparison of geodesic distance computation on the Lilium mesh (top) and the corresponding error relative to the ground-truth distances (bottom).<\/figcaption>\n    <\/figure>\n    \n  \n<p>\nOur method, <em>NewLogHeatBackward<\/em>, consistently outperforms <em>HeatBackward<\/em> and <em>LogHeatBackward<\/em> on all tested meshes, showing the highest correlation with the ground truth while maintaining low RMSE and MAE. This demonstrates that it provides more accurate and reliable approximations of geodesic distances across meshes of different sizes and complexities. While performance can still vary depending on the mesh, <em>NewLogHeatBackward<\/em> performs especially well on well-behaved meshes, as shown in <a href=\"lilium\">Figure 2<\/a>. <a href=\"distance_plot\">Figure 3<\/a> further illustrates its accuracy by comparing the exact geodesic distances with those computed by each solver. Although the method may slightly overshoot in some cases, it consistently produces results closest to the true geodesic distances.\n<\/p>\n\n<figure id=\"fig:distance_plot\">\n        <img decoding=\"async\" src=\"https:\/\/summergeometry.org\/sgi2025\/wp-content\/uploads\/2025\/10\/correlation-scaled.jpg\" alt=\"Correlation plot for log heat methods\" style=\"width: 100%;height: auto\">\n        <figcaption><strong>Figure 3:<\/strong> Correlation plot for log heat methods against an exact geodesic computation.<\/figcaption>\n    <\/figure>\n    \n\n\n    <p>In <a href=\"kitten\">Figure 1<\/a>, the flat region for the NewLogHeatBackward Solver probably indicates regions of numerical overflow\/underflow, since the log of tiny heat values is going to be incredibly negative. Through our experimentation we observed that the solver for this our formulated PDE outperforms others mostly in cases where the diffusion time-step is extremely small.<\/p>\n\n    <div class=\"references\">\n        <h2>References<\/h2>\n        <div class=\"reference-item\">\n            <span id=\"ref1\">[1]<\/span> Keenan Crane, Clarisse Weischedel, and Max Wardetzky. &#8220;The Heat Method for Distance Computation.&#8221; <em>Communications of the ACM<\/em>, vol. 60, no. 11, October 2017, pp. 90\u201399.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref2\">[2]<\/span> Justin Solomon, Fernando de Goes, Gabriel Peyr\u00e9, Marco Cuturi, Adrian Butscher, Andy Nguyen, Tao Du, and Leonidas Guibas. &#8220;Convolutional Wasserstein Distances: Efficient Optimal Transportation on Geometric Domains.&#8221; <em>ACM Transactions on Graphics<\/em>, vol. 34, no. 4, August 2015.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref3\">[3]<\/span> Leticia Mattos Da Silva, Oded Stein, and Justin Solomon. &#8220;A Framework for Solving Parabolic Partial Differential Equations on Discrete Domains.&#8221; <em>ACM Transactions on Graphics<\/em>, vol. 43, no. 5, October 2024.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref4\">[4]<\/span> Max Wardetzky, Saurabh Mathur, Felix K\u00e4lberer, and Eitan Grinspun. &#8220;Discrete Laplace Operators: No Free Lunch.&#8221; In <em>Proceedings of the Fifth Eurographics Symposium on Geometry Processing<\/em>, pages 33\u201337, Barcelona, Spain, 2007.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref5\">[5]<\/span> Alec Jacobson et al. &#8220;libigl: A Simple C++ Geometry Processing Library.&#8221; Available at <a href=\"https:\/\/github.com\/libigl\/libigl\">https:\/\/github.com\/libigl\/libigl<\/a>, 2025.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref6\">[6]<\/span> Paul J. Goulart and Yuwen Chen. &#8220;Clarabel: An Interior-Point Solver for Conic Programs with Quadratic Objectives.&#8221; arXiv preprint arXiv:2405.12762, 2024.\n        <\/div>\n        <div class=\"reference-item\">\n            <span id=\"ref7\">[7]<\/span> Steven Diamond and Stephen Boyd. &#8220;CVXPY: A Python-Embedded Modeling Language for Convex Optimization.&#8221; <em>Journal of Machine Learning Research<\/em>, vol. 17, no. 83, pages 1\u20135, 2016.\n        <\/div>\n    <\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Figure 1: Comparison of distance estimation by heat methods. Standard diffuse-then-log (middle) suffers from numerical issues when the heat is small (large geodesic distances), leading to noisy and inaccurate isolines. Our proposed log-space diffusion (right) performs diffusion directly in the log-heat domain, producing smooth and accurate estimates, closely matching the ground-truth distances (left). It is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[31],"tags":[62,63,64],"ppma_author":[15,33,6,25,19],"class_list":["post-1951","post","type-post","status-publish","format-standard","hentry","category-research","tag-diffusion","tag-pde","tag-solver"],"authors":[{"term_id":15,"user_id":0,"is_guest":1,"slug":"cap-singhishree","display_name":"singhishree","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":33,"user_id":0,"is_guest":1,"slug":"cap-nhu_tran","display_name":"nhu_tran","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":6,"user_id":1,"is_guest":0,"slug":"summergeometry_m6mu1f","display_name":"Justin Solomon","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b124697a4c4e64f96baf10f00ef90d0e2ccb694c8a65ecc6709905415f934daf?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":25,"user_id":0,"is_guest":1,"slug":"cap-harry-qiu","display_name":"harry.qiu","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""},{"term_id":19,"user_id":0,"is_guest":1,"slug":"cap-evakato14","display_name":"evakato14","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/1951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/comments?post=1951"}],"version-history":[{"count":10,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/1951\/revisions"}],"predecessor-version":[{"id":2022,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/posts\/1951\/revisions\/2022"}],"wp:attachment":[{"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/media?parent=1951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/categories?post=1951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/tags?post=1951"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/summergeometry.org\/sgi2025\/wp-json\/wp\/v2\/ppma_author?post=1951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}