From 535f37fd86f6431472f0db583b8bafce4886948b Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Sun, 13 Sep 2015 21:49:31 +0000
Subject: [PATCH] add several cases

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@4990 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx_new/TCV/gdat_tcv.m                   | 154 ++++++++++++++++++-
 crpptbx_new/TCV/tcv_requests_mapping.m       |  10 +-
 crpptbx_new/gdat_data_request_names_rho.xlsx | Bin 12073 -> 12190 bytes
 crpptbx_new/test_all_requestnames.m          |  12 ++
 4 files changed, 167 insertions(+), 9 deletions(-)
 create mode 100644 crpptbx_new/test_all_requestnames.m

diff --git a/crpptbx_new/TCV/gdat_tcv.m b/crpptbx_new/TCV/gdat_tcv.m
index d77241c7..8e07dd68 100644
--- a/crpptbx_new/TCV/gdat_tcv.m
+++ b/crpptbx_new/TCV/gdat_tcv.m
@@ -287,6 +287,7 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi')
     end
   else
     if liuqe_version==-1
+      mapping_for_tcv_expression_eff = mapping_for_tcv.expression;
       if strcmp(lower(mapping_for_tcv.expression(1:8)),'\results')
         mapping_for_tcv_expression_eff = mapping_for_tcv.expression(11:end);
       end
@@ -401,7 +402,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     % First the request names valid for "all" machines:
     %
-   case {'a_minor'}
+   case {'a_minor','rgeom'}
+    % compute average minor or major radius (on z=zaxis normally)
     nodenameeff=['\results::r_max_psi' substr_liuqe];
     rmaxpsi=tdi(nodenameeff);
     nodenameeff2=['\results::r_min_psi' substr_liuqe];
@@ -410,8 +412,16 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     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'];
+    if strcmp(data_request_eff,'a_minor')
+      gdat_data.data=0.5.*(rmaxpsi.data(end,:) - rminpsi.data(end,:));
+      gdat_data.data_fullpath=[nodenameeff ' - ' nodenameeff2 ' /2'];
+    elseif strcmp(data_request_eff,'rgeom')
+      gdat_data.data=0.5.*(rmaxpsi.data(end,:) + rminpsi.data(end,:));
+      gdat_data.data_fullpath=[nodenameeff ' + ' nodenameeff2 ' /2'];
+    else
+      disp(['should not be in this case with data_request_eff = ' data_request_eff])
+      return
+    end
     gdat_data.dim = rmaxpsi.dim(2);    
     gdat_data.t = gdat_data.dim{1};
     if any(strcmp(fieldnames(rmaxpsi),'units'))
@@ -419,6 +429,24 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     end
     gdat_data.dimunits = rmaxpsi.dimunits(2);
     
+   case {'zgeom'}
+    % compute average minor or major radius (on z=zaxis normally)
+    nodenameeff=['\results::z_contour' substr_liuqe];
+    zcontour=tdi(nodenameeff);
+    if strcmp(data_request_eff,'zgeom')
+      gdat_data.data=0.5.*(max(zcontour.data,[],1) + min(zcontour.data,[],1));
+      gdat_data.data_fullpath=['(max+min)/2 of ' nodenameeff];
+      gdat_data.dim{1} = zcontour.dim{2};
+      gdat_data.dimunits{1} = zcontour.dimunits{2};
+    else
+      disp(['should not be in this case with data_request_eff = ' data_request_eff])
+      return
+    end
+    gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim};
+    if any(strcmp(fieldnames(zcontour),'units'))
+      gdat_data.units = zcontour.units;
+    end
+    
    case {'b0'}
     % B0 at R0=0.88
     R0EXP=0.88;
@@ -474,7 +502,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     gdat_data.data = 100.*beta.data ./ abs(ip_t).*1.e6 .* abs(b0_t) .* a_minor_t;
     gdat_data.data_fullpath='100*beta/ip*1e6*b0*a_minor, each from gdat_tcv';
     gdat_data.units = '';
-    gdat_data.dimunits = 's';
+    gdat_data.dimunits{1} = 's';
     
    case {'cxrs'}
     %not yet finished, just started
@@ -751,14 +779,18 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     gdat_data.ohm.data_fullpath=['-vloop(tens=' num2str(tension,'%.0e') ')*ip, from gdat'];
     gdat_data.ohm.label='P_{OHM}';
     
-    % total power from all above
-    gdat_data.data = gdat_data.ec.data(:,10) + gdat_data.ohm.data;
+    % total power from each and total
+    gdat_data.data(:,1) = gdat_data.ohm.data;
+    gdat_data.data(:,2) = gdat_data.ec.data(:,10);
+    gdat_data.data(:,3) = gdat_data.ec.data(:,10) + gdat_data.ohm.data;
+    gdat_data.dim{2} = [1:3];
+    gdat_data.dimunits{2} = 'Pohm;Pec;Ptot';
     gdat_data.data_fullpath=['tot power from EC and ohm'];
-    gdat_data.label = 'P_{tot}=P_{EC}+P_{ohm}';
+    gdat_data.label = 'P_{ohm};P_{EC};P_{tot}';
 
    case {'q_rho'}
     % q profile on psi from liuqe
-    nodenameeff='\results::q_psi';
+    nodenameeff=['\results::q_psi' substr_liuqe];
     if liuqe_version==-1
       nodenameeff=[begstr 'q_psi' substr_liuqe];
     end
@@ -770,11 +802,117 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     rhopol_eff = ones(size(tracetdi.dim{1}));
     rhopol_eff(:) = sqrt(linspace(0,1,length(tracetdi.dim{1})));
     gdat_data.dim{1} = rhopol_eff;
+    gdat_data.x = gdat_data.dim{1};
     gdat_data.dimunits{1} = '';
     gdat_data.dimunits{2} = 's';
     gdat_data.units = '';
     gdat_data.request_description = 'q(rhopol\_norm)';
 
