Skip to content

Particle splitting on mesh domains should use geodesic placement #2501

@akenmorris

Description

@akenmorris

When a particle splits during optimization on a MeshDomain, the new particle position is computed as a raw Euclidean offset via the base class ParticleDomain::GetPositionAfterSplit. This doesn't account for the mesh surface, so the new particle can land off-mesh and must rely on a subsequent snap to get back on-surface. This is generally not a problem, but with extremely thin surfaces, the split can actually end up on the other side of the object.

The base class has a todo noting this should use UpdateParticlePosition instead, which for MeshDomain performs a geodesic_walk along the surface. ContourDomain already has its own override doing this correctly.

Expected behavior: Split particles should be placed on the mesh surface using geodesic walk, consistent with how all other particle movements work on mesh domains.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions