diff --git a/JET/rda_eff.m b/JET/rda_eff.m new file mode 100644 index 0000000000000000000000000000000000000000..21d7df82cbe47d00d8fa004618f6c33b5baa3b29 --- /dev/null +++ b/JET/rda_eff.m @@ -0,0 +1,106 @@ +function [data,time,x,hsig,error]=rda_eff(shot,pftype,tracename,varargin); +% +% gets data using RDA or mdsplus +% +% varargin{1}: time interval or timevalue, will get data closest to that time or within that time interval +% + +usemds=1; +time_int=[]; +if nargin>=4 & ~isempty(varargin{1}) + time_int=varargin{1}; +end + +if usemds + if ~unix('test -d /home/duval/mdsplus') + addpath('/home/duval/mdsplus') + end + mdsconnect('mdsplus.jet.efda.org') + + % defines trace to fetch + % after '?' specific details + separator='+'; + mainseparator='?'; + imaintrace=findstr(mainseparator,tracename); + if isempty(imaintrace) + maintrace=tracename; + uid=[]; + seq=[]; + diag=[]; + else + maintrace=tracename(1:imaintrace-1); + rest=tracename(imaintrace+1:end); + % gets uid if any + iuid=findstr('uid=',rest); + if isempty(iuid) + uid=[]; + else + ii=findstr(separator,rest(iuid:end)); + if isempty(ii) + uid=rest(iuid+4:end); + else + uid=rest(iuid+4:iuid+ii(1)-2); + end + end + % gets seq if any + iseq=findstr('seq=',rest); + if isempty(iseq) + seq=[]; + else + ii=findstr(separator,rest(iseq:end)); + if isempty(ii) + seq=rest(iseq+4:end); + else + seq=rest(iseq+4:iseq+ii(1)-2); + end + end + % gets diag if any + idiag=findstr('diag=',rest); + if isempty(idiag) + diag=[]; + else + ii=findstr(separator,rest(idiag:end)); + if isempty(ii) + diag=rest(idiag+5:end); + else + diag=rest(idiag+5:idiag+ii(1)-2); + end + end + + end + + % fetch value + if ~isempty(uid) + eval(['u=mdsvalue(''_sig=ppfuid("' uid '")'');']) + end + traceeff=[pftype '/' maintrace]; + if ~isempty(seq) + traceeff=[traceeff '/' num2str(seq)]; + end + user=getenv('USER'); + eval(['[data,error]=mdsvalue(''_rdaeff' user '=jet("' traceeff '",' num2str(shot) ')'');']) + hsig=[]; + ss=size(data); + nbofdim=length(ss); + if ss(end)==1; nbofdim=nbofdim-1; end + nbofdim=max(nbofdim,1); + switch nbofdim + case 1 + eval(['time=mdsvalue(''dim_of(_rdaeff' user ',0)'')']); + x=[]; + + case 2 + eval(['x=mdsvalue(''dim_of(_rdaeff' user ',0)'')']); + eval(['time=mdsvalue(''dim_of(_rdaeff' user ',1)'')']); + + case 3 + eval(['x=mdsvalue(''dim_of(_rdaeff' user ',0)'')']); + eval(['time=mdsvalue(''dim_of(_rdaeff' user ',1)'')']); + disp('3rd dimension in hsig!!!!!!!!!!!!!!!!!!!!!!!!!') + eval(['hsig=mdsvalue(''dim_of(_rdaeff' user ',2)'')']); + + otherwise + disp([' more than 3 dimensions for ' num2str(shot) ' ; ' pftype '/' tracename]) + error('in rda_eff') + +end