From 32efd09352ec9f2f5f7b7389f50d5f2c8ac17c30 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Tue, 28 May 2024 15:01:33 +0200
Subject: [PATCH] fix rho fbte in dim{1} for some cases

---
 matlab/TCV/gdat_tcv.m | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index d420874e..ffee0fb6 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -321,7 +321,7 @@ else
 end
 gdat_data.gdat_params.liuqe = liuqe_version;
 liuqe_matlab = 1; % now default should be matlab liuqe nodes
-if liuqe_version<0 || (liuqe_version > 10 && liuqe_version < 20)
+if (liuqe_version > 10 && liuqe_version < 20)
   liuqe_matlab = 0;
 end
 liuqe_version_eff = mod(liuqe_version,10);
@@ -354,7 +354,7 @@ end
 % should replace all above by just psitbx_str...
 liuqe_matlab = 1;
 switch liuqe_version
- case {-1}, liuqe_ext=''; psitbx_str='FBTE'; liuqe_matlab = 0;
+ case {-1}, liuqe_ext=''; psitbx_str='FBTE';
  case {1,21}, liuqe_ext=''; psitbx_str='LIUQE.M';
  case {11}, liuqe_ext=''; psitbx_str='LIUQE';liuqe_matlab = 0;
  case {2, 3, 22, 23}, liuqe_ext=['_' num2str(mod(liuqe_version,10))]; psitbx_str=['LIUQE.M' num2str(mod(liuqe_version,10))];
@@ -2764,6 +2764,16 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       nodenameeff=[begstr 'q_psi' substr_liuqe];
     end
     tracetdi=tdi(nodenameeff);
+    if liuqe_matlab==1 && liuqe_version_eff==-1
+      % may have problems with dim{1} being indices instead of rhopol
+      if max(tracetdi.dim{1}) > 2
+        nodenameeff_rho = strrep(nodenameeff,'q_psi','rho');
+        rho_eff = mdsvalue(nodenameeff_rho);
+        if numel(tracetdi.dim{1}) == numel(rho_eff)
+          tracetdi.dim{1}(:) = rho_eff;
+        end
+      end
+    end
     if isempty(tracetdi.data) || isempty(tracetdi.dim)  % || ischar(tracetdi.data) (to add?)
       if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end
       if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end
@@ -3207,10 +3217,6 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     else
       nodenameeff=['tcv_eq("vol","' psitbx_str '")'];
     end
-    if liuqe_version_eff==-1
-      data_request_eff = 'volume'; % only LCFS
-      nodenameeff=[begstr 'volume' substr_liuqe];
-    end
     tracetdi=tdi(nodenameeff);
     if (isempty(tracetdi.data) || isempty(tracetdi.dim)) && liuqe_matlab==0
       % try to run psitbxput
@@ -3218,6 +3224,15 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       psitbxput(psitbxput_version,shot);
       ishot = mdsopen(shot);
       tracetdi=tdi(nodenameeff);
+    elseif liuqe_matlab==1 && liuqe_version_eff==-1
+      % may have problems with dim{1} being indices instead of rhopol
+      if max(tracetdi.dim{1}) > 2
+        nodenameeff_rho = 'tcv_eq("rho","FBTE")';
+        rho_eff = mdsvalue(nodenameeff_rho);
+        if numel(tracetdi.dim{1}) == numel(rho_eff)
+          tracetdi.dim{1}(:) = rho_eff;
+        end
+      end
     end
     if isempty(tracetdi.data) || isempty(tracetdi.dim) || ischar(tracetdi.data)
       return
-- 
GitLab