Skip to content
Snippets Groups Projects
Verified Commit c8525bcb authored by Thomas Lambert's avatar Thomas Lambert :helicopter:
Browse files

feat(solvers, WIP): coax for all solvers

parent 67225be0
No related branches found
No related tags found
No related merge requests found
......@@ -36,6 +36,8 @@ classdef ElemPerf < handle
%
% <a href="https:/gitlab.uliege.be/rotare/documentation">Complete documentation (online)</a>
% ----------------------------------------------------------------------------------------------
% FIXME: Documentation
% ----------------------------------------------------------------------------------------------
% Implementation:
% - alpha is implemented as a dependent property to prevent Matlab complaining when we set cl
......@@ -227,6 +229,10 @@ classdef ElemPerf < handle
% Calculate inflow ratios
self.inflowRat_ = (self.Op.speed + val) ./ (self.Op.omega * self.Rot.radius);
self.indInflowRat_ = val ./ (self.Op.omega * self.Rot.radius);
% Calculate massflow rate
axialVel = self.upstreamVelAx + val;
self.massflow_ = 2 * pi * self.Op.Flow.rho * self.Rot.Bl.y * self.Rot.Bl.dy .* axialVel;
end
function set.indVelTg(self, val)
......@@ -245,6 +251,10 @@ classdef ElemPerf < handle
% Calculate induced velocity and ratio
self.indVelAx_ = val .* self.Op.omega * self.Rot.radius - self.Op.speed;
self.indInflowRat_ = self.indVelAx ./ (self.Op.omega * self.Rot.radius);
% Calculate massflow rate
axialVel = self.upstreamVelAx + self.indVelAx_;
self.massflow_ = 2 * pi * self.Op.Flow.rho * self.Rot.Bl.y * self.Rot.Bl.dy .* axialVel;
end
function set.swirlRat(self, val)
......
......@@ -9,22 +9,21 @@ function bemt(OpRot, Mod)
% -----
%
% Syntax:
% Rot = BEMT(Rot, Mod, Flow)
% BEMT(OpRot, Mod) Calculates the performances of each OpRot object with the Blade Element
% Momentum Theory, using the solvers and models defined in Mod
%
% Inputs:
% Rot : Rotor object fully defined
% Flow : Flow variables
% Mod : Model and numerical parameters
% OpRot : Operating rotor object(s) fully defined
% Mod : Model and numerical parameters
%
% Output:
% Rot : Rotor object with calculated performances
% OperRotor object(s) with calculated performances
%
% See also: rotare, leishman, stahlhut, propsolv, turbsolv.
% See also: rotare, leishman, indfact, indvel, stahlhut.
%
% <a href="https://gitlab.uliege.be/rotare/documentation">Complete documentation (online)</a>
% ----------------------------------------------------------------------------------------------
% TODO: Implement coaxial rotors
% TODO: Implement oblique flows
% ----------------------------------------------------------------------------------------------
% (c) Copyright 2022-2023 University of Liege
......@@ -36,21 +35,12 @@ function bemt(OpRot, Mod)
% Issues: https://gitlab.uliege.be/rotare/rotare/-/issues
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Always calculate first rotor as if isolated
% First rotor always calculated as if isolated
bemtsinglerot(OpRot(1), Mod);
for i = 2:length(OpRot)
% Solves BEMT equations for the rotor using the true distribution of external velocity
if strcmpi(Mod.solver, 'indvel')
OpRot(i).ElPerf.updateupstreamvel(OpRot(i - 1));
else
warning('Rotare:Solvers:CoaxialNotSupported', ...
['Coaxial rotors are only supported with indvel at the moment.'...
'Additional rotors are calculated as if they were isolated.\n']);
end
bemtsinglerot(OpRot(i), Mod);
OpRot(i).ElPerf.updateupstreamvel(OpRot(i - 1)); % Update upstream velocity
bemtsinglerot(OpRot(i), Mod); % Calculate BEMT as usual, with new upstream vel distribution
end
end
......
......@@ -119,7 +119,6 @@ function indvel(OpRot, Mod)
OpRot.ElPerf.alpha = alpha;
OpRot.ElPerf.indVelAx = v - OpRot.ElPerf.upstreamVelAx;
OpRot.ElPerf.indVelTg = uw / 2;
OpRot.ElPerf.massflow = dmdot;
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