Skip to content

Commit 1994177

Browse files
Refactor Gravity function for adaptive softening
Updated gravity calculation to use adaptive softening based on separation distance.
1 parent e5cd788 commit 1994177

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

src/struct/particle.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,15 @@ inline void Gravity(Particle& a, Particle& b, real dt)
1616
real dx = b.x - a.x;
1717
real dy = b.y - a.y;
1818
real dz = b.z - a.z;
19-
real eps = real(1e6);
20-
real distSq = dx*dx + dy*dy + dz*dz + eps*eps;
21-
real dist = std::sqrt(distSq);
19+
20+
real distSq0 = dx*dx + dy*dy + dz*dz;
21+
real dist0 = std::sqrt(distSq0);
22+
23+
// adaptive softening = 1% of separation
24+
real eps = dist0 * real(0.01);
25+
26+
real distSq = distSq0 + eps*eps;
27+
real dist = std::sqrt(distSq);
2228

2329
real invDist = real(1) / dist;
2430
real invDist3 = invDist * invDist * invDist;
@@ -42,3 +48,4 @@ inline void Gravity(Particle& a, Particle& b, real dt)
4248
b.vz += bz * dt;
4349
}
4450

51+

0 commit comments

Comments
 (0)