+   case {'psi_edge'}
+    % psi at edge, 0 by construction in Liuqe, thus not given
+    nodenameeff=['\results::psi_axis' substr_liuqe];
+    if liuqe_version==-1
+      nodenameeff=[begstr 'q_psi' substr_liuqe];
+    end
+    tracetdi=tdi(nodenameeff);
+    gdat_data.data = tracetdi.data.*0;
+    gdat_data.dim = tracetdi.dim;
+    gdat_data.t = gdat_data.dim{1};
+    gdat_data.data_fullpath=[' zero '];
+    gdat_data.dimunits = tracetdi.dimunits;
+    gdat_data.units = tracetdi.units;
+    gdat_data.request_description = '0 since LIUQE construct psi to be zero at LCFS';
+
+   case {'rhotor_edge','rhotor'}
+    % Phi(LCFS) = int(Bphi dSphi), can use Eq.(11) of "Tokamak coordinate conventions: COCOS" paper:
+    % O. Sauter, S.Yu. Medvedev, Comput. Phys. Commun. 184 (2013) 293–302
+    % since cocos=17 for LIUQE we get:
+    % q = -dPhi/dpsi => Phi = - int(q*dpsi) which should always have the sign of B0
+    params_eff = gdat_data.gdat_params;
+    params_eff.data_request='q_rho'; 
+    q_rho=gdat_tcv([],params_eff);
+    params_eff.data_request='psi_axis'; % psi_edge=0 with LIUQE
+    psi_axis=gdat_tcv([],params_eff);
+    params_eff.data_request='b0'; % psi_edge=0 with LIUQE
+    b0=gdat_tcv([],params_eff);
+    b0tpsi = interp1(b0.t,b0.data,psi_axis.t); %q_rho on same time base as psi_axis
+    if isempty(psi_axis.data) || isempty(psi_axis.dim) || isempty(q_rho.data) || isempty(q_rho.dim)
+      warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff])
+      return
+    end
+    rhoequal = linspace(0,1,length(q_rho.dim{1}));
+    if strcmp(data_request,'rhotor_edge')
+      gdat_data.data = psi_axis.data; % to have the dimensions correct
+      gdat_data.dim = psi_axis.dim;
+      gdat_data.t = gdat_data.dim{1};
+      gdat_data.data_fullpath='phi from q_rho, psi_axis and integral(-q dpsi)';
+      gdat_data.units = 'T m^2';
+      gdat_data.dimunits{1} = 's';
+    elseif strcmp(data_request,'rhotor')
+      gdat_data.data = q_rho.data; % to have the dimensions correct
+      gdat_data.dim{1} = ones(size(q_rho.dim{1}));
+      gdat_data.dim{1}(:) = rhoequal;
+      gdat_data.dim{2} = q_rho.dim{2};
+      gdat_data.t = gdat_data.dim{2};
+      gdat_data.data_fullpath='sqrt(phitor/phitor_edge), rhotor_edge=sqrt(phitor/B0/pi)';
+      gdat_data.units = '';
+      gdat_data.dimunits{1} = 'rhopol\_norm';
+      gdat_data.dimunits{2} = 's';
+    end
+    for it=1:length(psi_axis.data)
+      ij=find(~isnan(q_rho.data(:,it)));
+      if ~isempty(ij)
+        [qfit,~,~,phi]=interpos(q_rho.x(ij).^2,q_rho.data(ij,it),rhoequal.^2);
+        dataeff = sqrt(phi .* psi_axis.data(it) ./ b0tpsi(it) ./ pi) ; % Delta_psi = -psi_axis
+      else
+        dataeff = NaN;
+      end
+      if strcmp(data_request,'rhotor_edge')
+        gdat_data.data(it) = dataeff(end);
+      elseif strcmp(data_request,'rhotor')
+        gdat_data.data(:,it) = dataeff./dataeff(end);
+        gdat_data.rhotor_edge(it) = dataeff(end);
+      end
+      gdat_data.b0 = b0tpsi(it);
+    end
+    
+   case {'rhovol','volume_rho','volume'}
+    % volume_rho = vol(rho); volume = vol(LCFS) = vol(rho=1);
+    % rhovol = sqrt(vol(rho)/vol(rho=1));
+    nodenameeff='\results::psitbx:vol';
+    if liuqe_version==-1
+      nodenameeff=[begstr 'vol' substr_liuqe];
+    end
+    tracetdi=tdi(nodenameeff);
+    if isempty(tracetdi.data) || isempty(tracetdi.dim) 
+      return
+    end
+    gdat_data.units = tracetdi.units;
+    if strcmp(data_request,'volume')
+      gdat_data.data = tracetdi.data(end,:);
+      gdat_data.dim{1} = tracetdi.dim{2};
+      gdat_data.data_fullpath=['\results::psitbx:vol(end,:)'];
+      gdat_data.dimunits{1} = tracetdi.dimunits{2};
+      gdat_data.request_description = 'volume(LCFS)=volume(rhopol=1)';
+    else
+      gdat_data.data = tracetdi.data;
+      gdat_data.dim = tracetdi.dim;
+      gdat_data.dimunits = tracetdi.dimunits;
+      if strcmp(data_request,'volume_rho')
+        gdat_data.data_fullpath=['\results::psitbx:vol'];
+        gdat_data.request_description = 'volume(rho)';
+      elseif strcmp(data_request,'rhovol')
+        gdat_data.volume_edge = gdat_data.data(end,:);
+        gdat_data.data = sqrt(gdat_data.data./repmat(reshape(gdat_data.volume_edge,1,size(gdat_data.data,2)),size(gdat_data.data,1),1));
+        gdat_data.data_fullpath='sqrt(\results::psitbx:vol/vol_edge)';
+        gdat_data.request_description = 'sqrt(volume(rho)/volume(edge))';
+      else
+        disp(['should not be here in vol cases with data_request = ' data_request]);
+        return
+      end
+    end
+      gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim};
+    
    otherwise
     warning(['switchcase= ' data_request_eff ' not known in gdat_tcv'])
     error_status=901;
