Stress lines break on interior edges, worse at higher resolution

Hi,

I’m experiencing an issue with the ShellLineResults component (PrincStress mode) where principal stress lines break into increasingly short segments as mesh resolution increases. I’ve done systematic testing and wanted to share my findings and ask if there’s a known workaround.

Setup
Model: Scordelis-Lo roof (classic shell benchmark)
Mesh: Generated with Mesh Breps, pure triangular mesh (confirmed via Triangulate component returning N=0)
Seg-L: Tested default (0.5) and reduced values down to 0.2× mean edge length

Observed behavior
As mesh resolution increases, principal stress lines break into more and shorter segments. The lines terminate at interior mesh edges (E2), not at the domain boundary or at regions of high stress gradient.

Face count vs. result quality:

  • ~40,684 faces → relatively continuous lines (see Image 1)
  • ~162,376 faces → noticeably more breaks (Image 2)
  • ~364,806 faces → many short broken segments (Image 3)
  • ~1,457,614 faces → lines almost completely fragmented (Image 4)

Key observation: lines always terminate on mesh edges
One consistent finding across all resolutions is that stress lines always terminate exactly on mesh edges — never in the interior of a face. This can be seen in Image 5, where the endpoints of broken lines visibly align with the underlying mesh edge network. This appears to be a strong clue about where the integration is failing.

Factors I have already ruled out

  • Stress field discontinuity: visualized principal stress vectors via ShellVecResults — directions are smooth and consistent across the regions where lines terminate
  • Seg-L mismatch: reducing Seg-L to 0.2× mean edge length produces no improvement
  • Naked edges / mesh cracks: E1 (naked edges) contains only the true domain boundary; no internal cracks
  • Face normal flipping: Unify Mesh Normals returns N=0 (no flipped faces)
  • Quad diagonal inconsistency: mesh is already purely triangular

Questions

  1. What is the underlying mechanism that causes more frequent and shorter line breaks at higher mesh resolutions? Intuitively one would expect finer meshes to produce smoother and more continuous stress lines, but the observed behavior is the opposite — is this a known limitation of the current integration algorithm?
  2. Is there a known parameter or workaround to suppress premature line termination at high mesh resolutions?Is the termination criterion hardcoded, or is it exposed anywhere as an adjustable tolerance?
  3. Would it be feasible to expose the underlying nodal stress field so users can run their own streamline integration (e.g. RK4) outside of Karamba?

Thanks in advance — happy to share the GH file if useful.

Dear @haha,

Thank you for your bug report. The algorithm used to trace line results on shells performs a path integration for each element, which is why the paths are composed of many small line segments.

I will look into resolving the issue with the broken lines. If you have a small example that reproduces the problem, it would be very helpful if you could share it for debugging purposes.

Providing access to vertex values would indeed be very useful. I will check whether this can be supported with the current API or if additional methods need to be implemented.

-- Clemens

ScordelisLoStressLine.3dm (68.7 KB)

InitialSeed_1.txt (42.2 KB)

Roof.gh (70.9 KB)The files consist of the geometry file, the Grasshopper (.gh) file, and the seed points stored in the .txt file.