From 8d34e8705eeea17154812a8276846d25f094293b Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Mon, 24 Aug 2015 12:07:32 +0000
Subject: [PATCH] added some new data_request for tcv

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@4908 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx_new/TCV/gdat_tcv.m               | 110 ++++++++++++++++++++---
 crpptbx_new/TCV/tcv_requests_mapping.m   |  35 +++++---
 crpptbx_new/gdat_data_request_names.xlsx | Bin 11749 -> 11911 bytes
 crpptbx_new/gdat_plot.m                  |  26 +++++-
 4 files changed, 145 insertions(+), 26 deletions(-)

diff --git a/crpptbx_new/TCV/gdat_tcv.m b/crpptbx_new/TCV/gdat_tcv.m
index 44155bf3..7740a261 100644
--- a/crpptbx_new/TCV/gdat_tcv.m
+++ b/crpptbx_new/TCV/gdat_tcv.m
@@ -65,6 +65,7 @@ default_machine = 'tcv';
 
 gdat_params.machine=default_machine;
 gdat_params.doplot = 0;
+gdat_params.liuqe = 1;
 
 % construct list of keywords from global set of keywords and specific TCV set
 % get data_request names from centralized function
@@ -226,6 +227,15 @@ shot = gdat_data.shot;
 data_request_eff = gdat_data.gdat_params.data_request;
 error_status = 6; % at least reached this level
 
+liuqe_version = 1;
+if isfield(gdat_data.gdat_params,'liuqe') && ~isempty(gdat_data.gdat_params.liuqe)
+  liuqe_version = gdat_data.gdat_params.liuqe;
+end
+substr_liuqe = '';
+if liuqe_version==2 || liuqe_version==3
+  substr_liuqe = ['_' num2str(liuqe_version)];
+end
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 % Specifications on how to get the data provided in tcv_requests_mapping
@@ -243,26 +253,32 @@ if do_mdsopen_mdsclose
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% 1st treat the simplest method: "tdi"
-if strcmp(mapping_for_tcv.method,'tdi')
+% 1st treat the simplest method: "tdi" (and tdiliuqe)
+if strcmp(mapping_for_tcv.method(1:3),'tdi')
   % need to treat liuqe2, model, etc from options....
+  substr_tdi = '';
+  if strcmp(mapping_for_tcv.method,'tdiliuqe'); substr_tdi = substr_liuqe; end
   if iscell(mapping_for_tcv.expression)
     if length(mapping_for_tcv.expression)>0
       % series of arguments for tdi given in each cell
-      eval_expr = ['aatmp=tdi(''' mapping_for_tcv.expression{1} ''''];
+      eval_expr = ['tdi(''' mapping_for_tcv.expression{1} substr_tdi ''''];
       for i=2:length(mapping_for_tcv.expression)
         eval_expr = [eval_expr ',''' mapping_for_tcv.expression{i} ''''];
       end
       eval_expr = [eval_expr ');'];
-      eval(eval_expr);
+      aatmp = eval(eval_expr);
     else
       % empty or wrong expression
       error_status=701;
       return
     end
   else
-    eval_expr = ['aatmp=tdi(''' mapping_for_tcv.expression ''');'];
-    eval(eval_expr);
+    eval_expr = ['tdi(''' mapping_for_tcv.expression substr_tdi ''');'];
+    aatmp=eval(eval_expr);
+  end
+  if isempty(aatmp.data) || isempty(aatmp.dim) % || ischar(aatmp.data) (to add?)
+    warning(['problems loading data for ' eval_expr ' for data_request= ' data_request_eff])
+    return
   end
   gdat_data.data = aatmp.data;
   gdat_data.dim = aatmp.dim;
@@ -305,7 +321,8 @@ if strcmp(mapping_for_tcv.method,'tdi')
     gdat_data.dim = aatmp.dim(inew);
     gdat_data.dimunits = aatmp.dimunits(inew);
   end
-  gdat_data.data_fullpath=mapping_for_tcv.expression;
+  gdat_data.data_fullpath=[mapping_for_tcv.expression substr_tdi];
+
   % end of method "tdi"
 
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -313,10 +330,10 @@ elseif strcmp(mapping_for_tcv.method,'function')
   % 2nd: method="function"
   % assume expression contains function to call and which returns a structure
   % we copy the structure, to make sure default nodes are defined and to avoid if return is an closed object like tdi
-  eval_expr = ['aatmp=' mapping_for_tcv.expression ';'];
-  eval(eval_expr);
+  % eval_expr = ['aatmp=' mapping_for_tcv.expression ';'];
+  aatmp = eval(mapping_for_tcv.expression);
   if isempty(aatmp) || (~isstruct(aatmp) & ~isobject(aatmp))
-    warning(['function expression does not return a structure: ' eval_expr])
+    warning(['function expression does not return a structure: ' mapping_for_tcv.expression])
     error_status=801;
     return
   end
@@ -359,6 +376,78 @@ elseif strcmp(mapping_for_tcv.method,'function')
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 elseif strcmp(mapping_for_tcv.method,'switchcase')
   switch data_request_eff % not lower(...) since data_request_eff should be lower case already at this stage
+    % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    % First the request names valid for "all" machines:
+    %
+   case {'a_minor'}
+    nodenameeff=['\results::r_max_psi' substr_liuqe];
+    rmaxpsi=tdi(nodenameeff);
+    nodenameeff2=['\results::r_min_psi' substr_liuqe];
+    rminpsi=tdi(nodenameeff2);
+    ij=find(rmaxpsi.data<0.5 | rmaxpsi.data>1.2);
+    if ~isempty(ij); rmaxpsi.data(ij)=NaN; end
+    ij=find(rminpsi.data<0.5 | rminpsi.data>1.2);
+    if ~isempty(ij); rminpsi.data(ij)=NaN; end
+    gdat_data.data=0.5.*(rmaxpsi.data(end,:) - rminpsi.data(end,:));
+    gdat_data.data_fullpath=[nodenameeff ' - ' nodenameeff2 ' /2'];
+    gdat_data.dim = rmaxpsi.dim(2);    
+    gdat_data.t = gdat_data.dim{1};
+    if any(strcmp(fieldnames(rmaxpsi),'units'))
+      gdat_data.units = rmaxpsi.units;
+    end
+    gdat_data.dimunits = rmaxpsi.dimunits(2);
+    
+   case {'b0'}
+    % B0 at R0=0.88
+    R0EXP=0.88;
+    if liuqe_version==-1
+      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
+      nodenameeff = 'tcv_eq("BZERO","FBTE")';
+      tracetdi=tdi(nodenameeff);
+      gdat_data.data = tracetdi.data;
+    else
+      nodenameeff=['\magnetics::iphi'];
+      tracetdi=tdi(nodenameeff);
+      gdat_data.data=192.E-07 * 0.996 *tracetdi.data/R0EXP;
+    end
+    gdat_data.data_fullpath=[nodenameeff];
+    gdat_data.dim = tracetdi.dim;    
+    gdat_data.t = gdat_data.dim{1};
+    if any(strcmp(fieldnames(tracetdi),'units'))
+      gdat_data.units = tracetdi.units;
+    end
+    gdat_data.dimunits = tracetdi.dimunits;
+    gdat_data.request_description = ['vacuum magnetic field at R0=' num2str(R0EXP) 'm'];
+    
+   case {'betan'}
+    % 100*beta / Ip[MA] * B0[T] * a[m]
+    % get B0 from gdat_tcv, without re-opening the shot and using the same parameters except data_request
+    % easily done thanks to structure call for options
+    params_eff = gdat_data.gdat_params;
+    params_eff.data_request='b0';
+    b0=gdat_tcv([],params_eff);
+    params_eff.data_request='ip';
+    ip=gdat_tcv([],params_eff);
+    params_eff.data_request='beta';
+    beta=gdat_tcv([],params_eff);
+    params_eff.data_request='a_minor';
+    a_minor=gdat_tcv([],params_eff);
+    
+    nodenameeff = '\results::';
+    if liuqe_version==2 || liuqe_version==3
+      nodenameeff=['\magnetics::iphi'];
+      tracetdi=tdi(nodenameeff);
+      gdat_data.data=192.E-07 * 0.996 *tracetdi.data/R0EXP;
+    end
+    gdat_data.data_fullpath=[nodenameeff];
+    gdat_data.dim = tracetdi.dim;    
+    gdat_data.t = gdat_data.dim{1};
+    if any(strcmp(fieldnames(tracetdi),'units'))
+      gdat_data.units = tracetdi.units;
+    end
+    gdat_data.dimunits = tracetdi.dimunits;
+    gdat_data.request_description = ['vacuum magnetic field at R0=' num2str(R0EXP) 'm'];
+    
    case {'ne','te'}
     % ne or Te from Thomson data on raw z mesh vs (z,t)
     mdsopen(shot);
@@ -399,7 +488,6 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     if any(strcmp(fieldnames(tracetdi),'units'))
       gdat_data.units=tracetdi.units;
     end
-
     
    case 'nerho'
     
diff --git a/crpptbx_new/TCV/tcv_requests_mapping.m b/crpptbx_new/TCV/tcv_requests_mapping.m
index f2e3c7e1..435b02ae 100644
--- a/crpptbx_new/TCV/tcv_requests_mapping.m
+++ b/crpptbx_new/TCV/tcv_requests_mapping.m
@@ -20,39 +20,48 @@ mapping.label = data_request;
 % for TCV, following choices are set so far:
 % method = 'tdi' and then expression is the string within tdi (usual case when there is a direct link to an existing signal)
 %                with tdi, if expression cell array, call tdi(cell{1},cell{2},...)
-% method = 'function', then expression is the funtion to call which should return the correct structure
+% method = 'tdiliuqe': same as tdi but adds "_2" or "_3" if 'liuqe',2 or 3 is asked for in options
+% method = 'function', then expression is the funtion to call which should return a structure, which fields are copied to gdat_data
 % method = 'switchcase', then there will be a specific case within gdat_tcv (usual case when not directly a signal)
 %
 % label is used for plotting
 switch lower(data_request)
+ case 'a_minor'
+  mapping.label = 'a(LCFS)';
+  mapping.method = 'switchcase';
+  mapping.expression = '';
  case 'b0'
   mapping.label = 'B_0';
   mapping.method = 'switchcase';
   mapping.expression = '';
+ case 'beta'
+  mapping.label = '\beta';
+  mapping.method = 'tdiliuqe';
+  mapping.expression = '\results::beta_tor';
  case 'betan'
   mapping.label = '\beta_N';
   mapping.method = 'switchcase';
   mapping.expression = '';
  case 'betap'
   mapping.label = '\beta_p';
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::beta_pol';
  case 'cxrs'
   mapping.label = 'cxrs';
   mapping.method = 'switchcase';
   mapping.expression = '';
  case 'delta'
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::delta_edge';
-  mapping.method = 'function';
-  mapping.expression = ['tdi(''\results::q_psi'');'];
+  % mapping.method = 'function';
+  % mapping.expression = ['tdi(''\results::q_psi'');']; % for tests
  case 'delta_top'
   mapping.label = 'delta\_top';
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::delta_ed_top';
  case 'delta_bottom'
   mapping.label = 'delta\_bottom';
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::delta_ed_bot';
  case 'ece'
   mapping.method = 'switchcase';
@@ -73,7 +82,7 @@ switch lower(data_request)
   mapping.method = 'tdi';
   mapping.expression = '\magnetics::iplasma:trapeze';
  case 'kappa'
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::kappa_edge';
  case 'mhd'
   mapping.label = 'n=1,2, etc';
@@ -101,13 +110,13 @@ switch lower(data_request)
   mapping.label = 'various powers';
   mapping.method = 'switchcase';
  case 'q0'
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::q_zero';
  case 'q95'
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::q_95';
  case 'qedge'
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::q_edge';
  case 'qrho'
   mapping.label = 'q';
@@ -120,7 +129,7 @@ switch lower(data_request)
   mapping.method = 'switchcase'; % from conf if exist otherwise computes it
  case 'rmag'
   mapping.label = 'R\_magaxis';
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::r_axis';
  case 'sxr'
   mapping.method = 'switchcase';
@@ -153,7 +162,7 @@ switch lower(data_request)
   mapping.method = 'switchcase';
  case 'zmag'
   mapping.label = 'Zmagaxis';
-  mapping.method = 'tdi';
+  mapping.method = 'tdiliuqe';
   mapping.expression = '\results::z_axis';
 % $$$  case ''
 % $$$   mapping.label = '';
diff --git a/crpptbx_new/gdat_data_request_names.xlsx b/crpptbx_new/gdat_data_request_names.xlsx
index 419bf48dcfa4eec850ba8aefc48338caf2044112..a064c20cd7b818eae5f9a3929fd74b5aba1243f9 100644
GIT binary patch
delta 4160
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
K21_dd0001jpy?6-

delta 4010
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
Q<R_C~E+Pi0DgXcg064jfFaQ7m

diff --git a/crpptbx_new/gdat_plot.m b/crpptbx_new/gdat_plot.m
index 67e315b1..02c616e8 100644
--- a/crpptbx_new/gdat_plot.m
+++ b/crpptbx_new/gdat_plot.m
@@ -1,12 +1,34 @@
-function [fighandle]=gdat_plot(gdat_data);
+function [fighandle]=gdat_plot(gdat_data,varargin);
 %
+% choices from doplot in gdat_data.gdat_params.doplot:
+%     doplot = 0: no plot
+%            = 1: new figure created
+%            = -1: add to current figure (with hold all)
+%            > 1: create new figure with this number, adding clf
+%            <-1: add to figure number abs(doplot) (with hold all)
 %
+if ~isfield(gdat_data.gdat_params,'doplot') || gdat_data.gdat_params.doplot ==0
+  return
+end
+
+fighandle = get(0,'CurrentFigure');
 
-fighandle = figure;
 if prod(isfield(gdat_data,{'data','t'})) && ~isempty(gdat_data.data) && ~isempty(gdat_data.t)
+  if gdat_data.gdat_params.doplot == 1
+    fighandle = figure;
+  elseif gdat_data.gdat_params.doplot > 1
+    fighandle = figure(gdat_data.gdat_params.doplot);
+    clf;
+  elseif gdat_data.gdat_params.doplot == -1
+    hold all
+  elseif gdat_data.gdat_params.doplot < -1
+    fighandle = figure(abs(gdat_data.gdat_params.doplot));
+    hold all
+  end
   plot(gdat_data.t,gdat_data.data);
   title([gdat_data.gdat_params.machine ' #' num2str(gdat_data.shot)]);
   ylabel(gdat_data.label);
+  zoom on;
 else
   disp('cannot plot gdat_data, has empty data or t field')
 end
-- 
GitLab