From f2990598445251e6e3775122885b377c80da32f3 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Wed, 13 Mar 2019 15:04:24 +0000
Subject: [PATCH] add various ec data output first in ec_data

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11569 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/TCV/gdat_tcv.m             | 87 +++++++++++++++++++++++-------
 crpptbx/TCV/tcv_requests_mapping.m | 12 ++---
 2 files changed, 75 insertions(+), 24 deletions(-)

diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index ac276d35..45efc732 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -1129,7 +1129,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     end
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-   case {'pdens','icds'}
+   case {'ec_data', 'aux', 'h_cd', 'nbi_data', 'ic_data', 'lh_data'}
     % note: same time array for all at main.data level, then individual at .ec, .nbi levels
     % At this stage fill just eccd, later add nbi
     sources_avail = {'ec','nbi'}; % can be set in parameter source
@@ -1196,24 +1196,75 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       % EC
       if strcmp(lower(source_icd.ec),'toray')
         if isempty(gdat_data.gdat_params.trialindx)
-          % [ p_gyro,icdtot,ECH,ECCD,rho_dep,drho,pmax,icdmax,ECCD_w2] = astra_tcv_EC_exp(shot,time,cd_sign,smooth_pgyro,slices,toray_trialindex)
-          [pabs_gyro,icdtot,ECH,ECCD,rho_dep_pow,drho_pow,pmax,icdmax,ECCD_w2,rho_dep_icd,drho_icd] = astra_tcv_EC_exp(shot); % centralized function for toray nodes
+          [pabs_gyro,icdtot,pow_dens,currentdrive_dens,rho_dep_pow,drho_pow,pmax,icdmax,currentdrive_dens_w2,rho_dep_icd,drho_icd] = astra_tcv_EC_exp(shot); % centralized function for toray nodes
         else
-          [pabs_gyro,icdtot,ECH,ECCD,rho_dep_pow,drho_pow,pmax,icdmax,ECCD_w2,rho_dep_icd,drho_icd] = astra_tcv_EC_exp(shot,[],[],[],[],[],gdat_data.gdat_params.trialindx); % centralized function for toray nodes
+          [pabs_gyro,icdtot,pow_dens,currentdrive_dens,rho_dep_pow,drho_pow,pmax,icdmax,currentdrive_dens_w2,rho_dep_icd,drho_icd] = astra_tcv_EC_exp(shot,[],[],[],[],[],gdat_data.gdat_params.trialindx); % centralized function for toray nodes
         end
         data_fullpath = ['from toray nodes using astra_tcv_EC_exp(shot), total icd per gyrotron including effective absorbed power, jcd etc in .extra'];
         ec_help = 'from toray icdint with extracting of effective Icd for given launcher depending on nb rays used';
-        if isfield(icdtot,'tgrid'); icdtot.t = icdtot.tgrid; end
-        if isfield(icdtot,'data');
-          icdtot.data = icdtot.data * 1e6; % MA -> A
-          icdtot.data = icdtot.data';
-          icdtot.data(:,end+1) = sum(icdtot.data,2);
-        end
+        % All EC related quantities
+        % power deposition related:
+        ec_data.p_abs_plasma = pabs_gyro.data * 1e6;
+        ec_data.p_abs_plasma(end+1,:) = nansum(ec_data.p_abs_plasma,1);
+        ec_data.p_abs_plasma_label = [strrep(pabs_gyro.comment,'MW','W') ' ; last index is total'];
+        ec_data.p_dens = pow_dens.data * 1e6;
+        ec_data.p_dens(:,end+1,:) = nansum(ec_data.p_dens,2);
+        ec_data.p_dens_label = [strrep(pow_dens.comment,'MW','W') ' ; last index is total'];
+        ec_data.max_pow_dens = pmax.data * 1e6;
+        ec_data.max_pow_dens_label = strrep(pmax.comment,'MW','W');
+        ec_data.rho_max_pow_dens = rho_dep_pow.data * 1e6;
+        ec_data.rho_max_pow_dens_label = strrep(rho_dep_pow.comment,'MW','W');
+        ec_data.width_pow_dens = drho_pow.data;
+        ec_data.width_pow_dens_label = drho_pow.comment;
+        % current drive deposition related:
+        ec_data.cd_tot = icdtot.data * 1e6;
+        ec_data.cd_tot(end+1,:) = nansum(ec_data.cd_tot,1);
+        ec_data.cd_tot_label = [strrep(icdtot.comment,'MA','A') ' ; last index is total'];
+        ec_data.cd_dens = currentdrive_dens.data * 1e6;
+        ec_data.cd_dens(:,end+1,:) = nansum(ec_data.cd_dens,2);
+        ec_data.cd_dens_label = [strrep(currentdrive_dens.comment,'MA','A') ' ; last index is total'];
+        ec_data.max_cd_dens = icdmax.data * 1e6;
+        ec_data.max_cd_dens_label = strrep(icdmax.comment,'MA','A');
+        ec_data.rho_max_cd_dens = rho_dep_icd.data;
+        ec_data.rho_max_cd_dens_label = rho_dep_icd.comment;
+        ec_data.width_cd_dens = drho_icd.data;
+        ec_data.width_cd_dens_label = drho_icd.comment;
+        ec_data.cd_dens_doublewidth = currentdrive_dens_w2.data * 1e6;
+        ec_data.cd_dens_doublewidth_label = [strrep(currentdrive_dens_w2.comment,'MA','A') ' ; last index is total'];
       else
         disp(['source_icd.ec = ' source_icd.ec ' not yet implemented, ask O. Sauter'])
