Skip to content

Commit f5e31c7

Browse files
committed
Add checks and conditions to avoid nans for waves
1 parent e9237ea commit f5e31c7

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

src/wave_types.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Eigen::Vector3d GetWaterVelocity(const Eigen::Vector3d& position,
6969

7070
// get water velocity
7171
auto water_velocity = Eigen::Vector3d(0.0, 0.0, 0.0);
72-
if (2 * M_PI / wavenumber > water_depth) {
72+
if (2 * M_PI / wavenumber > water_depth || wavenumber * water_depth > 500.0) {
7373
// deep water
7474
water_velocity[0] =
7575
omega * amplitude * std::exp(wavenumber * z_pos) * cos(wavenumber * x_pos - omega * time + phase);
@@ -109,6 +109,10 @@ double ComputeWaveNumber(double omega,
109109
double g,
110110
double tolerance = 1e-6,
111111
int max_iterations = 100) {
112+
if (water_depth <= 0.0) {
113+
throw std::runtime_error("Cannot compute wavenumber with water depth: " + std::to_string(water_depth) + ".");
114+
}
115+
112116
// Initial guess for wave number (using deep water approximation)
113117
double k = omega * omega / g;
114118

0 commit comments

Comments
 (0)