diff --git a/TCV/loadTCVdata.m b/TCV/loadTCVdata.m index 00f53072f4964aa00915691788a4a1be4d723f78..5486788d3b540dbda659391985a9f30216fc4b14 100644 --- a/TCV/loadTCVdata.m +++ b/TCV/loadTCVdata.m @@ -55,6 +55,7 @@ % trace.x: space of reference % trace.dim: cell array of grids, trace.dim{1}, {2}, ... % trace.dimunits: units of dimensions +% trace.units: units of data % % Additional Output arguments depending on data_type % @@ -149,9 +150,9 @@ end % nodes which have _2 and _3 equivalence, related to simpletdi case liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ... - {'\results::beta_tor'} {'\results::q_95'} {'\results::l_i'} {'\results::delta_95'} ... + {'\results::beta_tor'} {'\results::beta_pol'} {'\results::q_95'} {'\results::l_i'} {'\results::delta_95'} ... {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ... - {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'}]; + {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::rms_error'}]; % all keywords and corresponding case to run below TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'rhovol'} {'qrho'} {'q95'} {'kappa'} ... @@ -240,17 +241,20 @@ trace.x=[]; trace.t=[]; trace.dim=[]; trace.dimunits=[]; +trace.units=[]; +irpintwarn=0; % find index of signal called upon if strcmp(data_type_eff(1:1),'\') % in case full node name was given index=strmatch(data_type_eff(1:end-i_23),TCVsiglocation,'exact'); - if isempty(index) + if irpintwarn & isempty(index) disp('********************') disp('trace not yet registered.') disp('If standard data, ask andrea.scarabosio@epfl.ch or olivier.sauter@epfl.ch to create a keyqord entry for this data') % eval(['!mail -s ''' data_type_eff ' ' num2str(shot) ' ' getenv('USER') ' TCV'' olivier.sauter@epfl.ch < /dev/null']) disp('********************') + elseif isempty(index) % temporarily add entry in arrays, so can work below index=length(TCVkeywrdall)+1; TCVkeywrdall(end+1)={'new'}; @@ -275,8 +279,10 @@ else return end end -disp(['loading' ' ' data_type_eff_noext ' from TCV shot #' num2str(shot)]); -disp(['case ' TCVkeywrdcase{index}]) +if irpintwarn + disp(['loading' ' ' data_type_eff_noext ' from TCV shot #' num2str(shot)]); + disp(['case ' TCVkeywrdcase{index}]) +end if i_23==2 & isempty(strmatch(TCVsiglocation(index),liuqe23,'exact')) & strcmp(TCVkeywrdcase{index},'simpletdi') disp('********') disp('Warning asks for liuqe 2 or 3 of a signal, but not in liuqe23 list in loadTCVdata') @@ -315,7 +321,11 @@ switch TCVkeywrdcase{index} end trace.data=tracetdi.data; - if TCVsigtimeindx(index)>0 | length(tracetdi.dim)==1 + if length(tracetdi.dim)==0 + % scalar + trace.x=[]; + trace.t=[]; + elseif 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 @@ -358,6 +368,10 @@ switch TCVkeywrdcase{index} trace.dim=tracetdi.dim; trace.dimunits=tracetdi.dimunits; end + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end + trace.name=[num2str(shot) ';' nodenameeff]; error=0; @@ -385,6 +399,9 @@ switch TCVkeywrdcase{index} trace.dimunits=[{'Z [m]'} ; {'time [s]'}]; trace.x=z; trace.t=time; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end mdsclose('mdsip') %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @@ -416,6 +433,9 @@ switch TCVkeywrdcase{index} trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}]; trace.x=rho; trace.t=time; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end mdsclose %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @@ -429,6 +449,9 @@ switch TCVkeywrdcase{index} trace.t=tracetdi.dim{2}; trace.dim=[{trace.x};{trace.t}]; trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}]; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end trace.name=[num2str(shot) ';' nodenameeff]; mdsclose @@ -448,10 +471,19 @@ switch TCVkeywrdcase{index} tracetdi.dim{2}=fsg.vol.grid.t'; end trace.data=tracetdi.data; - trace.x=tracetdi.dim{1}; - trace.t=tracetdi.dim{2}; - trace.dim=[{trace.x};{trace.t}]; + if isempty(tracetdi.data) + trace.x=tracetdi.dim; + trace.t=tracetdi.dim; + trace.dim=tracetdi.dim; + else + trace.x=tracetdi.dim{1}; + trace.t=tracetdi.dim{2}; + trace.dim=[{trace.x};{trace.t}]; + end trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}]; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end trace.name=[num2str(shot) ';' nodenameeff liuqe_ext]; mdsclose @@ -478,6 +510,9 @@ switch TCVkeywrdcase{index} trace.t=tracetdi.dim{2}; trace.dim=[{trace.x};{trace.t}]; trace.dimunits=[{'sqrt(psi)'} ; {'time [s]'}]; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end trace.name=[num2str(shot) '; sqrt(V/Va) from ' nodenameeff liuqe_ext]; mdsclose @@ -510,8 +545,7 @@ switch TCVkeywrdcase{index} end t_1=zmag.t(1); t_2=zmag.t(end); - [xtomo_signal,t]=get_xtomo_data(shot,t_1,t_2,13e-6*16, ... - icamera,angfact); + [xtomo_signal,t]=get_xtomo_data(shot,t_1,t_2,13e-6*16,icamera,angfact); data=interp1(zmag.t,zmag.data,t'); radius.data=VsxrTCVradius(data,xchord,ychord)'; radius.t=t'; @@ -562,6 +596,9 @@ switch TCVkeywrdcase{index} radius.t=trace.t; varargout{1}={radius}; error=0; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end mdsclose %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @@ -601,6 +638,9 @@ switch TCVkeywrdcase{index} trace.t=tracetdi.dim{1}; trace.dim=tracetdi.dim; trace.dimunits={'time [s]'}; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end trace.name=[num2str(shot) ';' nodenameeff{1} ',' nodenameeff{2}]; mdsclose error=0; @@ -616,6 +656,9 @@ switch TCVkeywrdcase{index} trace.t=tracetdi.dim{1}; trace.dim=tracetdi.dim; trace.dimunits={'time [s]'}; + if isfield(tracetdi,'units'); + trace.units=tracetdi.units; + end trace.name=[num2str(shot) ';' nodenameeff{1} ',' nodenameeff{2}]; mdsclose error=0;