diff --git a/helper_methods/ksptot_ma/launch_vehicle_designer/classes/StateLog/initialState/@InitialStateModel/InitialStateModel.m b/helper_methods/ksptot_ma/launch_vehicle_designer/classes/StateLog/initialState/@InitialStateModel/InitialStateModel.m index ec1337263..ebec245da 100644 --- a/helper_methods/ksptot_ma/launch_vehicle_designer/classes/StateLog/initialState/@InitialStateModel/InitialStateModel.m +++ b/helper_methods/ksptot_ma/launch_vehicle_designer/classes/StateLog/initialState/@InitialStateModel/InitialStateModel.m @@ -133,6 +133,10 @@ function clearDuplicateEngineStates(obj) engineStates(engineStates == engine) = LaunchVehicleEngineState.empty(1,0); engineStates(end+1) = thisEngineStateToSave; %#ok + elseif(isempty(thisEngineStates)) + newEngineState = LaunchVehicleEngineState(stgState); + newEngineState.engine = engine; + engineStates(end+1) = newEngineState; %#ok end % notThisEngineStates = engineStates([engineStates.engine] ~= engine); diff --git a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_ThrottleTask.m b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_ThrottleTask.m index a00948bf0..dc8374958 100644 --- a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_ThrottleTask.m +++ b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_ThrottleTask.m @@ -17,5 +17,29 @@ datapt = computeTWRatio(throttle, stateLogEntry.time, stateLogEntry.position, stateLogEntry.velocity, tankMasses, stateLogEntry.getTotalVehicleDryMass(), ... stateLogEntry.stageStates, stateLogEntry.lvState, tankStates, stateLogEntry.centralBody); + case 'totalthrust' + ut = stateLogEntry.time; + rVect = stateLogEntry.position; + vVect = stateLogEntry.velocity; + + bodyInfo = stateLogEntry.centralBody; + tankStates = stateLogEntry.getAllActiveTankStates(); + stageStates = stateLogEntry.stageStates; + lvState = stateLogEntry.lvState; + + dryMass = stateLogEntry.getTotalVehicleDryMass(); + tankStatesMasses = [tankStates.tankMass]'; + + throttleModel = stateLogEntry.throttleModel; + steeringModel = stateLogEntry.steeringModel; + + altitude = norm(rVect) - bodyInfo.radius; + pressure = getPressureAtAltitude(bodyInfo, altitude); + + throttle = throttleModel.getThrottleAtTime(ut, rVect, vVect, tankStatesMasses, dryMass, stageStates, lvState, tankStates, bodyInfo); + + [~, totalThrust, ~] = LaunchVehicleStateLogEntry.getTankMassFlowRatesDueToEngines(tankStates, tankStatesMasses, stageStates, throttle, lvState, pressure, ut, rVect, vVect, bodyInfo, steeringModel); + + datapt = totalThrust; end end \ No newline at end of file diff --git a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getDepVarValueUnit.m b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getDepVarValueUnit.m index a77655b6b..2cd6ad156 100644 --- a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getDepVarValueUnit.m +++ b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getDepVarValueUnit.m @@ -52,6 +52,9 @@ case 'Thrust to Weight Ratio' depVarValue = lvd_ThrottleTask(subLog(i), 't2w'); depVarUnit = ' '; + case 'Total Thrust' + depVarValue = lvd_ThrottleTask(subLog(i), 'totalthrust'); + depVarUnit = 'kN'; otherwise %is a programmatically generated string that we'll handle here tankMassPattern = 'Tank (\d+?) Mass - ".*"'; stageDryMassPattern = 'Stage (\d+?) Dry Mass - ".*"'; diff --git a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getGraphAnalysisTaskList.m b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getGraphAnalysisTaskList.m index b72610dbd..cc183e6eb 100644 --- a/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getGraphAnalysisTaskList.m +++ b/helper_methods/ksptot_ma/launch_vehicle_designer/process_data/GraphicalAnalysis/tasks/lvd_getGraphAnalysisTaskList.m @@ -11,6 +11,7 @@ taskList{end+1} = 'SideSlip Angle'; taskList{end+1} = 'Throttle'; taskList{end+1} = 'Thrust to Weight Ratio'; + taskList{end+1} = 'Total Thrust'; [tanksGAStr, ~] = lvdData.launchVehicle.getTanksGraphAnalysisTaskStrs(); taskList = horzcat(taskList, tanksGAStr); diff --git a/kspTOT_MissionArchitect/LaunchVehicleDesigner/ma_LvdMainGUI.m b/kspTOT_MissionArchitect/LaunchVehicleDesigner/ma_LvdMainGUI.m index b8461994c..113e7056c 100644 --- a/kspTOT_MissionArchitect/LaunchVehicleDesigner/ma_LvdMainGUI.m +++ b/kspTOT_MissionArchitect/LaunchVehicleDesigner/ma_LvdMainGUI.m @@ -22,7 +22,7 @@ % Edit the above text to modify the response to help ma_LvdMainGUI -% Last Modified by GUIDE v2.5 05-Jan-2019 14:08:54 +% Last Modified by GUIDE v2.5 05-Jan-2019 14:08:54 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; @@ -699,7 +699,11 @@ function openMissionPlanMenu_Callback(hObject, eventdata, handles) startParallelPool(write_to_output_func); end - runScript(handles, lvdData, 1); + try + runScript(handles, lvdData, 1); + catch + + end lvd_processData(handles); % if(~strcmpi(maData.settings.gravParamType,options_gravParamType)) @@ -1494,4 +1498,4 @@ function runScriptMenu_Callback(hObject, eventdata, handles) lvdData = getappdata(handles.ma_LvdMainGUI,'lvdData'); runScript(handles, lvdData, 1); - lvd_processData(handles); + lvd_processData(handles); diff --git a/lvdExample_DirectInjectToDuna.mat b/lvdExample_DirectInjectToDuna.mat index 8e14659e4..7df672322 100644 Binary files a/lvdExample_DirectInjectToDuna.mat and b/lvdExample_DirectInjectToDuna.mat differ