From 4884521d973bb136b4dba4f1a7ed9859031ca2b8 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Wed, 26 Sep 2001 16:00:30 +0000
Subject: [PATCH] add Liuqe2 and 3 option and fix problems if data empty (for
 loadTCVdata onl;y)

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@1826 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 TCV/loadTCVdata.m | 69 ++++++++++++++++++++++++++++++++++++++++++++---
 gdat.m            |  4 ++-
 2 files changed, 68 insertions(+), 5 deletions(-)

diff --git a/TCV/loadTCVdata.m b/TCV/loadTCVdata.m
index 5a1bb477..e087c941 100644
--- a/TCV/loadTCVdata.m
+++ b/TCV/loadTCVdata.m
@@ -9,6 +9,8 @@
 % 'sxR'  =  soft x-ray emission with varargout{1} option (requires varargin{4}!)
 % 'MPX'  =  soft x-ray from wire chambers
 %
+% 'xx_2 or xx_3' for Liuqe2 or 3: same as above for xx related to equilibrium
+%
 % INPUT:
 % shot: shot number
 % data_type: type of the required data
@@ -44,6 +46,15 @@
 %
 
 varargout{1}=cell(1,1);
+error=1;
+
+% some defaults
+
+% nodes which have _2 and _3 equivalence
+liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ...
+      {'\results::beta_tor'} {'\results::q_95'} {'\results::l_i'}  {'\results::delta_95'} ...
+      {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ...
+      {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::psitbx:vol'}];
 
 % all keywords and corresponding case to run below
 TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'sxr'} {'sxR'} {'ece'}];
@@ -74,9 +85,13 @@ TCVsiglocation(TCVsig.irmag)={'\results::r_axis'};
 TCVsigtimeindx=ones(size(TCVkeywrdall));
 
 % find index of signal called upon
+i_23=0;
+if strcmp(data_type(end-1:end),'_2') | strcmp(data_type(end-1:end),'_3')
+  i_23=2;
+end
 if strcmp(data_type(1:1),'\')
   % in case full node name was given
-  index=strmatch(data_type,TCVsiglocation,'exact');
+  index=strmatch(data_type(1:end-i_23),TCVsiglocation,'exact');
   if isempty(index)
     disp('********************')
     disp('trace not yet registered.')
@@ -87,7 +102,7 @@ if strcmp(data_type(1:1),'\')
     index=length(TCVkeywrdall)+1;
     TCVkeywrdall(end+1)={'new'};
     TCVkeywrdcase(end+1)={'simpletdi'};
-    TCVsiglocation(end+1)={data_type};
+    TCVsiglocation(end+1)={data_type(1:end-i_23)};
     TCVsigtimeindx(end+1)=0;
   elseif ~strcmp(TCVkeywrdcase{index},'simpletdi')
     msgbox(['Problem in loadTCVdata with data_type = ' data_type ...
@@ -95,10 +110,30 @@ if strcmp(data_type(1:1),'\')
     error('in loadTCVdata')
   end
 else
-  index=strmatch(data_type,TCVkeywrdall,'exact');
+  index=strmatch(data_type(1:end-i_23),TCVkeywrdall,'exact');
+  if isempty(index)
+    disp(' ')
+    disp('********************')
+    disp(['no such keyword: ' data_type(1:end-i_23)])
+    disp(' ')
+    disp('Available keywords:')
+    TCVkeywrdall(:)
+    disp('********************')
+    trace.data=[];
+    trace.t=[];
+    trace.x=[];
+    return
+  end
 end
 disp(['loading' ' ' data_type ' from TCV shot #' num2str(shot)]); 
 disp(['case ' TCVkeywrdcase{index}])
+if i_23==2 & isempty(strmatch(TCVsiglocation(index),liuqe23,'exact'))
+  disp('********')
+  disp('Warning asks for liuqe 2 or 3 of a signal, but not in liuqe23 list in loadTCVdata')
+  eval(['!mail -s ''' data_type ' ' num2str(shot) ' ' getenv('USER') ' TCV: not in liuqe23 list'' olivier.sauter@epfl.ch < /dev/null'])
+  disp('********')
+end
+
 status=ones(1,100);
 zmag=cell(0,0);
 nargineff=nargin;
@@ -127,8 +162,34 @@ switch TCVkeywrdcase{index}
 
     %  load TCV other data 
     mdsopen(shot);
-    tracetdi=tdi(TCVsiglocation{index});
+    nodenameeff=TCVsiglocation{index};
+    if i_23==2
+      nodenameeff=[nodenameeff data_type(end-1:end)]
+    end
+    % test if node exists
+    error=1;
+    if eval(['~mdsdata(''node_exists("\' nodenameeff '")'')'])
+      disp(['node ' nodenameeff ' does not exist for shot = ' num2str(shot)])
+      trace.data=[];
+      trace.t=[];
+      trace.x=[];
+      return
+    elseif eval(['mdsdata(''getnci("\' nodenameeff ':foo","length")'')==0'])
+      disp(['no data for node ' nodenameeff ' for shot = ' num2str(shot)])
+      trace.data=[];
+      trace.t=[];
+      trace.x=[];
+      return
+    end
+    tracetdi=tdi(nodenameeff);
     mdsclose(shot)
+    if isempty(tracetdi.data) | isnan(tracetdi.data)
+      disp(['node ' nodenameeff ' is empty for shot = ' num2str(shot)])
+      trace.data=[];
+      trace.t=[];
+      trace.x=[];
+      return
+    end
     trace.data=tracetdi.data;
     trace.t=tracetdi.dim{max(1,TCVsigtimeindx(index))};
     if length(tracetdi.dim)==2
diff --git a/gdat.m b/gdat.m
index bfa11200..cbb1d7b7 100644
--- a/gdat.m
+++ b/gdat.m
@@ -12,7 +12,9 @@ function [trace,error,varargout] = gdat(shot,data_type,varargin)
 %
 % specific to TCV (see help loadTCVdata for more information)
 % 'MPX'  =  wire chambers with varargout{1} option (requires varargin{5}!)
+% 'xx_2 or xx_3' for Liuqe2 or 3: same as above for xx related to equilibrium
 %
+% JET
 % Special case compatible with old gdat.m allows (JET related): gdat(51994,'ppf','efit/xip',1)
 %
 % INPUT:
@@ -102,7 +104,7 @@ if doplot==1
 elseif doplot==-1
   hold on
   if length(size(trace.data))<=2
-    plot(trace.t,trace.data);
+    plot(trace.t,trace.data,'r');
   else
     plot(trace.t,trace.data(:,:,1),'--');
   end
-- 
GitLab