diff --git a/classes/Component.m b/classes/Component.m index c7bad4c991f9d4075501523c2a5fab57b5817c41..f7c6b37a8a6316f2f794d76fc7bcd07c19587d74 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 4d0a897f16663389c380e6324dc0f635ad09815c..aff4e5b3251ec130452f47315881e6859c8f9421 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 89686627e4854b9252758ab1e6bc6d66ebce7048..1c248c1a99cc5575ba17349ee2d3ba53bd8cdcee 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 ec0572df36179d8272b51dda21a4f8bb2f5e4ba6..53138d725628e6e52e9bdd8cec068cafb70a02a5 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 212d1d13d2d22520d606f0d5a39d52e43f8679f0..d64866c0fdf4fd9a3a1f12574df265237048da6b 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 2010e472762156b9d6bde09e843e62addc48bf2d..1ddfd14431f2a70c8f9b3c0181b950767954b18f 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 dd5e02cc79837d7dfc135548a708fa133113d718..980d5d2379290ec1f25cd1324a324c8a5d873c35 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 3173301672213f6e10d4fa52a7e81c908391daad..a6072caba7e37cfce868d8c644b5593e68fa11e5 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