From 843d09c1e04b7ba98ea224ec90e5dca4a494b844 Mon Sep 17 00:00:00 2001 From: Mauco03 <marco.gaibotti@skywarder.eu> Date: Mon, 22 Apr 2024 14:34:10 +0200 Subject: [PATCH] [refactoring-ode][classes] Improved data management - Rocket can now import data stored in new aeroCoefficients - Updated data --- classes/Component.m | 5 ----- classes/Config.m | 5 ----- classes/Rocket.m | 19 ++++++++++++++----- classes/bays/Motor.m | 6 ++++++ .../config/rocketConfig.m | 6 +++--- .../data/aeroCoefficients.mat | 4 ++-- .../data/aeroCoefficientsHighAOA.mat | 4 ++-- .../data/motors.mat | 4 ++-- 8 files changed, 29 insertions(+), 24 deletions(-) diff --git a/classes/Component.m b/classes/Component.m index c7bad4c..f7c6b37 100644 --- a/classes/Component.m +++ b/classes/Component.m @@ -38,7 +38,6 @@ classdef Component < Config end end obj = objMatrix; - obj.loadData(); end end @@ -90,9 +89,5 @@ classdef Component < Config end end end - - methods(Static, Access = protected) - function loadData(), end - end end diff --git a/classes/Config.m b/classes/Config.m index 4d0a897..aff4e5b 100644 --- a/classes/Config.m +++ b/classes/Config.m @@ -9,11 +9,6 @@ classdef(Abstract) Config < handle variableName char end - methods(Abstract, Access = protected) - loadData - loadConfig - end - methods function structOut = toStruct(obj) structOut = struct(); diff --git a/classes/Rocket.m b/classes/Rocket.m index 8968662..1c248c1 100644 --- a/classes/Rocket.m +++ b/classes/Rocket.m @@ -183,21 +183,29 @@ classdef Rocket < Component methods(Access = protected) % Loaders function obj = loadData(obj) - if isempty(obj.mission.name) + if isempty(obj.motor) return; end varNames = {'total', 'geometry', 'state', 'finsCN'}; + motorName = obj.motor.name; aeroPath = fullfile(obj.mission.dataPath, 'aeroCoefficients.mat'); aeroHighAOAPath = fullfile(obj.mission.dataPath, 'aeroCoefficientsHighAOA.mat'); if ~(exist(aeroPath, 'file') && exist(aeroHighAOAPath,'file')) return; end + dataCoeffs = load(aeroPath); + dataCoeffsHighAOA = load(aeroHighAOAPath); - dataCoeffs = load(aeroPath, varNames{:}); - dataCoeffsHighAOA = load(aeroHighAOAPath, varNames{:}); - - if isfield(dataCoeffs, "finsCN") && isfield(dataCoeffsHighAOA, "finsCN") + if isfield(dataCoeffs, motorName) && isfield(dataCoeffsHighAOA, motorName) + dataCoeffs = dataCoeffs.(motorName); + dataCoeffsHighAOA = dataCoeffsHighAOA.(motorName); + else + return; + end + + if isfield(dataCoeffs, "finsCN") && ... + isfield(dataCoeffsHighAOA, "finsCN") obj.coefficients.finsCN = dataCoeffs.finsCN; obj.coefficientsHighAOA.finsCN = dataCoeffsHighAOA.finsCN; end @@ -240,6 +248,7 @@ classdef Rocket < Component [bayNames, bayValues] = obj.getProperties(Superclass='Bay', Heterogeneous=1); obj.bays = dictionary(bayNames, bayValues); + obj.loadData(); obj.updateAll(); end diff --git a/classes/bays/Motor.m b/classes/bays/Motor.m index ec0572d..53138d7 100644 --- a/classes/bays/Motor.m +++ b/classes/bays/Motor.m @@ -49,6 +49,7 @@ classdef Motor < Bay varIn = [] end obj@Bay(mission, varIn); + obj.loadData(); end function set.name(obj, name) @@ -78,6 +79,11 @@ classdef Motor < Bay end load(fullfile(obj.mission.dataPath, 'motors.mat'), 'motors'); chosenMotor = motors(strcmp({motors.MotorName}, obj.name)); + + if ~(isempty(obj.name) || isvarname(obj.name)) + error('Motor name is not a valid MATLAB variable name') + end + if isempty(chosenMotor) error(strcat('Unable to find engine: ', obj.name)); end diff --git a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m index 212d1d1..d64866c 100644 --- a/missions/2024_Lyra_Portugal_October/config/rocketConfig.m +++ b/missions/2024_Lyra_Portugal_October/config/rocketConfig.m @@ -70,8 +70,8 @@ airbrakes.servoOmega = 150*pi/180; % [rad/s] Servo-motor %% MOTOR motor = Motor(); -motor.name = 'HRE_ARM_30_inj-T03T03'; % [-] Motor name -motor.cutoffTime = inf; % [s] Cutoff time +motor.name = 'HRE_ARM_30_inj_T03T03'; % [-] Motor name +motor.cutoffTime = []; % [s] OVERRIDE Cutoff time motor.ignitionTransient = 0.3; % [s] Ignition transient motor.cutoffTransient = 0.3; % [s] Cut-off transient @@ -101,7 +101,7 @@ rear.finsMaxThicknessPosition = 0.00175; % [m] Fraction of cho %% PITOT pitot = Pitot(); -pitot.length = []; % [m] Pitot tube length +pitot.length = []; % [m] Pitot tube length pitot.initialConeLength = []; % [m] Pitot initial conic section length pitot.finalConeLength = []; % [m] Pitot final conic section length pitot.initialConeDiameter = []; % [m] Pitot initial conic section diameter diff --git a/missions/2024_Lyra_Portugal_October/data/aeroCoefficients.mat b/missions/2024_Lyra_Portugal_October/data/aeroCoefficients.mat index 2010e47..1ddfd14 100644 --- a/missions/2024_Lyra_Portugal_October/data/aeroCoefficients.mat +++ b/missions/2024_Lyra_Portugal_October/data/aeroCoefficients.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4790142368603ea4a575a3353926c22b719c1e8581c4398e8819db94423d75c2 -size 37050668 +oid sha256:6111ba8b3aff04fa9304500012d1aaafe1fe3d9e3aab858fbffc96cf386dec1c +size 72462163 diff --git a/missions/2024_Lyra_Portugal_October/data/aeroCoefficientsHighAOA.mat b/missions/2024_Lyra_Portugal_October/data/aeroCoefficientsHighAOA.mat index dd5e02c..980d5d2 100644 --- a/missions/2024_Lyra_Portugal_October/data/aeroCoefficientsHighAOA.mat +++ b/missions/2024_Lyra_Portugal_October/data/aeroCoefficientsHighAOA.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c3bb1b28659fbe8de83f9a941ebfa53e69b34e6556da1928f01d17341cf7140f -size 6942012 +oid sha256:71a8a59d6c8f497ed277e99960b655d1a8d1dc3f1fb9b98e286b1847d75cc6f1 +size 11570466 diff --git a/missions/2024_Lyra_Portugal_October/data/motors.mat b/missions/2024_Lyra_Portugal_October/data/motors.mat index 3173301..a6072ca 100644 --- a/missions/2024_Lyra_Portugal_October/data/motors.mat +++ b/missions/2024_Lyra_Portugal_October/data/motors.mat @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b63b77353e0e6ec05bce3f5a58a52c44262adab220678ca9bda1cf14387a5b7b -size 5132828 +oid sha256:589f79507952ab31e91bd050a4e09fd4d58f1c0087bb0e32b66617f9751f3c83 +size 5132825 -- GitLab