From 8ad2362531d4a211090223439c6d80d22da414d2 Mon Sep 17 00:00:00 2001
From: Thomas Lambert <t.lambert@uliege.be>
Date: Wed, 20 Sep 2023 15:07:12 +0200
Subject: [PATCH] fix(ElemPerf): issue with contraction

The contraction should be calculated based on the **last element**
position and not the actual rotor radius.

In some edge cases, an element of the aft rotor can fall in between the
contraction calculated from the previous rotor's last element and the one
calculated from its tip radius. When this happens, the velocity is
poorly interpolated and brought to 0 for this element on the aft rotor.
This not only skews the results, but also lead to issues with the
current implementation of the indfact solver, which only looks into
Op.speed~=0 and into the airspeed for each individual elements.
---
 src/classes/@ElemPerf/updateupstreamvel.m | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/classes/@ElemPerf/updateupstreamvel.m b/src/classes/@ElemPerf/updateupstreamvel.m
index cea2781..778d6a9 100644
--- a/src/classes/@ElemPerf/updateupstreamvel.m
+++ b/src/classes/@ElemPerf/updateupstreamvel.m
@@ -46,7 +46,7 @@ function updateupstreamvel(self, PrevOpRot)
     % area ratio of previous rotor contraction
     vec_radiusRatio = sqrt(vec_areaRatio);
 
-    vcRadius = PrevOpRot.Rot.radius * vec_radiusRatio(1, end); % vena contracta radius
+    vcRadius = PrevOpRot.Rot.Bl.y(end) * vec_radiusRatio(1, end); % vena contracta radius
     vcRadIdx = find(self.Rot.Bl.y <= vcRadius, 1, 'last');
 
     % tangential velocity at the previous rotor disk
-- 
GitLab