Skip to content
Snippets Groups Projects
Commit 204b1295 authored by Rakotondratsimba Lyraie's avatar Rakotondratsimba Lyraie Committed by Thomas Lambert
Browse files

Add upstream velocities

parent 02fc3a2b
No related branches found
No related tags found
No related merge requests found
...@@ -57,6 +57,8 @@ classdef ElemPerf < handle ...@@ -57,6 +57,8 @@ classdef ElemPerf < handle
Op (1, 1) Oper % Handle of the Operating point linked to this specific ElemPerf instance Op (1, 1) Oper % Handle of the Operating point linked to this specific ElemPerf instance
reynolds (1, :) double % Reynolds number, [-] reynolds (1, :) double % Reynolds number, [-]
upstreamVelAx (1, :) double % Upstream axial velocity above rotor disk, [m/s]
upstreamVelTg (1, :) double % Upstream tangential velocity above rotor disk, [m/s]
tgSpeed (1, :) double % Tangential speed, [m/s] tgSpeed (1, :) double % Tangential speed, [m/s]
pitch (1, :) double % Pitch (twist + collective), [rad] pitch (1, :) double % Pitch (twist + collective), [rad]
...@@ -117,6 +119,12 @@ classdef ElemPerf < handle ...@@ -117,6 +119,12 @@ classdef ElemPerf < handle
% Blade pitch % Blade pitch
self.pitch = Rot.Bl.twist + Op.coll; self.pitch = Rot.Bl.twist + Op.coll;
% Upstream axial velocity
self.upstreamVelAx = ones(size(self.pitch)) * Op.speed;
% Upstream tangential velocity
self.upstreamVelTg = zeros(size(self.pitch));
% In-plane velocities % In-plane velocities
self.tgSpeed = Op.omega .* Rot.Bl.y; self.tgSpeed = Op.omega .* Rot.Bl.y;
......
...@@ -38,7 +38,7 @@ function calcforces(self) ...@@ -38,7 +38,7 @@ function calcforces(self)
if ~isempty(self.cl) if ~isempty(self.cl)
axVel = self.Op.speed + self.indVelAx; axVel = self.upstreamVelAx + self.indVelAx;
tgVel = self.tgSpeed - self.indVelTg; tgVel = self.tgSpeed - self.indVelTg;
relVel = sqrt(axVel.^2 + tgVel.^2); relVel = sqrt(axVel.^2 + tgVel.^2);
......
...@@ -67,13 +67,13 @@ function plotveltriangles(self, nTriangles, varargin) ...@@ -67,13 +67,13 @@ function plotveltriangles(self, nTriangles, varargin)
% Velocity triangles % Velocity triangles
% FIXME: Needs adaptation for coaxial % FIXME: Needs adaptation for coaxial
vAx_up = ones(size(self.tgSpeed)) * self.Op.speed; vAx_up = ones(size(self.tgSpeed)) .* self.upstreamVelAx;
vTg_up = self.tgSpeed; vTg_up = self.tgSpeed;
vAx_rot = self.Op.speed + self.indVelAx; vAx_rot = self.upstreamVelAx + self.indVelAx;
vTg_rot = self.tgSpeed - self.indVelTg; vTg_rot = self.tgSpeed - self.indVelTg;
vAx_down = self.Op.speed + 2 * self.indVelAx; vAx_down = self.upstreamVelAx + 2 * self.indVelAx;
vTg_down = self.tgSpeed - 2 * self.indVelTg; vTg_down = self.tgSpeed - 2 * self.indVelTg;
% Determine sections to be plotted % Determine sections to be plotted
......
...@@ -100,7 +100,7 @@ classdef OperRotor < handle ...@@ -100,7 +100,7 @@ classdef OperRotor < handle
end end
function relSpeed = get.relTipSpeed(self) function relSpeed = get.relTipSpeed(self)
relSpeed = sqrt(self.tgTipSpeed^2 + self.Op.speed^2); relSpeed = sqrt(self.tgTipSpeed.^2 + self.upstreamVelAx.^2);
end end
function advRat = get.advanceRatio(self) function advRat = get.advanceRatio(self)
......
...@@ -49,7 +49,7 @@ function indvel(OpRot, Mod) ...@@ -49,7 +49,7 @@ function indvel(OpRot, Mod)
% FSOLVE_OPTS = optimoptions('fsolve', 'Display', 'none'); % FSOLVE_OPTS = optimoptions('fsolve', 'Display', 'none');
% DEFAULTS AND CONSTANTS % DEFAULTS AND CONSTANTS
vw = ones(1, OpRot.Rot.Bl.nElem) * OpRot.Op.speed + 1; % Axial vel in the slipstream vw = OpRot.ElPerf.upstreamVelAx + 1; % Axial vel in the slipstream
uw = zeros(size(vw)); % Tangential vel in the slipstream uw = zeros(size(vw)); % Tangential vel in the slipstream
% Solve iteratively % Solve iteratively
...@@ -62,7 +62,7 @@ function indvel(OpRot, Mod) ...@@ -62,7 +62,7 @@ function indvel(OpRot, Mod)
uw_old = uw; uw_old = uw;
% Compute the velocity components at the propeller disk % Compute the velocity components at the propeller disk
v = (OpRot.Op.speed + vw) / 2; v = (OpRot.ElPerf.upstreamVelAx + vw) / 2;
u = OpRot.ElPerf.tgSpeed - uw / 2; u = OpRot.ElPerf.tgSpeed - uw / 2;
% Local mass flow rate % Local mass flow rate
...@@ -93,7 +93,7 @@ function indvel(OpRot, Mod) ...@@ -93,7 +93,7 @@ function indvel(OpRot, Mod)
dFu = OpRot.Rot.nBlades * (dL .* sin(phi) + dD .* cos(phi)); dFu = OpRot.Rot.nBlades * (dL .* sin(phi) + dD .* cos(phi));
% Final system to solve for v and u % Final system to solve for v and u
vw = OpRot.Op.speed + dFa ./ dmdot ./ K_T; vw = OpRot.ElPerf.upstreamVelAx + dFa ./ dmdot ./ K_T;
uw = dFu ./ dmdot ./ K_P; uw = dFu ./ dmdot ./ K_P;
% Use relaxation to faciliate convergence of nonlinear system % Use relaxation to faciliate convergence of nonlinear system
...@@ -116,7 +116,7 @@ function indvel(OpRot, Mod) ...@@ -116,7 +116,7 @@ function indvel(OpRot, Mod)
% Update values in ElemPerf % Update values in ElemPerf
OpRot.ElPerf.inflAngle = phi; OpRot.ElPerf.inflAngle = phi;
OpRot.ElPerf.alpha = alpha; OpRot.ElPerf.alpha = alpha;
OpRot.ElPerf.indVelAx = v - OpRot.Op.speed; OpRot.ElPerf.indVelAx = v - OpRot.ElPerf.upstreamVelAx;
OpRot.ElPerf.indVelTg = uw / 2; OpRot.ElPerf.indVelTg = uw / 2;
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment