From 0eaa35b8f7a97b3df007863b6a84168c990d1b6e Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Wed, 17 Sep 2025 22:13:36 -0400 Subject: [PATCH 01/12] minimal test --- config.m | 13 +++ simulate.m | 13 ++- src/advect_tracers.m | 133 +++++++++++++++++++++++++ src/geometry/make_airfoil_geometry.m | 3 + src/geometry/make_cylinder_geometry.m | 3 + src/geometry/make_ellipse_geometry.m | 3 + src/geometry/make_multi_geometry.m | 3 + src/geometry/make_rectangle_geometry.m | 3 + src/seed_tracers.m | 105 +++++++++++++++++++ src/visualize_final.m | 33 +++++- 10 files changed, 310 insertions(+), 2 deletions(-) create mode 100644 src/advect_tracers.m create mode 100644 src/seed_tracers.m diff --git a/config.m b/config.m index 92fc735..99aa08e 100644 --- a/config.m +++ b/config.m @@ -150,6 +150,19 @@ config.visualization.plot_tick_x = [-5, 0, 5, 10, 15]; config.visualization.color_axis_range = 1e-0; + %% Tracers (Lagrangian point particles advected by the flow) + config.tracers.enable = true; % Enable tracer particles + config.tracers.num_particles = 3000; % Number of tracers (normal runs) + config.tracers.num_particles_ci = 300; % Fewer tracers for CI/tests + config.tracers.k_neighbors = 20; % IDW neighbors for velocity interpolation + config.tracers.idw_power = 2; % IDW power (2 = standard) + config.tracers.obstacle_margin = 3 * config.mesh.boundary_eps; % Seed clearance from obstacles + config.tracers.wall_margin = 3 * config.mesh.boundary_eps; % Seed clearance from walls/domain + config.tracers.max_seed_tries = 20; % Try this many batches before stopping early + config.tracers.integrator = 'heun'; % 'heun' for trapezoidal method + config.tracers.pushback_on_obstacle = true; % Prevent crossing into obstacle during advection + config.tracers.max_pushback_iters = 5; % Limit for step shrinking when crossing obstacle + %% Logging and Debug Parameters % Master debug switch - set to true to enable all debug features debug_master = false; % Master switch for all debug features diff --git a/simulate.m b/simulate.m index 4a92c78..83a90da 100644 --- a/simulate.m +++ b/simulate.m @@ -306,6 +306,9 @@ end [W, p0] = init_state(xy1, xy1_s, boundary_obs, Nt_alloc); +% Initialize tracers (seed outside obstacles) +tracers = seed_tracers(cfg, G, isCI, isTest); + % Define useful index lengths for boundary handling L_B = length(boundary_obs) + length(boundary_in); % Total special boundaries L_B_y = length(boundary_y); % Wall boundaries @@ -380,6 +383,14 @@ rethrow(ME); end + % Advect tracers with latest velocity field (Heun: uses W(:,j) and W(:,j+1)) + if cfg.tracers.enable && ~isempty(tracers) + W_prev = W(:, j); + W_now = W(:, j + 1); + domain_struct = struct('x_min', x_min, 'x_max', x_max, 'y_min', y_min, 'y_max', y_max); + tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); + end + % Comprehensive instability detection if cfg.logging.immediate_nan_check || cfg.logging.comprehensive_instability_check instability_detected = false; @@ -840,4 +851,4 @@ fprintf('=====================================\n\n'); %% 11) Visualization of final results -visualize_final(cfg, doPlot, xy1, W0, Nt, x_min, x_max, y_min, y_max, Dx, Dy); +visualize_final(cfg, doPlot, xy1, W0, Nt, x_min, x_max, y_min, y_max, Dx, Dy, tracers); diff --git a/src/advect_tracers.m b/src/advect_tracers.m new file mode 100644 index 0000000..a030c4f --- /dev/null +++ b/src/advect_tracers.m @@ -0,0 +1,133 @@ +function tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) + %ADVECT_TRACERS Advect tracers with Heun's method using fluid at t^n and t^{n+1} + % + % This function advances tracer particles using Heun's method (explicit trapezoidal) + % which is second-order accurate and uses the fluid velocity at both the beginning + % and end of the time step. Velocity interpolation uses Inverse Distance Weighting + % (IDW) over k nearest neighbors from the scattered velocity grid. + % + % INPUTS: + % tracers - [N x 2] tracer positions at t^n + % dt - time step size + % xy1 - [NV x 2] V-grid coordinates (interior + boundary nodes) + % W_prev - [2*NV x 1] velocity field at t^n (stacked [U; V]) + % W_now - [2*NV x 1] velocity field at t^{n+1} (stacked [U; V]) + % cfg - configuration structure (uses cfg.tracers.*) + % fd_obs - obstacle signed distance function (negative inside), or [] + % domain - struct with x_min, x_max, y_min, y_max + % + % OUTPUTS: + % tracers - [N x 2] tracer positions at t^{n+1} + % + % ALGORITHM: + % 1. Heun's method: x^{n+1} = x^n + 0.5*dt*(v^n + v^{n+1}) + % where v^n = u(x^n, t^n) and v^{n+1} = u(x^n + dt*v^n, t^{n+1}) + % 2. Velocity interpolation via IDW over k nearest neighbors + % 3. Domain boundary enforcement (clamp to domain limits) + % 4. Obstacle avoidance via step shrinking if particles enter obstacles + + if isempty(tracers) + return + end + + % Extract velocity components + NV = size(xy1, 1); + U_prev = W_prev(1:NV); % u-velocity at t^n + V_prev = W_prev(NV+1:end); % v-velocity at t^n + U_now = W_now(1:NV); % u-velocity at t^{n+1} + V_now = W_now(NV+1:end); % v-velocity at t^{n+1} + + % IDW interpolation parameters + k = cfg.tracers.k_neighbors; + p = cfg.tracers.idw_power; + eps_w = 1e-12; % Small regularization to avoid division by zero + + % Nested function for velocity interpolation using IDW + function vel = interp_vel(pts, U, V) + %INTERP_VEL Interpolate velocity at arbitrary points using IDW + % + % INPUTS: + % pts - [N x 2] query points + % U,V - [NV x 1] velocity components on V-grid + % + % OUTPUT: + % vel - [N x 2] interpolated velocities [u, v] + + if isempty(pts) + vel = []; + return + end + + % Find k nearest neighbors for each query point + [idx, D] = knnsearch(pts, xy1, k); % pts as queries, xy1 as references + + % Compute IDW weights: w = 1/d^p (with regularization) + w = 1 ./ max(D, eps_w).^p; % [N x k] weights + wsum = sum(w, 2); % [N x 1] weight normalization + + % Gather velocity values at neighbor nodes + U_nei = U(idx); % [N x k] u-velocities at neighbors + V_nei = V(idx); % [N x k] v-velocities at neighbors + + % Compute weighted averages + u = sum(w .* U_nei, 2) ./ wsum; % [N x 1] interpolated u + v = sum(w .* V_nei, 2) ./ wsum; % [N x 1] interpolated v + + vel = [u, v]; % [N x 2] velocity vector + end + + % Heun's method (explicit trapezoidal rule) + Pn = tracers; % x^n (current positions) + Vn = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) + + % Predictor step: estimate position at t^{n+1} using velocity at t^n + Ppred = Pn + dt * Vn; + + % Corrector step: evaluate velocity at predicted position and t^{n+1} + Vnp1 = interp_vel(Ppred, U_now, V_now); % u(x_pred, t^{n+1}) + + % Final Heun update: average of velocities at t^n and t^{n+1} + Pnew = Pn + 0.5 * dt * (Vn + Vnp1); + + % Enforce domain boundaries (clamp to domain limits) + Pnew(:, 1) = min(max(Pnew(:, 1), domain.x_min), domain.x_max); + Pnew(:, 2) = min(max(Pnew(:, 2), domain.y_min), domain.y_max); + + % Optional obstacle avoidance via step shrinking + if cfg.tracers.pushback_on_obstacle && ~isempty(fd_obs) + % Check which particles have entered obstacles + dnew = fd_obs(Pnew); + bad = dnew < 0; % Particles inside obstacles (negative distance) + + if any(bad) + % Apply step shrinking to particles that entered obstacles + base = Pn(bad, :); % Original positions + step = Pnew(bad, :) - base; % Full step vectors + scale = 0.5; % Step reduction factor + + % Iteratively shrink steps until particles are outside obstacles + for it = 1:cfg.tracers.max_pushback_iters + cand = base + scale * step; % Candidate positions with reduced step + d_cand = fd_obs(cand); % Distance to obstacles + ok = d_cand >= 0; % Particles now outside obstacles + + % Accept positions that are now valid + base(ok, :) = cand(ok, :); + + % Further shrink steps for particles still inside + step(~ok, :) = scale * step(~ok, :); + + % Stop if all particles are now outside + if all(ok) + break + end + end + + % Update positions for particles that were inside obstacles + Pnew(bad, :) = base; + end + end + + tracers = Pnew; + +end diff --git a/src/geometry/make_airfoil_geometry.m b/src/geometry/make_airfoil_geometry.m index 0c113d5..2c861bd 100644 --- a/src/geometry/make_airfoil_geometry.m +++ b/src/geometry/make_airfoil_geometry.m @@ -254,4 +254,7 @@ G.idx_far_boundaries_V = idx_far_boundaries_V; % Velocity nodes far from boundaries G.idx_far_boundaries_P = idx_far_boundaries_P; % Pressure nodes far from boundaries + % Obstacle signed distance function (negative inside airfoil) + G.fd_obs = @(p) dairfoil(p, airfoil_x_center, airfoil_y_center, naca_digits, chord_length, angle_of_attack); + end diff --git a/src/geometry/make_cylinder_geometry.m b/src/geometry/make_cylinder_geometry.m index 4b905d9..0aa2c13 100644 --- a/src/geometry/make_cylinder_geometry.m +++ b/src/geometry/make_cylinder_geometry.m @@ -161,4 +161,7 @@ G.idx_far_boundaries_V = idx_far_boundaries_V; % Velocity nodes far from boundaries G.idx_far_boundaries_P = idx_far_boundaries_P; % Pressure nodes far from boundaries + % Obstacle signed distance function (negative inside obstacle, ~0 on surface) + G.fd_obs = @(p) dcircle(p, 0, 0, radius); + end diff --git a/src/geometry/make_ellipse_geometry.m b/src/geometry/make_ellipse_geometry.m index 4f4d6df..e47b196 100644 --- a/src/geometry/make_ellipse_geometry.m +++ b/src/geometry/make_ellipse_geometry.m @@ -183,4 +183,7 @@ G.idx_far_boundaries_V = idx_far_boundaries_V; % Velocity nodes far from boundaries G.idx_far_boundaries_P = idx_far_boundaries_P; % Pressure nodes far from boundaries + % Obstacle signed distance function (negative inside ellipse) + G.fd_obs = @(p) dellipse(p, 0, 0, a, b); + end diff --git a/src/geometry/make_multi_geometry.m b/src/geometry/make_multi_geometry.m index 771c349..9c57549 100644 --- a/src/geometry/make_multi_geometry.m +++ b/src/geometry/make_multi_geometry.m @@ -162,6 +162,9 @@ G.idx_far_boundaries_V = idx_far_boundaries_V; % Velocity nodes far from boundaries G.idx_far_boundaries_P = idx_far_boundaries_P; % Pressure nodes far from boundaries + % Obstacle union signed distance (negative inside any obstacle) + G.fd_obs = fd_obs_union; + % Store obstacle configuration for reference G.obstacles = obstacles; G.num_obstacles = num_obstacles; diff --git a/src/geometry/make_rectangle_geometry.m b/src/geometry/make_rectangle_geometry.m index b0cd983..567ac34 100644 --- a/src/geometry/make_rectangle_geometry.m +++ b/src/geometry/make_rectangle_geometry.m @@ -226,4 +226,7 @@ G.idx_far_boundaries_V = idx_far_boundaries_V; % Velocity nodes far from boundaries G.idx_far_boundaries_P = idx_far_boundaries_P; % Pressure nodes far from boundaries + % Obstacle signed distance function (negative inside rounded rectangle) + G.fd_obs = @(p) drounded_rectangle(p, rect_x_center, rect_y_center, rect_width, rect_height, corner_radius); + end diff --git a/src/seed_tracers.m b/src/seed_tracers.m new file mode 100644 index 0000000..f07da66 --- /dev/null +++ b/src/seed_tracers.m @@ -0,0 +1,105 @@ +function tracers = seed_tracers(cfg, G, isCI, isTest) + %SEED_TRACERS Initialize tracer particle positions outside obstacles and walls + % + % This function seeds tracer particles randomly throughout the domain while + % ensuring they are placed outside obstacles (with margin) and away from + % domain boundaries. Uses rejection sampling with batched generation for + % efficiency. + % + % INPUTS: + % cfg - Configuration structure containing tracer parameters + % G - Geometry structure (must contain fd_obs obstacle distance function) + % isCI - Boolean flag indicating CI environment (reduces particle count) + % isTest - Boolean flag indicating test environment (reduces particle count) + % + % OUTPUTS: + % tracers - [N x 2] array of tracer positions [x, y] + % + % ALGORITHM: + % 1. Determine target number of particles based on environment + % 2. Define seeding domain with wall margins + % 3. Use rejection sampling in batches to find valid positions + % 4. Reject points inside obstacles using G.fd_obs distance function + % 5. Return up to target number of valid positions + + if ~cfg.tracers.enable + tracers = []; + return + end + + % Determine target number of particles + N_target = cfg.tracers.num_particles; + if isCI || isTest + N_target = cfg.tracers.num_particles_ci; + end + + % Define seeding domain with wall margins + x_min = cfg.domain.x_min + cfg.tracers.wall_margin; + x_max = cfg.domain.x_max - cfg.tracers.wall_margin; + y_min = cfg.domain.y_min + cfg.tracers.wall_margin; + y_max = cfg.domain.y_max - cfg.tracers.wall_margin; + + % Safety check for valid domain + if x_min >= x_max || y_min >= y_max + warning('Invalid seeding domain after applying wall margins. No tracers seeded.'); + tracers = []; + return + end + + margin_obs = cfg.tracers.obstacle_margin; + max_tries = max(1, cfg.tracers.max_seed_tries); + + % Initialize output array + tracers = zeros(N_target, 2); + n = 0; % Number of valid tracers found + tries = 0; % Number of batch attempts + + fprintf('Seeding %d tracer particles (target)...\n', N_target); + + while n < N_target && tries < max_tries + % Generate batch of candidate positions + batch_size = max(1000, ceil(1.5 * (N_target - n))); % Oversample for efficiency + xs = x_min + (x_max - x_min) * rand(batch_size, 1); + ys = y_min + (y_max - y_min) * rand(batch_size, 1); + pts = [xs, ys]; + + % Filter out points inside obstacles (with margin) + if isfield(G, 'fd_obs') && ~isempty(G.fd_obs) + d = G.fd_obs(pts); % Negative inside obstacle, positive outside + ok = d > margin_obs; % Keep points outside obstacle with margin + else + ok = true(size(xs)); % No obstacles, all points valid + end + + % Take up to remaining needed particles + n_valid = sum(ok); + n_take = min(n_valid, N_target - n); + + if n_take > 0 + pts_ok = pts(ok, :); + tracers(n + (1:n_take), :) = pts_ok(1:n_take, :); + n = n + n_take; + end + + tries = tries + 1; + + % Progress reporting + if mod(tries, 5) == 0 && n < N_target + fprintf(' Batch %d: found %d/%d tracers (%.1f%% success rate this batch)\n', ... + tries, n, N_target, 100 * n_take / batch_size); + end + end + + % Trim array if we couldn't find enough valid positions + if n < N_target + tracers = tracers(1:n, :); + if n == 0 + warning('Could not seed any valid tracer particles after %d attempts', tries); + else + fprintf('Warning: Only seeded %d/%d tracers after %d attempts\n', n, N_target, tries); + end + else + fprintf('Successfully seeded %d tracer particles in %d batches\n', n, tries); + end + +end diff --git a/src/visualize_final.m b/src/visualize_final.m index abfacff..e2e8a8b 100644 --- a/src/visualize_final.m +++ b/src/visualize_final.m @@ -1,4 +1,4 @@ -function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_max, Dx, Dy) +function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_max, Dx, Dy, tracers) %VISUALIZE_FINAL Create visualization of final simulation results % % This function creates a plot of the final vorticity field if plotting is enabled. @@ -15,6 +15,12 @@ function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_ma % y_max - Maximum y-coordinate of domain % Dx - RBF-FD differentiation matrix for d/dx operator % Dy - RBF-FD differentiation matrix for d/dy operator + % tracers - (Optional) [N x 2] tracer particle positions + + % Handle optional tracers argument + if nargin < 11 + tracers = []; + end % Only plot if plotting is enabled if ~doPlot @@ -80,6 +86,13 @@ function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_ma grid on; grid minor; + % Overlay tracer particles if available + if ~isempty(tracers) && cfg.tracers.enable + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + fprintf('Overlaid %d tracer particles on vorticity plot\n', size(tracers, 1)); + end + drawnow; % Update display immediately %% Plot u-velocity component @@ -114,6 +127,12 @@ function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_ma grid on; grid minor; + % Overlay tracer particles if available + if ~isempty(tracers) && cfg.tracers.enable + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end + fprintf('U-velocity field statistics:\n'); u_min = min(U_final); u_max = max(U_final); @@ -158,6 +177,12 @@ function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_ma grid on; grid minor; + % Overlay tracer particles if available + if ~isempty(tracers) && cfg.tracers.enable + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end + fprintf('V-velocity field statistics:\n'); v_min = min(V_final); v_max = max(V_final); @@ -202,6 +227,12 @@ function visualize_final(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_ma grid on; grid minor; + % Overlay tracer particles if available + if ~isempty(tracers) && cfg.tracers.enable + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end + fprintf('Velocity magnitude statistics:\n'); fprintf(' Min |V|: %.6f\n', min(velocity_magnitude)); fprintf(' Max |V|: %.6f\n', max(velocity_magnitude)); From 6d173ee51256a963d3196921901eeea0d5ac1630 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 10:32:13 -0400 Subject: [PATCH 02/12] config --- config.m | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config.m b/config.m index 99aa08e..77f3c23 100644 --- a/config.m +++ b/config.m @@ -35,7 +35,7 @@ config.simulation.reynolds_number = 100; config.simulation.viscosity = 1 / config.simulation.reynolds_number; config.simulation.time_step = 1e-2; % Default time step (may be overridden by geometry) - config.simulation.num_time_steps = 5000; + config.simulation.num_time_steps = 50; config.simulation.num_time_steps_ci = 20; config.simulation.random_seed = 42; % Required for DistMesh reproducibility (uses rand() for rejection method) config.simulation.show_progress = true; % Display time step progress (disabled in CI) @@ -152,8 +152,8 @@ %% Tracers (Lagrangian point particles advected by the flow) config.tracers.enable = true; % Enable tracer particles - config.tracers.num_particles = 3000; % Number of tracers (normal runs) - config.tracers.num_particles_ci = 300; % Fewer tracers for CI/tests + config.tracers.num_particles = 30; % Number of tracers (normal runs) + config.tracers.num_particles_ci = 30; % Fewer tracers for CI/tests config.tracers.k_neighbors = 20; % IDW neighbors for velocity interpolation config.tracers.idw_power = 2; % IDW power (2 = standard) config.tracers.obstacle_margin = 3 * config.mesh.boundary_eps; % Seed clearance from obstacles From 9882a35427b19cdea7e64737716def438a92343e Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 10:48:34 -0400 Subject: [PATCH 03/12] format --- src/advect_tracers.m | 28 ++++++++++++++-------------- src/seed_tracers.m | 4 ++-- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/advect_tracers.m b/src/advect_tracers.m index a030c4f..bf0f594 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -33,9 +33,9 @@ % Extract velocity components NV = size(xy1, 1); U_prev = W_prev(1:NV); % u-velocity at t^n - V_prev = W_prev(NV+1:end); % v-velocity at t^n + V_prev = W_prev(NV + 1:end); % v-velocity at t^n U_now = W_now(1:NV); % u-velocity at t^{n+1} - V_now = W_now(NV+1:end); % v-velocity at t^{n+1} + V_now = W_now(NV + 1:end); % v-velocity at t^{n+1} % IDW interpolation parameters k = cfg.tracers.k_neighbors; @@ -52,27 +52,27 @@ % % OUTPUT: % vel - [N x 2] interpolated velocities [u, v] - + if isempty(pts) vel = []; return end - + % Find k nearest neighbors for each query point [idx, D] = knnsearch(pts, xy1, k); % pts as queries, xy1 as references - + % Compute IDW weights: w = 1/d^p (with regularization) w = 1 ./ max(D, eps_w).^p; % [N x k] weights wsum = sum(w, 2); % [N x 1] weight normalization - + % Gather velocity values at neighbor nodes U_nei = U(idx); % [N x k] u-velocities at neighbors V_nei = V(idx); % [N x k] v-velocities at neighbors - + % Compute weighted averages u = sum(w .* U_nei, 2) ./ wsum; % [N x 1] interpolated u v = sum(w .* V_nei, 2) ./ wsum; % [N x 1] interpolated v - + vel = [u, v]; % [N x 2] velocity vector end @@ -98,31 +98,31 @@ % Check which particles have entered obstacles dnew = fd_obs(Pnew); bad = dnew < 0; % Particles inside obstacles (negative distance) - + if any(bad) % Apply step shrinking to particles that entered obstacles base = Pn(bad, :); % Original positions step = Pnew(bad, :) - base; % Full step vectors scale = 0.5; % Step reduction factor - + % Iteratively shrink steps until particles are outside obstacles for it = 1:cfg.tracers.max_pushback_iters cand = base + scale * step; % Candidate positions with reduced step d_cand = fd_obs(cand); % Distance to obstacles ok = d_cand >= 0; % Particles now outside obstacles - + % Accept positions that are now valid base(ok, :) = cand(ok, :); - + % Further shrink steps for particles still inside step(~ok, :) = scale * step(~ok, :); - + % Stop if all particles are now outside if all(ok) break end end - + % Update positions for particles that were inside obstacles Pnew(bad, :) = base; end diff --git a/src/seed_tracers.m b/src/seed_tracers.m index f07da66..f0f2565 100644 --- a/src/seed_tracers.m +++ b/src/seed_tracers.m @@ -74,7 +74,7 @@ % Take up to remaining needed particles n_valid = sum(ok); n_take = min(n_valid, N_target - n); - + if n_take > 0 pts_ok = pts(ok, :); tracers(n + (1:n_take), :) = pts_ok(1:n_take, :); @@ -82,7 +82,7 @@ end tries = tries + 1; - + % Progress reporting if mod(tries, 5) == 0 && n < N_target fprintf(' Batch %d: found %d/%d tracers (%.1f%% success rate this batch)\n', ... From 36b928f9bc8af6b7ae3aa25083022714c0344eb0 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 11:07:57 -0400 Subject: [PATCH 04/12] works --- config.m | 2 +- simulate.m | 2 +- src/advect_tracers.m | 22 +++++++++++++++++++++- src/visualization.m | 31 ++++++++++++++++++++++++++++++- 4 files changed, 53 insertions(+), 4 deletions(-) diff --git a/config.m b/config.m index bd0d8ea..b7c2965 100644 --- a/config.m +++ b/config.m @@ -35,7 +35,7 @@ config.simulation.reynolds_number = 100; config.simulation.viscosity = 1 / config.simulation.reynolds_number; config.simulation.time_step = 1e-2; % Default time step (may be overridden by geometry) - config.simulation.num_time_steps = 50; + config.simulation.num_time_steps = 5000; config.simulation.num_time_steps_ci = 20; config.simulation.random_seed = 42; % Required for DistMesh reproducibility (uses rand() for rejection method) config.simulation.show_progress = true; % Display time step progress (disabled in CI) diff --git a/simulate.m b/simulate.m index 9b36606..e04222b 100644 --- a/simulate.m +++ b/simulate.m @@ -746,7 +746,7 @@ % Live max-|V| heatmap every N steps (interactive only) if doPlot && ~isCI && ~isTest && isfield(cfg.visualization, 'live_enable') && cfg.visualization.live_enable && ... mod(j, cfg.visualization.live_frequency) == 0 - visualization('live_heatmap', cfg, xy1, W(:, j + 1), j, x_min, x_max, y_min, y_max); + visualization('live_heatmap', cfg, xy1, W(:, j + 1), j, x_min, x_max, y_min, y_max, tracers); end % Advance simulation time (using current dt, which may have been adapted) diff --git a/src/advect_tracers.m b/src/advect_tracers.m index bf0f594..c2bdc63 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -128,6 +128,26 @@ end end - tracers = Pnew; + % Remove particles that have left or are very close to leaving the domain + x_coords = Pnew(:, 1); + y_coords = Pnew(:, 2); + + % Add a small margin to remove particles before they get stuck at boundaries + boundary_margin = 0.1; % Remove particles within this distance of boundary + + % Check which particles are still well inside the domain + inside_domain = (x_coords >= domain.x_min + boundary_margin) & ... + (x_coords <= domain.x_max - boundary_margin) & ... + (y_coords >= domain.y_min + boundary_margin) & ... + (y_coords <= domain.y_max - boundary_margin); + + % Keep only particles that are inside the domain + tracers = Pnew(inside_domain, :); + + % Report how many particles were removed (only if some were removed) + num_removed = sum(~inside_domain); + if num_removed > 0 + fprintf('Removed %d tracer particles that approached domain boundary\n', num_removed); + end end diff --git a/src/visualization.m b/src/visualization.m index 2988c21..c4bfc45 100644 --- a/src/visualization.m +++ b/src/visualization.m @@ -245,7 +245,7 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m drawnow; end -function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, y_max) +function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, y_max, tracers) %VISUALIZE_LIVE_HEATMAP Live interpolated velocity magnitude heatmap % % This function creates a live-updating heatmap showing the velocity magnitude @@ -258,6 +258,12 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, % W_step - Current velocity vector [2*Nv x 1] at this step (stacked [U; V]) % step_idx - Current time step index (for title) % x_min, x_max, y_min, y_max - Domain bounds + % tracers - (Optional) [N x 2] tracer particle positions + + % Handle optional tracers argument + if nargin < 9 + tracers = []; + end % Extract velocity components Nv = size(xy1, 1); @@ -357,6 +363,14 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, grid(ax, 'on'); grid(ax, 'minor'); + % Overlay tracer particles if available + if ~isempty(tracers) && cfg.tracers.enable + hold(ax, 'on'); + scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + hold(ax, 'off'); + end + else % Update existing figure ax = fig.CurrentAxes; @@ -375,6 +389,21 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, title(ax, sprintf('Velocity Magnitude |V| — step %d', step_idx)); apply_xy_axes(cfg, ax, x_min, x_max, y_min, y_max); clim(ax, [0, cmax]); + + % Update tracer particles (remove old ones first to avoid accumulation) + tracer_scatter = findobj(ax, 'Type', 'scatter'); + % Remove all existing tracer scatter plots + if ~isempty(tracer_scatter) + delete(tracer_scatter); + end + + % Add current tracer positions if enabled + if ~isempty(tracers) && cfg.tracers.enable + hold(ax, 'on'); + scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + hold(ax, 'off'); + end end % Update display with rate limiting to avoid excessive redraws From bcaad80563e0275ca4d564b28118f0cc1df9ba69 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 12:46:14 -0400 Subject: [PATCH 05/12] fast particles --- config.m | 14 +++-- src/advect_tracers.m | 120 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 115 insertions(+), 19 deletions(-) diff --git a/config.m b/config.m index b7c2965..bbd62b2 100644 --- a/config.m +++ b/config.m @@ -152,21 +152,25 @@ %% Tracers (Lagrangian point particles advected by the flow) config.tracers.enable = true; % Enable tracer particles - config.tracers.num_particles = 30; % Number of tracers (normal runs) + config.tracers.num_particles = 600; % Number of tracers (normal runs) config.tracers.num_particles_ci = 30; % Fewer tracers for CI/tests - config.tracers.k_neighbors = 20; % IDW neighbors for velocity interpolation + config.tracers.k_neighbors = 10; % IDW neighbors for velocity interpolation config.tracers.idw_power = 2; % IDW power (2 = standard) config.tracers.obstacle_margin = 3 * config.mesh.boundary_eps; % Seed clearance from obstacles config.tracers.wall_margin = 3 * config.mesh.boundary_eps; % Seed clearance from walls/domain config.tracers.max_seed_tries = 20; % Try this many batches before stopping early config.tracers.integrator = 'heun'; % 'heun' for trapezoidal method - config.tracers.pushback_on_obstacle = true; % Prevent crossing into obstacle during advection + config.tracers.pushback_on_obstacle = false; % Prevent crossing into obstacle during advection config.tracers.max_pushback_iters = 5; % Limit for step shrinking when crossing obstacle + + % Tracer interpolation performance optimization + config.tracers.interp_method = 'tri_bary'; % 'tri_bary' (fastest), 'scattered' (fast), or 'idw' (original) + config.tracers.knn_refresh_interval = 10; % Steps between full KNN rebuild (IDW mode) % Live visualization (disabled in CI/tests) config.visualization.live_enable = true; % Show live heatmap during simulation - config.visualization.live_frequency = 10; % Update every N steps - config.visualization.heatmap_nx = 200; % Heatmap grid resolution in x + config.visualization.live_frequency = 50; % Update every N steps + config.visualization.heatmap_nx = 100; % Heatmap grid resolution in x % ny is inferred from domain aspect ratio to keep pixels square-ish %% Logging and Debug Parameters diff --git a/src/advect_tracers.m b/src/advect_tracers.m index c2bdc63..1f6974a 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -42,9 +42,16 @@ p = cfg.tracers.idw_power; eps_w = 1e-12; % Small regularization to avoid division by zero - % Nested function for velocity interpolation using IDW + % Persistent caches for fast interpolation across calls + persistent FuPrev FvPrev FuNow FvNow cached_NV step_count cached_idx + if isempty(step_count) + step_count = 0; + end + step_count = step_count + 1; + + % Nested function for velocity interpolation using optimized methods function vel = interp_vel(pts, U, V) - %INTERP_VEL Interpolate velocity at arbitrary points using IDW + %INTERP_VEL Fast velocity interpolation at arbitrary points % % INPUTS: % pts - [N x 2] query points @@ -58,22 +65,107 @@ return end - % Find k nearest neighbors for each query point - [idx, D] = knnsearch(pts, xy1, k); % pts as queries, xy1 as references + % Determine interpolation method + method = 'scattered'; + if isfield(cfg, 'tracers') && isfield(cfg.tracers, 'interp_method') + method = cfg.tracers.interp_method; + end + + switch lower(method) + case 'scattered' + % Micro-optimized: separate interpolants per time level to reduce value updates + % Determine which time level we're interpolating (prev or now) + is_prev_time = isequal(U, U_prev) && isequal(V, V_prev); + + if is_prev_time + % Handle previous time level (t^n) + if isempty(FuPrev) || isempty(FvPrev) || isempty(cached_NV) || cached_NV ~= NV + FuPrev = scatteredInterpolant(xy1(:, 1), xy1(:, 2), U, 'linear', 'none'); + FvPrev = scatteredInterpolant(xy1(:, 1), xy1(:, 2), V, 'linear', 'none'); + cached_NV = NV; + else + FuPrev.Values = U; + FvPrev.Values = V; + end + u = FuPrev(pts(:, 1), pts(:, 2)); + v = FvPrev(pts(:, 1), pts(:, 2)); + else + % Handle current time level (t^{n+1}) + if isempty(FuNow) || isempty(FvNow) || isempty(cached_NV) || cached_NV ~= NV + FuNow = scatteredInterpolant(xy1(:, 1), xy1(:, 2), U, 'linear', 'none'); + FvNow = scatteredInterpolant(xy1(:, 1), xy1(:, 2), V, 'linear', 'none'); + cached_NV = NV; + else + FuNow.Values = U; + FvNow.Values = V; + end + u = FuNow(pts(:, 1), pts(:, 2)); + v = FvNow(pts(:, 1), pts(:, 2)); + end + vel = [u, v]; + + case 'tri_bary' + % Persistent triangulation once per mesh + persistent DT tri_nv + if isempty(DT) || isempty(tri_nv) || tri_nv ~= NV + DT = delaunayTriangulation(xy1(:,1), xy1(:,2)); + tri_nv = NV; + end + + % Locate triangles and compute barycentric weights + T = pointLocation(DT, pts); % [Nq x 1], NaN if outside hull + inside = ~isnan(T); + Nq = size(pts, 1); + u = zeros(Nq, 1); + v = zeros(Nq, 1); + + if any(inside) + tri = DT.ConnectivityList; % [Nt x 3] + verts = tri(T(inside), :); % [Ni x 3] vertex indices + bc = cartesianToBarycentric(DT, T(inside), pts(inside, :)); % [Ni x 3] + Uv = [U(verts(:,1)) U(verts(:,2)) U(verts(:,3))]; + Vv = [V(verts(:,1)) V(verts(:,2)) V(verts(:,3))]; + u(inside) = sum(bc .* Uv, 2); + v(inside) = sum(bc .* Vv, 2); + end - % Compute IDW weights: w = 1/d^p (with regularization) - w = 1 ./ max(D, eps_w).^p; % [N x k] weights - wsum = sum(w, 2); % [N x 1] weight normalization + if any(~inside) + q = pts(~inside, :); + idx1 = knnsearch(q, xy1, 1); % nearest-neighbor fallback + u(~inside) = U(idx1); + v(~inside) = V(idx1); + end - % Gather velocity values at neighbor nodes - U_nei = U(idx); % [N x k] u-velocities at neighbors - V_nei = V(idx); % [N x k] v-velocities at neighbors + vel = [u, v]; - % Compute weighted averages - u = sum(w .* U_nei, 2) ./ wsum; % [N x 1] interpolated u - v = sum(w .* V_nei, 2) ./ wsum; % [N x 1] interpolated v + otherwise % 'idw' (original), but with cached neighbor sets + refresh_int = 10; + if isfield(cfg.tracers, 'knn_refresh_interval') + refresh_int = max(1, cfg.tracers.knn_refresh_interval); + end - vel = [u, v]; % [N x 2] velocity vector + % Rebuild KNN neighbor indices only every refresh_int steps or on size change + need_refresh = isempty(cached_idx) || (size(cached_idx, 1) ~= size(pts, 1)) || (mod(step_count - 1, refresh_int) == 0); + if need_refresh + cached_idx = knnsearch(pts, xy1, k); % [N x k] indices into xy1 + end + + % Compute distances only to cached neighbors (O(N*k)), then IDW weights + Nq = size(pts, 1); + u = zeros(Nq, 1); + v = zeros(Nq, 1); + for i = 1:Nq + nei = cached_idx(i, :); + dx = xy1(nei, 1) - pts(i, 1); + dy = xy1(nei, 2) - pts(i, 2); + d = sqrt(dx .* dx + dy .* dy); + w = 1 ./ max(d, eps_w) .^ p; + ws = sum(w); + u(i) = (w * U(nei)) / ws; + v(i) = (w * V(nei)) / ws; + end + vel = [u, v]; + end end % Heun's method (explicit trapezoidal rule) From 8ec82f28e2504e0c914673c6311a15556a0a4957 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 12:54:11 -0400 Subject: [PATCH 06/12] periodic tracers --- config.m | 5 ++- lint.sh | 5 --- src/advect_tracers.m | 96 +++++++++++++++++++++++++++++++------------- src/visualization.m | 2 +- 4 files changed, 73 insertions(+), 35 deletions(-) diff --git a/config.m b/config.m index bbd62b2..0dc72d8 100644 --- a/config.m +++ b/config.m @@ -162,11 +162,14 @@ config.tracers.integrator = 'heun'; % 'heun' for trapezoidal method config.tracers.pushback_on_obstacle = false; % Prevent crossing into obstacle during advection config.tracers.max_pushback_iters = 5; % Limit for step shrinking when crossing obstacle - + % Tracer interpolation performance optimization config.tracers.interp_method = 'tri_bary'; % 'tri_bary' (fastest), 'scattered' (fast), or 'idw' (original) config.tracers.knn_refresh_interval = 10; % Steps between full KNN rebuild (IDW mode) + % Tracer boundary behavior + config.tracers.periodic = true; % Periodic wrap on domain boundaries + % Live visualization (disabled in CI/tests) config.visualization.live_enable = true; % Show live heatmap during simulation config.visualization.live_frequency = 50; % Update every N steps diff --git a/lint.sh b/lint.sh index f806b45..c11678e 100755 --- a/lint.sh +++ b/lint.sh @@ -14,7 +14,6 @@ BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}[LINT] MATLAB Code Analyzer${NC}" -echo "==========================" # Function to run MATLAB linting run_matlab_lint() { @@ -42,9 +41,5 @@ else echo "" echo -e "${RED}[FAILED] MATLAB Code Analyzer found issues!${NC}" echo -e "${YELLOW}Please fix the issues above before committing.${NC}" - echo "" - echo -e "${BLUE}Additional checks:${NC}" - echo -e " * For style issues: ${YELLOW}./format.sh${NC} (check/fix formatting)" - echo -e " * For auto-fixes: ${YELLOW}./fix.sh${NC} (attempt automatic fixes)" exit 1 fi diff --git a/src/advect_tracers.m b/src/advect_tracers.m index 1f6974a..2757794 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -76,7 +76,7 @@ % Micro-optimized: separate interpolants per time level to reduce value updates % Determine which time level we're interpolating (prev or now) is_prev_time = isequal(U, U_prev) && isequal(V, V_prev); - + if is_prev_time % Handle previous time level (t^n) if isempty(FuPrev) || isempty(FvPrev) || isempty(cached_NV) || cached_NV ~= NV @@ -108,7 +108,7 @@ % Persistent triangulation once per mesh persistent DT tri_nv if isempty(DT) || isempty(tri_nv) || tri_nv ~= NV - DT = delaunayTriangulation(xy1(:,1), xy1(:,2)); + DT = delaunayTriangulation(xy1(:, 1), xy1(:, 2)); tri_nv = NV; end @@ -123,8 +123,8 @@ tri = DT.ConnectivityList; % [Nt x 3] verts = tri(T(inside), :); % [Ni x 3] vertex indices bc = cartesianToBarycentric(DT, T(inside), pts(inside, :)); % [Ni x 3] - Uv = [U(verts(:,1)) U(verts(:,2)) U(verts(:,3))]; - Vv = [V(verts(:,1)) V(verts(:,2)) V(verts(:,3))]; + Uv = [U(verts(:, 1)) U(verts(:, 2)) U(verts(:, 3))]; + Vv = [V(verts(:, 1)) V(verts(:, 2)) V(verts(:, 3))]; u(inside) = sum(bc .* Uv, 2); v(inside) = sum(bc .* Vv, 2); end @@ -159,7 +159,7 @@ dx = xy1(nei, 1) - pts(i, 1); dy = xy1(nei, 2) - pts(i, 2); d = sqrt(dx .* dx + dy .* dy); - w = 1 ./ max(d, eps_w) .^ p; + w = 1 ./ max(d, eps_w).^p; ws = sum(w); u(i) = (w * U(nei)) / ws; v(i) = (w * V(nei)) / ws; @@ -168,6 +168,29 @@ end end + % Helper function for periodic boundary wrapping + function Pw = wrap_periodic(P, domain) + %WRAP_PERIODIC Apply periodic boundary conditions to particle positions + % + % INPUTS: + % P - [N x 2] particle positions + % domain - struct with x_min, x_max, y_min, y_max + % + % OUTPUT: + % Pw - [N x 2] wrapped positions + + Pw = P; + Lx = domain.x_max - domain.x_min; + Ly = domain.y_max - domain.y_min; + + if Lx > 0 + Pw(:, 1) = domain.x_min + mod(P(:, 1) - domain.x_min, Lx); + end + if Ly > 0 + Pw(:, 2) = domain.y_min + mod(P(:, 2) - domain.y_min, Ly); + end + end + % Heun's method (explicit trapezoidal rule) Pn = tracers; % x^n (current positions) Vn = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) @@ -175,15 +198,26 @@ % Predictor step: estimate position at t^{n+1} using velocity at t^n Ppred = Pn + dt * Vn; + % Apply periodic wrapping to predictor positions if enabled + if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic + Ppred = wrap_periodic(Ppred, domain); + end + % Corrector step: evaluate velocity at predicted position and t^{n+1} Vnp1 = interp_vel(Ppred, U_now, V_now); % u(x_pred, t^{n+1}) % Final Heun update: average of velocities at t^n and t^{n+1} Pnew = Pn + 0.5 * dt * (Vn + Vnp1); - % Enforce domain boundaries (clamp to domain limits) - Pnew(:, 1) = min(max(Pnew(:, 1), domain.x_min), domain.x_max); - Pnew(:, 2) = min(max(Pnew(:, 2), domain.y_min), domain.y_max); + % Apply boundary conditions + if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic + % Periodic wrap instead of clamp + Pnew = wrap_periodic(Pnew, domain); + else + % Enforce domain boundaries (clamp to domain limits) + Pnew(:, 1) = min(max(Pnew(:, 1), domain.x_min), domain.x_max); + Pnew(:, 2) = min(max(Pnew(:, 2), domain.y_min), domain.y_max); + end % Optional obstacle avoidance via step shrinking if cfg.tracers.pushback_on_obstacle && ~isempty(fd_obs) @@ -220,26 +254,32 @@ end end - % Remove particles that have left or are very close to leaving the domain - x_coords = Pnew(:, 1); - y_coords = Pnew(:, 2); - - % Add a small margin to remove particles before they get stuck at boundaries - boundary_margin = 0.1; % Remove particles within this distance of boundary - - % Check which particles are still well inside the domain - inside_domain = (x_coords >= domain.x_min + boundary_margin) & ... - (x_coords <= domain.x_max - boundary_margin) & ... - (y_coords >= domain.y_min + boundary_margin) & ... - (y_coords <= domain.y_max - boundary_margin); - - % Keep only particles that are inside the domain - tracers = Pnew(inside_domain, :); - - % Report how many particles were removed (only if some were removed) - num_removed = sum(~inside_domain); - if num_removed > 0 - fprintf('Removed %d tracer particles that approached domain boundary\n', num_removed); + % Handle boundary conditions: periodic wrapping or removal + if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic + % Periodic boundaries: keep all particles (already wrapped) + tracers = Pnew; + else + % Remove particles that have left or are very close to leaving the domain + x_coords = Pnew(:, 1); + y_coords = Pnew(:, 2); + + % Add a small margin to remove particles before they get stuck at boundaries + boundary_margin = 0.1; % Remove particles within this distance of boundary + + % Check which particles are still well inside the domain + inside_domain = (x_coords >= domain.x_min + boundary_margin) & ... + (x_coords <= domain.x_max - boundary_margin) & ... + (y_coords >= domain.y_min + boundary_margin) & ... + (y_coords <= domain.y_max - boundary_margin); + + % Keep only particles that are inside the domain + tracers = Pnew(inside_domain, :); + + % Report how many particles were removed (only if some were removed) + num_removed = sum(~inside_domain); + if num_removed > 0 + fprintf('Removed %d tracer particles that approached domain boundary\n', num_removed); + end end end diff --git a/src/visualization.m b/src/visualization.m index c4bfc45..99d9d42 100644 --- a/src/visualization.m +++ b/src/visualization.m @@ -396,7 +396,7 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, if ~isempty(tracer_scatter) delete(tracer_scatter); end - + % Add current tracer positions if enabled if ~isempty(tracers) && cfg.tracers.enable hold(ax, 'on'); From 12b319b6f31d832c8fcbc05f247cdb34818516cb Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 13:09:57 -0400 Subject: [PATCH 07/12] lint fix. clean up. --- config.m | 6 +-- lint.sh | 4 -- lint_fix.sh | 101 ------------------------------------------- src/advect_tracers.m | 13 +++--- 4 files changed, 9 insertions(+), 115 deletions(-) delete mode 100755 lint_fix.sh diff --git a/config.m b/config.m index 0dc72d8..aa301d8 100644 --- a/config.m +++ b/config.m @@ -152,7 +152,7 @@ %% Tracers (Lagrangian point particles advected by the flow) config.tracers.enable = true; % Enable tracer particles - config.tracers.num_particles = 600; % Number of tracers (normal runs) + config.tracers.num_particles = 4000; % Number of tracers (normal runs) config.tracers.num_particles_ci = 30; % Fewer tracers for CI/tests config.tracers.k_neighbors = 10; % IDW neighbors for velocity interpolation config.tracers.idw_power = 2; % IDW power (2 = standard) @@ -160,7 +160,7 @@ config.tracers.wall_margin = 3 * config.mesh.boundary_eps; % Seed clearance from walls/domain config.tracers.max_seed_tries = 20; % Try this many batches before stopping early config.tracers.integrator = 'heun'; % 'heun' for trapezoidal method - config.tracers.pushback_on_obstacle = false; % Prevent crossing into obstacle during advection + config.tracers.pushback_on_obstacle = true; % Prevent crossing into obstacle during advection config.tracers.max_pushback_iters = 5; % Limit for step shrinking when crossing obstacle % Tracer interpolation performance optimization @@ -173,7 +173,7 @@ % Live visualization (disabled in CI/tests) config.visualization.live_enable = true; % Show live heatmap during simulation config.visualization.live_frequency = 50; % Update every N steps - config.visualization.heatmap_nx = 100; % Heatmap grid resolution in x + config.visualization.heatmap_nx = 300; % Heatmap grid resolution in x % ny is inferred from domain aspect ratio to keep pixels square-ish %% Logging and Debug Parameters diff --git a/lint.sh b/lint.sh index c11678e..6835cab 100755 --- a/lint.sh +++ b/lint.sh @@ -23,10 +23,6 @@ run_matlab_lint() { return 0 else echo -e "${RED}[FAILED] MATLAB Code Analyzer found issues${NC}" - if [ -f ".github/scripts/lint.log" ]; then - echo -e "${YELLOW}Issues found:${NC}" - cat .github/scripts/lint.log - fi return 1 fi } diff --git a/lint_fix.sh b/lint_fix.sh deleted file mode 100755 index 6afb075..0000000 --- a/lint_fix.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -# MATLAB Code Auto-Fixer -# This script automatically fixes MATLAB code issues where possible -# -# Usage: ./lint_fix.sh - -set -e - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -echo -e "${BLUE}[LINT-FIX] MATLAB Code Auto-Fixer${NC}" -echo "==================================" - -# Function to run MATLAB auto-fixes -run_matlab_fixes() { - echo -e "${YELLOW}Running MATLAB automatic fixes...${NC}" - - # Create a temporary MATLAB script for auto-fixing - cat > temp_fix_script.m << 'EOF' -try - % Analyze code issues in src and tests directories - fprintf('Analyzing code issues...\n'); - issues = codeIssues({'src', 'tests'}, 'IncludeSubfolders', true); - - if height(issues.Issues) == 0 - fprintf('No fixable issues found.\n'); - else - fprintf('Found %d total issues, attempting to fix...\n', height(issues.Issues)); - - % Try to fix issues automatically - % Note: fix() may not work in all MATLAB versions or with all issue types - try - fixedIssues = fix(issues); - catch fixError - fprintf('Auto-fix not available or failed: %s\n', fixError.message); - fprintf('Manual fixes may be required for some issues.\n'); - fixedIssues = []; - end - - if ~isempty(fixedIssues) && height(fixedIssues.Issues) > 0 - fprintf('Successfully fixed %d issues:\n', height(fixedIssues.Issues)); - for i = 1:height(fixedIssues.Issues) - issue = fixedIssues.Issues(i,:); - fprintf(' - %s:%d - %s [%s]\n', issue.FullFilename{1}, issue.LineNumber, issue.Description{1}, issue.CheckID{1}); - end - else - fprintf('No issues could be automatically fixed.\n'); - end - end - - fprintf('MATLAB auto-fix completed.\n'); -catch ME - fprintf('Error during MATLAB auto-fix: %s\n', ME.message); -end - -% Clean up -if exist('temp_fix_script.m', 'file') - delete('temp_fix_script.m'); -end -EOF - - # Run the MATLAB script - if matlab -batch "run('temp_fix_script.m')" -nodesktop -nosplash; then - echo -e "${GREEN}[SUCCESS] MATLAB auto-fix completed!${NC}" - # Clean up the temp script if MATLAB didn't - [ -f "temp_fix_script.m" ] && rm -f temp_fix_script.m - return 0 - else - echo -e "${RED}[FAILED] MATLAB auto-fix encountered errors${NC}" - # Clean up the temp script if MATLAB didn't - [ -f "temp_fix_script.m" ] && rm -f temp_fix_script.m - return 1 - fi -} - - -# Main execution -echo "Attempting to automatically fix MATLAB code issues..." -echo "" - -# Run MATLAB auto-fixes -if run_matlab_fixes; then - echo "" - echo "==================================" - echo -e "${GREEN}[SUCCESS] MATLAB auto-fixes completed! ✓${NC}" - echo -e "${YELLOW}[INFO] Run ./lint.sh to check if all MATLAB issues are resolved${NC}" - echo -e "${YELLOW}[INFO] Run ./format.sh to check/fix any style issues${NC}" - exit 0 -else - echo "" - echo "==================================" - echo -e "${RED}[FAILED] MATLAB auto-fixes failed! ✗${NC}" - echo -e "${YELLOW}[INFO] Some issues may require manual fixing${NC}" - echo -e "${YELLOW}[INFO] Run ./lint.sh to see remaining MATLAB issues${NC}" - exit 1 -fi diff --git a/src/advect_tracers.m b/src/advect_tracers.m index 2757794..adcd9b3 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -43,7 +43,7 @@ eps_w = 1e-12; % Small regularization to avoid division by zero % Persistent caches for fast interpolation across calls - persistent FuPrev FvPrev FuNow FvNow cached_NV step_count cached_idx + persistent FuPrev FvPrev FuNow FvNow cached_NV step_count cached_idx DT tri_nv if isempty(step_count) step_count = 0; end @@ -105,8 +105,7 @@ vel = [u, v]; case 'tri_bary' - % Persistent triangulation once per mesh - persistent DT tri_nv + % Use persistent triangulation (declared at function top level) if isempty(DT) || isempty(tri_nv) || tri_nv ~= NV DT = delaunayTriangulation(xy1(:, 1), xy1(:, 2)); tri_nv = NV; @@ -262,19 +261,19 @@ % Remove particles that have left or are very close to leaving the domain x_coords = Pnew(:, 1); y_coords = Pnew(:, 2); - + % Add a small margin to remove particles before they get stuck at boundaries boundary_margin = 0.1; % Remove particles within this distance of boundary - + % Check which particles are still well inside the domain inside_domain = (x_coords >= domain.x_min + boundary_margin) & ... (x_coords <= domain.x_max - boundary_margin) & ... (y_coords >= domain.y_min + boundary_margin) & ... (y_coords <= domain.y_max - boundary_margin); - + % Keep only particles that are inside the domain tracers = Pnew(inside_domain, :); - + % Report how many particles were removed (only if some were removed) num_removed = sum(~inside_domain); if num_removed > 0 From 374d927fdcd7faa223e187ca2e77b2cf94c039ef Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 13:31:51 -0400 Subject: [PATCH 08/12] add tests --- config.m | 2 - tests/TestTracers.m | 203 ++++++++++++++++++ tests/generate_tracer_golden.m | 1 + ...cers_cylinder_Re100_Nt10_dt0.01_seed42.mat | Bin 0 -> 10504 bytes 4 files changed, 204 insertions(+), 2 deletions(-) create mode 100644 tests/TestTracers.m create mode 100644 tests/generate_tracer_golden.m create mode 100644 tests/golden/tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat diff --git a/config.m b/config.m index aa301d8..6e66c50 100644 --- a/config.m +++ b/config.m @@ -166,8 +166,6 @@ % Tracer interpolation performance optimization config.tracers.interp_method = 'tri_bary'; % 'tri_bary' (fastest), 'scattered' (fast), or 'idw' (original) config.tracers.knn_refresh_interval = 10; % Steps between full KNN rebuild (IDW mode) - - % Tracer boundary behavior config.tracers.periodic = true; % Periodic wrap on domain boundaries % Live visualization (disabled in CI/tests) diff --git a/tests/TestTracers.m b/tests/TestTracers.m new file mode 100644 index 0000000..39b9931 --- /dev/null +++ b/tests/TestTracers.m @@ -0,0 +1,203 @@ +classdef TestTracers < matlab.unittest.TestCase + % TESTTRACERS Test tracer particle functionality + % + % This class tests the tracer particle system including: + % - Seeding outside obstacles + % - Different interpolation methods (tri_bary, scattered, idw) + % - Periodic vs non-periodic boundary conditions + % - Golden file validation for consistency + + properties (Constant) + % Test tolerances + XY_TOL = 1e-2 % Tolerance for tracer position matching + REL_TOL = 1e-2 % Relative tolerance for tracer comparison + ABS_TOL = 1e-2 % Absolute tolerance for tracer comparison + end + + methods + + function goldenFile = getGoldenFilePath(testCase) + % Get the path to the golden reference file for tracers + goldenFile = fullfile(fileparts(mfilename('fullpath')), 'golden', ... + 'tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat'); + end + + end + + methods (Test) + + function testTracerSeeding(testCase) + % Test that tracers are seeded correctly outside obstacles + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + % Load config and build geometry + cfg = config('cylinder'); + cfg.tracers.enable = true; + cfg.tracers.num_particles_ci = 50; + + G = build_geometry(cfg); + + % Seed tracers + tracers = seed_tracers(cfg, G, true, true); + + % Verify tracers are outside obstacle + distances = G.fd_obs(tracers); + testCase.verifyTrue(all(distances >= 0), ... + 'All tracers should be seeded outside obstacles'); + + % Verify correct number of tracers + testCase.verifyEqual(size(tracers, 1), cfg.tracers.num_particles_ci, ... + 'Should seed the correct number of tracers'); + end + + function testInterpolationMethods(testCase) + % Test different interpolation methods produce reasonable results + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + methods = {'tri_bary', 'scattered', 'idw'}; + results = cell(length(methods), 1); + + for i = 1:length(methods) + % Load config fresh for each test + cfg = config('cylinder'); + cfg.tracers.enable = true; + cfg.tracers.num_particles_ci = 20; + cfg.simulation.num_time_steps_ci = 3; + cfg.tracers.interp_method = methods{i}; + + % Run short simulation + try + simulate; + + % Store results (tracers should exist in workspace after simulate) + if exist('tracers', 'var') + results{i} = tracers; + else + error('Tracers not found after simulation'); + end + + catch ME + % Store error instead of calling verifyFail which might be cleared + results{i} = ME; + end + end + + % Verify all methods produced results (after all simulations complete) + for i = 1:length(methods) + if isa(results{i}, 'MException') + testCase.verifyFail(sprintf('Simulation failed with %s method: %s', methods{i}, results{i}.message)); + else + testCase.verifyTrue(~isempty(results{i}), ... + sprintf('%s method should produce tracer results', methods{i})); + end + end + end + + function testPeriodicBoundaries(testCase) + % Test periodic vs non-periodic boundary conditions + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + % Test periodic boundaries + cfg = config('cylinder'); + cfg.tracers.enable = true; + cfg.tracers.num_particles_ci = 30; + cfg.tracers.periodic = true; + cfg.simulation.num_time_steps_ci = 5; + + periodic_tracers = []; + nonperiodic_tracers = []; + + try + simulate; + if exist('tracers', 'var') + periodic_tracers = tracers; + end + catch ME + testCase.verifyFail(sprintf('Periodic simulation failed: %s', ME.message)); + return; + end + + % Test non-periodic boundaries + cfg = config('cylinder'); % Reload config + cfg.tracers.enable = true; + cfg.tracers.num_particles_ci = 30; + cfg.tracers.periodic = false; + cfg.simulation.num_time_steps_ci = 5; + + try + simulate; + if exist('tracers', 'var') + nonperiodic_tracers = tracers; + end + catch ME + testCase.verifyFail(sprintf('Non-periodic simulation failed: %s', ME.message)); + return; + end + + % Verify both modes produced results + testCase.verifyTrue(~isempty(periodic_tracers), ... + 'Periodic mode should produce tracer results'); + testCase.verifyTrue(~isempty(nonperiodic_tracers), ... + 'Non-periodic mode should produce tracer results'); + + % Periodic mode should preserve more particles (no removal) + testCase.verifyGreaterThanOrEqual(size(periodic_tracers, 1), size(nonperiodic_tracers, 1), ... + 'Periodic mode should preserve at least as many particles as non-periodic mode'); + end + + function testMatchesGolden(testCase) + % Test that tracer system matches golden reference + + goldenFile = testCase.getGoldenFilePath(); + + if ~exist(goldenFile, 'file') + testCase.assumeFail(sprintf('Golden file not found: %s', goldenFile)); + end + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + % Load golden reference + golden = load(goldenFile); + + % Run simulation with same parameters as golden file + cfg = config('cylinder'); + cfg.tracers.enable = true; + cfg.tracers.num_particles_ci = 50; % Match golden file generation + cfg.tracers.interp_method = 'tri_bary'; + cfg.tracers.periodic = true; + cfg.simulation.num_time_steps_ci = 10; + + simulate; + + % Compare final tracer positions + testCase.verifySize(tracers, size(golden.tracers_final), ... + 'Tracer array should have same size as golden reference'); + + % Compare positions with tolerance + diff = abs(tracers - golden.tracers_final); + max_diff = max(diff(:)); + + testCase.verifyLessThanOrEqual(max_diff, testCase.XY_TOL, ... + sprintf('Maximum tracer position difference (%.6f) should be within tolerance (%.6f)', ... + max_diff, testCase.XY_TOL)); + + fprintf('✅ Tracer golden test passed: max difference = %.6f\n', max_diff); + end + + end +end diff --git a/tests/generate_tracer_golden.m b/tests/generate_tracer_golden.m new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/tests/generate_tracer_golden.m @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/golden/tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat b/tests/golden/tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat new file mode 100644 index 0000000000000000000000000000000000000000..10062d7b7c1a9b7ebfa3cc2cb9006ee1b02414a6 GIT binary patch literal 10504 zcmeHLeQXp(6o1$2(X(G1v_cC_SzFSUQqF!Ilt#HJrL;&32W<=yw70!(dzaqz>fKV& z2vqO`HPVU(5fdoW&Kzai3koJe-MQSp zd2imEo%y{tZ)UclsH(hZIyc3f$5j+nO{#Obg)GkI=EXX%&r^tH#YL0zv$$fPz>7jH z=WQ(Hs+^0tN}-9%Dd2MQ3Ul)cEfy{}JJ-UM&6sK7{0^t!;kg`hb~b0`1}(r!*sKax z)#!hNz_ZwCF_B{;<+mG+5Dq3~AYlsWqs2JkT3+D*?6jhzbQPuT)LsYV2arJJBWV9> zy{h>oC4e>A`xvEW&|^?)9202te}zCnMBG33#pHSyd z1rU9_L-6^l>s*bz8#l6e&0vZls1C1){_$&~@r&XVgKlbfz4+Z4qbRa<5aM;3c!(mP zj$cIQxr*jBHf`Qr@AbJvr-uqemq+l6yr+rs9$s|wHPy{HmR;UP0KXvAk|q|<>iDXh zGk1m#^uhd_5utR%^lg-HxyLJ5_l&VLUY$;w02QrpE7jdB7N@0L5?~ z;;?DcQz4+v1N5{7ZFK!Hb)Ht(IxS-jH%N70lyiiMcBrEnL8ns$Y#U`%kM}v!LdK`W zDw5x9p#6mD!em1u?T6?ORz^~5qC64pbw)#htfqq)h{kRB(t+HmsxB@Rb@(k zA*q4+C=n6k<7f zTJTRPw^}^kEY5c72z8zrP3Oz}q~`xV&dQ3=gIUJdjBzz%oC!A-@-e!3a*e}zZa%Il zp5S4^5XIXV0&j+MC`xW1q-_Ler8x^heiY>Q(R;4y~cJ(cZGtX+L?rEZqrOYGJ6SoQeXy_V>bvg9`3XOvlJPYnSL0Sy5S0Sy5S0Sy5S z0Sy5S0Sy5S0S$p$3jrNO$anr8da+l3Ut{)+h)_L@6U6Z&)etIuDt-m@!^S=TTgJ(oQ#Zl7q7)<2Q-Rs3u-Dp+of z8oN3b?Yoro(so-O+Su^&A6wqHpoxZs57z4~=*-MBnFo%hA!Eu%hc;#D(J=>K_>4XV z<#u+am#1eU)7QTw96CPB9cAS5`bePHIRyEG=jlA+;@Ye0q3VI%-*z zH@VB6g4#<^tA0uvvM2A%-1I^UDhOMB?+;&&mb^!@^!s;=lY}K1Yi#SLAo~~JURieT zF7#xI`RSFv{~D-@Yfk(;sxM%*JX{&mGg@l;F~94)^=x2I<-Ga}kRUlXpYF)Kbk5qe zN_V;RlionZ*?But^_E87kX}=hFy|rfc ziGp2$2_4IqzIZxWviB|TSdkTv()u3gJ?=6{Wgi+n;hUn-tab6pD-Vv9THc*=w8!3U zU0dXQBYFH7)ZJm;RvK|BkXX3l@_P&8B*XVds@mU7l(IH%b#(qV3fWG@zhde%NjsJq zN;mV#X!dK4^hnMmwfK_uH~0?*dV1TcrKLXyy23xWZ%tT|)b`YdpIWRvR`ku5{N2Nc bp^x`Ow-#TFMI>bYt?zgMa(AT5n<{?+xlbTC literal 0 HcmV?d00001 From a2642e88bb043257c83170fc63c9dfc2e0a395b4 Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 13:36:59 -0400 Subject: [PATCH 09/12] fix lint and format --- .github/scripts/lint.m | 2 +- tests/TestTracers.m | 90 +++++++++++++++++----------------- tests/generate_tracer_golden.m | 1 - 3 files changed, 46 insertions(+), 47 deletions(-) delete mode 100644 tests/generate_tracer_golden.m diff --git a/.github/scripts/lint.m b/.github/scripts/lint.m index 964ebc6..ac9fa2d 100644 --- a/.github/scripts/lint.m +++ b/.github/scripts/lint.m @@ -61,6 +61,6 @@ fclose(fid); if hasIssues - error('Code Analyzer found issues. See .github/scripts/lint.log.'); + error('Code Analyzer found issues.'); end end diff --git a/tests/TestTracers.m b/tests/TestTracers.m index 39b9931..b4c4cb1 100644 --- a/tests/TestTracers.m +++ b/tests/TestTracers.m @@ -14,9 +14,9 @@ ABS_TOL = 1e-2 % Absolute tolerance for tracer comparison end - methods + methods (Static) - function goldenFile = getGoldenFilePath(testCase) + function goldenFile = getGoldenFilePath() % Get the path to the golden reference file for tracers goldenFile = fullfile(fileparts(mfilename('fullpath')), 'golden', ... 'tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat'); @@ -28,43 +28,43 @@ function testTracerSeeding(testCase) % Test that tracers are seeded correctly outside obstacles - + % Set up environment setenv('CI', 'true'); setenv('MATLAB_TEST', 'true'); setup_paths(); - + % Load config and build geometry cfg = config('cylinder'); cfg.tracers.enable = true; cfg.tracers.num_particles_ci = 50; - + G = build_geometry(cfg); - + % Seed tracers tracers = seed_tracers(cfg, G, true, true); - + % Verify tracers are outside obstacle distances = G.fd_obs(tracers); testCase.verifyTrue(all(distances >= 0), ... - 'All tracers should be seeded outside obstacles'); - + 'All tracers should be seeded outside obstacles'); + % Verify correct number of tracers testCase.verifyEqual(size(tracers, 1), cfg.tracers.num_particles_ci, ... - 'Should seed the correct number of tracers'); + 'Should seed the correct number of tracers'); end function testInterpolationMethods(testCase) % Test different interpolation methods produce reasonable results - + % Set up environment setenv('CI', 'true'); setenv('MATLAB_TEST', 'true'); setup_paths(); - + methods = {'tri_bary', 'scattered', 'idw'}; results = cell(length(methods), 1); - + for i = 1:length(methods) % Load config fresh for each test cfg = config('cylinder'); @@ -72,53 +72,53 @@ function testInterpolationMethods(testCase) cfg.tracers.num_particles_ci = 20; cfg.simulation.num_time_steps_ci = 3; cfg.tracers.interp_method = methods{i}; - + % Run short simulation try simulate; - + % Store results (tracers should exist in workspace after simulate) if exist('tracers', 'var') results{i} = tracers; else error('Tracers not found after simulation'); end - + catch ME % Store error instead of calling verifyFail which might be cleared results{i} = ME; end end - + % Verify all methods produced results (after all simulations complete) for i = 1:length(methods) if isa(results{i}, 'MException') testCase.verifyFail(sprintf('Simulation failed with %s method: %s', methods{i}, results{i}.message)); else testCase.verifyTrue(~isempty(results{i}), ... - sprintf('%s method should produce tracer results', methods{i})); + sprintf('%s method should produce tracer results', methods{i})); end end end function testPeriodicBoundaries(testCase) % Test periodic vs non-periodic boundary conditions - + % Set up environment setenv('CI', 'true'); setenv('MATLAB_TEST', 'true'); setup_paths(); - + % Test periodic boundaries cfg = config('cylinder'); cfg.tracers.enable = true; cfg.tracers.num_particles_ci = 30; cfg.tracers.periodic = true; cfg.simulation.num_time_steps_ci = 5; - + periodic_tracers = []; nonperiodic_tracers = []; - + try simulate; if exist('tracers', 'var') @@ -126,16 +126,16 @@ function testPeriodicBoundaries(testCase) end catch ME testCase.verifyFail(sprintf('Periodic simulation failed: %s', ME.message)); - return; + return end - + % Test non-periodic boundaries cfg = config('cylinder'); % Reload config cfg.tracers.enable = true; cfg.tracers.num_particles_ci = 30; cfg.tracers.periodic = false; cfg.simulation.num_time_steps_ci = 5; - + try simulate; if exist('tracers', 'var') @@ -143,37 +143,37 @@ function testPeriodicBoundaries(testCase) end catch ME testCase.verifyFail(sprintf('Non-periodic simulation failed: %s', ME.message)); - return; + return end - + % Verify both modes produced results testCase.verifyTrue(~isempty(periodic_tracers), ... - 'Periodic mode should produce tracer results'); + 'Periodic mode should produce tracer results'); testCase.verifyTrue(~isempty(nonperiodic_tracers), ... - 'Non-periodic mode should produce tracer results'); - + 'Non-periodic mode should produce tracer results'); + % Periodic mode should preserve more particles (no removal) testCase.verifyGreaterThanOrEqual(size(periodic_tracers, 1), size(nonperiodic_tracers, 1), ... - 'Periodic mode should preserve at least as many particles as non-periodic mode'); + 'Periodic mode should preserve at least as many particles as non-periodic mode'); end function testMatchesGolden(testCase) % Test that tracer system matches golden reference - - goldenFile = testCase.getGoldenFilePath(); - + + goldenFile = TestTracers.getGoldenFilePath(); + if ~exist(goldenFile, 'file') testCase.assumeFail(sprintf('Golden file not found: %s', goldenFile)); end - + % Set up environment setenv('CI', 'true'); setenv('MATLAB_TEST', 'true'); setup_paths(); - + % Load golden reference golden = load(goldenFile); - + % Run simulation with same parameters as golden file cfg = config('cylinder'); cfg.tracers.enable = true; @@ -181,21 +181,21 @@ function testMatchesGolden(testCase) cfg.tracers.interp_method = 'tri_bary'; cfg.tracers.periodic = true; cfg.simulation.num_time_steps_ci = 10; - + simulate; - + % Compare final tracer positions testCase.verifySize(tracers, size(golden.tracers_final), ... - 'Tracer array should have same size as golden reference'); - + 'Tracer array should have same size as golden reference'); + % Compare positions with tolerance diff = abs(tracers - golden.tracers_final); max_diff = max(diff(:)); - + testCase.verifyLessThanOrEqual(max_diff, testCase.XY_TOL, ... - sprintf('Maximum tracer position difference (%.6f) should be within tolerance (%.6f)', ... - max_diff, testCase.XY_TOL)); - + sprintf('Maximum tracer position difference (%.6f) should be within tolerance (%.6f)', ... + max_diff, testCase.XY_TOL)); + fprintf('✅ Tracer golden test passed: max difference = %.6f\n', max_diff); end diff --git a/tests/generate_tracer_golden.m b/tests/generate_tracer_golden.m deleted file mode 100644 index 0519ecb..0000000 --- a/tests/generate_tracer_golden.m +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file From 503b344fa1ba9e4d2298fca8b6db9a0388ced5ae Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 17:08:51 -0400 Subject: [PATCH 10/12] fix ci --- config.m | 9 ++ example_stokes_particles.m | 81 +++++++++++++++ simulate.m | 77 +++++++++++++-- src/advect_tracers.m | 195 +++++++++++++++++++++++++++++-------- src/seed_tracers.m | 7 ++ src/visualization.m | 121 ++++++++++++++++------- test_stokes_debug.m | 1 + tests/TestTracers.m | 68 ++++++++----- 8 files changed, 445 insertions(+), 114 deletions(-) create mode 100644 example_stokes_particles.m create mode 100644 test_stokes_debug.m diff --git a/config.m b/config.m index 6e66c50..09a1196 100644 --- a/config.m +++ b/config.m @@ -168,6 +168,15 @@ config.tracers.knn_refresh_interval = 10; % Steps between full KNN rebuild (IDW mode) config.tracers.periodic = true; % Periodic wrap on domain boundaries + % Particle dynamics (one-way Stokes drag coupling) + config.tracers.dynamics = 'massless'; % 'massless' (default, current behavior) or 'stokes' + config.tracers.rho_f = 1.0; % Fluid density (dimensionless) + config.tracers.rho_p = 1000.0; % Particle density (dimensionless) + config.tracers.diameter = 1e-3; % Particle diameter (dimensionless) + config.tracers.gravity_enable = false; % Enable gravitational/buoyancy force + config.tracers.g = [0, 0]; % Gravitational acceleration vector (dimensionless) + config.tracers.vel_init = 'fluid'; % Initial particle velocity: 'fluid' or 'zero' + % Live visualization (disabled in CI/tests) config.visualization.live_enable = true; % Show live heatmap during simulation config.visualization.live_frequency = 50; % Update every N steps diff --git a/example_stokes_particles.m b/example_stokes_particles.m new file mode 100644 index 0000000..7165e8b --- /dev/null +++ b/example_stokes_particles.m @@ -0,0 +1,81 @@ +%% Example: One-way Stokes Drag Particle Simulation +% This script demonstrates the new Stokes particle functionality +% which implements one-way coupling with drag and optional gravity. + +clear; clc; + +% Add required paths +addpath('src'); +addpath('src/geometry'); + +%% Configure Stokes Particles +cfg = config('cylinder'); + +% Enable Stokes particle dynamics (default is 'massless') +cfg.tracers.dynamics = 'stokes'; + +% Particle properties (dimensionless) +cfg.tracers.rho_f = 1.0; % Fluid density +cfg.tracers.rho_p = 1000.0; % Particle density (heavy particles) +cfg.tracers.diameter = 1e-3; % Particle diameter + +% Initial particle velocity +cfg.tracers.vel_init = 'fluid'; % 'fluid' or 'zero' + +% Optional gravity/buoyancy (disabled by default) +cfg.tracers.gravity_enable = false; +cfg.tracers.g = [0, -0.1]; % Gravitational acceleration (if enabled) + +% Simulation parameters +cfg.tracers.num_particles = 100; +cfg.simulation.num_time_steps = 50; +cfg.simulation.time_step = 0.01; + +% Visualization +cfg.visualization.live_enable = true; +cfg.visualization.live_frequency = 10; + +%% Display Stokes Parameters +nu = cfg.simulation.viscosity; +rho_f = cfg.tracers.rho_f; +rho_p = cfg.tracers.rho_p; +dp = cfg.tracers.diameter; +mu = nu * rho_f; +tau_p = (rho_p * dp^2) / (18 * mu); + +fprintf('=== Stokes Particle Parameters ===\n'); +fprintf('Particle dynamics: %s\n', cfg.tracers.dynamics); +fprintf('Reynolds number: %.0f\n', 1/nu); +fprintf('Particle density ratio ρ_p/ρ_f: %.1f\n', rho_p/rho_f); +fprintf('Particle diameter: %.3e\n', dp); +fprintf('Response time τ_p: %.3e\n', tau_p); +fprintf('Time step dt: %.3e\n', cfg.simulation.time_step); +fprintf('Stokes number St = τ_p/dt: %.2f\n', tau_p/cfg.simulation.time_step); + +if cfg.tracers.gravity_enable + fprintf('Gravity: [%.3f, %.3f]\n', cfg.tracers.g(1), cfg.tracers.g(2)); + fprintf('Buoyancy factor (1-ρ_f/ρ_p): %.3f\n', 1 - rho_f/rho_p); +else + fprintf('Gravity: disabled\n'); +end +fprintf('===================================\n\n'); + +%% Run Simulation +fprintf('Running Stokes particle simulation...\n'); +fprintf('- Particles will have their own velocity that relaxes toward fluid velocity\n'); +fprintf('- Drag force: F = 3πμd(u-V) where u=fluid velocity, V=particle velocity\n'); +fprintf('- Particle equation: dV/dt = (u-V)/τ_p + (1-ρ_f/ρ_p)g\n\n'); + +% Save configuration and run +save('stokes_config.mat', 'cfg'); +setenv('LOAD_CFG_FILE', 'stokes_config.mat'); + +% Run the simulation +simulate; + +% Clean up +delete('stokes_config.mat'); + +fprintf('\n=== Simulation Complete ===\n'); +fprintf('The visualization shows Stokes particles colored by their velocity magnitude.\n'); +fprintf('Compare this to massless tracers by setting cfg.tracers.dynamics = ''massless''.\n'); diff --git a/simulate.m b/simulate.m index e04222b..68f0d49 100644 --- a/simulate.m +++ b/simulate.m @@ -1,5 +1,8 @@ clc; -clear; +% Clear workspace unless running in test/CI mode +if ~strcmpi(getenv('MATLAB_TEST'), 'true') && ~strcmpi(getenv('CI'), 'true') + clear; +end % Add required paths for src functions and lib dependencies scriptDir = fileparts(mfilename('fullpath')); @@ -239,7 +242,7 @@ D0_21_x_obs = P.D0_21_x_obs; D0_21_y_obs = P.D0_21_y_obs; -%% 5) Build inter-grid operators (P-grid ↔ V-grid) +%% 5) Build inter-grid operators (P-grid <-> V-grid) [D0_21_x, D0_21_y, D0_12_x, D0_12_y] = build_intergrid_ops(G, xy, xy1, xy_s, xy1_s, S, cfg); %% 6) Build velocity operators and boundary conditions @@ -309,6 +312,45 @@ % Initialize tracers (seed outside obstacles) tracers = seed_tracers(cfg, G, isCI, isTest); +% Initialize particle velocities for Stokes dynamics +if strcmpi(cfg.tracers.dynamics, 'stokes') && ~isempty(tracers) + % Extract initial velocity field components + NV = size(xy1, 1); + U0 = W(1:NV, 1); % u-velocity at t=0 + V0 = W(NV + 1:end, 1); % v-velocity at t=0 + + % Initialize particle velocities based on configuration + if strcmpi(cfg.tracers.vel_init, 'fluid') + % Initialize particle velocities to local fluid velocity + Fu = scatteredInterpolant(xy1(:, 1), xy1(:, 2), U0, 'linear', 'nearest'); + Fv = scatteredInterpolant(xy1(:, 1), xy1(:, 2), V0, 'linear', 'nearest'); + tracer_vel = [Fu(tracers(:, 1), tracers(:, 2)), Fv(tracers(:, 1), tracers(:, 2))]; + fprintf('Initialized %d Stokes particles with fluid velocity\n', size(tracers, 1)); + else + % Initialize particle velocities to zero + tracer_vel = zeros(size(tracers)); + fprintf('Initialized %d Stokes particles with zero velocity\n', size(tracers, 1)); + end + + % Report Stokes parameters + nu = cfg.simulation.viscosity; + rho_f = cfg.tracers.rho_f; + rho_p = cfg.tracers.rho_p; + dp = cfg.tracers.diameter; + mu = nu * rho_f; + tau_p = (rho_p * dp^2) / (18 * mu); + fprintf('Stokes parameters: tau_p = %.3e, rho_p/rho_f = %.1f, d_p = %.3e\n', tau_p, rho_p / rho_f, dp); + + if cfg.tracers.gravity_enable + fprintf('Gravity enabled: g = [%.3f, %.3f]\n', cfg.tracers.g(1), cfg.tracers.g(2)); + end +else + tracer_vel = []; + if ~isempty(tracers) + fprintf('Initialized %d massless tracers\n', size(tracers, 1)); + end +end + % Define useful index lengths for boundary handling L_B = length(boundary_obs) + length(boundary_in); % Total special boundaries L_B_y = length(boundary_y); % Wall boundaries @@ -388,7 +430,14 @@ W_prev = W(:, j); W_now = W(:, j + 1); domain_struct = struct('x_min', x_min, 'x_max', x_max, 'y_min', y_min, 'y_max', y_max); - tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); + + if strcmpi(cfg.tracers.dynamics, 'stokes') + % Stokes particle dynamics with velocity evolution + [tracers, tracer_vel] = advect_tracers(tracers, tracer_vel, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); + else + % Massless tracer dynamics (original behavior) + tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); + end end % Comprehensive instability detection @@ -446,7 +495,7 @@ instability_type = failure_type; % Immediate notification of detection - fprintf('\n🚨 IMMEDIATE DETECTION at step %d: %s\n', j, failure_type); + fprintf('\n[ALERT] IMMEDIATE DETECTION at step %d: %s\n', j, failure_type); % Find representative bad index based on failure type if contains(failure_type, 'NaN/Inf in velocity') @@ -533,7 +582,7 @@ else fprintf('RECOMMENDATION: Lower CFL thresholds or reduce initial time step\n'); end - elseif strcmp(instability_type, 'Velocity collapse (all velocities → 0)') + elseif strcmp(instability_type, 'Velocity collapse (all velocities -> 0)') fprintf('LIKELY CAUSE: Numerical damping or boundary condition issues\n'); fprintf('RECOMMENDATION: Check boundary conditions and reduce viscosity\n'); elseif contains(instability_type, 'explosion') @@ -654,7 +703,7 @@ [is_valid, failure_type, failure_details] = check_solution_validity(W(:, j + 1), p_for_check, 1e-12); if ~is_valid - fprintf('\n🚨 FATAL ERROR: %s after time step reduction!\n', failure_type); + fprintf('\n[FATAL] ERROR: %s after time step reduction!\n', failure_type); fprintf('Step %d: Time step was reduced from %.3e to %.3e but solution is still corrupted.\n', ... j, dt / cfg.adaptive_dt.reduction_factor, dt); fprintf('This indicates the solution cannot be recovered by time step reduction alone.\n'); @@ -746,7 +795,11 @@ % Live max-|V| heatmap every N steps (interactive only) if doPlot && ~isCI && ~isTest && isfield(cfg.visualization, 'live_enable') && cfg.visualization.live_enable && ... mod(j, cfg.visualization.live_frequency) == 0 - visualization('live_heatmap', cfg, xy1, W(:, j + 1), j, x_min, x_max, y_min, y_max, tracers); + if strcmpi(cfg.tracers.dynamics, 'stokes') && exist('tracer_vel', 'var') + visualization('live_heatmap', cfg, xy1, W(:, j + 1), j, x_min, x_max, y_min, y_max, tracers, tracer_vel); + else + visualization('live_heatmap', cfg, xy1, W(:, j + 1), j, x_min, x_max, y_min, y_max, tracers); + end end % Advance simulation time (using current dt, which may have been adapted) @@ -810,7 +863,7 @@ [is_valid, failure_type, failure_details] = check_solution_validity(W(:, j), p_for_check, 1e-12); if ~is_valid - fprintf('🚨 CRITICAL: %s in final solution!\n', failure_type); + fprintf('[CRITICAL] %s in final solution!\n', failure_type); fprintf('The simulation appeared to complete but the solution is corrupted.\n'); % Detailed failure analysis @@ -845,7 +898,7 @@ error('SIMULATION FAILED: %s at step %d. Solution is corrupted.', failure_type, j); else - fprintf('✅ Final solution validation: PASSED\n'); + fprintf('[PASS] Final solution validation: PASSED\n'); fprintf(' Velocity nodes: %d (all valid)\n', failure_details.velocity_nodes); fprintf(' Velocity field: max=%.3e, mean=%.3e\n', failure_details.velocity_max, failure_details.velocity_mean); if ~isempty(p_for_check) @@ -857,4 +910,8 @@ fprintf('=====================================\n\n'); %% 11) Visualization of final results -visualization('final', cfg, doPlot, xy1, W0, Nt, x_min, x_max, y_min, y_max, Dx, Dy, tracers); +if strcmpi(cfg.tracers.dynamics, 'stokes') && exist('tracer_vel', 'var') + visualization('final', cfg, doPlot, xy1, W0, Nt, x_min, x_max, y_min, y_max, Dx, Dy, tracers, tracer_vel); +else + visualization('final', cfg, doPlot, xy1, W0, Nt, x_min, x_max, y_min, y_max, Dx, Dy, tracers); +end diff --git a/src/advect_tracers.m b/src/advect_tracers.m index adcd9b3..6ece484 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -1,35 +1,62 @@ -function tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) +function [tracers, tracer_vel] = advect_tracers(tracers, varargin) %ADVECT_TRACERS Advect tracers with Heun's method using fluid at t^n and t^{n+1} % % This function advances tracer particles using Heun's method (explicit trapezoidal) % which is second-order accurate and uses the fluid velocity at both the beginning - % and end of the time step. Velocity interpolation uses Inverse Distance Weighting - % (IDW) over k nearest neighbors from the scattered velocity grid. + % and end of the time step. Supports both massless tracers (follow fluid exactly) + % and Stokes particles (one-way coupling with drag and optional gravity). + % + % USAGE (massless tracers - original behavior): + % tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) + % + % USAGE (Stokes particles - new physics): + % [tracers, tracer_vel] = advect_tracers(tracers, tracer_vel, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) % % INPUTS: - % tracers - [N x 2] tracer positions at t^n - % dt - time step size - % xy1 - [NV x 2] V-grid coordinates (interior + boundary nodes) - % W_prev - [2*NV x 1] velocity field at t^n (stacked [U; V]) - % W_now - [2*NV x 1] velocity field at t^{n+1} (stacked [U; V]) - % cfg - configuration structure (uses cfg.tracers.*) - % fd_obs - obstacle signed distance function (negative inside), or [] - % domain - struct with x_min, x_max, y_min, y_max + % tracers - [N x 2] tracer positions at t^n + % tracer_vel - [N x 2] particle velocities at t^n (Stokes mode only) + % dt - time step size + % xy1 - [NV x 2] V-grid coordinates (interior + boundary nodes) + % W_prev - [2*NV x 1] velocity field at t^n (stacked [U; V]) + % W_now - [2*NV x 1] velocity field at t^{n+1} (stacked [U; V]) + % cfg - configuration structure (uses cfg.tracers.*) + % fd_obs - obstacle signed distance function (negative inside), or [] + % domain - struct with x_min, x_max, y_min, y_max % % OUTPUTS: - % tracers - [N x 2] tracer positions at t^{n+1} + % tracers - [N x 2] tracer positions at t^{n+1} + % tracer_vel - [N x 2] particle velocities at t^{n+1} (Stokes mode only) % % ALGORITHM: - % 1. Heun's method: x^{n+1} = x^n + 0.5*dt*(v^n + v^{n+1}) - % where v^n = u(x^n, t^n) and v^{n+1} = u(x^n + dt*v^n, t^{n+1}) - % 2. Velocity interpolation via IDW over k nearest neighbors - % 3. Domain boundary enforcement (clamp to domain limits) - % 4. Obstacle avoidance via step shrinking if particles enter obstacles + % Massless: x^{n+1} = x^n + 0.5*dt*(u^n + u^{n+1}) + % where u^n = u(x^n, t^n) and u^{n+1} = u(x^n + dt*u^n, t^{n+1}) + % Stokes: dX/dt = V, dV/dt = (u(X,t) - V)/tau_p + (1 - rho_f/rho_p)*g + % Integrated with Heun's method using same velocity interpolation if isempty(tracers) + tracer_vel = []; return end + % Parse input arguments to determine mode (massless vs Stokes) + if nargin == 8 + % Massless mode: advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) + [dt, xy1, W_prev, W_now, cfg, fd_obs, domain] = deal(varargin{:}); + is_stokes = false; + tracer_vel = []; + elseif nargin == 9 + % Stokes mode: advect_tracers(tracers, tracer_vel, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) + [tracer_vel, dt, xy1, W_prev, W_now, cfg, fd_obs, domain] = deal(varargin{:}); + is_stokes = true; + else + error('Invalid number of arguments. Use 8 for massless mode or 9 for Stokes mode.'); + end + + % Validate Stokes mode configuration + if is_stokes && ~strcmpi(cfg.tracers.dynamics, 'stokes') + warning('Stokes mode called but cfg.tracers.dynamics is not ''stokes''. Proceeding with Stokes dynamics.'); + end + % Extract velocity components NV = size(xy1, 1); U_prev = W_prev(1:NV); % u-velocity at t^n @@ -160,8 +187,8 @@ d = sqrt(dx .* dx + dy .* dy); w = 1 ./ max(d, eps_w).^p; ws = sum(w); - u(i) = (w * U(nei)) / ws; - v(i) = (w * V(nei)) / ws; + u(i) = (w(:)' * U(nei(:))) / ws; + v(i) = (w(:)' * V(nei(:))) / ws; end vel = [u, v]; end @@ -190,23 +217,74 @@ end end - % Heun's method (explicit trapezoidal rule) - Pn = tracers; % x^n (current positions) - Vn = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) + % Branch on dynamics mode + if is_stokes + % Stokes particle dynamics: dX/dt = V, dV/dt = (u(X,t) - V)/tau_p + (1 - rho_f/rho_p)*g + + % Compute Stokes parameters + nu = cfg.simulation.viscosity; % Kinematic viscosity + rho_f = cfg.tracers.rho_f; % Fluid density + rho_p = cfg.tracers.rho_p; % Particle density + dp = cfg.tracers.diameter; % Particle diameter + mu = nu * rho_f; % Dynamic viscosity + tau_p = (rho_p * dp^2) / (18 * mu); % Particle response time + + % Gravitational acceleration (dimensionless) + g = [0, 0]; + if isfield(cfg.tracers, 'gravity_enable') && cfg.tracers.gravity_enable && ... + isfield(cfg.tracers, 'g') && ~isempty(cfg.tracers.g) + g = cfg.tracers.g; + end + + % Current state + Pn = tracers; % x^n (current positions) + Vn = tracer_vel; % V^n (current particle velocities) - % Predictor step: estimate position at t^{n+1} using velocity at t^n - Ppred = Pn + dt * Vn; + % Interpolate fluid velocity at current positions and time t^n + un = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) - % Apply periodic wrapping to predictor positions if enabled - if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic - Ppred = wrap_periodic(Ppred, domain); - end + % Right-hand side at t^n: dV/dt = (u - V)/tau_p + (1 - rho_f/rho_p)*g + buoyancy_factor = 1 - rho_f / rho_p; + Rn = (un - Vn) ./ tau_p + buoyancy_factor .* g; + + % Predictor step + Ppred = Pn + dt * Vn; % Predicted position + Vpred = Vn + dt * Rn; % Predicted velocity + + % Apply periodic wrapping to predictor positions if enabled + if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic + Ppred = wrap_periodic(Ppred, domain); + end + + % Interpolate fluid velocity at predicted positions and time t^{n+1} + unp1 = interp_vel(Ppred, U_now, V_now); % u(x_pred, t^{n+1}) + + % Right-hand side at t^{n+1} + Rnp1 = (unp1 - Vpred) ./ tau_p + buoyancy_factor .* g; - % Corrector step: evaluate velocity at predicted position and t^{n+1} - Vnp1 = interp_vel(Ppred, U_now, V_now); % u(x_pred, t^{n+1}) + % Heun corrector step + Vnew = Vn + 0.5 * dt * (Rn + Rnp1); % Final particle velocity + Pnew = Pn + 0.5 * dt * (Vn + Vnew); % Final position using average velocity - % Final Heun update: average of velocities at t^n and t^{n+1} - Pnew = Pn + 0.5 * dt * (Vn + Vnp1); + else + % Massless tracer dynamics (original behavior): follow fluid exactly + Pn = tracers; % x^n (current positions) + Vn = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) + + % Predictor step: estimate position at t^{n+1} using velocity at t^n + Ppred = Pn + dt * Vn; + + % Apply periodic wrapping to predictor positions if enabled + if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic + Ppred = wrap_periodic(Ppred, domain); + end + + % Corrector step: evaluate velocity at predicted position and t^{n+1} + Vnp1 = interp_vel(Ppred, U_now, V_now); % u(x_pred, t^{n+1}) + + % Final Heun update: average of velocities at t^n and t^{n+1} + Pnew = Pn + 0.5 * dt * (Vn + Vnp1); + end % Apply boundary conditions if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic @@ -226,21 +304,41 @@ if any(bad) % Apply step shrinking to particles that entered obstacles - base = Pn(bad, :); % Original positions - step = Pnew(bad, :) - base; % Full step vectors + if is_stokes + base_pos = Pn(bad, :); % Original positions + base_vel = Vn(bad, :); % Original velocities + step_pos = Pnew(bad, :) - base_pos; % Full position step vectors + step_vel = Vnew(bad, :) - base_vel; % Full velocity step vectors + else + base = Pn(bad, :); % Original positions + step = Pnew(bad, :) - base; % Full step vectors + end scale = 0.5; % Step reduction factor % Iteratively shrink steps until particles are outside obstacles for it = 1:cfg.tracers.max_pushback_iters - cand = base + scale * step; % Candidate positions with reduced step - d_cand = fd_obs(cand); % Distance to obstacles - ok = d_cand >= 0; % Particles now outside obstacles + if is_stokes + cand_pos = base_pos + scale * step_pos; % Candidate positions with reduced step + cand_vel = base_vel + scale * step_vel; % Candidate velocities with reduced step + d_cand = fd_obs(cand_pos); % Distance to obstacles + else + cand = base + scale * step; % Candidate positions with reduced step + d_cand = fd_obs(cand); % Distance to obstacles + end + ok = d_cand >= 0; % Particles now outside obstacles % Accept positions that are now valid - base(ok, :) = cand(ok, :); - - % Further shrink steps for particles still inside - step(~ok, :) = scale * step(~ok, :); + if is_stokes + base_pos(ok, :) = cand_pos(ok, :); + base_vel(ok, :) = cand_vel(ok, :); + % Further shrink steps for particles still inside + step_pos(~ok, :) = scale * step_pos(~ok, :); + step_vel(~ok, :) = scale * step_vel(~ok, :); + else + base(ok, :) = cand(ok, :); + % Further shrink steps for particles still inside + step(~ok, :) = scale * step(~ok, :); + end % Stop if all particles are now outside if all(ok) @@ -248,8 +346,13 @@ end end - % Update positions for particles that were inside obstacles - Pnew(bad, :) = base; + % Update positions (and velocities for Stokes) for particles that were inside obstacles + if is_stokes + Pnew(bad, :) = base_pos; + Vnew(bad, :) = base_vel; + else + Pnew(bad, :) = base; + end end end @@ -257,6 +360,9 @@ if isfield(cfg.tracers, 'periodic') && cfg.tracers.periodic % Periodic boundaries: keep all particles (already wrapped) tracers = Pnew; + if is_stokes + tracer_vel = Vnew; + end else % Remove particles that have left or are very close to leaving the domain x_coords = Pnew(:, 1); @@ -273,6 +379,9 @@ % Keep only particles that are inside the domain tracers = Pnew(inside_domain, :); + if is_stokes + tracer_vel = Vnew(inside_domain, :); + end % Report how many particles were removed (only if some were removed) num_removed = sum(~inside_domain); diff --git a/src/seed_tracers.m b/src/seed_tracers.m index f0f2565..227593c 100644 --- a/src/seed_tracers.m +++ b/src/seed_tracers.m @@ -27,6 +27,13 @@ return end + % Set random seed for reproducible tracer seeding + if isfield(cfg.simulation, 'random_seed') && ~isempty(cfg.simulation.random_seed) + % Use a different seed for tracers to avoid conflicts with mesh generation + tracer_seed = cfg.simulation.random_seed + 1000; % Offset to avoid mesh conflicts + rng(tracer_seed); + end + % Determine target number of particles N_target = cfg.tracers.num_particles; if isCI || isTest diff --git a/src/visualization.m b/src/visualization.m index 99d9d42..47f68ed 100644 --- a/src/visualization.m +++ b/src/visualization.m @@ -37,29 +37,33 @@ end end -function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_max, Dx, Dy, tracers) +function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_min, y_max, Dx, Dy, tracers, tracer_vel) %VISUALIZE_FINAL_RESULTS Create visualization of final simulation results % % This function creates plots of the final vorticity field and velocity components. % % INPUTS: - % cfg - Configuration structure - % doPlot - Boolean indicating if plotting should be enabled - % xy1 - Complete velocity grid coordinates - % W_final - Final velocity solution vector [U; V] (single time step) - % ~ - Number of time steps (unused, kept for compatibility) - % x_min - Minimum x-coordinate of domain - % x_max - Maximum x-coordinate of domain - % y_min - Minimum y-coordinate of domain - % y_max - Maximum y-coordinate of domain - % Dx - RBF-FD differentiation matrix for d/dx operator - % Dy - RBF-FD differentiation matrix for d/dy operator - % tracers - (Optional) [N x 2] tracer particle positions - - % Handle optional tracers argument + % cfg - Configuration structure + % doPlot - Boolean indicating if plotting should be enabled + % xy1 - Complete velocity grid coordinates + % W_final - Final velocity solution vector [U; V] (single time step) + % ~ - Number of time steps (unused, kept for compatibility) + % x_min - Minimum x-coordinate of domain + % x_max - Maximum x-coordinate of domain + % y_min - Minimum y-coordinate of domain + % y_max - Maximum y-coordinate of domain + % Dx - RBF-FD differentiation matrix for d/dx operator + % Dy - RBF-FD differentiation matrix for d/dy operator + % tracers - (Optional) [N x 2] tracer particle positions + % tracer_vel - (Optional) [N x 2] tracer particle velocities (Stokes mode) + + % Handle optional arguments if nargin < 12 tracers = []; end + if nargin < 13 + tracer_vel = []; + end % Only plot if plotting is enabled if ~doPlot @@ -120,9 +124,17 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m % Overlay tracer particles if available if ~isempty(tracers) && cfg.tracers.enable - scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); - fprintf('Overlaid %d tracer particles on vorticity plot\n', size(tracers, 1)); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(tracers(:, 1), tracers(:, 2), 12, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.3, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + fprintf('Overlaid %d Stokes particles colored by velocity magnitude on vorticity plot\n', size(tracers, 1)); + else + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + fprintf('Overlaid %d tracer particles on vorticity plot\n', size(tracers, 1)); + end end drawnow; % Update display immediately @@ -155,8 +167,15 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m % Overlay tracer particles if available if ~isempty(tracers) && cfg.tracers.enable - scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(tracers(:, 1), tracers(:, 2), 12, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.3, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + else + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end end fprintf('U-velocity field statistics:\n'); @@ -194,8 +213,15 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m % Overlay tracer particles if available if ~isempty(tracers) && cfg.tracers.enable - scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(tracers(:, 1), tracers(:, 2), 12, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.3, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + else + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end end fprintf('V-velocity field statistics:\n'); @@ -233,8 +259,15 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m % Overlay tracer particles if available if ~isempty(tracers) && cfg.tracers.enable - scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(tracers(:, 1), tracers(:, 2), 12, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.3, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + else + scatter(tracers(:, 1), tracers(:, 2), 8, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end end fprintf('Velocity magnitude statistics:\n'); @@ -245,7 +278,7 @@ function visualize_final_results(cfg, doPlot, xy1, W_final, ~, x_min, x_max, y_m drawnow; end -function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, y_max, tracers) +function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, y_max, tracers, tracer_vel) %VISUALIZE_LIVE_HEATMAP Live interpolated velocity magnitude heatmap % % This function creates a live-updating heatmap showing the velocity magnitude @@ -253,17 +286,21 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, % interpolation to create a smooth field over a regular grid. % % INPUTS: - % cfg - Configuration struct containing visualization parameters - % xy1 - Velocity grid coordinates [Nv x 2] - % W_step - Current velocity vector [2*Nv x 1] at this step (stacked [U; V]) - % step_idx - Current time step index (for title) + % cfg - Configuration struct containing visualization parameters + % xy1 - Velocity grid coordinates [Nv x 2] + % W_step - Current velocity vector [2*Nv x 1] at this step (stacked [U; V]) + % step_idx - Current time step index (for title) % x_min, x_max, y_min, y_max - Domain bounds - % tracers - (Optional) [N x 2] tracer particle positions + % tracers - (Optional) [N x 2] tracer particle positions + % tracer_vel - (Optional) [N x 2] tracer particle velocities (Stokes mode) - % Handle optional tracers argument + % Handle optional arguments if nargin < 9 tracers = []; end + if nargin < 10 + tracer_vel = []; + end % Extract velocity components Nv = size(xy1, 1); @@ -366,8 +403,15 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, % Overlay tracer particles if available if ~isempty(tracers) && cfg.tracers.enable hold(ax, 'on'); - scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(ax, tracers(:, 1), tracers(:, 2), 15, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + else + scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end hold(ax, 'off'); end @@ -400,8 +444,15 @@ function visualize_live_heatmap(cfg, xy1, W_step, step_idx, x_min, x_max, y_min, % Add current tracer positions if enabled if ~isempty(tracers) && cfg.tracers.enable hold(ax, 'on'); - scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... - 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + if ~isempty(tracer_vel) && strcmpi(cfg.tracers.dynamics, 'stokes') + % Color Stokes particles by velocity magnitude + vel_mag = sqrt(tracer_vel(:, 1).^2 + tracer_vel(:, 2).^2); + scatter(ax, tracers(:, 1), tracers(:, 2), 15, vel_mag, 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.5, 'DisplayName', sprintf('Stokes particles (%d)', size(tracers, 1))); + else + scatter(ax, tracers(:, 1), tracers(:, 2), 12, 'w', 'filled', 'MarkerEdgeColor', 'k', ... + 'LineWidth', 0.8, 'DisplayName', sprintf('Tracers (%d)', size(tracers, 1))); + end hold(ax, 'off'); end end diff --git a/test_stokes_debug.m b/test_stokes_debug.m new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/test_stokes_debug.m @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tests/TestTracers.m b/tests/TestTracers.m index b4c4cb1..9d34072 100644 --- a/tests/TestTracers.m +++ b/tests/TestTracers.m @@ -65,38 +65,42 @@ function testInterpolationMethods(testCase) methods = {'tri_bary', 'scattered', 'idw'}; results = cell(length(methods), 1); - for i = 1:length(methods) + % Store testCase reference to avoid clearing issues + tc = testCase; + + for method_idx = 1:length(methods) % Load config fresh for each test cfg = config('cylinder'); cfg.tracers.enable = true; cfg.tracers.num_particles_ci = 20; cfg.simulation.num_time_steps_ci = 3; - cfg.tracers.interp_method = methods{i}; + cfg.tracers.interp_method = methods{method_idx}; - % Run short simulation + % Run short simulation in try-catch to protect variables try + % Run simulation and capture results immediately simulate; % Store results (tracers should exist in workspace after simulate) if exist('tracers', 'var') - results{i} = tracers; + results{method_idx} = tracers; else - error('Tracers not found after simulation'); + results{method_idx} = MException('TestTracers:NoTracers', 'Tracers not found after simulation'); end catch ME - % Store error instead of calling verifyFail which might be cleared - results{i} = ME; + % Store error for later verification + results{method_idx} = ME; end end % Verify all methods produced results (after all simulations complete) - for i = 1:length(methods) - if isa(results{i}, 'MException') - testCase.verifyFail(sprintf('Simulation failed with %s method: %s', methods{i}, results{i}.message)); + for method_idx = 1:length(methods) + if isa(results{method_idx}, 'MException') + tc.verifyFail(sprintf('Simulation failed with %s method: %s', methods{method_idx}, results{method_idx}.message)); else - testCase.verifyTrue(~isempty(results{i}), ... - sprintf('%s method should produce tracer results', methods{i})); + tc.verifyTrue(~isempty(results{method_idx}), ... + sprintf('%s method should produce tracer results', methods{method_idx})); end end end @@ -109,6 +113,9 @@ function testPeriodicBoundaries(testCase) setenv('MATLAB_TEST', 'true'); setup_paths(); + % Store testCase reference to avoid clearing issues + tc = testCase; + % Test periodic boundaries cfg = config('cylinder'); cfg.tracers.enable = true; @@ -125,7 +132,7 @@ function testPeriodicBoundaries(testCase) periodic_tracers = tracers; end catch ME - testCase.verifyFail(sprintf('Periodic simulation failed: %s', ME.message)); + tc.verifyFail(sprintf('Periodic simulation failed: %s', ME.message)); return end @@ -142,19 +149,19 @@ function testPeriodicBoundaries(testCase) nonperiodic_tracers = tracers; end catch ME - testCase.verifyFail(sprintf('Non-periodic simulation failed: %s', ME.message)); + tc.verifyFail(sprintf('Non-periodic simulation failed: %s', ME.message)); return end % Verify both modes produced results - testCase.verifyTrue(~isempty(periodic_tracers), ... - 'Periodic mode should produce tracer results'); - testCase.verifyTrue(~isempty(nonperiodic_tracers), ... - 'Non-periodic mode should produce tracer results'); + tc.verifyTrue(~isempty(periodic_tracers), ... + 'Periodic mode should produce tracer results'); + tc.verifyTrue(~isempty(nonperiodic_tracers), ... + 'Non-periodic mode should produce tracer results'); % Periodic mode should preserve more particles (no removal) - testCase.verifyGreaterThanOrEqual(size(periodic_tracers, 1), size(nonperiodic_tracers, 1), ... - 'Periodic mode should preserve at least as many particles as non-periodic mode'); + tc.verifyGreaterThanOrEqual(size(periodic_tracers, 1), size(nonperiodic_tracers, 1), ... + 'Periodic mode should preserve at least as many particles as non-periodic mode'); end function testMatchesGolden(testCase) @@ -171,30 +178,39 @@ function testMatchesGolden(testCase) setenv('MATLAB_TEST', 'true'); setup_paths(); + % Store testCase reference to avoid clearing issues + tc = testCase; + % Load golden reference golden = load(goldenFile); % Run simulation with same parameters as golden file cfg = config('cylinder'); cfg.tracers.enable = true; - cfg.tracers.num_particles_ci = 50; % Match golden file generation + cfg.tracers.num_particles_ci = 30; % Match golden file (30 tracers) cfg.tracers.interp_method = 'tri_bary'; cfg.tracers.periodic = true; cfg.simulation.num_time_steps_ci = 10; simulate; + % Verify tracers exist after simulation + if ~exist('tracers', 'var') + tc.verifyFail('Tracers not found after simulation'); + return + end + % Compare final tracer positions - testCase.verifySize(tracers, size(golden.tracers_final), ... - 'Tracer array should have same size as golden reference'); + tc.verifySize(tracers, size(golden.tracers_final), ... + 'Tracer array should have same size as golden reference'); % Compare positions with tolerance diff = abs(tracers - golden.tracers_final); max_diff = max(diff(:)); - testCase.verifyLessThanOrEqual(max_diff, testCase.XY_TOL, ... - sprintf('Maximum tracer position difference (%.6f) should be within tolerance (%.6f)', ... - max_diff, testCase.XY_TOL)); + tc.verifyLessThanOrEqual(max_diff, tc.XY_TOL, ... + sprintf('Maximum tracer position difference (%.6f) should be within tolerance (%.6f)', ... + max_diff, tc.XY_TOL)); fprintf('✅ Tracer golden test passed: max difference = %.6f\n', max_diff); end From 1c200e979d0141ef32ca86a482a74caeef63af8e Mon Sep 17 00:00:00 2001 From: Spencer Bryngelson Date: Thu, 18 Sep 2025 18:30:09 -0400 Subject: [PATCH 11/12] make the right goldenfiles --- config.m | 24 ++-- example_stokes_particles.m | 81 ------------- simulate.m | 4 +- src/advect_tracers.m | 20 ++-- tests/TestGoldenCylinderStokes.m | 112 +++++++++++++++++ tests/TestGoldenCylinderTracer.m | 105 ++++++++++++++++ tests/TestTracers.m | 15 ++- tests/golden/GoldenFileGenerator.m | 113 +++++++++++++++--- ...linder_stokes_Re100_Nt10_dt0.01_seed42.mat | Bin 0 -> 312137 bytes ...linder_tracer_Re100_Nt20_dt0.01_seed42.mat | Bin 0 -> 312197 bytes ...cers_cylinder_Re100_Nt10_dt0.01_seed42.mat | Bin 10504 -> 0 bytes 11 files changed, 345 insertions(+), 129 deletions(-) delete mode 100644 example_stokes_particles.m create mode 100644 tests/TestGoldenCylinderStokes.m create mode 100644 tests/TestGoldenCylinderTracer.m create mode 100644 tests/golden/cylinder_stokes_Re100_Nt10_dt0.01_seed42.mat create mode 100644 tests/golden/cylinder_tracer_Re100_Nt20_dt0.01_seed42.mat delete mode 100644 tests/golden/tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat diff --git a/config.m b/config.m index 09a1196..edf3043 100644 --- a/config.m +++ b/config.m @@ -152,8 +152,19 @@ %% Tracers (Lagrangian point particles advected by the flow) config.tracers.enable = true; % Enable tracer particles - config.tracers.num_particles = 4000; % Number of tracers (normal runs) + config.tracers.num_particles = 100; % Number of tracers (normal runs) config.tracers.num_particles_ci = 30; % Fewer tracers for CI/tests + + % Particle dynamics (one-way Stokes drag coupling) + config.tracers.dynamics = 'tracer'; % 'tracer' (default, massless tracers) or 'stokes' + config.tracers.rho_f = 1.0; % Fluid density (dimensionless) + config.tracers.rho_p = 1000.0; % Particle density (dimensionless) + config.tracers.diameter = 1e-3; % Particle diameter (dimensionless) + config.tracers.gravity_enable = false; % Enable gravitational/buoyancy force + config.tracers.g = [0, -1]; % Gravitational acceleration vector (dimensionless) + config.tracers.vel_init = 'fluid'; % Initial particle velocity: 'fluid' or 'zero' + + % Particle parameters config.tracers.k_neighbors = 10; % IDW neighbors for velocity interpolation config.tracers.idw_power = 2; % IDW power (2 = standard) config.tracers.obstacle_margin = 3 * config.mesh.boundary_eps; % Seed clearance from obstacles @@ -162,21 +173,10 @@ config.tracers.integrator = 'heun'; % 'heun' for trapezoidal method config.tracers.pushback_on_obstacle = true; % Prevent crossing into obstacle during advection config.tracers.max_pushback_iters = 5; % Limit for step shrinking when crossing obstacle - - % Tracer interpolation performance optimization config.tracers.interp_method = 'tri_bary'; % 'tri_bary' (fastest), 'scattered' (fast), or 'idw' (original) config.tracers.knn_refresh_interval = 10; % Steps between full KNN rebuild (IDW mode) config.tracers.periodic = true; % Periodic wrap on domain boundaries - % Particle dynamics (one-way Stokes drag coupling) - config.tracers.dynamics = 'massless'; % 'massless' (default, current behavior) or 'stokes' - config.tracers.rho_f = 1.0; % Fluid density (dimensionless) - config.tracers.rho_p = 1000.0; % Particle density (dimensionless) - config.tracers.diameter = 1e-3; % Particle diameter (dimensionless) - config.tracers.gravity_enable = false; % Enable gravitational/buoyancy force - config.tracers.g = [0, 0]; % Gravitational acceleration vector (dimensionless) - config.tracers.vel_init = 'fluid'; % Initial particle velocity: 'fluid' or 'zero' - % Live visualization (disabled in CI/tests) config.visualization.live_enable = true; % Show live heatmap during simulation config.visualization.live_frequency = 50; % Update every N steps diff --git a/example_stokes_particles.m b/example_stokes_particles.m deleted file mode 100644 index 7165e8b..0000000 --- a/example_stokes_particles.m +++ /dev/null @@ -1,81 +0,0 @@ -%% Example: One-way Stokes Drag Particle Simulation -% This script demonstrates the new Stokes particle functionality -% which implements one-way coupling with drag and optional gravity. - -clear; clc; - -% Add required paths -addpath('src'); -addpath('src/geometry'); - -%% Configure Stokes Particles -cfg = config('cylinder'); - -% Enable Stokes particle dynamics (default is 'massless') -cfg.tracers.dynamics = 'stokes'; - -% Particle properties (dimensionless) -cfg.tracers.rho_f = 1.0; % Fluid density -cfg.tracers.rho_p = 1000.0; % Particle density (heavy particles) -cfg.tracers.diameter = 1e-3; % Particle diameter - -% Initial particle velocity -cfg.tracers.vel_init = 'fluid'; % 'fluid' or 'zero' - -% Optional gravity/buoyancy (disabled by default) -cfg.tracers.gravity_enable = false; -cfg.tracers.g = [0, -0.1]; % Gravitational acceleration (if enabled) - -% Simulation parameters -cfg.tracers.num_particles = 100; -cfg.simulation.num_time_steps = 50; -cfg.simulation.time_step = 0.01; - -% Visualization -cfg.visualization.live_enable = true; -cfg.visualization.live_frequency = 10; - -%% Display Stokes Parameters -nu = cfg.simulation.viscosity; -rho_f = cfg.tracers.rho_f; -rho_p = cfg.tracers.rho_p; -dp = cfg.tracers.diameter; -mu = nu * rho_f; -tau_p = (rho_p * dp^2) / (18 * mu); - -fprintf('=== Stokes Particle Parameters ===\n'); -fprintf('Particle dynamics: %s\n', cfg.tracers.dynamics); -fprintf('Reynolds number: %.0f\n', 1/nu); -fprintf('Particle density ratio ρ_p/ρ_f: %.1f\n', rho_p/rho_f); -fprintf('Particle diameter: %.3e\n', dp); -fprintf('Response time τ_p: %.3e\n', tau_p); -fprintf('Time step dt: %.3e\n', cfg.simulation.time_step); -fprintf('Stokes number St = τ_p/dt: %.2f\n', tau_p/cfg.simulation.time_step); - -if cfg.tracers.gravity_enable - fprintf('Gravity: [%.3f, %.3f]\n', cfg.tracers.g(1), cfg.tracers.g(2)); - fprintf('Buoyancy factor (1-ρ_f/ρ_p): %.3f\n', 1 - rho_f/rho_p); -else - fprintf('Gravity: disabled\n'); -end -fprintf('===================================\n\n'); - -%% Run Simulation -fprintf('Running Stokes particle simulation...\n'); -fprintf('- Particles will have their own velocity that relaxes toward fluid velocity\n'); -fprintf('- Drag force: F = 3πμd(u-V) where u=fluid velocity, V=particle velocity\n'); -fprintf('- Particle equation: dV/dt = (u-V)/τ_p + (1-ρ_f/ρ_p)g\n\n'); - -% Save configuration and run -save('stokes_config.mat', 'cfg'); -setenv('LOAD_CFG_FILE', 'stokes_config.mat'); - -% Run the simulation -simulate; - -% Clean up -delete('stokes_config.mat'); - -fprintf('\n=== Simulation Complete ===\n'); -fprintf('The visualization shows Stokes particles colored by their velocity magnitude.\n'); -fprintf('Compare this to massless tracers by setting cfg.tracers.dynamics = ''massless''.\n'); diff --git a/simulate.m b/simulate.m index 68f0d49..d952d69 100644 --- a/simulate.m +++ b/simulate.m @@ -347,7 +347,7 @@ else tracer_vel = []; if ~isempty(tracers) - fprintf('Initialized %d massless tracers\n', size(tracers, 1)); + fprintf('Initialized %d tracer particles\n', size(tracers, 1)); end end @@ -435,7 +435,7 @@ % Stokes particle dynamics with velocity evolution [tracers, tracer_vel] = advect_tracers(tracers, tracer_vel, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); else - % Massless tracer dynamics (original behavior) + % Tracer particle dynamics (original behavior) tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, G.fd_obs, domain_struct); end end diff --git a/src/advect_tracers.m b/src/advect_tracers.m index 6ece484..2094c73 100644 --- a/src/advect_tracers.m +++ b/src/advect_tracers.m @@ -3,10 +3,10 @@ % % This function advances tracer particles using Heun's method (explicit trapezoidal) % which is second-order accurate and uses the fluid velocity at both the beginning - % and end of the time step. Supports both massless tracers (follow fluid exactly) + % and end of the time step. Supports both tracer particles (follow fluid exactly) % and Stokes particles (one-way coupling with drag and optional gravity). % - % USAGE (massless tracers - original behavior): + % USAGE (tracer particles - original behavior): % tracers = advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) % % USAGE (Stokes particles - new physics): @@ -28,19 +28,19 @@ % tracer_vel - [N x 2] particle velocities at t^{n+1} (Stokes mode only) % % ALGORITHM: - % Massless: x^{n+1} = x^n + 0.5*dt*(u^n + u^{n+1}) - % where u^n = u(x^n, t^n) and u^{n+1} = u(x^n + dt*u^n, t^{n+1}) - % Stokes: dX/dt = V, dV/dt = (u(X,t) - V)/tau_p + (1 - rho_f/rho_p)*g - % Integrated with Heun's method using same velocity interpolation + % Tracer: x^{n+1} = x^n + 0.5*dt*(u^n + u^{n+1}) + % where u^n = u(x^n, t^n) and u^{n+1} = u(x^n + dt*u^n, t^{n+1}) + % Stokes: dX/dt = V, dV/dt = (u(X,t) - V)/tau_p + (1 - rho_f/rho_p)*g + % Integrated with Heun's method using same velocity interpolation if isempty(tracers) tracer_vel = []; return end - % Parse input arguments to determine mode (massless vs Stokes) + % Parse input arguments to determine mode (tracer vs Stokes) if nargin == 8 - % Massless mode: advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) + % Tracer mode: advect_tracers(tracers, dt, xy1, W_prev, W_now, cfg, fd_obs, domain) [dt, xy1, W_prev, W_now, cfg, fd_obs, domain] = deal(varargin{:}); is_stokes = false; tracer_vel = []; @@ -49,7 +49,7 @@ [tracer_vel, dt, xy1, W_prev, W_now, cfg, fd_obs, domain] = deal(varargin{:}); is_stokes = true; else - error('Invalid number of arguments. Use 8 for massless mode or 9 for Stokes mode.'); + error('Invalid number of arguments. Use 8 for tracer mode or 9 for Stokes mode.'); end % Validate Stokes mode configuration @@ -267,7 +267,7 @@ Pnew = Pn + 0.5 * dt * (Vn + Vnew); % Final position using average velocity else - % Massless tracer dynamics (original behavior): follow fluid exactly + % Tracer particle dynamics (original behavior): follow fluid exactly Pn = tracers; % x^n (current positions) Vn = interp_vel(Pn, U_prev, V_prev); % u(x^n, t^n) diff --git a/tests/TestGoldenCylinderStokes.m b/tests/TestGoldenCylinderStokes.m new file mode 100644 index 0000000..abc7d1f --- /dev/null +++ b/tests/TestGoldenCylinderStokes.m @@ -0,0 +1,112 @@ +classdef TestGoldenCylinderStokes < BaseGeometryTest + % TESTGOLDENCYLINDERSTOKES Test Stokes particle simulation against golden reference + % + % This class tests the cylinder geometry with Stokes particle dynamics + % against a pre-computed golden reference file to ensure numerical + % consistency and detect regressions. + + properties (Constant) + GEOMETRY_TYPE = 'cylinder' + PARTICLE_MODE = 'stokes' + EXPECTED_FIELDS = {'obstacle_radius'} % Geometry fields for BaseGeometryTest + GOLDEN_FIELDS = {'xy1', 'U', 'V', 'meta', 'tracers_final', 'tracer_vel_final'} % Golden file fields + end + + methods (Static) + function goldenFile = getGoldenFilePath() + % Get the path to the golden reference file for cylinder Stokes particles + goldenFile = fullfile(fileparts(mfilename('fullpath')), 'golden', ... + 'cylinder_stokes_Re100_Nt10_dt0.01_seed42.mat'); + end + end + + methods (Test) + + function testMatchesGolden(testCase) + % Test that cylinder Stokes simulation matches golden reference + + goldenFile = TestGoldenCylinderStokes.getGoldenFilePath(); + + if ~exist(goldenFile, 'file') + testCase.assumeFail(sprintf('Golden file not found: %s', goldenFile)); + end + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + % Load golden reference + golden = load(goldenFile); + + % Verify golden file structure + testCase.verifyTrue(isfield(golden, 'gold'), 'Golden file should contain gold structure'); + gold = golden.gold; + + for i = 1:length(testCase.GOLDEN_FIELDS) + field = testCase.GOLDEN_FIELDS{i}; + testCase.verifyTrue(isfield(gold, field), sprintf('Golden file should contain field: %s', field)); + end + + % Run simulation with same parameters as golden file + cfg = config(testCase.GEOMETRY_TYPE); + cfg.tracers.dynamics = testCase.PARTICLE_MODE; + cfg.tracers.num_particles_ci = 20; % Match golden file generation + cfg.simulation.num_time_steps_ci = 10; + cfg.simulation.time_step = 0.01; + + % Save config and run simulation + save('test_config.mat', 'cfg'); + setenv('LOAD_CFG_FILE', 'test_config.mat'); + + simulate; + + % Clean up config file + if exist('test_config.mat', 'file') + delete('test_config.mat'); + end + + % Compare velocity field + n = size(xy1, 1); + U_final = W(1:n, end); + V_final = W(n + 1:end, end); + + % Sort for comparison + [~, idx] = sortrows(xy1, [1, 2]); + xy1_sorted = xy1(idx, :); + U_sorted = U_final(idx); + V_sorted = V_final(idx); + + % Compare coordinates + testCase.verifySize(xy1_sorted, size(gold.xy1), 'Coordinate arrays should have same size'); + testCase.verifyEqual(xy1_sorted, gold.xy1, 'AbsTol', testCase.XY_TOL, ... + 'Coordinates should match within tolerance'); + + % Compare velocity components + testCase.verifySize(U_sorted, size(gold.U), 'U velocity should have same size'); + testCase.verifySize(V_sorted, size(gold.V), 'V velocity should have same size'); + + testCase.verifyEqual(U_sorted, gold.U, 'RelTol', testCase.REL_TOL, 'AbsTol', testCase.ABS_TOL, ... + 'U velocity should match within tolerance'); + testCase.verifyEqual(V_sorted, gold.V, 'RelTol', testCase.REL_TOL, 'AbsTol', testCase.ABS_TOL, ... + 'V velocity should match within tolerance'); + + % Compare tracer positions + if isfield(gold, 'tracers_final') && exist('tracers', 'var') + testCase.verifySize(tracers, size(gold.tracers_final), 'Tracer positions should have same size'); + testCase.verifyEqual(tracers, gold.tracers_final, 'AbsTol', testCase.XY_TOL, ... + 'Tracer positions should match within tolerance'); + end + + % Compare tracer velocities (Stokes mode only) + if isfield(gold, 'tracer_vel_final') && exist('tracer_vel', 'var') + testCase.verifySize(tracer_vel, size(gold.tracer_vel_final), 'Tracer velocities should have same size'); + testCase.verifyEqual(tracer_vel, gold.tracer_vel_final, 'AbsTol', testCase.ABS_TOL, ... + 'Tracer velocities should match within tolerance'); + end + + fprintf('✅ Cylinder Stokes golden test passed\n'); + end + + end +end diff --git a/tests/TestGoldenCylinderTracer.m b/tests/TestGoldenCylinderTracer.m new file mode 100644 index 0000000..30ca8fd --- /dev/null +++ b/tests/TestGoldenCylinderTracer.m @@ -0,0 +1,105 @@ +classdef TestGoldenCylinderTracer < BaseGeometryTest + % TESTGOLDENCYLINDERTRACER Test tracer particle simulation against golden reference + % + % This class tests the cylinder geometry with tracer particle dynamics + % against a pre-computed golden reference file to ensure numerical + % consistency and detect regressions. + + properties (Constant) + GEOMETRY_TYPE = 'cylinder' + PARTICLE_MODE = 'tracer' + EXPECTED_FIELDS = {'obstacle_radius'} % Geometry fields for BaseGeometryTest + GOLDEN_FIELDS = {'xy1', 'U', 'V', 'meta', 'tracers_final'} % Golden file fields + end + + methods (Static) + function goldenFile = getGoldenFilePath() + % Get the path to the golden reference file for cylinder tracer particles + goldenFile = fullfile(fileparts(mfilename('fullpath')), 'golden', ... + 'cylinder_tracer_Re100_Nt20_dt0.01_seed42.mat'); + end + end + + methods (Test) + + function testMatchesGolden(testCase) + % Test that cylinder tracer simulation matches golden reference + + goldenFile = TestGoldenCylinderTracer.getGoldenFilePath(); + + if ~exist(goldenFile, 'file') + testCase.assumeFail(sprintf('Golden file not found: %s', goldenFile)); + end + + % Set up environment + setenv('CI', 'true'); + setenv('MATLAB_TEST', 'true'); + setup_paths(); + + % Load golden reference + golden = load(goldenFile); + + % Verify golden file structure + testCase.verifyTrue(isfield(golden, 'gold'), 'Golden file should contain gold structure'); + gold = golden.gold; + + for i = 1:length(testCase.GOLDEN_FIELDS) + field = testCase.GOLDEN_FIELDS{i}; + testCase.verifyTrue(isfield(gold, field), sprintf('Golden file should contain field: %s', field)); + end + + % Run simulation with same parameters as golden file + cfg = config(testCase.GEOMETRY_TYPE); + cfg.tracers.dynamics = testCase.PARTICLE_MODE; + cfg.tracers.num_particles_ci = 30; % Match golden file generation + cfg.simulation.num_time_steps_ci = 20; + cfg.simulation.time_step = 0.01; + + % Save config and run simulation + save('test_config.mat', 'cfg'); + setenv('LOAD_CFG_FILE', 'test_config.mat'); + + simulate; + + % Clean up config file + if exist('test_config.mat', 'file') + delete('test_config.mat'); + end + + % Compare velocity field + n = size(xy1, 1); + U_final = W(1:n, end); + V_final = W(n + 1:end, end); + + % Sort for comparison + [~, idx] = sortrows(xy1, [1, 2]); + xy1_sorted = xy1(idx, :); + U_sorted = U_final(idx); + V_sorted = V_final(idx); + + % Compare coordinates + testCase.verifySize(xy1_sorted, size(gold.xy1), 'Coordinate arrays should have same size'); + testCase.verifyEqual(xy1_sorted, gold.xy1, 'AbsTol', testCase.XY_TOL, ... + 'Coordinates should match within tolerance'); + + % Compare velocity components + testCase.verifySize(U_sorted, size(gold.U), 'U velocity should have same size'); + testCase.verifySize(V_sorted, size(gold.V), 'V velocity should have same size'); + + testCase.verifyEqual(U_sorted, gold.U, 'RelTol', testCase.REL_TOL, 'AbsTol', testCase.ABS_TOL, ... + 'U velocity should match within tolerance'); + testCase.verifyEqual(V_sorted, gold.V, 'RelTol', testCase.REL_TOL, 'AbsTol', testCase.ABS_TOL, ... + 'V velocity should match within tolerance'); + + % Compare tracer positions + if isfield(gold, 'tracers_final') && exist('tracers', 'var') + testCase.verifySize(tracers, size(gold.tracers_final), 'Tracer positions should have same size'); + testCase.verifyEqual(tracers, gold.tracers_final, 'AbsTol', testCase.XY_TOL, ... + 'Tracer positions should match within tolerance'); + end + + fprintf('✅ Cylinder Tracer golden test passed\n'); + end + + end +end diff --git a/tests/TestTracers.m b/tests/TestTracers.m index 9d34072..3e4e1c8 100644 --- a/tests/TestTracers.m +++ b/tests/TestTracers.m @@ -19,7 +19,7 @@ function goldenFile = getGoldenFilePath() % Get the path to the golden reference file for tracers goldenFile = fullfile(fileparts(mfilename('fullpath')), 'golden', ... - 'tracers_cylinder_Re100_Nt10_dt0.01_seed42.mat'); + 'cylinder_tracer_Re100_Nt20_dt0.01_seed42.mat'); end end @@ -183,14 +183,19 @@ function testMatchesGolden(testCase) % Load golden reference golden = load(goldenFile); + + % Verify golden file structure + tc.verifyTrue(isfield(golden, 'gold'), 'Golden file should contain gold structure'); + gold = golden.gold; % Run simulation with same parameters as golden file cfg = config('cylinder'); cfg.tracers.enable = true; - cfg.tracers.num_particles_ci = 30; % Match golden file (30 tracers) + cfg.tracers.dynamics = 'tracer'; % Explicitly set tracer mode + cfg.tracers.num_particles_ci = 30; % Match golden file (30 tracers) cfg.tracers.interp_method = 'tri_bary'; cfg.tracers.periodic = true; - cfg.simulation.num_time_steps_ci = 10; + cfg.simulation.num_time_steps_ci = 20; % Match golden file (20 steps) simulate; @@ -201,11 +206,11 @@ function testMatchesGolden(testCase) end % Compare final tracer positions - tc.verifySize(tracers, size(golden.tracers_final), ... + tc.verifySize(tracers, size(gold.tracers_final), ... 'Tracer array should have same size as golden reference'); % Compare positions with tolerance - diff = abs(tracers - golden.tracers_final); + diff = abs(tracers - gold.tracers_final); max_diff = max(diff(:)); tc.verifyLessThanOrEqual(max_diff, tc.XY_TOL, ... diff --git a/tests/golden/GoldenFileGenerator.m b/tests/golden/GoldenFileGenerator.m index a52590c..fedfa29 100644 --- a/tests/golden/GoldenFileGenerator.m +++ b/tests/golden/GoldenFileGenerator.m @@ -6,13 +6,18 @@ methods (Static) - function generateGoldenFile(geometryType) - % Generate a golden file for the specified geometry + function generateGoldenFile(geometryType, particleMode) + % Generate a golden file for the specified geometry and particle mode % % Parameters: % geometryType - String: 'cylinder', 'ellipse', 'rectangle', or 'airfoil' + % particleMode - String: 'tracer' (default) or 'stokes' + + if nargin < 2 + particleMode = 'tracer'; + end - fprintf('=== Creating %s Golden File ===\n', upper(geometryType)); + fprintf('=== Creating %s %s Golden File ===\n', upper(geometryType), upper(particleMode)); % Set up environment setenv('CI', 'true'); @@ -21,22 +26,43 @@ function generateGoldenFile(geometryType) % Store parameters before simulation (simulate may clear variables) geomType = geometryType; + partMode = particleMode; % Load config for metadata first % Store geometry type before simulate clears variables geometryType = geomType; + particleMode = partMode; cfg = config(geometryType); + + % Configure particle mode + cfg.tracers.dynamics = particleMode; + if strcmpi(particleMode, 'stokes') + cfg.tracers.num_particles_ci = 20; % Fewer Stokes particles for faster testing + cfg.simulation.num_time_steps_ci = 10; % Shorter simulation for Stokes + cfg.simulation.time_step = 0.01; % Appropriate time step + fprintf('Configured for Stokes particles: %d particles, %d steps\n', ... + cfg.tracers.num_particles_ci, cfg.simulation.num_time_steps_ci); + else + cfg.tracers.num_particles_ci = 30; % Standard tracer count + cfg.simulation.num_time_steps_ci = 20; % Standard steps + fprintf('Configured for tracer particles: %d particles, %d steps\n', ... + cfg.tracers.num_particles_ci, cfg.simulation.num_time_steps_ci); + end + + % Save config for simulate to use + save('temp_golden_config.mat', 'cfg'); + setenv('LOAD_CFG_FILE', 'temp_golden_config.mat'); % Run the simulation - fprintf('Running %s simulation...\n', geometryType); - setenv('CONFIG_FUNC', 'config'); - setenv('GEOMETRY_TYPE', geometryType); + fprintf('Running %s %s simulation...\n', geometryType, particleMode); simulate; % Restore variables that may have been cleared by simulate - geometryType = getenv('GEOMETRY_TYPE'); - cfg = config(geometryType); + geometryType = geomType; + particleMode = partMode; + cfg = load('temp_golden_config.mat', 'cfg'); + cfg = cfg.cfg; % Extract the final state % Ensure variables exist from simulate script @@ -51,6 +77,18 @@ function generateGoldenFile(geometryType) fprintf(' Number of nodes: %d\n', n); fprintf(' Max |U|: %.6f\n', max(abs(U))); fprintf(' Max |V|: %.6f\n', max(abs(V))); + + % Extract tracer data if available + tracers_final = []; + tracer_vel_final = []; + if exist('tracers', 'var') && ~isempty(tracers) + tracers_final = tracers; + fprintf(' Number of tracers: %d\n', size(tracers_final, 1)); + if strcmpi(particleMode, 'stokes') && exist('tracer_vel', 'var') && ~isempty(tracer_vel) + tracer_vel_final = tracer_vel; + fprintf(' Max tracer velocity: %.6f\n', max(sqrt(sum(tracer_vel_final.^2, 2)))); + end + end % Sort nodes for reproducible ordering [~, idx] = sortrows(xy1, [1, 2]); @@ -59,12 +97,27 @@ function generateGoldenFile(geometryType) V_sorted = V(idx); % Create metadata - meta.algorithm = sprintf('RBF-FD Navier-Stokes %s flow', geometryType); + meta.algorithm = sprintf('RBF-FD Navier-Stokes %s flow with %s particles', geometryType, particleMode); meta.geometry_type = cfg.geometry.type; + meta.particle_mode = particleMode; meta.reynolds_number = cfg.simulation.reynolds_number; meta.time_step = cfg.simulation.time_step; meta.num_time_steps = cfg.simulation.num_time_steps_ci; meta.random_seed = cfg.simulation.random_seed; + + % Add particle-specific metadata + meta.tracers_enable = cfg.tracers.enable; + meta.tracers_dynamics = cfg.tracers.dynamics; + if strcmpi(particleMode, 'stokes') + meta.rho_f = cfg.tracers.rho_f; + meta.rho_p = cfg.tracers.rho_p; + meta.diameter = cfg.tracers.diameter; + meta.gravity_enable = cfg.tracers.gravity_enable; + if cfg.tracers.gravity_enable + meta.gravity = cfg.tracers.g; + end + meta.vel_init = cfg.tracers.vel_init; + end % Add geometry-specific metadata switch geometryType @@ -108,6 +161,14 @@ function generateGoldenFile(geometryType) gold.U = U_sorted; gold.V = V_sorted; gold.meta = meta; + + % Add tracer data if available + if ~isempty(tracers_final) + gold.tracers_final = tracers_final; + if ~isempty(tracer_vel_final) + gold.tracer_vel_final = tracer_vel_final; + end + end % Save golden file outDir = fullfile('tests', 'golden'); @@ -115,36 +176,50 @@ function generateGoldenFile(geometryType) mkdir(outDir); end - outFile = fullfile(outDir, sprintf('%s_Re%d_Nt%d_dt%g_seed%d.mat', ... - geometryType, meta.reynolds_number, meta.num_time_steps, ... + outFile = fullfile(outDir, sprintf('%s_%s_Re%d_Nt%d_dt%g_seed%d.mat', ... + geometryType, particleMode, meta.reynolds_number, meta.num_time_steps, ... meta.time_step, meta.random_seed)); save(outFile, 'gold', '-v7'); + + % Clean up temporary file + if exist('temp_golden_config.mat', 'file') + delete('temp_golden_config.mat'); + end - fprintf('=== %s Golden File Created Successfully ===\n', upper(geometryType)); + fprintf('=== %s %s Golden File Created Successfully ===\n', upper(geometryType), upper(particleMode)); fprintf(' File: %s\n', outFile); fprintf(' Nodes: %d\n', length(gold.U)); fprintf(' Max |U|: %.6f\n', max(abs(gold.U))); fprintf(' Max |V|: %.6f\n', max(abs(gold.V))); fprintf(' Mean U: %.6f\n', mean(gold.U)); fprintf(' Mean V: %.6f\n', mean(gold.V)); + if ~isempty(tracers_final) + fprintf(' Tracers: %d\n', size(tracers_final, 1)); + if ~isempty(tracer_vel_final) + fprintf(' Max tracer vel: %.6f\n', max(sqrt(sum(tracer_vel_final.^2, 2)))); + end + end end function generateAllGoldenFiles() - % generateAllGoldenFiles Generates golden files for all supported geometries + % generateAllGoldenFiles Generates golden files for all supported geometries and particle modes fprintf('=== GENERATING ALL GOLDEN FILES ===\n'); setup_paths(); % Ensure paths are set for all calls geometries = {'cylinder', 'ellipse', 'rectangle', 'airfoil', 'multi'}; + particleModes = {'tracer', 'stokes'}; for i = 1:length(geometries) - try - GoldenFileGenerator.generateGoldenFile(geometries{i}); - catch ME - fprintf('[ERROR] Failed to generate %s golden file: %s\n', geometries{i}, ME.message); + for j = 1:length(particleModes) + try + GoldenFileGenerator.generateGoldenFile(geometries{i}, particleModes{j}); + catch ME + fprintf('[ERROR] Failed to generate %s %s golden file: %s\n', geometries{i}, particleModes{j}, ME.message); + end + % Clear variables for next iteration + clear xy1 W U V xy1_sorted U_sorted V_sorted meta gold tracers tracer_vel tracers_final tracer_vel_final; end - % Clear variables for next iteration - clear xy1 W U V xy1_sorted U_sorted V_sorted meta gold; end fprintf('=== ALL GOLDEN FILES GENERATION COMPLETE ===\n'); end diff --git a/tests/golden/cylinder_stokes_Re100_Nt10_dt0.01_seed42.mat b/tests/golden/cylinder_stokes_Re100_Nt10_dt0.01_seed42.mat new file mode 100644 index 0000000000000000000000000000000000000000..0d4d765064970e6d9482e827da8c4a18701e8fd7 GIT binary patch literal 312137 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⋘%Yl8-g6*vY<{-;tmhzv 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 i9eZR^zZIu0BT*q6d3QcG=KXb792$6SPm3a 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 z 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 Se!ENkuP=Kw_5%R^x*6PDY@e9` literal 0 HcmV?d00001 diff --git a/tests/golden/cylinder_tracer_Re100_Nt20_dt0.01_seed42.mat b/tests/golden/cylinder_tracer_Re100_Nt20_dt0.01_seed42.mat new file mode 100644 index 0000000000000000000000000000000000000000..60cf44f757e3fde5fdea55deb6ad34ea2435642d GIT binary patch literal 312197 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 ih>*MXh$z= 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Ό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