From 136e886284fa7125ca04400db373f2d90ab3401f Mon Sep 17 00:00:00 2001
From: Emilio Corigliano <emilio.corigliano@skywarder.eu>
Date: Fri, 4 Oct 2024 10:47:18 +0200
Subject: [PATCH] [SM] Added control of vertical velocity when expulsion is
 actuated

---
 simulator/src/printOutput.m | 3 ++-
 simulator/src/std_run.m     | 6 ++++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/simulator/src/printOutput.m b/simulator/src/printOutput.m
index ca394968..10386373 100644
--- a/simulator/src/printOutput.m
+++ b/simulator/src/printOutput.m
@@ -42,7 +42,8 @@ fprintf('OUTCOMES:\n\n\n')
 % fprintf('max step omputational Time: %.3f [s]: \n\n', max(cpuTimes))
 
 fprintf('apogee: %.1f [m] \n', max_z);
-fprintf('@time: %g [sec] \n\n', T_apo)
+fprintf('@time: %g [sec] \n', T_apo)
+fprintf('@vz: %g [sec] \n\n', structIn.apogee_vz)
 
 fprintf('max speed reached: %g [m/s] \n', max_v)
 fprintf('@altitude: %g [m] \n', z(imax_v))
diff --git a/simulator/src/std_run.m b/simulator/src/std_run.m
index 8a8b98a4..0b31a251 100644
--- a/simulator/src/std_run.m
+++ b/simulator/src/std_run.m
@@ -252,6 +252,12 @@ while settings.flagStopIntegration && n_old < nmax                          % St
             % drogue_descent if full_flight,
             % landed if apogee was never detected
             if flagApogee
+                v_ned = quatrotate(quatconj(Y0(end, 10:13)), Y0(end, 4:6));
+                struct_out.apogee_vz = v_ned(3);
+                if abs(v_ned(3)) > 5
+                    disp(v_ned(3))
+                    error("CRITICAL FAILURE: Expulsion at a too high speed!");  
+                end
                 state_lastTime(currentState) = t0;
 
                 % Exit condition of unpowered_ascent / Entry condition of drogue_descent:
-- 
GitLab