From bf432760027bdbebd476df7fe7c5b8df53b3377b Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Tue, 12 Dec 2017 17:00:23 +0000 Subject: [PATCH] add extra_arg_sf2sig parameter, see help gdat_aug git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@9099 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/AUG/aug_help_parameters.m | 1 + crpptbx/AUG/gdat_aug.m | 160 ++++++++++++++++-------------- crpptbx/AUG/geteqdskAUG.m | 20 +++- 3 files changed, 104 insertions(+), 77 deletions(-) diff --git a/crpptbx/AUG/aug_help_parameters.m b/crpptbx/AUG/aug_help_parameters.m index 9a5663e8..33acd39c 100644 --- a/crpptbx/AUG/aug_help_parameters.m +++ b/crpptbx/AUG/aug_help_parameters.m @@ -27,6 +27,7 @@ help_struct_all = struct(... % $$$ help_struct_all.time_interval = ['if provided sets a specific time interval [tstart tend].' ... % $$$ char(10) 'cxrs: (time_interval can have several nbs) take data and average over time interval(s) only, plots from CXRS_get_profiles are then provided' ... % $$$ ' as well']; +help_struct_all.extra_arg_sf2sig = 'extra parameters given to sf2sig type of calls, should be effective full args in one string like extra_arg_sf2sig= ''''''-ed'''',2'''; help_struct_all.fit_tension = ['smoothing value used in interpos fitting routine, -30 means ''30 times default value'', thus -1 often a' ... ' good value' char(10) ... 'cxrs, nete: if numeric, default for all cases, if structure, default for non given fields']; diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m index 42130172..55f187c3 100644 --- a/crpptbx/AUG/gdat_aug.m +++ b/crpptbx/AUG/gdat_aug.m @@ -48,6 +48,7 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_aug(shot,data_req % a4=gdat('opt1',123,'opt2',[1 2 3],'shot',48832,'data_request','Ip','opt3','aAdB'); % all in pairs % a5=gdat(32827,'ip'); % standard call % a6=gdat(32827,'ip','Opt1',123,'Doplot',1,'opt2','Abc'); % standard call with a few options (note all lowercase in output) +% eqd = gdat(33134,'eqdsk','equil','IDE','time',2,'extra_arg_sf2sig','''-ed'',2'); % % Comments for local developer: @@ -197,10 +198,20 @@ if (nargin>=ivarargin_first_char) end end data_request_eff = gdat_params.data_request; % in case was defined in pairs +% defaults for all % default equil: if ~isfield(gdat_params,'equil'); gdat_params.equil = 'EQI'; end if isfield(gdat_params,'source') && (any(strcmp(lower(gdat_params.source),'ide')) || any(strcmp(lower(gdat_params.source),'idg')) ... - || any(strcmp(lower(gdat_params.source),'ida'))); gdat_params.equil = 'IDE'; end + || any(strcmp(lower(gdat_params.source),'ida'))) + gdat_params.equil = 'IDE'; +end +extra_arg_sf2sig = '[]'; +if isfield(gdat_params,'extra_arg_sf2sig') && ~isempty(gdat_params.extra_arg_sf2sig) + extra_arg_sf2sig = gdat_params.extra_arg_sf2sig; +else + gdat_params.extra_arg_sf2sig = extra_arg_sf2sig; +end +gdat_params.extra_arg_sf2sig = extra_arg_sf2sig; % if it is a request_keyword can obtain description: if ischar(data_request_eff) || length(data_request_eff)==1 @@ -276,11 +287,11 @@ if strcmp(mapping_for_aug.method,'signal') % time interval time_interval = []; % extra args for sf2sig - extra_arg_sf2sig = []; if length(mapping_for_aug.expression)>=4 && ~isempty(mapping_for_aug.expression{4}) - extra_arg_sf2sig = mapping_for_aug.expression{4}; + gdat_data.gdat_params.extra_arg_sf2sig = mapping_for_aug.expression{4}; end - [aatmp,error_status]=rdaAUG_eff(shot,mapping_for_aug.expression{1},mapping_for_aug.expression{2},exp_location,time_interval,extra_arg_sf2sig); + [aatmp,error_status]=rdaAUG_eff(shot,mapping_for_aug.expression{1},mapping_for_aug.expression{2},exp_location, ... + time_interval,gdat_data.gdat_params.extra_arg_sf2sig); if error_status~=0 if gdat_params.nverbose>=3; disp(['error after rdaAUG in signal with data_request_eff= ' data_request_eff]); end return @@ -439,7 +450,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') diag_name = gdat_data.gdat_params.source; % R, Z positions of measurements try - [r_time]=sf2ab(diag_name,shot,r_node,'-exp',exp_name_eff); + eval(['[r_time]=sf2ab(diag_name,shot,r_node,''-exp'',exp_name_eff,' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch ME_R_time % assume no shotfile getReport(ME_R_time,'basic'); @@ -448,11 +459,11 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.r = r_time.value{1}; inotok=find(gdat_data.r<=0); gdat_data.r(inotok) = NaN; - [z_time]=sf2ab(diag_name,shot,z_node,'-exp',exp_name_eff); + eval(['[z_time]=sf2ab(diag_name,shot,z_node,''-exp'',exp_name_eff,' gdat_data.gdat_params.extra_arg_sf2sig ');']); gdat_data.z = z_time.value{1}; inotok=find(gdat_data.z<=0); gdat_data.z(inotok) = NaN; - [time]=sf2tb(diag_name,shot,'time','-exp',exp_name_eff); + eval(['[time]=sf2tb(diag_name,shot,''time'',''-exp'',exp_name_eff,' gdat_data.gdat_params.extra_arg_sf2sig ');']); gdat_data.t = time.value; gdat_data.dim{1} = {gdat_data.r , gdat_data.z}; gdat_data.dimunits{1} = 'R, Z [m]'; @@ -460,7 +471,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.dimunits{2} = 't [s]'; gdat_data.x = gdat_data.dim{1}; % vrot - [a,error_status]=rdaAUG_eff(shot,diag_name,'vrot',exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,diag_name,'vrot',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); if isempty(a.data) || isempty(a.t) || error_status>0 if gdat_params.nverbose>=3; a @@ -471,13 +482,13 @@ elseif strcmp(mapping_for_aug.method,'switchcase') if any(strcmp(fieldnames(a),'units')); gdat_data.vrot.units=a.units; end if any(strcmp(fieldnames(a),'name')); gdat_data.vrot.name=a.name; end gdat_data.vrot.label = 'vrot_tor'; - [aerr,e]=rdaAUG_eff(shot,diag_name,'err_vrot',exp_name_eff); + [aerr,e]=rdaAUG_eff(shot,diag_name,'err_vrot',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.vrot.error_bar = aerr.data; % Ti % [a,e]=rdaAUG_eff(shot,diag_name,'Ti',exp_name_eff); % [aerr,e]=rdaAUG_eff(shot,diag_name,'err_Ti',exp_name_eff); - [a,e]=rdaAUG_eff(shot,diag_name,'Ti_c',exp_name_eff); - [aerr,e]=rdaAUG_eff(shot,diag_name,'err_Ti_c',exp_name_eff); + [a,e]=rdaAUG_eff(shot,diag_name,'Ti_c',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); + [aerr,e]=rdaAUG_eff(shot,diag_name,'err_Ti_c',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.ti.data = a.data; gdat_data.data = a.data; gdat_data.label = [gdat_data.label '/Ti']; @@ -656,8 +667,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase') exp_name_eff = 'ECED'; gdat_data.gdat_params.exp_name = exp_name_eff; end - [a,e]=rdaAUG_eff(shot,diag_name,'Trad-A',exp_name_eff,time_interval); - % [a,e]=rdaAUG_eff(shot,diag_name,'Trad-A',exp_name_eff); + [a,e]=rdaAUG_eff(shot,diag_name,'Trad-A',exp_name_eff,time_interval,gdat_data.gdat_params.extra_arg_sf2sig); + % [a,e]=rdaAUG_eff(shot,diag_name,'Trad-A',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); inb_chord = size(a.data,1); if channels(1)<=0 channels = [1:inb_chord]; @@ -676,11 +687,11 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.dimunits=[{'channels'} ; {'time [s]'}]; if any(strcmp(fieldnames(a),'units')); gdat_data.units=a.units; end try - [aR,e]=rdaAUG_eff(shot,diag_name,'R-A',exp_name_eff,time_interval); + [aR,e]=rdaAUG_eff(shot,diag_name,'R-A',exp_name_eff,time_interval,gdat_data.gdat_params.extra_arg_sf2sig); catch end try - [aZ,e]=rdaAUG_eff(shot,diag_name,'z-A',exp_name_eff,time_interval); + [aZ,e]=rdaAUG_eff(shot,diag_name,'z-A',exp_name_eff,time_interval,gdat_data.gdat_params.extra_arg_sf2sig); catch disp(['problem with getting z-A in ' diag_name]) end @@ -785,7 +796,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') for itime=1:length(time_eqdsks) time_eff = time_eqdsks(itime); % use read_results updated to effectively obtain an eqdsk with sign correct with COCOS=2 - [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(equil,time_eff,gdat_data.gdat_params.zshift,'source',gdat_data.gdat_params.equil); + [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(equil,time_eff,gdat_data.gdat_params.zshift,'source',gdat_data.gdat_params.equil,'extra_arg_sf2sig',gdat_data.gdat_params.extra_arg_sf2sig); eqdskAUG.fnamefull = fullfile(['/tmp/' getenv('USER')],['EQDSK_' num2str(shot) 't' num2str(time_eff,'%.4f')]); cocos_out = equil.cocos; if isfield(gdat_data.gdat_params,'cocos') && ~isempty(gdat_data.gdat_params.cocos) @@ -834,7 +845,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') % get equil params and time array in gdat_data.t [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL,M_Rmesh,N_Zmesh] = get_EQ_params(gdat_data); % since Lpf depends on time, need to load all first and then loop over time for easier mapping - [qpsi,e]=rdaAUG_eff(shot,DIAG,'Qpsi',exp_name_eff); + [qpsi,e]=rdaAUG_eff(shot,DIAG,'Qpsi',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); ndimrho = size(qpsi.data,2); if ndimrho==NTIME_Lpf % data seems to be transposed @@ -846,55 +857,55 @@ elseif strcmp(mapping_for_aug.method,'switchcase') qpsi=adapt_rda(qpsi,NTIME,ndimrho,itotransposeback); ijnan=find(isnan(qpsi.value)); qpsi.value(ijnan)=0; - [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff); + [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); psi_tree=adapt_rda(psi_tree,NTIME,ndimrho,itotransposeback); - [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff); + [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); phi_tree=adapt_rda(phi_tree,NTIME,ndimrho,itotransposeback); - [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff); + [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Vol=adapt_rda(Vol,NTIME,2*ndimrho,itotransposeback); - [Area,e]=rdaAUG_eff(shot,DIAG,'Area',exp_name_eff); + [Area,e]=rdaAUG_eff(shot,DIAG,'Area',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Area=adapt_rda(Area,NTIME,2*ndimrho,itotransposeback); - [Ri,e]=rdaAUG_eff(shot,DIAG,'Ri',exp_name_eff); + [Ri,e]=rdaAUG_eff(shot,DIAG,'Ri',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Ri=adapt_rda(Ri,NTIME,M_Rmesh,itotransposeback); - [Zj,e]=rdaAUG_eff(shot,DIAG,'Zj',exp_name_eff); + [Zj,e]=rdaAUG_eff(shot,DIAG,'Zj',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Zj=adapt_rda(Zj,NTIME,N_Zmesh,itotransposeback); - [PFM_tree,e]=rdaAUG_eff(shot,DIAG,'PFM','-raw','-exp',exp_name_eff); % -raw necessary for IDE + [PFM_tree,e]=rdaAUG_eff(shot,DIAG,'PFM',exp_name_eff,[],['''-raw'',' gdat_data.gdat_params.extra_arg_sf2sig]); % -raw necessary for IDE PFM_tree=adaptPFM_rda(PFM_tree,M_Rmesh,N_Zmesh,NTIME); - [Pres,e]=rdaAUG_eff(shot,DIAG,'Pres',exp_name_eff); + [Pres,e]=rdaAUG_eff(shot,DIAG,'Pres',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Pres=adapt_rda(Pres,NTIME,2*ndimrho,itotransposeback); - [Jpol,e]=rdaAUG_eff(shot,DIAG,'Jpol',exp_name_eff); + [Jpol,e]=rdaAUG_eff(shot,DIAG,'Jpol',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Jpol=adapt_rda(Jpol,NTIME,2*ndimrho,itotransposeback); - [FFP,e]=rdaAUG_eff(shot,DIAG,'FFP',exp_name_eff); + [FFP,e]=rdaAUG_eff(shot,DIAG,'FFP',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); if ~isempty(FFP.value) FFP=adapt_rda(FFP,NTIME,ndimrho,itotransposeback); else FFP.value=NaN*ones(NTIME,max(Lpf1_t)); end if strcmp(DIAG,'EQI') || strcmp(DIAG,'EQH') || strcmp(DIAG,'IDE') - [Rinv,e]=rdaAUG_eff(shot,DIAG,'Rinv',exp_name_eff); + [Rinv,e]=rdaAUG_eff(shot,DIAG,'Rinv',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Rinv=adapt_rda(Rinv,NTIME,ndimrho,itotransposeback); - [R2inv,e]=rdaAUG_eff(shot,DIAG,'R2inv',exp_name_eff); + [R2inv,e]=rdaAUG_eff(shot,DIAG,'R2inv',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); R2inv=adapt_rda(R2inv,NTIME,ndimrho,itotransposeback); - [Bave,e]=rdaAUG_eff(shot,DIAG,'Bave',exp_name_eff); + [Bave,e]=rdaAUG_eff(shot,DIAG,'Bave',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Bave=adapt_rda(Bave,NTIME,ndimrho,itotransposeback); - [B2ave,e]=rdaAUG_eff(shot,DIAG,'B2ave',exp_name_eff); + [B2ave,e]=rdaAUG_eff(shot,DIAG,'B2ave',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); B2ave=adapt_rda(B2ave,NTIME,ndimrho,itotransposeback); if strcmp(DIAG,'IDE') FTRA.value=[]; else - [FTRA,e]=rdaAUG_eff(shot,DIAG,'FTRA',exp_name_eff); + [FTRA,e]=rdaAUG_eff(shot,DIAG,'FTRA',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); FTRA=adapt_rda(FTRA,NTIME,ndimrho,itotransposeback); end else Rinv.value=[]; R2inv.value=[]; Bave.value=[]; B2ave.value=[]; FTRA.value=[]; end - [LPFx,e]=rdaAUG_eff(shot,DIAG,'LPFx',exp_name_eff); + [LPFx,e]=rdaAUG_eff(shot,DIAG,'LPFx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); LPFx.value=LPFx.value(1:NTIME); LPFx.data=LPFx.value; LPFx.t=LPFx.t(1:NTIME); - [PFxx,e]=rdaAUG_eff(shot,DIAG,'PFxx',exp_name_eff); + [PFxx,e]=rdaAUG_eff(shot,DIAG,'PFxx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); PFxx=adapt_rda(PFxx,NTIME,max(LPFx.value)+1,itotransposeback); - [RPFx,e]=rdaAUG_eff(shot,DIAG,'RPFx',exp_name_eff); + [RPFx,e]=rdaAUG_eff(shot,DIAG,'RPFx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); RPFx=adapt_rda(RPFx,NTIME,max(LPFx.value)+1,itotransposeback); - [zPFx,e]=rdaAUG_eff(shot,DIAG,'zPFx',exp_name_eff); + [zPFx,e]=rdaAUG_eff(shot,DIAG,'zPFx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); zPFx=adapt_rda(zPFx,NTIME,max(LPFx.value)+1,itotransposeback); % seems "LCFS" q-value is far too large, limit to some max (when diverted) max_qValue = 30.; % Note could just put a NaN on LCFS value since ill-defined when diverted @@ -988,19 +999,19 @@ elseif strcmp(mapping_for_aug.method,'switchcase') end gdat_data.x = gdat_data.rhopolnorm; % - [equil_Rcoil,e]=rdaAUG_eff(shot,DIAG,'Rcl',exp_name_eff); + [equil_Rcoil,e]=rdaAUG_eff(shot,DIAG,'Rcl',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.Rcoils=equil_Rcoil.value; - [equil_Zcoil,e]=rdaAUG_eff(shot,DIAG,'Zcl',exp_name_eff); + [equil_Zcoil,e]=rdaAUG_eff(shot,DIAG,'Zcl',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.Zcoils=equil_Zcoil.value; % if strcmp(DIAG,'IDE') - [IpiPSI,e]=rdaAUG_eff(shot,'IDG','Itor',exp_name_eff); + [IpiPSI,e]=rdaAUG_eff(shot,'IDG','Itor',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); if length(IpiPSI.value)~=NTIME disp('Problem with nb time points of IDG/Itor with respect to IDE NTIME, check with O. Sauter') return end else - [IpiPSI,e]=rdaAUG_eff(shot,DIAG,'IpiPSI',exp_name_eff); + [IpiPSI,e]=rdaAUG_eff(shot,DIAG,'IpiPSI',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); end gdat_data.Ip = IpiPSI.value(1:NTIME); % @@ -1019,7 +1030,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') % ne or Te from Thomson data on raw z mesh vs (z,t) nodenameeff = [upper(data_request_eff(1)) 'e_c']; node_child_nameeff = [upper(data_request_eff(1)) 'e_core']; - [a,error_status]=rdaAUG_eff(shot,'VTA',nodenameeff,exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA',nodenameeff,exp_name_eff),[],gdat_data.gdat_params.extra_arg_sf2sig; if isempty(a.data) || isempty(a.t) || error_status>0 if gdat_params.nverbose>=3; a @@ -1033,12 +1044,12 @@ elseif strcmp(mapping_for_aug.method,'switchcase') if any(strcmp(fieldnames(a),'units')) gdat_data.units=a.units; end - [alow,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'elow_c'],exp_name_eff); - [aup,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'eupp_c'],exp_name_eff); + [alow,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'elow_c'],exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); + [aup,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'eupp_c'],exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff)).error_bar = max(aup.value-gdat_data.(lower(node_child_nameeff)).data,gdat_data.(lower(node_child_nameeff)).data-alow.value); - [a,error_status]=rdaAUG_eff(shot,'VTA','R_core',exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA','R_core',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff)).r = repmat(a.data,size(gdat_data.(lower(node_child_nameeff)).data,1),1); - [a,error_status]=rdaAUG_eff(shot,'VTA','Z_core',exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA','Z_core',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff)).z = repmat(a.data',1,size(gdat_data.(lower(node_child_nameeff)).data,2)); gdat_data.dimunits=[{'Z [m]'} ; {'time [s]'}]; gdat_data.data_fullpath=[data_request_eff ' from VTA/' upper(data_request_eff(1)) 'e_c and ' upper(data_request_eff(1)) 'e_e']; @@ -1051,22 +1062,22 @@ elseif strcmp(mapping_for_aug.method,'switchcase') % add edge part nodenameeff_e = [upper(data_request_eff(1)) 'e_e']; node_child_nameeff_e = [upper(data_request_eff(1)) 'e_edge']; - [a,error_status]=rdaAUG_eff(shot,'VTA',nodenameeff_e,exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA',nodenameeff_e,exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff_e)).data = a.data; ij_edge_notok = find(a.data>5e21); gdat_data.(lower(node_child_nameeff_e)).data(ij_edge_notok) = NaN; gdat_data.(lower(node_child_nameeff_e)).t = a.t; if ~isempty(a.data) - [a,error_status]=rdaAUG_eff(shot,'VTA','R_edge',exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA','R_edge',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff_e)).r = repmat(a.data,size(gdat_data.(lower(node_child_nameeff_e)).data,1),1); - [a,error_status]=rdaAUG_eff(shot,'VTA','Z_edge',exp_name_eff); + [a,error_status]=rdaAUG_eff(shot,'VTA','Z_edge',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff_e)).z = repmat(a.data',1,size(gdat_data.(lower(node_child_nameeff_e)).data,2)); nb_edge = size(gdat_data.(lower(node_child_nameeff_e)).z,1); iaaa=iround_os(gdat_data.(lower(node_child_nameeff_e)).t,gdat_data.(lower(node_child_nameeff)).t); gdat_data.data(nb_core+1:nb_core+nb_edge,:) = gdat_data.(lower(node_child_nameeff_e)).data(1:nb_edge,iaaa); gdat_data.dim{1}(nb_core+1:nb_core+nb_edge,:)=gdat_data.(lower(node_child_nameeff_e)).z(1:nb_edge,iaaa); - [alow,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'elow_e'],exp_name_eff); - [aup,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'eupp_e'],exp_name_eff); + [alow,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'elow_e'],exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); + [aup,e]=rdaAUG_eff(shot,'VTA',[upper(data_request_eff(1)) 'eupp_e'],exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.(lower(node_child_nameeff_e)).error_bar = max(aup.value-gdat_data.(lower(node_child_nameeff_e)).data, ... gdat_data.(lower(node_child_nameeff_e)).data-alow.value); gdat_data.error_bar(nb_core+1:nb_core+nb_edge,:) = gdat_data.(lower(node_child_nameeff_e)).error_bar(1:nb_edge,iaaa); @@ -1351,7 +1362,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') end end try - a = sf2par('ECS',shot,'gyr_freq',['P_sy1_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''gyr_freq'',''P_sy1_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch % gyr_freq not present (old shots for example) a=[]; @@ -1362,7 +1373,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.freq_ec(i) = a.value; end try - a = sf2par('ECS',shot,'GPolPos',['P_sy1_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''GPolPos'',''P_sy1_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch % GPolPos not present a=[]; @@ -1373,7 +1384,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.polpos_ec(i) = a.value; end try - a = sf2par('ECS',shot,'GTorPos',['P_sy1_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''GTorPos'',''P_sy1_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch a=[]; end @@ -1395,7 +1406,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') end end try - a = sf2par('ECS',shot,'gyr_freq',['P_sy2_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''gyr_freq'',''P_sy2_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch a=[]; end @@ -1405,7 +1416,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.freq_ec(i+4) = a.value; end try - a = sf2par('ECS',shot,'GPolPos',['P_sy2_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''GPolPos'',''P_sy2_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch a=[]; end @@ -1415,7 +1426,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.polpos_ec(i+4) = a.value; end try - a = sf2par('ECS',shot,'GTorPos',['P_sy2_g' num2str(i)]); + eval(['a = sf2par(''ECS'',shot,''GTorPos'',''P_sy2_g' num2str(i) ''',' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch a=[]; end @@ -1640,7 +1651,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') case {'q_rho'} [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL] = get_EQ_params(gdat_data); % since Lpf depends on time, need to load all first and then loop over time for easier mapping - [qpsi,e]=rdaAUG_eff(shot,DIAG,'Qpsi',exp_name_eff); + [qpsi,e]=rdaAUG_eff(shot,DIAG,'Qpsi',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); ndimrho = size(qpsi.data,2); if ndimrho==NTIME_Lpf % data seems to be transposed @@ -1652,11 +1663,11 @@ elseif strcmp(mapping_for_aug.method,'switchcase') qpsi=adapt_rda(qpsi,NTIME,ndimrho,itotransposeback); ijnan=find(isnan(qpsi.value)); qpsi.value(ijnan)=0; - [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff); + [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); psi_tree=adapt_rda(psi_tree,NTIME,ndimrho,itotransposeback); - [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff); + [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); phi_tree=adapt_rda(phi_tree,NTIME,ndimrho,itotransposeback); - [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff); + [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Vol=adapt_rda(Vol,NTIME,2*ndimrho,itotransposeback); % seems "LCFS" q-value is far too large, limit to some max (when diverted) max_qValue = 30.; % Note could just put a NaN on LCFS value since ill-defined when diverted @@ -1741,7 +1752,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') else [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL] = get_EQ_params(gdat_data); % since Lpf depends on time, need to load all first and then loop over time for easier mapping - [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff); + [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); ndimrho = size(psi_tree.data,2); if ndimrho==NTIME_Lpf % data seems to be transposed @@ -1782,7 +1793,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') end [gdat_data,exp_name_eff,DIAG,NTIME_Lpf,NTIME,Lpf1_t,Lpf_SOL] = get_EQ_params(gdat_data); % since Lpf depends on time, need to load all first and then loop over time for easier mapping - [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff); + [phi_tree,e]=rdaAUG_eff(shot,DIAG,'TFLx',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); ndimrho = size(phi_tree.data,2); if ndimrho==NTIME_Lpf % data seems to be transposed @@ -1794,9 +1805,9 @@ elseif strcmp(mapping_for_aug.method,'switchcase') phi_tree=adapt_rda(phi_tree,NTIME,ndimrho,itotransposeback); ijnan=find(isnan(phi_tree.value)); phi_tree.value(ijnan)=0; - [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff); + [Vol,e]=rdaAUG_eff(shot,DIAG,'Vol',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); Vol=adapt_rda(Vol,NTIME,2*ndimrho,itotransposeback); - [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff); + [psi_tree,e]=rdaAUG_eff(shot,DIAG,'PFL',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); psi_tree=adapt_rda(psi_tree,NTIME,ndimrho,itotransposeback); % switch data_request_eff @@ -1933,7 +1944,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase') for i=1:length(gdat_data.gdat_params.camera) if ischar(gdat_data.gdat_params.freq) && strcmp(gdat_data.gdat_params.freq,'slow'); chords_ok_diags(i).diag = 'SSX'; end if ~isempty(chords_ok_diags(i).diag) && ~isempty(chords_ok_diags(i).chord) - [a,e]=rdaAUG_eff(shot,chords_ok_diags(i).diag,chords_ok_diags(i).chord,exp_name_eff,gdat_data.gdat_params.time_interval); + [a,e]=rdaAUG_eff(shot,chords_ok_diags(i).diag,chords_ok_diags(i).chord,exp_name_eff, ... + gdat_data.gdat_params.time_interval,gdat_data.gdat_params.extra_arg_sf2sig); else a.data = []; a.t = []; @@ -1991,14 +2003,16 @@ elseif strcmp(mapping_for_aug.method,'switchcase') for i=1:size(transp_sig,1) if strcmp(lower(transp_sig{i,2}),'signal') || strcmp(lower(transp_sig{i,2}),'signal-group') try - eval(['[gdat_data.' transp_sig{i,1} ',e]=rdaAUG_eff(shot,diagname,''' transp_sig{i,1} ''',shotfile_exp_eff);']); + abcd = rdaAUG_eff(shot,diagname,transp_sig{i,1},shotfile_exp_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); + eval(['gdat_data.' transp_sig{i,1} '= abcd;']); + % eval(['[gdat_data.' transp_sig{i,1} ',e]=rdaAUG_eff(shot,diagname,''' transp_sig{i,1} ''',shotfile_exp_eff);']); catch eval(['gdat_data.' transp_sig{i,1} '=[];']); end elseif strcmp(lower(transp_sig{i,2}),'area-base') clear adata_area try - [adata_area]=sf2ab(diagname,shot,transp_sig{i,1},'-exp',shotfile_exp_eff); + eval(['[adata_area]=sf2ab(diagname,shot,transp_sig{i,1},''-exp'',shotfile_exp_eff,' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch adata_area.value = cell(0); end @@ -2006,7 +2020,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') elseif strcmp(lower(transp_sig{i,2}),'time-base') clear adata_time try - [adata_time]=sf2tb(diagname,shot,transp_sig{i,1},'-exp',shotfile_exp_eff); + eval(['[adata_time]=sf2tb(diagname,shot,transp_sig{i,1},''-exp'',shotfile_exp_eff,shotfile_exp_eff,' gdat_data.gdat_params.extra_arg_sf2sig ');']); catch adata_time.value = cell(0); end @@ -2051,13 +2065,13 @@ shot=gdat_data.shot; exp_name_eff = gdat_data.gdat_params.exp_name; gdat_data.gdat_params.equil = upper(gdat_data.gdat_params.equil); DIAG = gdat_data.gdat_params.equil; % 'EQI' by default at this stage, should become EQH? -M_Rmesh_par = sf2par(DIAG,shot,'M','PARMV'); +eval(['M_Rmesh_par = sf2par(DIAG,shot,''M'',''PARMV'',' gdat_data.gdat_params.extra_arg_sf2sig ');']); M_Rmesh = M_Rmesh_par.value + 1; % nb of points -N_Zmesh_par = sf2par(DIAG,shot,'N','PARMV'); +eval(['N_Zmesh_par = sf2par(DIAG,shot,''N'',''PARMV'',' gdat_data.gdat_params.extra_arg_sf2sig ');']); N_Zmesh = N_Zmesh_par.value + 1; % nb of points -NTIME_par = sf2par(DIAG,shot,'NTIME','PARMV'); +eval(['NTIME_par = sf2par(DIAG,shot,''NTIME'',''PARMV'',' gdat_data.gdat_params.extra_arg_sf2sig ');']); NTIME = NTIME_par.value; % nb of points -Lpf_par = rdaAUG_eff(shot,DIAG,'Lpf',exp_name_eff); +Lpf_par = rdaAUG_eff(shot,DIAG,'Lpf',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); % since June, nb of time points in EQ results is not consistent with NTIME and time % It seems the first NTIME points are correct, so use this explicitely NTIME_Lpf = length(Lpf_par.value); @@ -2074,5 +2088,5 @@ Lpf_tot = Lpf_par.value(1:NTIME); % nb of points: 100000*nb_SOL points + nb_core Lpf_SOL = fix(Lpf_tot/100000); Lpf1_t = mod(Lpf_tot,100000)+1; % nb of Lpf points -[equil_time,e]=rdaAUG_eff(shot,DIAG,'time',exp_name_eff); +[equil_time,e]=rdaAUG_eff(shot,DIAG,'time',exp_name_eff,[],gdat_data.gdat_params.extra_arg_sf2sig); gdat_data.t = equil_time.value(1:NTIME); diff --git a/crpptbx/AUG/geteqdskAUG.m b/crpptbx/AUG/geteqdskAUG.m index 83dd2d24..2211948d 100644 --- a/crpptbx/AUG/geteqdskAUG.m +++ b/crpptbx/AUG/geteqdskAUG.m @@ -5,6 +5,7 @@ function [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(shot,time,zshift,var % if shot is a structure assumes obtained from gdat(shot,'equil',...); % % varargin{1:2}: 'source','EQI' (default) or 'source','IDE' (used in gdat(...,'equil') ) +% varargin{3:4}: 'extra_arg_sf2sig','[]' (default) or 'extra_arg_sf2sig','''-ed'',2' % % [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(shot,time); % [eqdskAUG, equil_all_t, equil_t_index]=geteqdskAUG(shot,time,[],'source','IDE'); @@ -32,7 +33,7 @@ else zshift_eff = zshift; end -if nargin >= 5 && ~isempty(varargin{1}) +if nargin >= 5 && ~isempty(varargin{1}) && strcmp(lower(varargin{1}),'source') if ~isempty(varargin{2}) equil_source = varargin{2} else @@ -45,8 +46,19 @@ end equilpar_source = 'FPG'; if strcmp(lower(equil_source),'ide'); equilpar_source = 'IDG'; end +if nargin >= 7 && ~isempty(varargin{3}) && strcmp(lower(varargin{3}),'extra_arg_sf2sig') + if ~isempty(varargin{4}) + extra_arg_sf2sig = varargin{4} + else + disp(['Warning extra_arg_sf2sig in geteqdskAUG not defined']); + return; + end +else + extra_arg_sf2sig = '[]'; +end + if isnumeric(shot) - equil=gdat(shot,'equil','equil',equil_source); + equil=gdat(shot,'equil','equil',equil_source,'extra_arg_sf2sig',extra_arg_sf2sig); else equil = shot; shot = equil.shot; @@ -96,10 +108,10 @@ fedge=eqdsk.r0.*eqdsk.b0; F2 = psisign.*2.*F2_05 + fedge.^2; eqdsk.F = sqrt(F2)*sign(eqdsk.b0); -rmag=gdat(shot,'rmag','source',equilpar_source); +rmag=gdat(shot,'rmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); [zz itrmag]=min(abs(rmag.t-time_eff)); eqdsk.raxis = rmag.data(itrmag); -zmag=gdat(shot,'zmag','source',equilpar_source); +zmag=gdat(shot,'zmag','source',equilpar_source,'extra_arg_sf2sig',extra_arg_sf2sig); eqdsk.zaxis = zmag.data(itrmag) - eqdsk.zshift; % get plasma boundary -- GitLab