more analysis

This commit is contained in:
2025-12-04 19:32:54 +01:00
parent 0a966f6430
commit f5a7b3206a
13 changed files with 11898 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
close all; clear all;
%% Final Static Fire Sequence
% Time vector
dt = 0.0001; % or 0.01, etc.
t = -8:dt:14; % colon, not linspace
%% Define sequence for each valve
% [ start_time, target_value, ramp_duration ]
N2_events = [
-3 100 0
];
Fuel_events = [
1.5 25 0.5
3.5 100 1.5
8 0 0.5
];
LOX_events = [
1.8 25 0.2
3.5 100 1.5
8 0 0.3
];
Pyro_events = [
0 100 0.01
1.8 0 0.01
];
%% Generate profiles (initial value = 0)
N2 = valve_profile(t, N2_events, 0);
Fuel = valve_profile(t, Fuel_events, 0);
LOX = valve_profile(t, LOX_events, 0);
Pyro = valve_profile(t, Pyro_events, 0);
%% Plot
% Existing
figure; hold on; grid on; box on;
plot(t, N2, '--', 'LineWidth', 1, 'Color', [0 0 1 0.5]);
plot(t, Fuel, '-', 'LineWidth', 1.5);
plot(t, LOX, '-', 'LineWidth', 1.5);
%plot(t, Pyro, '--', 'LineWidth', 1);
plot([0,0],[0,100],'-', 'LineWidth', 2,'Color', [1 0 0 0.5]); %Ignition
ax = gca;
ax.XTick = -4:1:10;
ax.XMinorTick = 'on';
ax.XAxis.MinorTickValues = -4:0.1:10;
ax.XMinorGrid = 'on';
ax.MinorGridAlpha = 0.15; % transparency
ax.MinorGridLineStyle = '-'; % solid but faint
ax.MinorGridColor = [0.8 0.8 0.8];
xlabel('Time [s]');
ylabel('Opening[%]');
legend('Nitrogen','Ethanol','LOX','Ignition','Location','best');
ylim([-5 105]);
xlim([-4 10]);
title('Final Ignition Sequence');
%% Helper function
function u = valve_profile(t, events, initial_value)
% events: [t_start, target_value, ramp_duration]
% assumes events are sorted by t_start
u = initial_value * ones(size(t));
prev_value = initial_value;
for k = 1:size(events,1)
t0 = events(k,1);
target = events(k,2);
dur = events(k,3);
if dur <= 0
% Instant step
u(t >= t0) = target;
else
% Linear ramp from prev_value to target
t1 = t0 + dur;
idx_ramp = (t >= t0) & (t <= t1);
u(idx_ramp) = prev_value + ...
(target - prev_value) .* (t(idx_ramp) - t0) / dur;
% Hold new value after ramp
u(t > t1) = target;
end
prev_value = target;
end
end