Skip to content
Snippets Groups Projects
Commit 26cd1a34 authored by Olivier Sauter's avatar Olivier Sauter
Browse files

added many cases and .name

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@1839 d63d8f72-b253-0410-a779-e742ad2e26cf
parent 1c08385f
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,15 @@ function [trace,error,varargout]=loadJETdata(shot,data_type,varargin)
% 'Ip' = current
% 'zmag' = vertical position of the center of the plasma (magnetic axis)
% 'rmag' = radial position of the center of the plasma
% 'rcont' = R of plama boundary vs time
% 'zcont' = Z of plama boundary vs time
% 'vol' = volume of flux surfaces vs rho=sqrt(psi)
% 'qrho' = q profile on rho mesh
% 'q95' = q95 vs time
% 'kappa', 'elon' = edge elongation vs time
% 'delta', 'triang' = edge averaged triangularity vs time
% 'deltatop', 'triangtop' = edge upper (top) triangularity vs time
% 'deltabot', 'triangbot' = edge lower (bottom) triangularity vs time
% 'neint' = line-integrated electron density [m/m^3]
% 'ne'= ne raw profile on (R,t). ADD error bars in .std
% 'te'= Te raw profile on (R,t). ADD error bars in .std
......@@ -110,12 +118,36 @@ if size(data_type_eff,1)==1
if ~isempty(strmatch(data_type_eff_noext,[{'ECE'}],'exact'))
data_type_eff_noext='ece';
end
if ~isempty(strmatch(data_type_eff_noext,[{'VOL'} {'volume'}],'exact'))
data_type_eff_noext='vol';
end
if ~isempty(strmatch(data_type_eff_noext,[{'q_95'} {'Q95'}],'exact'))
data_type_eff_noext='q95';
end
if ~isempty(strmatch(data_type_eff_noext,[{'elongation'} {'elon'}],'exact'))
data_type_eff_noext='kappa';
end
if ~isempty(strmatch(data_type_eff_noext,[{'triangularity'} {'triang'}],'exact'))
data_type_eff_noext='delta';
end
if ~isempty(strmatch(data_type_eff_noext,[{'deltaup'} {'deltau'} {'triangtop'} {'triangu'} {'triangup'}],'exact'))
data_type_eff_noext='deltatop';
end
if ~isempty(strmatch(data_type_eff_noext,[{'deltalow'} {'deltal'} {'triangbot'} {'triangl'} {'trianglow'}],'exact'))
data_type_eff_noext='deltabot';
end
if ~isempty(strmatch(data_type_eff_noext,[{'Rmag'}],'exact'))
data_type_eff_noext='rmag';
end
if ~isempty(strmatch(data_type_eff_noext,[{'Zmag'}],'exact'))
data_type_eff_noext='zmag';
end
if ~isempty(strmatch(data_type_eff_noext,[{'Rcont'}],'exact'))
data_type_eff_noext='rcont';
end
if ~isempty(strmatch(data_type_eff_noext,[{'Zcont'}],'exact'))
data_type_eff_noext='zcont';
end
else
i_ext=length(data_type_eff{2})+1;
name_ext='';
......@@ -128,13 +160,22 @@ else
end
% all keywords and corresponding case to run below
JETkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'qrho'} {'neint'} ...
JETkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'qrho'} {'q95'} {'kappa'} ...
{'delta'} {'deltatop'} {'deltabot'} {'neint'} ...
{'ne'} {'te'} {'nerho'} {'terho'} ...
{'sxr'} {'sxR'} {'ece'}];
JETsig.iip=strmatch('Ip',JETkeywrdall,'exact');
JETsig.izmag=strmatch('zmag',JETkeywrdall,'exact');
JETsig.irmag=strmatch('rmag',JETkeywrdall,'exact');
JETsig.ircont=strmatch('rcont',JETkeywrdall,'exact');
JETsig.izcont=strmatch('zcont',JETkeywrdall,'exact');
JETsig.ivol=strmatch('vol',JETkeywrdall,'exact');
JETsig.iqrho=strmatch('qrho',JETkeywrdall,'exact');
JETsig.iq95=strmatch('q95',JETkeywrdall,'exact');
JETsig.ikappa=strmatch('kappa',JETkeywrdall,'exact');
JETsig.idelta=strmatch('delta',JETkeywrdall,'exact');
JETsig.ideltatop=strmatch('deltatop',JETkeywrdall,'exact');
JETsig.ideltabot=strmatch('deltabot',JETkeywrdall,'exact');
JETsig.ineint=strmatch('neint',JETkeywrdall,'exact');
JETsig.ine=strmatch('ne',JETkeywrdall,'exact');
JETsig.ite=strmatch('te',JETkeywrdall,'exact');
......@@ -149,6 +190,7 @@ JETsig.iece=strmatch('ece',JETkeywrdall,'exact');
JETkeywrdcase=cell(size(JETkeywrdall));
JETkeywrdcase(:)={'simplereaddata'};
JETkeywrdcase(JETsig.iqrho)=JETkeywrdall(JETsig.iqrho); % special as efit q on psi
JETkeywrdcase(JETsig.idelta)=JETkeywrdall(JETsig.idelta); % special as average of triu and tril
JETkeywrdcase(JETsig.ine)=JETkeywrdall(JETsig.ine); % special as adds error bars
JETkeywrdcase(JETsig.ite)=JETkeywrdall(JETsig.ite); % idem
JETkeywrdcase(JETsig.inerho)=JETkeywrdall(JETsig.inerho); % idem
......@@ -168,6 +210,13 @@ JETsiglocation(:)={''};
JETsiglocation(:,JETsig.iip)={'ppf'; 'efit/xip'};
JETsiglocation(:,JETsig.izmag)={'ppf'; 'efit/zmag'};
JETsiglocation(:,JETsig.irmag)={'ppf'; 'efit/rmag'};
JETsiglocation(:,JETsig.ircont)={'ppf' ; 'efit/rbnd'}; JETsigtimeindx(JETsig.ircont)=2;
JETsiglocation(:,JETsig.izcont)={'ppf' ; 'efit/zbnd'}; JETsigtimeindx(JETsig.izcont)=2;
JETsiglocation(:,JETsig.ivol)={'ppf'; 'equi/vol'};
JETsiglocation(:,JETsig.iq95)={'ppf'; 'efit/q95'};
JETsiglocation(:,JETsig.ikappa)={'ppf'; 'efit/elon'};
JETsiglocation(:,JETsig.ideltatop)={'ppf'; 'efit/triu'};
JETsiglocation(:,JETsig.ideltabot)={'ppf'; 'efit/tril'};
JETsiglocation(:,JETsig.ineint)={'ppf'; 'kg1v/lid3'};
% initialize order of substructures and allows just a "return" if data empty
......@@ -206,7 +255,7 @@ else
if isempty(index)
disp(' ')
disp('********************')
disp(['no such keyword: ' data_type_eff(1:end-i_23)])
disp(['no such keyword: ' data_type_eff])
disp(' ')
disp('Available keywords:')
JETkeywrdall(:)
......@@ -215,7 +264,7 @@ else
end
end
disp(' ')
disp(['loading' ' ' char(data_type_eff(end)) ' from JET shot #' num2str(shot)]);
disp(['loading' ' ' char(data_type_eff) ' from JET shot #' num2str(shot)]);
disp(['case ' JETkeywrdcase{index}])
disp(' ')
switch JETkeywrdcase{index}
......@@ -267,6 +316,22 @@ switch JETkeywrdcase{index}
trace.name=[ppftype '/' num2str(shot) '/' tracename];
error=e;
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case JETkeywrdall{JETsig.idelta}
% average of delatop and deltabot
ppftype='ppf';
tracename1=['efit/triu' name_ext];
tracename2=['efit/tril' name_ext];
[a1,x,t,d,e]=rda_eff(shot,ppftype,tracename1);
[a2,x,t,d,e]=rda_eff(shot,ppftype,tracename2);
trace.data=0.5.*(a1+a2);
trace.x=x;
trace.t=t;
trace.dim=[{trace.t}];
trace.dimunits=[{'time [s]'}];
trace.name=[ppftype '/' num2str(shot) '/efit/0.5(triu+tril)'];
error=e;
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
case {JETkeywrdall{JETsig.ine} , JETkeywrdall{JETsig.ite}}
% ne, te raw data from LIDR vs R,t. Add error bars
......
......@@ -124,6 +124,9 @@ if usemdsplus
end
mdsdisconnect;
if ~unix('test -d /home/duval/mdsplus')
rmpath('/home/duval/mdsplus')
end
else
% use RDA
......
......@@ -4,10 +4,15 @@
% 'Ip' = current
% 'zmag' = vertical position of the center of the plasma (magnetic axis)
% 'rmag' = radial position of the center of the plasma
% 'rcont' = R of plama flux surfaces
% 'zcont' = Z of plama flux surfaces
% 'rcont' = R of plama boundary vs time
% 'zcont' = Z of plama boundary vs time
% 'vol' = volume of flux surfaces
% 'qrho' = q profile on rho mesh
% 'q95' = q95 vs time
% 'kappa', 'elon' = edge elongation vs time
% 'delta', 'triang' = edge averaged triangularity vs time
% 'deltatop', 'triangtop' = edge upper (top) triangularity vs time
% 'deltabot', 'triangbot' = edge lower (bottom) triangularity vs time
% 'neint' = line-integrated electron density [m/m^3]
% 'ne'= ne raw profile on (z,t). ADD error bars in .std
% 'te'= Te raw profile on (z,t). ADD error bars in .std
......@@ -102,6 +107,21 @@ end
if ~isempty(strmatch(data_type_eff_noext,[{'VOL'} {'volume'}],'exact'))
data_type_eff_noext='vol';
end
if ~isempty(strmatch(data_type_eff_noext,[{'q_95'} {'Q95'}],'exact'))
data_type_eff_noext='q95';
end
if ~isempty(strmatch(data_type_eff_noext,[{'elongation'} {'elon'}],'exact'))
data_type_eff_noext='kappa';
end
if ~isempty(strmatch(data_type_eff_noext,[{'triangularity'} {'triang'}],'exact'))
data_type_eff_noext='delta';
end
if ~isempty(strmatch(data_type_eff_noext,[{'deltaup'} {'deltau'}{'triangtop'} {'triangu'} {'triangup'}],'exact'))
data_type_eff_noext='deltatop';
end
if ~isempty(strmatch(data_type_eff_noext,[{'deltalow'} {'deltal'}{'triangbot'} {'triangl'} {'trianglow'}],'exact'))
data_type_eff_noext='deltabot';
end
if ~isempty(strmatch(data_type_eff_noext,[{'Rmag'}],'exact'))
data_type_eff_noext='rmag';
end
......@@ -118,7 +138,8 @@ liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results:
{'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::psitbx:vol'}];
% all keywords and corresponding case to run below
TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'qrho'} {'neint'} ...
TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'qrho'} {'q95'} {'kappa'} ...
{'delta'} {'deltatop'} {'deltabot'} {'neint'} ...
{'ne'} {'te'} {'nerho'} {'terho'} {'profnerho'} {'profterho'} ...
{'neft'} {'teft'} {'neftav'} {'teftav'} ...
{'sxr'} {'sxR'} {'ece'}];
......@@ -129,6 +150,11 @@ TCVsig.ircont=strmatch('rcont',TCVkeywrdall,'exact');
TCVsig.izcont=strmatch('zcont',TCVkeywrdall,'exact');
TCVsig.ivol=strmatch('vol',TCVkeywrdall,'exact');
TCVsig.iqrho=strmatch('qrho',TCVkeywrdall,'exact');
TCVsig.iq95=strmatch('q95',TCVkeywrdall,'exact');
TCVsig.ikappa=strmatch('kappa',TCVkeywrdall,'exact');
TCVsig.idelta=strmatch('delta',TCVkeywrdall,'exact');
TCVsig.ideltatop=strmatch('deltatop',TCVkeywrdall,'exact');
TCVsig.ideltabot=strmatch('deltabot',TCVkeywrdall,'exact');
TCVsig.ineint=strmatch('neint',TCVkeywrdall,'exact');
TCVsig.ine=strmatch('ne',TCVkeywrdall,'exact');
TCVsig.ite=strmatch('te',TCVkeywrdall,'exact');
......@@ -171,6 +197,11 @@ TCVsiglocation(TCVsig.irmag)={'\results::r_axis'};
TCVsiglocation(TCVsig.ircont)={'\results::r_contour'}; TCVsigtimeindx(TCVsig.ircont)=2;
TCVsiglocation(TCVsig.izcont)={'\results::z_contour'}; TCVsigtimeindx(TCVsig.izcont)=2;
TCVsiglocation(TCVsig.ivol)={'\results::psitbx:vol'}; TCVsigtimeindx(TCVsig.ivol)=2;
TCVsiglocation(TCVsig.iq95)={'\results::q_95'};
TCVsiglocation(TCVsig.ikappa)={'\results::kappa_edge'};
TCVsiglocation(TCVsig.idelta)={'\results::delta_edge'};
TCVsiglocation(TCVsig.ideltatop)={'\results::delta_ed_top'};
TCVsiglocation(TCVsig.ideltabot)={'\results::delta_ed_bot'};
TCVsiglocation(TCVsig.ineint)={'\results::fir:lin_int_dens'};
TCVsiglocation(TCVsig.iprofnerho)={'\results::th_prof_ne'};
TCVsiglocation(TCVsig.iprofterho)={'\results::th_prof_te'};
......@@ -267,14 +298,14 @@ switch TCVkeywrdcase{index}
return
end
tracetdi=tdi(nodenameeff);
mdsclose(shot)
mdsclose
if isempty(tracetdi.data) | isnan(tracetdi.data)
disp(['node ' nodenameeff ' is empty for shot = ' num2str(shot)])
return
end
trace.data=tracetdi.data;
if TCVsigtimeindx(index)>0
trace.t=tracetdi.dim{TCVsigtimeindx(index)};
if TCVsigtimeindx(index)>0 | length(tracetdi.dim)==1
trace.t=tracetdi.dim{max(1,TCVsigtimeindx(index))};
ix=3-TCVsigtimeindx(index); % works only for 2D arrays
else
trace.t=tracetdi.dim{1};
......@@ -311,6 +342,7 @@ switch TCVkeywrdcase{index}
trace.dim=tracetdi.dim;
trace.dimunits=tracetdi.dimunits;
end
trace.name=[num2str(shot) ';' nodenameeff];
error=0;
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
......@@ -318,14 +350,17 @@ switch TCVkeywrdcase{index}
% ne or Te from Thomson data on raw z mesh vs (z,t)
mdsopen(shot);
if strcmp(TCVkeywrdcase{index},'ne')
tracetdi=tdi('\results::thomson:ne');
nodenameeff='\results::thomson:ne';
tracetdi=tdi(nodenameeff);
tracestd=tdi('\results::thomson:ne:error_bar');
else
tracetdi=tdi('\results::thomson:te');
nodenameeff='\results::thomson:te';
tracetdi=tdi(nodenameeff);
tracestd=tdi('\results::thomson:te:error_bar');
end
trace.data=tracetdi.data'; % Thomson data as (t,z)
trace.std=tracestd.data';
trace.name=[num2str(shot) ';' nodenameeff];
% add correct dimensions
time=mdsdata('\results::thomson:times');
z=mdsdata('\diagz::thomson_set_up:vertical_pos');
......@@ -340,14 +375,17 @@ switch TCVkeywrdcase{index}
% ne or Te from Thomson data on rho=sqrt(psi_normalised) mesh: (rho,t)
mdsopen(shot);
if strcmp(TCVkeywrdcase{index},'nerho')
tracetdi=tdi('\results::thomson:ne');
nodenameeff='\results::thomson:ne';
tracetdi=tdi(nodenameeff);
tracestd=tdi('\results::thomson:ne:error_bar');
else
tracetdi=tdi('\results::thomson:te');
nodenameeff='\results::thomson:te';
tracetdi=tdi(nodenameeff);
tracestd=tdi('\results::thomson:te:error_bar');
end
trace.data=tracetdi.data'; % Thomson data as (t,z)
trace.std=tracestd.data';
trace.name=[num2str(shot) ';' nodenameeff];
% add correct dimensions
time=mdsdata('\results::thomson:times');
% construct rho mesh
......@@ -366,12 +404,14 @@ switch TCVkeywrdcase{index}
case {'qrho'}
% q profile on psi from liuqe
mdsopen(shot);
tracetdi=tdi(['\results::q_psi' liuqe_ext]);
nodenameeff=['\results::q_psi' liuqe_ext];
tracetdi=tdi(nodenameeff);
trace.data=tracetdi.data;
trace.x=sqrt(tracetdi.dim{1}/10);
trace.t=tracetdi.dim{2};
trace.dim=[{trace.x};{trace.t}];
trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}];
trace.name=[num2str(shot) ';' nodenameeff];
mdsclose
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
......@@ -408,6 +448,7 @@ switch TCVkeywrdcase{index}
trace.t=t';
trace.dim=[{trace.x} ; {trace.t}];
trace.dimunits=[{'channel #'} ; {'time [s]'}];
trace.name=[num2str(shot) ';' 'get_xtomo_data'];
error=0;
%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
......@@ -435,6 +476,7 @@ switch TCVkeywrdcase{index}
trace.dim=[{trace.x} ; {trace.t}];
trace.dimunits=[{'channel #'} ; {'time [s]'}];
trace.R=R(a:b,:)';
trace.name=[num2str(shot) ';' '\results::ece...'];
radius.data=trace.R;
radius.t=trace.t;
varargout{1}={radius};
......@@ -452,7 +494,7 @@ switch TCVkeywrdcase{index}
if ~isempty(find(status == 1))
mdsopen(shot);
signal=get_mds_mio('MPX',[t_1 t_2]);
mdsclose(shot)
mdsclose
trace.data=signal.data;
for i=1:size(signal.dim{2},2)
trace.t(:,i)=signal.dim{1};
......@@ -460,6 +502,7 @@ switch TCVkeywrdcase{index}
end
trace.dim{1}={trace.t};
trace.dimunits={'time [s]'};
trace.name=[num2str(shot) ';' 'get_mds_mio(MPX)'];
[xchord,ychord]=mpx_geometry;
varargout{1}={VsxrTCVradius(zmag.data,xchord,ychord)};
error=0;
......
......@@ -6,21 +6,27 @@ function [trace,error,varargout] = gdat(shot,data_type,varargin)
% 'Ip' = current
% 'zmag' = vertical position of the center of the plasma (magnetic axis)
% 'rmag' = radial position of the center of the plasma
% 'rcont' = R of plama boundary vs time
% 'zcont' = Z of plama boundary vs time
% 'vol' = volume of flux surfaces vs rho=sqrt(psi)
% 'qrho' = q profile on rho mesh
% 'q95' = q95 vs time
% 'kappa', 'elon' = edge elongation vs time
% 'delta', 'triang' = edge averaged triangularity vs time
% 'deltatop', 'triangtop' = edge upper (top) triangularity vs time
% 'deltabot', 'triangbot' = edge lower (bottom) triangularity vs time
% 'neint' = line-integrated electron density [m/m^3]
% 'ne'= ne raw profile on (z,t). ADD error bars in .std
% 'te'= Te raw profile on (z,t). ADD error bars in .std
% 'nerho'= ne profile on (rho=sqrt(psi),time) mesh.Note rho is a 2D array as depends on time. ADD error bars in .std
% 'terho'= Te profile on (rho=sqrt(psi),time) mesh.Note rho is a 2D array as depends on time. ADD error bars in .std
% 'ece' = electron cyclotron emission
% 'sxr' = soft x-ray emission
% 'sxR' = soft x-ray emission with varargout{1} option (requires varargin{5}!)
%
% specific to TCV (see help loadTCVdata for more information)
% 'xx_2 or xx_3' for Liuqe2 or 3: same as above for xx related to equilibrium
% 'rcont' = R of plama flux surfaces
% 'zcont' = Z of plama flux surfaces
% 'vol' = volume of flux surfaces
% 'qrho' = q profile on rho mesh
% 'neint' = line-integrated electron density [m/m^3]
% 'ne'= ne raw profile on (z,t). ADD error bars in .std
% 'te'= Te raw profile on (z,t). ADD error bars in .std
% 'nerho'= ne profile on (rho=sqrt(psi),time) mesh.Note rho is a 2D array as depends on time. ADD error bars in .std
% 'terho'= Te profile on (rho=sqrt(psi),time) mesh.Note rho is a 2D array as depends on time. ADD error bars in .std
% 'profnerho' = ne smoothed or fitted , vs (rho,t) (from Thomson fit)
% 'profterho' = te smoothed or fitted , vs (rho,t) (from Thomson fit)
% 'neft' = ne fitted from data on rho mesh (from proffit.local_time:neft)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment