From ee95945a742055898b39131745930e9b7ce37a55 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Tue, 18 Jun 2019 10:47:19 +0000
Subject: [PATCH] add zeff from ascii file from Rachael and IDZ if available

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@12138 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/AUG/aug_requests_mapping.m |   6 +-
 crpptbx/AUG/gdat_aug.m             | 119 +++++++++++++++++++++++++++++
 2 files changed, 124 insertions(+), 1 deletion(-)

diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m
index e30bed0c..c8960583 100644
--- a/crpptbx/AUG/aug_requests_mapping.m
+++ b/crpptbx/AUG/aug_requests_mapping.m
@@ -391,7 +391,11 @@ switch lower(data_request)
 		   'gdat_tmp=gdat_aug(shot,params_eff);ij=find(~isnan(gdat_tmp.data)); gdat_tmp.data_raw=gdat_tmp.data;' ...
 		    'tmp_data=interpos(gdat_tmp.t(ij),gdat_tmp.data(ij),gdat_tmp.t,-1e5);' ...
 		    'gdat_tmp.data = max(tmp_data,0.);'];
-% $$$  case 'zeff' % ZES obsolete, use cxrs
+ case {'zeff', 'z_eff'}
+  mapping.timedim = 1;
+  mapping.label = 'zeff';
+  mapping.method = 'switchcase';
+% $$$ ZES obsolete, use cxrs
 % $$$   mapping.label = 'zeff from cxrs';
 % $$$   mapping.timedim = 1;
 % $$$   mapping.method = 'signal';
diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m
index 130d11b5..32ca4c95 100644
--- a/crpptbx/AUG/gdat_aug.m
+++ b/crpptbx/AUG/gdat_aug.m
@@ -2587,6 +2587,125 @@ elseif strcmp(mapping_for_aug.method,'switchcase')
     params_eff.data_request = 'equil';
     gdat_data.equil = gdat_aug(shot,params_eff);
     
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   case {'zeff', 'z_eff'}
+    zeff_max_in_main = 10.;
+    zeff_min_in_main = 0.0;
+    sources_avail = {'ascii','idz'};
+    fields_to_copy = {'data','units','dim','dimunits','t','x','data_fullpath','label','help'};
+    for i=1:length(sources_avail)
+      for j=1:length(fields_to_copy)
+        gdat_data.(sources_avail{i}).(fields_to_copy{j}) = [];
+      end
+    end
+    if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source)
+      gdat_data.gdat_params.source = sources_avail;
+    elseif ~iscell(gdat_data.gdat_params.source)
+      if ischar(gdat_data.gdat_params.source)
+        gdat_data.gdat_params.source = lower(gdat_data.gdat_params.source);
+        if ~any(strmatch(gdat_data.gdat_params.source,sources_avail))
+          if (gdat_params.nverbose>=1)
+            warning(['source= ' gdat_data.gdat_params.source ' is not part of the available sources: ' sprintf('''%s'' ',sources_avail{:})]);
+          end
+          return
+        else
+          gdat_data.gdat_params.source = {gdat_data.gdat_params.source};
+        end
+      else
+        if (gdat_params.nverbose>=1); warning([' source parameter not compatible with: ' sprintf('''%s'' ',sources_avail{:})]); end
+        return
+      end
+    else
+      for i=1:length(gdat_data.gdat_params.source)
+        gdat_data.gdat_params.source{i} = lower(gdat_data.gdat_params.source{i});
+        if ~any(strmatch(gdat_data.gdat_params.source{i},lower(sources_avail)))
+          if gdat_data.gdat_params.nverbose>=1
+            warning(['source = ' gdat_data.gdat_params.source{i} ' not expected with data_request= ' data_request_eff])
+          end
+        end
+      end
+    end
+    %
+    % start with ascii then IDZ, each time copy to main, so if IDZ is present it supersedes
+    %
+    if any(strmatch('ascii',gdat_data.gdat_params.source))
+      % try ascii file from Rachael Mc Dermot in folder /afs/ipp-garching.mpg.de/home/r/rmcdermo/idl/Zeff/ascii
+      % if not present ask Rachael
+      dir_ascii = '/afs/ipp-garching.mpg.de/home/r/rmcdermo/idl/Zeff/ascii';
+      [a,b] = unix(['ls ' dir_ascii '/*' num2str(gdat_data.shot) '*.txt']);
+      if a==0
+        ij1=findstr(b,'/afs');
+        ij2=findstr(b,'.txt');
+        file_zeff = b(ij1:ij2+3);
+        aaa=textread(file_zeff,'%f');
+        if mod(numel(aaa),2)~=0
+          error(['problems with odd nb of points in file: ' file_zeff]);
+        else
+          nbpoints=length(aaa)/2;
+        end
+        zeff.t = aaa(1:nbpoints);
+        zeff.data = aaa(nbpoints+1:end);
+        gdat_data.ascii.data = min(max(zeff.data,zeff_min_in_main),zeff_max_in_main);
+        gdat_data.ascii.units = '';
+        gdat_data.ascii.t = zeff.t;
+        gdat_data.ascii.dim{1} = gdat_data.ascii.t;
+        gdat_data.ascii.dimunits{1} = 'time [s]';
+        gdat_data.ascii.data_fullpath = [' from file: ' file_zeff];
+        [a1,a2,a3]=fileparts(file_zeff);
+        gdat_data.ascii.label = [a2 a3];
+        for i=1:length(fields_to_copy)
+          if isfield(gdat_data.ascii,fields_to_copy{i})
+            gdat_data.(fields_to_copy{i}) = gdat_data.ascii.(fields_to_copy{i});
+          end
+        end
+      else
+        if gdat_data.gdat_params.nverbose >= 3
+          disp(['No ascii file for zeff in folder: ' dir_ascii '; ask Rachael if need be'])
+        end
+      end
+    end
+    %
+    % IDZ
+    %
+    if any(strmatch('idz',gdat_data.gdat_params.source))
+      gdat_data.fit.full_path = 'PROFILES from IDZ: Zeff, unc, lower, upper';
+      params_eff = gdat_params;
+      params_eff.data_request={'IDZ','Zeff', params_eff.exp_name};
+      try
+        [gdat_data_idz_zeff,params_kin,error_status]=gdat_aug(shot,params_eff);
+        if ~isempty(gdat_data_idz_zeff.data)
+          gdat_data.idz.data = gdat_data_idz_zeff.data;
+          gdat_data.idz.units = '';
+          gdat_data.idz.t = gdat_data_idz_zeff.t;
+          gdat_data.idz.x = gdat_data_idz_zeff.x;
+          gdat_data.idz.dim = gdat_data_idz_zeff.dim;
+          gdat_data.idz.dimunits = gdat_data_idz_zeff.dimunits;
+          gdat_data.idz.dimunits{1} = 'rhopol';
+          gdat_data.idz.data_fullpath = gdat_data_idz_zeff.data_fullpath;
+          gdat_data.idz.label = sprintf('%s/',gdat_data_idz_zeff.data_fullpath{:});
+          gdat_data.idz.label = ['mean(' gdat_data.idz.label(1:end-1) ',1)'];
+          fields_to_not_copy = {'data','dim','x','dimunits'}; % only cst value at this stage to main data, should heva zeff_rho to have profile
+          for i=1:length(fields_to_copy)
+            if isfield(gdat_data.idz,fields_to_copy{i}) && ~any(strmatch(fields_to_copy{i},fields_to_not_copy))
+              gdat_data.(fields_to_copy{i}) = gdat_data.idz.(fields_to_copy{i});
+            end
+          end
+          gdat_data.data = min(max(mean(gdat_data_idz_zeff.data,1)',zeff_min_in_main),zeff_max_in_main);
+          gdat_data.t = gdat_data_idz_zeff.t';
+          gdat_data.dim{1} = gdat_data.t;
+          gdat_data.dimunits{1} = gdat_data_idz_zeff.dimunits{2};
+        else
+          if gdat_data.gdat_params.nverbose >= 3
+            disp(['No data in shotfile IDZ ; ask Rainer if need be'])
+          end
+        end
+      catch ME
+        if gdat_data.gdat_params.nverbose >= 3
+          disp(['No shot file IDZ ; ask Rainer if need be'])
+        end
+      end
+    end
+    %
    otherwise
     if (gdat_params.nverbose>=1); warning(['switchcase= ' data_request_eff ' not known in gdat_aug']); end
     error_status=901;
-- 
GitLab