From 12141f4c56af9a7bfbb6bdb8a01f3607f69465e1 Mon Sep 17 00:00:00 2001
From: Thomas Lambert <t.lambert@uliege.be>
Date: Wed, 31 May 2023 11:29:00 +0200
Subject: [PATCH] feat(Result): add advRatio support in plotperf

---
 src/classes/@Result/plotperf.m | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/classes/@Result/plotperf.m b/src/classes/@Result/plotperf.m
index ea09648..90c312c 100644
--- a/src/classes/@Result/plotperf.m
+++ b/src/classes/@Result/plotperf.m
@@ -45,7 +45,8 @@ function plotperf(self, varargin)
 
     % Defaults and constants
     DEF.ALLOWED_PROPERTIES = {'thrust', 'torque', 'power', 'eff', 'cT', 'cQ', 'cP'};
-    DEF.allowed_oper = self.operPts.Properties.VariableNames;
+    DEF.base_oper = self.operPts.Properties.VariableNames;
+    DEF.allowed_oper = [DEF.base_oper, 'advRat']; % Also allows advance ratio
     DEF.ALLOWED_SOLVERS = {'leishman', 'indfact', 'indvel', 'stahlhut'};
 
     % Parse inputs
@@ -62,9 +63,14 @@ function plotperf(self, varargin)
         thissolv = solvers{iSolv};
 
         if ~isempty(self.(thissolv))
+            if strcmpi(oper, 'advRat')
+                operVect = vectorize(filtered.(thissolv), 'advanceRatio');
+            else
+                operVect = self.operPts(idx, :).(oper);
+            end
             dataVect = vectorize(filtered.(thissolv), perf);
 
-            plot(self.operPts(idx, :).(oper), dataVect, 'DisplayName', solvers{iSolv});
+            plot(operVect, dataVect, 'DisplayName', solvers{iSolv});
             hold on;
         end
     end
@@ -93,11 +99,16 @@ function [perf, oper, solvers, operPt, newFig] = parseinputs(DEF, varargin)
     oper = p.Results.oper;
     solvers = p.Results.solvers;
     operPt = struct('altitude', [], 'speed', [], 'rpm', [], 'collective', []);
-    for i = 1:length(DEF.allowed_oper)
-        curOp = DEF.allowed_oper{i};
+    for i = 1:length(DEF.base_oper)
+        curOp = DEF.base_oper{i};
         operPt.(curOp) = p.Results.(curOp);
     end
-    operPt.(p.Results.oper) = NaN;
+    if strcmpi(p.Results.oper, 'advRat')
+        operPt.rpm = NaN;
+        operPt.speed = NaN;
+    else
+        operPt.(p.Results.oper) = NaN;
+    end
     newFig = p.Results.newFig;
 end
 
-- 
GitLab