diff --git a/classes/Rocket.m b/classes/Rocket.m index 077c2e8a1a7a7e1fe37d4de0b07b4199fa2bc78a..c06daffb7ac6030bb8d3b14be9d675e1e6ce8ff5 100644 --- a/classes/Rocket.m +++ b/classes/Rocket.m @@ -17,9 +17,10 @@ classdef Rocket < Bay length diameter mass - massNoMotor % [kg] Mass of rocket with empty motr vane (includes motor fuselage weight) + massNoMotor % [kg] Mass of rocket with empty motor vane (includes motor fuselage weight) inertia xCg + xCgNoMotor end properties(Access = protected) diff --git a/classes/bays/Airbrakes.m b/classes/bays/Airbrakes.m index 6974f62180db5f37ea1203e4c69383b92a262d8d..146d9e6ef2d2edfa31a275be814ef07b18be5c91 100644 --- a/classes/bays/Airbrakes.m +++ b/classes/bays/Airbrakes.m @@ -3,17 +3,17 @@ classdef Airbrakes < Bay % Detailed explanation goes here properties - n double % [-] number of brakes - brakeLength double % [m] brakes length (normal) - brakeWidth double % [m] brakes width (normal) - xDistance double % [m] axial position from nosecone base - multipleAB {islogical} % If true, multiple and smooth airbrakes opening will be simulated - opening double % aerobrakes, 1-2-3 for 0%, 50% or 100% opened - deltaTime double % aerobrakes, configurations usage time - minTime double % [s] time after which the airbrakes can be used - maxMach double % [-] Maximum Mach at which airbrakes can be used - servoOmega double % [rad/s] Servo-motor angular velocity - height double % [m] Block airbrakes opening coordinate ( First entry must be 0! ) + n double % [-] number of brakes + thickness double % [m] brakes thickness + width double % [m] brakes width + xDistance double % [m] axial position from nosecone base + multipleAB {islogical} % If true, multiple and smooth airbrakes opening will be simulated + opening double % aerobrakes, 1-2-3 for 0%, 50% or 100% opened + deltaTime double % aerobrakes, configurations usage time + minTime double % [s] time after which the airbrakes can be used + maxMach double % [-] Maximum Mach at which airbrakes can be used + servoOmega double % [rad/s] Servo-motor angular velocity + height double % [m] Block airbrakes opening coordinate ( First entry must be 0! ) length % [m] Total bay length diameter % [m] Diameter of the bay mass % [kg] Total bay mass diff --git a/classes/bays/Boat.m b/classes/bays/Boat.m index 20d282ce6b9bc41c8433dbdb61865da6b945e2da..af20baad44d87203d48df8cc86785338429dff0e 100644 --- a/classes/bays/Boat.m +++ b/classes/bays/Boat.m @@ -2,11 +2,12 @@ classdef Boat < Bay %GEOMETRY Summary of this class goes here % Detailed explanation goes here properties - length % [m] Total bay length - diameter % [m] Diameter of the bay - mass % [kg] Total bay mass - inertia % [kg*m^2] Total bay inertia (Body reference) - xCg % [m] Cg relative to bay upper side + type {mustBeMember(type, {'', 'CONE', 'OGIVE'})} = '' % [] Boat type + length % [m] Total bay length + diameter % [m] Final diameter of the bay + mass % [kg] Total bay mass + inertia % [kg*m^2] Total bay inertia (Body reference) + xCg % [m] Cg relative to bay upper side end properties(Access = protected) diff --git a/classes/bays/Motor.m b/classes/bays/Motor.m index 8d3fa3704ccbf8e7027afd5e7b9e6aec3bf3bc75..2e63309966d447685264332424319cdaac5a20aa 100644 --- a/classes/bays/Motor.m +++ b/classes/bays/Motor.m @@ -3,28 +3,29 @@ classdef Motor < Bay % Detailed explanation goes here properties - name {mustBeTextScalar} = '' % [-] Motor name - length % [m] Total length (motor + tank) - diameter % [m] Diameter of the Motor - inertia % [kg*m^2] Total Motor inertia (Body reference) - tankLength double % [m] Tank length - ignitionTime double % [s] Ignition transient duration - cutoffTime double % [s] Cutoff transient duration - time double % [s] Engine time vector - thrust double % [N] Engine thrust vector - fuelMass double % [kg] Fuel (grain) initial mass - oxidizerMass double % [kg] Oxidizer initial mass - structureMass double % [kg] Engine Structural Mass - fuselageMass double % [kg] Fuselage of the engine only - xCg % [m] Engine xcg from tank tip - pe double % [Pa] Eflux pressure - ae double % [Pa] Eflux Area + name {mustBeTextScalar} = '' % [-] Motor name + length % [m] Total length (motor + tank) + diameter % [m] Diameter of the Motor + inertia % [kg*m^2] Total Motor inertia (Body reference) + cutoffTime double % [s] Shutdown time + tankLength double % [m] Tank length + ignitionTransient double % [s] Ignition transient duration + cutoffTransient double % [s] Cutoff transient duration + time double % [s] Engine time vector + thrust double % [N] Engine thrust vector + fuelMass double % [kg] Fuel (grain) initial mass + oxidizerMass double % [kg] Oxidizer initial mass + structureMass double % [kg] Engine Structural Mass + fuselageMass double % [kg] Fuselage of the engine only + xCg % [m] Engine xcg from tank tip + pe double % [Pa] Eflux pressure + ae double % [Pa] Eflux Area end properties(Dependent) - mass % [kg] Total Motor mass - propellantMass double % [Kg] Propellant Mass (in time) - fuselageXCg double % [m] xcg of the engine fuselage only from tank tip + mass % [kg] Total Motor mass + propellantMass double % [Kg] Propellant Mass (in time) + fuselageXCg double % [m] xcg of the engine fuselage only from tank tip end properties(Access = protected) diff --git a/classes/bays/Nose.m b/classes/bays/Nose.m index 0bc382e820d8ab09f457258651305cc9e1fe7cef..bbeee1b45067c43d00b079483c41836b718dcee7 100644 --- a/classes/bays/Nose.m +++ b/classes/bays/Nose.m @@ -3,10 +3,11 @@ classdef Nose < Bay % Detailed explanation goes here properties - ogiveType {mustBeTextScalar} = '' % [-] Nosecone shape - power double % [-] Nosecone power type parameter - p double % [-] P coefficient for modified nosecone shapes - c double % [-] C coefficient for modified nosecone shapes + ogiveType {mustBeMember(ogiveType, {'', 'CONE', 'OGIVE', ... + 'POWER', 'HAACK', 'KARMAN', 'MHAACK'})} = '' % [-] Nosecone shape + power double % [-] Nosecone power type parameter + pMod double % [-] P coefficient for modified nosecone shapes + cMod double % [-] C coefficient for modified nosecone shapes length % [m] Total bay length diameter % [m] Diameter of the bay mass % [kg] Total bay mass diff --git a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m index f8c35ee295e17d775c81e8bcdf78e263b48e08da..f1e664da7e3c84c3d4afdd8482e115ae7ee4ba5c 100644 --- a/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m +++ b/missions/2024_Lyra_Roccaraso_September/config/rocketConfig.m @@ -8,6 +8,8 @@ rocket.diameter = []; % [m] OVERRIDE diameter rocket.mass = []; % [kg] OVERRIDE total mass rocket.massNoMotor = []; % [kg] OVERRIDE mass without motor rocket.inertia = []; % [] OVERRIDE total inertia +rocket.xCg = []; +rocket.xCgNoMotor = []; %% NOSE nose = Nose(); @@ -18,8 +20,8 @@ nose.mass = 000; % [m] Nosecone Inertia nose.inertia = 000; % [m] Nosecone Mass nose.ogiveType = 'MHAACK'; % [-] Nosecone shape nose.power = 000; %3/4; % [-] Nosecone power type parameter -nose.p = 000; %1.250152e+00; % [-] P coefficient for modified nosecone shapes -nose.c = 000; %1.799127e-01; % [-] C coefficient for modified nosecone shapes +nose.pMod = 000; %1.250152e+00; % [-] P coefficient for modified nosecone shapes +nose.cMod = 000; %1.799127e-01; % [-] C coefficient for modified nosecone shapes %% PLD payload = Payload(); @@ -53,8 +55,9 @@ airbrakes.opening = [1 3]; % aerobrakes, 1-2-3 for 0%, 50% airbrakes.deltaTime = [10]; % aerobrakes, configurations usage time airbrakes.n = 3; % [-] number of brakes -airbrakes.brakeWidth = 0.1002754821; % [m] brakes width (normal) -airbrakes.brakeLength = 0.008; % [m] brakes thickness +airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) +airbrakes.width = 0.1002754821; % [m] brakes width (normal) +airbrakes.thickness = 0.008; % [m] brakes thickness airbrakes.xDistance = 1.517; % [m] axial position from nosecone base airbrakes.length = 000; @@ -62,22 +65,21 @@ airbrakes.diameter = 000; airbrakes.mass = 000; airbrakes.inertia = 000; -%% AIRBRAKES CONTROL SETTINGS airbrakes.minTime = 0; % [s] time after which the airbrakes can be used airbrakes.maxMach = 0.8; % [-] Maximum Mach at which airbrakes can be used airbrakes.servoOmega = 150*pi/180; % [rad/s] Servo-motor angular velocity -airbrakes.height = linspace(0, 0.0363, 3); % [m] Block airbrakes opening coordinate ( First entry must be 0! ) - %% MOTOR motor = Motor(); motor.name = 'HRE_FURIA-Rv2-T04T03'; -motor.ignitionTime = 0.4; % [s] Ignition transient -motor.cutoffTime = 0.3; % [s] Cut-off transient +motor.cutoffTime = inf; +motor.ignitionTransient = 0.4; % [s] Ignition transient +motor.cutoffTransient = 0.3; % [s] Cut-off transient %% BOAT boat = Boat(); +boat.type = 'CONE'; boat.length = 0; boat.diameter = 0; boat.mass = 0;