diff --git a/crpptbx_new/TCV/tcv_requests_mapping.m b/crpptbx_new/TCV/tcv_requests_mapping.m
index 5c40373a..ddbae25b 100644
--- a/crpptbx_new/TCV/tcv_requests_mapping.m
+++ b/crpptbx_new/TCV/tcv_requests_mapping.m
@@ -134,6 +134,14 @@ switch lower(data_request)
   mapping.timedim = 1;
   mapping.label = 'various powers';
   mapping.method = 'switchcase';
+ case 'psi_axis'
+  mapping.timedim = 1;
+  mapping.method = 'tdiliuqe';
+  mapping.expression = '\results::psi_axis';
+ case 'psi_edge'
+  mapping.timedim = 1;
+  mapping.method = 'switchcase'; % is set to zero, so not in tree nodes
+  mapping.label = 'psi\_edge';
  case 'q0'
   mapping.timedim = 1;
   mapping.method = 'tdiliuqe';
@@ -191,7 +199,7 @@ switch lower(data_request)
   mapping.method = 'switchcase';
  case 'vloop'
   mapping.timedim = 1;
-  mapping.label = '';
+  mapping.label = 'Vloop';
   mapping.method = 'tdi';
   mapping.expression = [{'\magnetics::vloop[*,$1]'} {'001'}];
  case 'volume'
