From 7dc10ac7e1beed1fcac3b9755cb2641623d23a0a Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Thu, 1 Oct 2015 09:42:53 +0000
Subject: [PATCH] add empty subfields if fit not asked for or if empty in
 ne_rho, te_rho or nete_rho

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@5094 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/TCV/gdat_tcv.m | 85 ++++++++++++++++++++++++++++--------------
 1 file changed, 58 insertions(+), 27 deletions(-)

diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index 6bb4342d..34c4b38e 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -854,11 +854,56 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     gdat_data.dim{1}=rho;
     gdat_data.dimunits=[{'sqrt(psi_norm)'} ; {'time [s]'}];
     gdat_data.x=rho;
+    %%%%%%%%%%%
+    % if nete_rho, copy data as .ne, get .te and put pe=e ne Te in data:
+    if strcmp(data_request_eff(1:4),'nete')
+      % note, now has ne.data_raw for density without fir_to_thomson_ratio
+      gdat_data.ne.data = gdat_data.data;
+      gdat_data.ne.data_raw = gdat_data.data_raw;
+      gdat_data.ne.error_bar = gdat_data.error_bar;
+      gdat_data.ne.error_bar_raw = gdat_data.error_bar_raw;
+      gdat_data.ne.firrat=gdat_data.firrat;
+      gdat_data.ne.units = 'm^{-3}';
+      gdat_data = rmfield(gdat_data,{'firrat','data_raw','error_bar_raw'});
+      %
+      nodenameeff=['\results::thomson' edge_str_dot ':te'];
+      tracetdi=tdi(nodenameeff);
+      nodenameeff=['\results::thomson' edge_str_dot ':te; error_bar'];
+      tracestd=tdi(['\results::thomson' edge_str_dot ':te:error_bar']);
+      gdat_data.te.data=tracetdi.data';
+      gdat_data.te.error_bar=tracestd.data';
+      gdat_data.te.units = tracetdi.units;
+      gdat_data.data_fullpath=['pe=1.6e-19*ne*Te in data, .ne, .te from \results::thomson' ...
+                    edge_str_dot ':ne and te and projected on rhopol\_norm'];
+      gdat_data.units='N/m^2; 1.6022e-19 ne Te';
+      gdat_data.data = 1.6022e-19 .* gdat_data.ne.data .* gdat_data.te.data;
+      gdat_data.error_bar = 1.6022e-19 .* (gdat_data.ne.data .* gdat_data.te.error_bar ...
+          + gdat_data.te.data .* gdat_data.ne.error_bar);
+    end
     %%%%%%%%%%% add fitted profiles if 'fit'>=1
     default_fit_type = 'conf';
-    if ~isfield(gdat_data.gdat_params,'fit') || ~isempty(gdat_data.gdat_params.fit)
+    if ~isfield(gdat_data.gdat_params,'fit') || isempty(gdat_data.gdat_params.fit)
       gdat_data.gdat_params.fit = 1;
     end
+    % add empty structure for fit so results is always the same with or without call to fit=1 or 0
+    gdat_data.fit.data = [];
+    gdat_data.fit.x = [];
+    gdat_data.fit.t = [];
+    gdat_data.fit.units = [];
+    gdat_data.fit.data_fullpath = [];
+    if strcmp(data_request_eff(1:4),'nete')
+      % note gdat_data.fit.data level is for pe
+      gdat_data.fit.ne.data = [];
+      gdat_data.fit.ne.x = [];
+      gdat_data.fit.ne.t = [];
+      gdat_data.fit.ne.units = [];
+      gdat_data.fit.ne.data_fullpath = [];
+      gdat_data.fit.te.data = [];
+      gdat_data.fit.te.x = [];
+      gdat_data.fit.te.t = [];
+      gdat_data.fit.te.units = [];
+      gdat_data.fit.te.data_fullpath = [];
+    end
     if gdat_data.gdat_params.fit>0
       % default is from proffit:avg_time
       if ~(isfield(gdat_data.gdat_params,'fit_type') && ~isempty(gdat_data.gdat_params.fit_type)) || ~any(strcmp(gdat_data.gdat_params.fit_type,{'local', 'avg', 'conf'}))