+        ec_data.p_abs_plasma = [];
+        ec_data.p_abs_plasma(end+1,:) = [];
+        ec_data.p_abs_plasma_label = [];
+        ec_data.p_dens = [];
+        ec_data.p_dens(end+1,:) = [];
+        ec_data.p_dens_label = [];
+        ec_data.max_pow_dens = [];
+        ec_data.max_pow_dens_label = [];
+        ec_data.rho_max_pow_dens = [];
+        ec_data.rho_max_pow_dens_label = [];
+        ec_data.width_pow_dens = [];
+        ec_data.width_pow_dens_label = [];
+        % current drive deposition related:
+        ec_data.cd_tot = [];
+        ec_data.cd_tot(end+1,:) = [];
+        ec_data.cd_tot_label = [];
+        ec_data.cd_dens = [];
+        ec_data.cd_dens(:,end+1,:) = [];
+        ec_data.cd_dens_label = [];
+        ec_data.max_cd_dens = [];
+        ec_data.max_cd_dens_label = [];
+        ec_data.rho_max_cd_dens = [];
+        ec_data.rho_max_cd_dens_label = [];
+        ec_data.width_cd_dens = [];
+        ec_data.width_cd_dens_label = [];
+        ec_data.cd_dens_doublewidth = [];
+        ec_data.cd_dens_doublewidth_label = [];
+        gdat_data.ec.ec_data = ec_data;
         return
       end
-      if isempty(icdtot.data) || isempty(icdtot.t) || ischar(icdtot.data)
+      gdat_data.ec.ec_data = ec_data;
+      if isempty(icdtot.data) || isempty(icdtot.tgrid) || ischar(icdtot.data)
         if (gdat_params.nverbose>=1)
           warning(['problems loading data for ' source_icd.ec ...
                     ' for data_request= ' data_request_eff]);
@@ -1221,7 +1272,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       else
         gdat_data.ec.data = icdtot.data;
         gdat_data.ec.units = 'A';
-        gdat_data.ec.dim{1} = icdtot.t;
+        gdat_data.ec.dim{1} = icdtot.tgrid;
         gdat_data.ec.dim{2} = [1:size(gdat_data.ec.data,2)];
         gdat_data.ec.dimunits={'s','launcher i, total'};
         gdat_data.ec.t=gdat_data.ec.dim{1};
@@ -1230,7 +1281,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
         gdat_data.ec.label='I_{cd}';
         gdat_data.ec.help = ec_help;
         % add to main, assume 1st one so just use this time base
-        gdat_data.data(:,end+1) = gdat_data.ec.data(:,end);
+        gdat_data.data(end+1,:) = gdat_data.ec.data(end,:);
         gdat_data.t = gdat_data.ec.t;
         gdat_data.x(end+1) = 1;
         gdat_data.label{end+1}=gdat_data.ec.label; % label was defined in tcv_mapping_request as char so replace 1st time
@@ -1260,12 +1311,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     end
     %
     % add all to last index of .data(:,i)
-    gdat_data.data(:,end+1) = sum(gdat_data.data(:,:),2);
-    gdat_data.x(end+1) = size(gdat_data.data,2);
+    gdat_data.data(end+1,:) = sum(gdat_data.data(:,:),1);
+    gdat_data.x(end+1) = size(gdat_data.data,1);
     gdat_data.label{end+1}='total current';
-    gdat_data.dim{1} = gdat_data.t;
-    gdat_data.dim{2} = gdat_data.x;
-    gdat_data.dimunits = {'s', 'index for each source + total CD'};
+    gdat_data.dim{1} = gdat_data.x;
+    gdat_data.dim{2} = gdat_data.t;
+    gdat_data.dimunits = {'index for each source + total CD', 's'};
     gdat_data.data_fullpath = 'see in individual source substructure';
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/crpptbx/TCV/tcv_requests_mapping.m b/crpptbx/TCV/tcv_requests_mapping.m
index c4f6821c..1f989879 100644
--- a/crpptbx/TCV/tcv_requests_mapping.m
+++ b/crpptbx/TCV/tcv_requests_mapping.m
@@ -131,10 +131,10 @@ switch lower(data_request)
   mapping.label = 'Halpha';
   mapping.method = 'switchcase';
   mapping.expression = '';
- case 'icds'
-  mapping.timedim = 1;
-  mapping.label = 'various driven current';
-  mapping.method = 'switchcase';
+% $$$  case 'icds'
+% $$$   mapping.timedim = 1;
+% $$$   mapping.label = 'various driven current';
+% $$$   mapping.method = 'switchcase';
  case 'ids'
   mapping.timedim = 1;
   mapping.label = 'ids ala imas';
@@ -229,9 +229,9 @@ switch lower(data_request)
 		    'gdat_tmp2=gdat_tcv(shot,params_eff);ij=find(gdat_tmp2.data==0);gdat_tmp2.data(ij)=NaN;' ...
 		    'tmp_data2=interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t,[],NaN);' ...
 		    'gdat_tmp.data = gdat_tmp.data./(tmp_data2+1e-5);'];
- case {'pdens'}
+ case {'ec_data', 'aux', 'h_cd', 'nbi_data', 'ic_data', 'lh_data'}
   mapping.timedim = 1;
-  mapping.label = 'various Pdens';
+  mapping.label = 'various Pdens, Icd, jcd';
   mapping.method = 'switchcase';
  case {'phi_tor', 'phitor', 'toroidal_flux'}
   mapping.timedim = 2;
-- 
GitLab