diff --git a/crpptbx_new/gdat_data_request_names_rho.xlsx b/crpptbx_new/gdat_data_request_names_rho.xlsx
index 7816b8dab8164387a65273c5600312467169ac69..74f47e6263dadbe5c0879ab7e22d0c00441094c4 100644
GIT binary patch
delta 4428
zcmYjVbyO1$*QQ$-@Iyw|Ku~Hlqq||G<OC)qQc{}^CtVYeiGoOjbVzrO?i@-@x|A>g
zLHPW=-*?XU-hZFx+&Is<_dMs8!m=OKu+!2w1`!ff$ccz(0ay^N7&@E=rwfYGB)4Fv
zD=Yat``h=M?_MV|bW-8sXI6(a;ZQu~`LW<?2NJ!VaWXtx`A?0;L9@;G;pso0$e`A(
z+htj1t6~p0uOY-c8D$w$G&|UPLD=HN95f_gf^_(<d`{46=Ah1(GJ3(lvjz<v`In8U
z$ls5adf5^yLb&qZ=A#v|$GLB(2FQjRo{eBvV)dAJSst7r8kH2EO4_|w=u|jKyv<@S
zq|RXmYsL0Tm?rqk!m8a*;vZIOPTuoWNPr-DM6#Fj;u&%}F2z*K8s!3BP&0Pf6da4H
zI@(WIEz!ESbR|fbHJsT;+^i}^F3cR@ri<i27baVI(Bv!^7BoxB-7izV{<YmSe7{KW
zDrOO07!iN5J^0>izZ4hqhs4P7%*|FK<5Lj3KsuJLY}MXMRqjkedOKucg1T0WHr)Wz
ziM&u=D3?@KWVJ;a&B)$;E0S?kA7r0q+Z11+ncXVh+^Yo{T#!nZB{0wl8$ZfJ9B!3o
zMP}bge}qU?K^Lf**9}6%Yl{yGKTecz=P|F<Qv6|&sW|;SFtU)$jnj+D#ckSd-fqw)
z3DdC`yetu`5i`50%Uaz9vEn3r3gsBujBEmD{A8@bxf=2hz4aJ-97!0OO!A*BS$}CX
z`Lf&y(k$?hSH3vD0%ixqT`$F*3f~HNcjR-LG--4G3{5h3E<SvuyBl@q^i#{g2LmYp
zqKYb6iZuTK+Th@J{qFSrZdHaykzkp|TSA@geLGb^*!ziF%<ZO2l00*#hktgEj7yWW
z0Q`+w_}b*#H6~l(uZ*ZcWfj1$4f1{v#6Rns&aHc7dRQA?)J&tPa~E8lK=#RWMwyoL
zsMlFX2~AFN3MgW_Pmqy?V?LpBNvXl?7Zu}B=w}-51BQ}|r}6#g9)z~GfZ)|@Bpc7(
zYUZkv=b_{xiJ=w&=Kq;%=rZMWI^eeu(=Qq#3aP!}X<J#1H_aJ-fU=}dx4+!p%T-yw
zhlgI(^B!V*dnkt+yHF{PD`H80<loNXlX#eD(YMxMC{qJqx3+QROcKgKldd4WTJ&hc
z#-Uvqr8?%QKJ2u(>}n^g_O2JaRag}s(iGvzB447u&mL|d(0o)nYk_UJlz*nLl>4<@
z{k~;Mdc-OpFfT0Ln<=CBj=h)vRca0IolUy4lb15oZdHMGulF;j#$9zB94n5Kj?Koh
z&<koJYg)vV#dYYUMEIx4Z@oRM^Qb6rjR~z#&qo^XasqyiqX&28Dc8n&Edt9p9j|*<
z@%qfvV@padEH8Sy9>k#OfBbvCO>M&EF_G<=G4h@AE|a&THNO>!a!y44WX!DgEi~ps
zbW@)8Sv?G9KJ)c%r8Kf{_{(C(3W@A8I=tu$Ug_NE`WEF|vXj11#&wO$gF05faNGT-
z+;I>a>8i|f7qH0?!Z`{=y8&GjM0oH%kB>pRd;5obh(lmgcP1qZ97C3V^FKxeK#Xdy
zkV!8|U;cRLIKpWX4yn(MNc%FqS8R~!l3{+k`lWNlwf<wBIR2SYswuy;3jPrknlgdi
zX1)fObu3d-VB+3==cJ_XVa)2{geG!WXv{@_=J2|JQY7@KI`9E`(mDd);_qiKu)}Wp
zUG%CDH0PE-KKNVE>sjIi19MZ?3s!v9#!HC^(t`L1_IAKK{m!97$u_$;0mthUaUx+H
zzk5D>?;&gb+*A>xN%8F2!m#dMwV1IK4zuCryHuo8T>L~{T_UP%ZP6MFyCbMLgGoD7
z;A=Php&iy0OJWcEv#y5a6Je=)2(YE4X)1;jUr`eg4a#B%IC#+xf$Pmo&)3Sn^9XlI
z5R91gqaO>BNm~Y+&d+T-W^+l#dlS_)N@t8!tBIBRG_^*%guhjPXST9$Q~uMS@!R!z
zi{07tLY<7QrTCq*SeV3$_^DfCSQg^uBJ}EV=pfCy)=B69m1){OS^wj@`DV~Blm~gz
zfijvcqhxQ~!aYNmm#utthKjGwm{|P!?$jFnzy|rz;O==7g6nk~zsZ}{X?GQ>n7)G^
zq2b2tX@3XK0)YpWwK~6FORUQ8HA)#K1Z7!G-JFUor8P8;uLFZK3(v1RFT-B>h2*Xa
zI(W<%+wA|8OI)h1UTW8eEfCJk)C_Mo`2I<Tb`9Uwfo+$g%NX`4J`~LCoH#2JnVf}=
z(kVk-j#%~{t*e|jJ;>+q^G6qx{#X<JBRqTtOKVpyJ_s@|G6LSIE?&P$-C1Kfz84ph
z`{eE8+11G%E<_$U=PUm1+8=2r>)D`=Y((;Xn1r3xr{o_T_2~!+r1e&&S{=U0Fgb+0
z*80_rVN<Ib`g6s8$&A{GI*aB@`Z?;byEijc%D=1J2jcd%eU@cVRPSPrtuH1I?K%pC
zcp^AvtOk9j$d0b7{=g`u7KYC&cRN6Cka7IY=$m;CZJN~Q8C9ug!8%dqY6(}K2rl)S
zW4zk;WQo!QruvrswQh#QGbVmK6`zJx_OiHI&dd{HG&Rk}3?(^Xp8tWCJi*ToTbe;Z
z{pLzW!0Ra^87_C);f!G^^9?|Jg-KP-c=WhcjooSOyr5BU;tgM8l-c9GSe(0ESebEb
zcCc+SloFMn)O~c>7l7!N!x^5js~*7m2*JSC0g7Wgd4&;x=X?yIF67BFTXr}bTb6>E
zLE18Ujpag*A>oyw=MX~J=UU9Fr%Q34Z)`By;(P87V`ZTDPz+O{+PCWbwjKukDRNEc
zUaFzATNw~uyxgXNW{jNcHuMQx%a!usL#=K4p~V;!IK?}ynUu<d*-{p7mMk(>2q`g~
z#zh+YMnGH{p9QJg;yzH2L@s%{d_hQ2Nk^jRJtvxZw<8o;QD74N&4H0%B}p4Zcg|>(
zo=9!qM%`;{+zYq&8bRd63wa}%^z^Ja-KiKqQ?fTZP&4t377H9x<amT0Wt5J`BVMOY
z4l)Be@wgV}zxWZ9Sz@Ej;^8HCt@+zHMxGGTy(cTYaR-ioz@GP1qIeez$ARFYA#_L<
z-Zmciao6}(;b?FqZ&jei7<nLnjpP00E&d{?NUf8H+c$H5T~UZ7X*k`A19ed<*iuS5
zMGgXH9gFX#iTUj22m%^1W?nz0(I<0g|3ER#l4!4IdEU$`M`Cdv*L{jYiA<*PZ!0>C
zaSP%+8Up_96K}}A*7BFIu7qZ^?Yy@hmf?bbw-_;aUzs(ARSg$(u~y<m!V3Z$>Qj~A
zl6sIbSSbHmiug!83U<RtI$M*qqf8E%Wh3=^G`5Sc*fZrSUUWf?8P0QpAx}cyi|cZQ
z^$k`4sWiWJQ|UfWS7|i{Cws*4Su+dft^N{$$rb~Z?y|x$osm)r=n^1?MRDRil;N+L
zYAznIQi@bC!#J(DJl&29*c|C!ER<-;pS*t`XKT(Fyd{~ZEgR)PWgrR)y!%ml!?j}O
zZQ=CJJz7^!x+)!aPWLx2OXZ}=nzZRED=!y|(BP+~vLAm&`y}!>0ZqjKvpQf7Ss%Jb
z`=4zrdZa$4!NsB3XzI0_>o3-UNqlV1-Ay)~qynb|N&MrvdT<F#6Bw|`<e=!PzPE)0
zryPQv1OH6R1IxLOvnX64-(Oe`vB~A%i_XpX2aYE-l$lHnFMJhFV56s7dvYGzBBc2_
z&3{4Po`kt3m`|6k5^xFhRA<|@GoOBUNW*xX)*J1T7L<^Vt{U^4ld03vcYU1#gvN&n
z>9OtpEmki{u$GbpdKVGO1zlT#!kYT-R0bF(c2c;bP27vx(eJLj$y|e|hPj19N47cz
z6UJG#$j?@plrznfO$hL#4=#LqZ$chHpCVzlpbpNu{u8hyFui<y8^?3HLLC9wq4dB?
zKi0lmoPr)J#nF?vVRy(iYKPUyG+Z?qBl{jpNdh3_nvH--!0bdGP*6q|!##+}yE<(z
zQ8+J}lt0=R;Z&RcrL!WLJD~{Y{q2&cSm!GvKSm-bLvsmqS7+Nsny2hwI~O~>1FzB}
ztIMhOF%e+h0$v57vOM#}(AT9oeG7x3J34tE&`2L@D#fmug+;LZ&i%N(3a0nw6E%#L
zOc8JkjFX@vr}UwgTd*3FFZV+OUAEJ(P(t_dEEO*3sVGoTE}xrL*8to&D6Wgd45o6#
zM2N7_i9NVZ@dHKlkumYT7K+<2#7$|h>9K0DIw|+MtxTAH;xNT<0@1?R!=?1b?Nu%4
zm0ho#kqq6!34xeqW5EUCSn&`9W;AJbh;L2EbE_iz7E(nET0GhCalu18o~uz)cWgWE
zRk_pddhDRK22(9Z=eqYwMRtH(Tzb`~l@c#FZ??5SOwy(5K5J{q8kk!tj=P#*FTc^%
z9wG2y7JhMMr~2ZJS?-xi1ih2;5il7o2<P}7$XJ<)92;eGg{V}SG{DCM!DV^y_T;{3
zar)4|gJGii%f0h;R-XdksB>*-s5yDn&t|#RV_6(D`Rt@&svn<pvUq~B!+aza7&t!`
za9`0`g7=IAv{Y6H$2E0a6y%i#;KMk6aPqBz&!dU^K9X7U4wB#%uSVD@nl+6xJx*|u
z6P)z)Illv~AakOEL!gU-gO;&})gw!vZKI9#Lt2*EF<#6B?33B1U*4wQbxId%i|hnn
z4VYsiH^sY~j`J&0Mb0j@E6QO@0a-(PK}t$`0;X^$;B!K3dR6V;V`9;hm+p52$E8^1
zGTmdzXEw<89dzwRin*dI_<M>;T|N1aV`HeiIx?vLcehnkUrp(xPU)cbv@ly>voKsx
zQmevhpYFppp?_EZ|KOK6ppxX(H0%D}4_iR%0HSWOAj<uxswQie{%(*`=RHPoqXo)p
zjk^27=9a~i5i_#e4ms4}((`oSq(>qAMTwxIHZ;?b2}C%n#64ET30_v|PQQUs>|ady
zD`4v1ET=(A&z7qdwlpxZO&9LBz)qv=nx3*7$wBb&49j?xCNmJy|4UR(8SF#_;wqY~
zlg*)$g%sC^!Q00J1D0cesXN;?u}Jf-vBdor!?J&>r^x)H2V(Ez(opaG-e$D2%w3^>
z5p{)^YRnosr6Wyl(*CLb)Oc9=#XX_5ia1PojEmt9mv5V=2q?29&f?~bA~eGSq3E#~
z`@3%Bd)YPRW8scTub-Wf_oUnE5fjgQ`e|}O$X7i@fG|6+^{=^abyBU5jk!0wo}9b<
zsUIb@5<9*;ohz!i>tLI|E*F`p+K(@y3@B`g2);r8>kr9^4tT(3bwz?8VsupM1EW64
zfBM(RyR?R%Wqw$CNb3`eUc_qkB&<8=e`|Ecz5&%OHOc!lea<7mzbT%DPIiEtxUJYw
z;U8;f*!aycBvb877Jkw{>??W|X)56MHMKJ-c>=ceW7X9bFiRL4LeBcufI&_89WNtf
zR$f-1Z2#gZm$19Q(G+ai3aty?$#GBg9#H#q+n;Gr-ZmT_p%~-fY|Ee>q)DU7d(a`G
z^nw61gyv@TgZR$}54wdfJ+z83?+shwUqd1NTy^9}{XJndPbB3`m}RlzF_UJ;m%mSn
z9Asa&cCb*sE{?GDebF+q*`#S8Rw+H!vs#D%HF$_-1bd@TUXlfb8jj__EUw!2kxp0K
zH2lZmo;)`d?Iz!N5?DsC>0`YJ?o=eBglFm$;&ht6W7m)L7kM!IABh0Q)IwfMNY)HO
zjz60i`S$YEa&zrJ&Ko4WNcP|V3kop{;%8VpF(`2uwoFW&*cf{t#>@Ht)|`k4Nc7(^
z%Yhx?U>AiN5tE1!{X;}SMD-WtBl?eE#6(0cBt%4v|IH^N7sC38s}Lt*%f+pTvr;7l
KC|pJVCHxQejbo$$

delta 4302
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

diff --git a/crpptbx_new/test_all_requestnames.m b/crpptbx_new/test_all_requestnames.m
new file mode 100644
index 00000000..ff449dbb
--- /dev/null
+++ b/crpptbx_new/test_all_requestnames.m
@@ -0,0 +1,12 @@
+
+machine='TCV';
+shot=48836;
+aa=gdat('machine',machine);
+all_request_names = aa.gdat_request
+%break
+istart=1;
+for irequest=istart:length(all_request_names)
+  request=all_request_names{irequest}
+  ab{irequest} = gdat(shot,request,'machine',machine,'doplot',1);
+  pause
+end
-- 
GitLab