@@ -907,8 +952,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
           if gdat_params.nverbose>=1
             disp([nodenameeff ' is empty, thus no fits, check hldsi(shot) and may need to run anaprofs?'])
           end
-          gdat_data.fit.data = [];
-          gdat_data.fit.data_fullpath = [nodenameeff ' is empty'];
+          if strcmp(data_request_eff(1:4),'nete')
+            gdat_data.fit.ne.data_fullpath = [nodenameeff ' is empty'];
+            gdat_data.fit.te.data_fullpath = [nodenameeff ' is empty'];
+          else
+            gdat_data.fit.data_fullpath = [nodenameeff ' is empty'];
+          end
           return
         end
       else
@@ -918,7 +967,6 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
           if gdat_params.nverbose>=1
             disp([nodenameeff ' with trialindx=' num2str(trialindx) ' is empty, thus no fits, check hldsi(shot) and may need to run anaprofs?'])
           end
-          gdat_data.fit.data = [];
           gdat_data.fit.data_fullpath = [nodenameeff ' with trialindx=' num2str(trialindx) ' is empty'];
           return
         end
@@ -939,7 +987,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       % do te as well if nete asked for
       if strcmp(data_request_eff(1:4),'nete')
         gdat_data.fit.ne.data = gdat_data.fit.data;
+        gdat_data.fit.ne.x = gdat_data.fit.x;
+        gdat_data.fit.ne.t = gdat_data.fit.t;
         gdat_data.fit.ne.units = gdat_data.fit.units;
+        gdat_data.fit.ne.data_fullpath = gdat_data.fit.data_fullpath;
         if strcmp(gdat_data.gdat_params.fit_type,'conf')
           nodenameeff = [def_proffit 'te'];
         else
@@ -956,9 +1007,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
             return
           end
         end
+        gdat_data.fit.te.x = gdat_data.fit.ne.x;
+        gdat_data.fit.te.t = gdat_data.fit.ne.t;
         if any(strcmp(fieldnames(tracetdi),'units'))
           gdat_data.fit.te.units=tracetdi.units;
         end
+        gdat_data.fit.te.data_fullpath = [nodenameeff];
         % construct pe=1.6022e-19*ne*te
         gdat_data.fit.data = 1.6022e-19.*gdat_data.fit.ne.data .* gdat_data.fit.te.data;
         gdat_data.fit.units = 'N/m^2; 1.6022e-19 ne Te';
@@ -967,29 +1021,6 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     else
       gdat_data.gdat_params.fit_type = default_fit_type;
     end
-    %%%%%%%%%%%
-    % if nete_rho, copy data as .ne, get .te and put pe=e ne Te in data:
-    if strcmp(data_request_eff(1:4),'nete')
-      gdat_data.ne.data = gdat_data.data;
-      gdat_data.ne.error_bar = gdat_data.error_bar;
-      gdat_data.ne.firrat=gdat_data.firrat;
-      gdat_data.ne.units = 'm^{-3}';
-      gdat_data = rmfield(gdat_data,{'firrat','data_raw','error_bar_raw'});
-      %
-      nodenameeff=['\results::thomson' edge_str_dot ':te'];
-      tracetdi=tdi(nodenameeff);
-      nodenameeff=['\results::thomson' edge_str_dot ':te; error_bar'];
-      tracestd=tdi(['\results::thomson' edge_str_dot ':te:error_bar']);
-      gdat_data.te.data=tracetdi.data';
-      gdat_data.te.error_bar=tracestd.data';
-      gdat_data.te.units = tracetdi.units;
-      gdat_data.data_fullpath=['pe=1.6e-19*ne*Te in data, .ne, .te from \results::thomson' ...
-                    edge_str_dot ':ne and te and projected on rhopol\_norm'];
-      gdat_data.units='N/m^2; 1.6022e-19 ne Te';
-      gdat_data.data = 1.6022e-19 .* gdat_data.ne.data .* gdat_data.te.data;
-      gdat_data.error_bar = 1.6022e-19 .* (gdat_data.ne.data .* gdat_data.te.error_bar ...
-          + gdat_data.te.data .* gdat_data.ne.error_bar);
-    end
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    case {'powers'}
-- 
GitLab