diff --git a/crpptbx/AUG/loadAUGdata.m b/crpptbx/AUG/loadAUGdata.m index ce94c68715852c529a5eba497a0239ae10b862ad..28ba12bdbc7a7dbc99934e9af614698ef9eb34b7 100644 --- a/crpptbx/AUG/loadAUGdata.m +++ b/crpptbx/AUG/loadAUGdata.m @@ -8,7 +8,10 @@ function [trace,error,varargout]=loadAUGdata(shot,data_type,varargin) % 'sxR' = soft x-ray emission with varargout{1} option (requires varargin{5}!) % 'SXB' = soft x-ray emission from (by default camera J) SXB/J_xx camera (sxb, sxB, etc all work) % -% gdat(15133,'MAG/Ipi',1,'AUG') +% gdat(15133,'MAG/Ipa',1,'AUG') % uses experiment=AUGD shotfiles per default +% gdat(15133,'MAG/Ipa',1) (sufficient at AUG since 'AUG' per defaut, same with gdat(15133,'ip',1) +% gdat(15133,'AUGD/MAG/Ipa',1,'AUG') % to specify experiment explicitely like in: +% gdat(30230,'ECED/RMD/Trad-A',1,'AUG') % % % INPUT: % shot: shot number @@ -52,14 +55,22 @@ function [trace,error,varargout]=loadAUGdata(shot,data_type,varargin) varargout={cell(1,1)}; error=1; +shotfile_exp = 'AUGD'; % To allow multiple ways of writing a specific keyword, use data_type_eff within this routine data_type_eff=data_type; if size(data_type_eff,1)==1 - i=findstr('/',data_type_eff); - if length(i)>=1 + i=findstr('/',data_type); + if length(i)==1 % assumes given a la 'MAG/Ipi' - data_type_eff=[{data_type_eff(1:i(1)-1)} ; {data_type_eff(i(1)+1:end)}]; + data_type_eff=[{data_type(1:i(1)-1)} ; {data_type(i(1)+1:end)}]; + elseif length(i)==2 + % assumes given a la 'AUGD/MAG/Ipi' or 'ECED/RMP/Trad-A' + data_type_eff=[{data_type(i(1)+1:i(2)-1)} ; {data_type(i(2)+1:end)}]; + shotfile_exp = data_type(1:i(1)-1); + else + disp(['more / than expected in tracename: length(i)= ' num2str(length(i))]) + data_type end end @@ -181,7 +192,7 @@ AUGsigtimeindx=ones(size(AUGkeywrdall)); % for the other cases, leave this location empty AUGsiglocation=cell(2,size(AUGkeywrdall,2)); AUGsiglocation(:)={''}; -AUGsiglocation(:,AUGsig.iip)={'MAG'; 'Ipi'}; +AUGsiglocation(:,AUGsig.iip)={'MAG'; 'Ipa'}; AUGsiglocation(:,AUGsig.izmag)={'FPG'; 'Zmag'}; AUGsiglocation(:,AUGsig.irmag)={'FPG'; 'Rmag'}; AUGsiglocation(:,AUGsig.ircont)={'' ; ''}; AUGsigtimeindx(AUGsig.ircont)=2; @@ -269,7 +280,7 @@ switch AUGkeywrdcase{index} end ij=find(tracename~=''''); tracename=tracename(ij) - [a,e]=rdaAUG_eff(shot,ppftype,tracename); + [a,e]=rdaAUG_eff(shot,ppftype,tracename,shotfile_exp); % switch tracename % special cases if traces do not exist for some shot or other % end @@ -277,7 +288,9 @@ switch AUGkeywrdcase{index} trace=a; clear error error=e; - if length(size(trace.data))==1 | (length(size(trace.data))==2 & size(trace.data,2)==1) + if isempty(trace.data) + trace.dimunits=[]; + elseif length(size(trace.data))==1 | (length(size(trace.data))==2 & size(trace.data,2)==1) trace.dim=[{trace.t}]; trace.dimunits={'time [s]'}; elseif length(size(trace.data))==2 @@ -325,7 +338,7 @@ switch AUGkeywrdcase{index} trace.t=[]; trace.x=[]; ppftype='SXR'; - [a,e]=rdaAUG_eff(shot,ppftype,tracename,timerange); + [a,e]=rdaAUG_eff(shot,ppftype,tracename,shotfile_exp,timerange); trace=a; trace.dim=[{[starti:endi]'} ; {trace.t}]; trace.x=trace.dim{1}; @@ -397,7 +410,7 @@ switch AUGkeywrdcase{index} iok=0; for ichord=starti:endi tracename_eff = [tracename '_' num2str(ichord,'%.3d')]; - [a,e]=rdaAUG_eff(shot,ppftype,tracename_eff,timerange); + [a,e]=rdaAUG_eff(shot,ppftype,tracename_eff,shotfile_exp,timerange); if isempty(a) || e~=0 trace_all = struct([]); else @@ -439,9 +452,9 @@ switch AUGkeywrdcase{index} case {'te', 'ne'} if strcmp(AUGkeywrdcase{index},'te') - [a,e]=rdaAUG_eff(shot,'YPR','Te'); + [a,e]=rdaAUG_eff(shot,'YPR','Te',shotfile_exp); else - [a,e]=rdaAUG_eff(shot,'YPR','Ne'); + [a,e]=rdaAUG_eff(shot,'YPR','Ne',shotfile_exp); end trace = a; trace.data = a.value'; @@ -458,18 +471,18 @@ switch AUGkeywrdcase{index} else DIAG = 'EQI'; end - [a,e]=rdaAUG_eff(shot,DIAG,'Qpsi'); + [a,e]=rdaAUG_eff(shot,DIAG,'Qpsi',shotfile_exp); % Qpsi has inverted channel/time from CEC a.value = a.value(:,end:-1:1)'; a.data = a.value; % get x values - [psi,e]=rdaAUG_eff(shot,DIAG,'PFL'); + [psi,e]=rdaAUG_eff(shot,DIAG,'PFL',shotfile_exp); psi.value=psi.value(:,end:-1:1)'; psi_axis= (ones(size(psi.value,1),1) * psi.value(1,:)); a.x = sqrt(abs((psi.value-psi_axis) ./(zeros(size(psi.value))-psi_axis) )); % psi_edge=0 assumed a.psi = psi.value; % get time values - [psi_time,e]=rdaAUG_eff(shot,DIAG,'time'); + [psi_time,e]=rdaAUG_eff(shot,DIAG,'time',shotfile_exp); if length(psi_time.value) > length(a.x(1,:)) a.t = psi_time.value(1:length(a.x(1,:))); % problem with times?? elseif length(psi_time.value) < length(a.x(1,:)) @@ -479,12 +492,12 @@ switch AUGkeywrdcase{index} a.t = psi_time.value; end % get rhotor values - [phi,e]=rdaAUG_eff(shot,DIAG,'TFLx'); + [phi,e]=rdaAUG_eff(shot,DIAG,'TFLx',shotfile_exp); phi.value=phi.value(:,end:-1:1)'; a.rhotor = sqrt(abs(phi.value ./ (ones(size(phi.value,1),1) * phi.value(end,:)))); a.torflux = phi.value; % get rhovol values - [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol'); + [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',shotfile_exp); Vol.value=Vol.value(:,end-1:-2:1)'; % 2nd index are dV/dpsi a.rhovol = sqrt(abs(Vol.value ./ (ones(size(Vol.value,1),1) * Vol.value(end,:)))); a.volume = Vol.value; diff --git a/crpptbx/AUG/rdaAUG_eff.m b/crpptbx/AUG/rdaAUG_eff.m index d69299c04cf60234053a5c859e804757de945e82..f8ef57eac2d0191a4da9bba4b112443608f1ffde 100644 --- a/crpptbx/AUG/rdaAUG_eff.m +++ b/crpptbx/AUG/rdaAUG_eff.m @@ -1,4 +1,4 @@ -function [adata,error]=rdaAUG_eff(shot,diagname,sigtype,varargin); +function [adata,error]=rdaAUG_eff(shot,diagname,sigtype,shotfile_exp,varargin); % % gets data using sf2sig or mdsplus (when mdsplus will be available) % 1D arrays: assumes dimension is time @@ -24,7 +24,7 @@ if isempty(usemdsplus); usemdsplus=1; end error=1; time_int=[]; -if nargin>=4 & ~isempty(varargin{1}) +if nargin>=5 & ~isempty(varargin{1}) time_int=varargin{1}; end @@ -43,7 +43,7 @@ if usemdsplus end user=getenv('USER'); - if nargin>=4 & ~isempty(varargin{1}) + if nargin>=5 & ~isempty(varargin{1}) ['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '",,,' ... num2str(varargin{1}(1),'%.14f') ',' num2str(varargin{1}(end),'%.14f') ')'');'] eval(['[data,error]=mdsvalue(''_rdaeff' user diagname '=augsignal(' num2str(shot) ',"' diagname '","' sigtype '",,,' ... @@ -89,23 +89,27 @@ else % use sf2sig if isempty(time_int) try - [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype); + [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,'-exp',shotfile_exp); catch - adata = struct([]); - adata_time = struct([]); + adata.value = []; + adata.data = []; + adata.dim = []; + adata_time.data = []; adata_area = []; end else try - [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)]); + [adata,adata_time, adata_area]=sf2sig(diagname,shot,sigtype,[time_int(1);time_int(end)],'-exp',shotfile_exp); catch - adata = struct([]); - adata_time = struct([]); + adata.value = []; + adata.data = []; + adata.dim = []; + adata_time.data = []; adata_area = []; end end - if isempty(adata) + if isempty(adata.value) return end @@ -121,6 +125,8 @@ else adata.time_aug = adata_time; adata.area = adata_area; + + adata.exp = shotfile_exp; if (prod(size(adata.value))==length(adata.value)) % only time signal