diff --git a/src/configs/templatecoax.m b/src/configs/templatecoax.m index 764d9846b52d9475305896807153606437815e48..0c646918ff0b5e1ccad869d1d9561f88bd9a2d21 100644 --- a/src/configs/templatecoax.m +++ b/src/configs/templatecoax.m @@ -27,14 +27,15 @@ template; % Just load exisiting template % Adds a second element to the blade structure to represent the second rotor Blade(2) = Blade(1); % Make second rotor identical to first one +Blade(2).spinDir = -Blade(1).spinDir; % Spin in opposite direction from first rotor +% Shift second rotor w.r.t the application type if strcmp(Sim.Misc.appli, 'heli') - rotorShift = [0, 0, -1]; + rotorShift = [0, 0, -1] * Blade(1).radius(end); else - rotorShift = [-1, 0, 0]; + rotorShift = [-1, 0, 0] * Blade(1).radius(end); end -Blade(2).hubPos = Blade(1).hubPos + rotorShift; % Shift second rotor w.r.t the application type -Blade(2).spinDir = -Blade(1).spinDir; % Spin in opposite direction from first rotor +Blade(2).hubPos = Blade(1).hubPos + rotorShift; % ================================================================================================== % ===================================== Operating points =========================================== diff --git a/src/utils/preproc/validateconfig.m b/src/utils/preproc/validateconfig.m index 48696340293827117629d22e62efbdcf681c5470..57fdc42ed1f4ff42a17390f9fa0fbd1ede6b9e40 100644 --- a/src/utils/preproc/validateconfig.m +++ b/src/utils/preproc/validateconfig.m @@ -345,6 +345,16 @@ function Blade = checkblade(Blade, configFile, nAirfoils, DEF) '<=', nAirfoils}, ... configFile, 'Blade.iAirfoil'); + validateattributes(Blade(i).hubPos, ... + {'numeric'}, ... + {'vector', 'finite', 'nonnan', 'numel', 3}, ... + configFile, 'Blade.hubPos'); + validateattributes(Blade(i).spinDir, ... + {'numeric'}, ... + {'scalar', 'integer', 'nonzero', ... + '<=', 1, '>=', -1}, ... + configFile, 'Blade.spinDir'); + end % Discretization