Newer
Older
function mapping = tcv_requests_mapping(data_request,shot)
%
% Information pre-defined for gdat_tcv, you can add cases here to match official cases in gdat_tcv, allowing backward compatibility
%
% give the shot number in case data origin depends on the shot number, allows to adapt easily
%
% Defaults
mapping = struct(...
'label', '', ...
'method', '', ...
'expression','', ...
'timedim', -1, ... % dim which is the time is the database, to copy in .t, the other dims are in .x (-1 means last dimension)
'gdat_timedim',[], ... % if need to reshape data and dim orders to have timedim as gdat_timedim (shifting time to gdat_timedim)
'min', -inf, ...
'max', inf);
% Note that gdat_timedim is set to timedim at end of this function if empty
% gdat_timedim should have effective index of the time dimension in gdat
if ~exist('data_request') || isempty(data_request)
return
end
% default label: data_request keyword itself
mapping.label = data_request;
% for TCV, following choices are set so far:
% method = 'tdi' and then expression is the string within tdi (usual case when there is a direct link to an existing signal)
% with tdi, if expression cell array, call tdi(cell{1},cell{2},...)
% method = 'tdiliuqe': same as tdi but adds "_2" or "_3" if 'liuqe',2 or 3 is asked for in options
% method = 'expression', then expression is executed and it should provide the structure gdat_tmp, which fields are copied to gdat_data
% method = 'switchcase', then there will be a specific case within gdat_tcv (usual case when not directly a signal)
%
% label is used for plotting
switch lower(data_request)
case 'a_minor'
mapping.timedim = 1;
mapping.label = 'a(LCFS)';
mapping.method = 'switchcase';
mapping.expression = '';
case 'a_minor_rho'
mapping.timedim = 2;
mapping.label = 'a(rho,t)';
mapping.method = 'switchcase';
mapping.expression = '';
case 'area'
mapping.timedim = 1;
mapping.label = 'area';
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''area'''',''''LIUQE.M'''')';
case 'area_rho'
mapping.timedim = 2;
mapping.label = 'area_rho';
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''area_rho'''',''''LIUQE.M'''')';
case 'area_edge'
mapping.timedim = 1;
mapping.label = 'area\_lcfs';
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''area_edge'''',''''LIUQE.M'''')';
case 'b0'
mapping.timedim = 1;
mapping.label = 'B_0';
mapping.method = 'switchcase';
mapping.expression = '';
case 'beta'
mapping.timedim = 1;
mapping.label = '\beta';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::beta_tor';
mapping.expression = 'tcv_eq(''''beta_tor'''',''''LIUQE.M'''')';
case 'betan'
mapping.timedim = 1;
mapping.label = '\beta_N';
mapping.method = 'switchcase';
mapping.expression = '';
case 'betap'
mapping.timedim = 1;
mapping.label = '\beta_p';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::beta_pol';
mapping.expression = '\tcv_shot::top.results.equil_1.results:beta_pol';
mapping.expression = 'tcv_eq(''''beta_pol'''',''''LIUQE.M'''')';
case 'cxrs'
mapping.timedim = 2;
mapping.label = 'cxrs';
mapping.method = 'switchcase';
mapping.expression = '';

Olivier Sauter
committed
case 'cxrs_rho'
mapping.timedim = 2;
mapping.label = 'cxrs';
mapping.method = 'switchcase';
mapping.expression = '';
case 'delta'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::delta_edge';
mapping.expression = '\tcv_shot::top.results.equil_1.results:delta_edge';
mapping.expression = 'tcv_eq(''''delta_edge'''',''''LIUQE.M'''')';
% mapping.method = 'expression';
% mapping.expression = ['tdi(''\results::q_psi'');']; % for tests
case 'delta_bottom'
mapping.timedim = 1;
mapping.label = 'delta\_bottom';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::delta_ed_bot';
mapping.expression = '\tcv_shot::top.results.equil_1.results:delta_bot';
mapping.expression = 'tcv_eq(''''delta_ed_bot'''',''''LIUQE.M'''')';
case 'delta_rho'
mapping.method = 'tdiliuqe';
mapping.expression = '\tcv_shot::top.results.equil_1.results:delta';
mapping.expression = 'tcv_eq(''''delta'''',''''LIUQE.M'''')';
case 'delta_top'
mapping.timedim = 1;
mapping.label = 'delta\_top';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::delta_ed_top';
mapping.expression = '\tcv_shot::top.results.equil_1.results:delta_top';
mapping.expression = 'tcv_eq(''''delta_ed_top'''',''''LIUQE.M'''')';
case 'ece'
mapping.timedim = 2;
mapping.method = 'switchcase';
mapping.expression = '';
case 'eqdsk'
mapping.timedim = 0;
mapping.method = 'switchcase'; % could use function make_eqdsk directly?
mapping.expression = '';
case 'halpha'
mapping.timedim = 1;
mapping.label = 'Halpha';
mapping.method = 'tdi';

Olivier Sauter
committed
mapping.expression = '\base::pd:pd_001';
case 'halphas'
mapping.timedim = 1;
mapping.label = 'Halpha';
mapping.method = 'switchcase';
mapping.expression = '';
case 'h98y2'
mapping.timedim = 1;
mapping.label = 'H98y2';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''\tcv_shot::top.results.conf:tau'';' ...
'gdat_tmp=gdat_tcv(shot,params_eff);params_eff.data_request=''\tcv_shot::top.results.conf:taue'';' ...
'gdat_tmp2=gdat_tcv(shot,params_eff);'...
'params_eff.data_request=''\tcv_shot::top.results.conf:h_scal'';' ...
'gdat_tmp3=gdat_tcv(shot,params_eff);ih98y2=5;' ...
'gdat_tmp.data = gdat_tmp.data./gdat_tmp2.data .* gdat_tmp3.data(ih98y2,:)'';'];
% $$$ case 'icds'
% $$$ mapping.timedim = 1;
% $$$ mapping.label = 'various driven current';
% $$$ mapping.method = 'switchcase';
case 'ids'
mapping.timedim = 1;
mapping.label = 'ids ala imas';
mapping.method = 'switchcase';
case 'ioh'
mapping.timedim = 1;
mapping.label = 'I ohmic transformer';
mapping.method = 'tdi';
mapping.expression = [{'\magnetics::ipol[*,$1]'} {'OH_001'}];
case 'ip_trapeze'
mapping.timedim = 1;
mapping.label = 'Plasma current';
mapping.method = 'tdi';
mapping.expression = '\magnetics::iplasma:trapeze';
case 'ip'
mapping.timedim = 1;
mapping.label = 'Plasma current';
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''i_pl'''',''''LIUQE.M'''')'; % to be able to get ip consistent with relevant LIUQE value
case 'kappa'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::kappa_edge';
mapping.expression = '\tcv_shot::top.results.equil_1.results:kappa_edge';
mapping.expression = 'tcv_eq(''''kappa_edge'''',''''LIUQE.M'''')';
case 'kappa_rho'
mapping.method = 'tdiliuqe';
mapping.expression = '\tcv_shot::top.results.equil_1.results:kappa';
mapping.expression = 'tcv_eq(''''kappa'''',''''LIUQE.M'''')';

Olivier Sauter
committed
case 'li'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::l_i';
mapping.expression = '\tcv_shot::top.results.equil_1.results:l_i_3';
mapping.expression = 'tcv_eq(''''l_i_3'''',''''LIUQE.M'''')';
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
case 'mhd'
mapping.timedim = 1;
mapping.label = 'n=1,2, etc';
mapping.method = 'switchcase';
mapping.expression = '';
case 'ne'
mapping.timedim = 2;
mapping.method = 'switchcase';
case 'neint'
mapping.timedim = 1;
mapping.label = 'line integrated el. density';
mapping.method = 'tdi';
mapping.expression = '\results::fir:lin_int_dens';
case 'nel'
mapping.timedim = 1;
mapping.label = 'line-averaged el. density';
mapping.method = 'tdi';
mapping.expression = '\results::fir:n_average';
case 'ne_rho'
mapping.timedim = 2;
mapping.label = 'ne';
mapping.method = 'switchcase';
case 'neft'
mapping.timedim = 2;
mapping.label = 'ne';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''ne_rho''; ' ...
'params_eff.fit=1;params_eff.fit_type=''avg'';gdat_tmp=gdat_tcv([],params_eff);'];
case 'nete_rho'
mapping.timedim = 2;
mapping.label = 'ne and Te';
mapping.method = 'switchcase';
case 'ni'
mapping.timedim = 2;
mapping.method = 'switchcase'; % especially since might have option fit, etc
case {'ng','ngreenwald','n_greenwald'}
mapping.timedim = 1;
mapping.label = 'nG=Ip[MA]/(\pi a^2)*1e20 on nel times';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''nel'';' ...
'gdat_tmp=gdat_tcv(shot,params_eff);params_eff.data_request=''ip'';' ...
'gdat_tmp2=gdat_tcv(shot,params_eff);ij=find(gdat_tmp2.data==0);gdat_tmp2.data(ij)=NaN;' ...
'tmp_data2=interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t,[],NaN);' ...
'params_eff.data_request=''a_minor'';' ...
'gdat_tmp3=gdat_tcv(shot,params_eff);ij=find(gdat_tmp3.data==0);gdat_tmp3.data(ij)=NaN;' ...
'tmp_data3=interp1(gdat_tmp3.t,gdat_tmp3.data,gdat_tmp.t,[],NaN);' ...
'gdat_tmp.data = abs(tmp_data2*1e-6./pi./(tmp_data3.^2+1e-5));' ...
'ij=find(gdat_tmp.data<0 | gdat_tmp.data>4);gdat_tmp.data(ij)=NaN;gdat_tmp.data = gdat_tmp.data * 1e20;'];
case {'ngf','greenwald_fraction','f_greenwald','ng_fraction'}
mapping.timedim = 1;
mapping.label = 'Greenwald\_fraction=n\_el/n\_G';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''nel'';' ...
'gdat_tmp=gdat_tcv(shot,params_eff);params_eff.data_request=''n_greenwald'';' ...
'gdat_tmp2=gdat_tcv(shot,params_eff);ij=find(gdat_tmp2.data==0);gdat_tmp2.data(ij)=NaN;' ...
'tmp_data2=interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t,[],NaN);' ...
'gdat_tmp.data = gdat_tmp.data./(tmp_data2+1e-5);'];
case {'ec_data', 'aux', 'h_cd', 'nbi_data', 'ic_data', 'lh_data', 'ohm_data', 'bs_data'}
mapping.label = 'various Pdens, Icd, jcd';
case {'phi_tor', 'phitor', 'toroidal_flux'}
mapping.timedim = 2;
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''tor_flux_tot'''',''''LIUQE.M'''')';
% node not filled in and in any case need special case for
mapping.label = 'toroidal_flux';
mapping.method = 'switchcase';
case 'psi'
mapping.timedim = 1;
mapping.label = 'psi(R,Z)';
mapping.method = 'tdiliuqe';
mapping.expression = 'tcv_eq(''''psi'''',''''LIUQE.M'''')';
case 'powers'
mapping.timedim = 1;
mapping.label = 'various powers';
mapping.method = 'switchcase';
case {'pprime', 'pprime_rho'}
mapping.timedim = 2;
mapping.label = 'pprime';
mapping.method = 'switchcase';
case {'pressure', 'p_rho'} % note: not pressure from liuqe fortran which is 2D
mapping.timedim = 2;
mapping.label = 'pressure';
mapping.method = 'switchcase';
case {'psi_axis', 'psi_mag'}
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::psi_axis';
mapping.expression = '\tcv_shot::top.results.equil_1.results:psi_axis';
mapping.expression = 'tcv_eq(''''psi_axis'''',''''LIUQE.M'''')';
mapping.label = 'psi\_axis with psi_edge=0';
mapping.method = 'switchcase'; % should be psi_edge(t) so to add to 0 of standard LCFS in LIUQE
mapping.method = 'tdiliuqe';
mapping.expression = '\results::surface_flux';
mapping.expression = '\tcv_shot::top.results.equil_1.results:psi_surf';
mapping.expression = 'tcv_eq(''''psi_surf'''',''''LIUQE.M'''')';
case 'q0'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::q_zero';
mapping.expression = '\tcv_shot::top.results.equil_1.results:q_axis';
mapping.expression = 'tcv_eq(''''q_axis'''',''''LIUQE.M'''')';
case 'q95'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
% mapping.expression = '\results::q_95';
mapping.expression = '\tcv_shot::top.results.equil_1.results:q_95';
mapping.expression = 'tcv_eq(''''q_95'''',''''LIUQE.M'''')';
case 'qedge'
mapping.timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::q_edge';
mapping.expression = '\tcv_shot::top.results.equil_1.results:q_edge';
mapping.expression = 'tcv_eq(''''q_edge'''',''''LIUQE.M'''')';
case 'q_rho'
mapping.timedim = 2;
mapping.label = 'q';
mapping.method = 'switchcase';
case {'rbphi_rho', 'rbtor_rho'}
mapping.timedim = 2;
mapping.label = 'R B_\phi';
mapping.method = 'switchcase';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::r_contour';
mapping.expression = '\tcv_shot::top.results.equil_1.results:r_rho'; % several flux surfaces R coordinates (irho,itheta,t)
mapping.expression = 'tcv_eq(''''r_rho'''',''''LIUQE.M'''')';
case 'r_contour_edge'
mapping.method = 'tdiliuqe';
mapping.expression = '\results::r_contour';
mapping.expression = '\tcv_shot::top.results.equil_1.results:r_surf'; % LCFS R coordinates (r,t)
mapping.expression = 'tcv_eq(''''r_edge'''',''''LIUQE.M'''')';
mapping.label = 'R\_lcfs';
mapping.method = 'switchcase';
% $$$ mapping.method = 'expression';
% $$$ mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''tcv_eq(''''''''r_edge'''''''',''''''''LIUQE.M'''''''')''; ' ...
% $$$ 'gdat_tmp=gdat_tcv(shot,params_eff);gdat_tmp.data=gdat_tmp.data(:,:,end);' ...
% $$$ 'gdat_tmp.dim=gdat_tmp.dim(1:2);gdat_tmp.dimunits=gdat_tmp.dimunits(1:2);'];
case {'rgeom', 'r_geom'}
mapping.timedim = 1;
mapping.label = 'Rgeom';
mapping.method = 'switchcase';
case {'rgeom_rho', 'r_geom_rho'}
mapping.timedim = 2;
mapping.label = 'Rgeom';
mapping.method = 'switchcase';
case 'rhotor_edge'
mapping.timedim = 1;
mapping.label = 'rhotor\_edge=sqrt(Phi/pi/B0)';
mapping.method = 'switchcase'; % from conf if exist otherwise computes it
case 'rhotor_norm'
mapping.timedim = 2;
mapping.label = 'rhotor\_norm';
mapping.method = 'switchcase'; % from conf if exist otherwise computes it
case 'rhotor'
mapping.timedim = 2;
mapping.label = 'rhotor';
mapping.method = 'switchcase'; % from conf if exist otherwise computes it
case {'rhovol', 'rho_vol'}
mapping.timedim = 2;
mapping.label = 'rhovol\_norm';
mapping.method = 'switchcase'; % from conf if exist otherwise computes it
case {'rmag', 'r_axis', 'r_mag'}
mapping.timedim = 1;
mapping.label = 'R\_magaxis';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::r_axis';
mapping.expression = '\tcv_shot::top.results.equil_1.results:r_axis';
mapping.expression = 'tcv_eq(''''r_axis'''',''''LIUQE.M'''')';
case 'rtc'
mapping.timedim = 1;
mapping.label = 'rtc\_signals';
mapping.method = 'switchcase';
mapping.expression = '';
mapping.timedim = 1;
mapping.gdat_timedim = 2;
mapping.method = 'switchcase';
case 'te'
mapping.timedim = 2;
mapping.label = 'Te';
mapping.method = 'switchcase';
case 'te_rho'
mapping.timedim = 2;
mapping.label = 'Te';
mapping.method = 'switchcase';
case 'teft'
mapping.timedim = 2;
mapping.label = 'ne';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''te_rho''; ' ...
'params_eff.fit=1;params_eff.fit_type=''avg'';gdat_tmp=gdat_tcv([],params_eff);'];
case 'ti'
mapping.timedim = 2;
mapping.label = 'Ti';
mapping.method = 'switchcase';
case 'transp'
mapping.label = 'transp output';
mapping.method = 'switchcase';
case {'ttprime', 'ttprime_rho'}
mapping.timedim = 2;
mapping.method = 'switchcase';
case 'vloop'
mapping.timedim = 1;
mapping.label = 'Vloop';
mapping.method = 'tdi';
mapping.expression = [{'\magnetics::vloop[*,$1]'} {'001'}];
case 'volume'
mapping.timedim = 1;
mapping.label = 'Volume\_LCFS';
mapping.method = 'switchcase';
case 'volume_rho'
mapping.timedim = 2;
mapping.label = 'Volume(\rho)';
mapping.method = 'switchcase';
% mapping.expression = '\results::psitbx:vol'; (if exists for liuqe2 and 3 as well)
case {'wmhd', 'w_mhd'}

Olivier Sauter
committed
mapping.timedim = 1;
% $$$ if shot==57716 || shot==57732
% $$$ time_for_corr = [0.5,1.03];
% $$$ corr = [4e3,4.5e3];
% $$$ if shot==57732; corr=[4650,4650]; end
% $$$ mapping.method = 'expression';
% $$$ mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''tcv_eq(''''''''w_mhd'''''''',''''''''LIUQE.M'''''''')'';' ...
% $$$ 'gdat_tmp=gdat_tcv(shot,params_eff);ij=find(gdat_tmp.t>0.5&gdat_tmp.t<1.03);' ...
% $$$ 'aa=interp1([' num2str(time_for_corr(1)) ' ' num2str(time_for_corr(2)) ...
% $$$ '],[' num2str(corr(1)) ' ' num2str(corr(2)) '],gdat_tmp.t(ij));' ...
mapping.method = 'tdiliuqe';
mapping.expression = '\results::total_energy';
mapping.expression = '\tcv_shot::top.results.equil_1.results:w_mhd';
mapping.expression = 'tcv_eq(''''w_mhd'''',''''LIUQE.M'''')';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::z_contour';
mapping.expression = '\tcv_shot::top.results.equil_1.results:z_rho'; % several flux surfaces Z coordinates (irho,itheta,t)
mapping.expression = 'tcv_eq(''''z_rho'''',''''LIUQE.M'''')';
case 'z_contour_edge'
mapping.method = 'tdiliuqe';
mapping.expression = '\results::z_contour';
mapping.expression = '\tcv_shot::top.results.equil_1.results:z_surf'; % LCFS Z coordinates (r,t)
mapping.expression = 'tcv_eq(''''z_edge'''',''''LIUQE.M'''')';
mapping.label = 'Z\_lcfs';
mapping.method = 'switchcase';
% $$$ mapping.method = 'expression';
% $$$ mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''tcv_eq(''''''''z_edge'''''''',''''''''LIUQE.M'''''''')''; ' ...
% $$$ 'gdat_tmp=gdat_tcv(shot,params_eff);gdat_tmp.data=gdat_tmp.data(:,:,end);' ...
% $$$ 'gdat_tmp.dim=gdat_tmp.dim(1:2);gdat_tmp.dimunits=gdat_tmp.dimunits(1:2);'];
case 'zeff'
mapping.timedim = 1;
mapping.label = 'zeff from Ip-Ibs';
mapping.method = 'tdi';
mapping.expression = '\results::ibs:z_eff';
case {'zgeom', 'z_geom'}
mapping.timedim = 1;
mapping.label = 'Zgeom';
mapping.method = 'switchcase';
case {'zmag', 'z_mag', 'z_axis'}
mapping.timedim = 1;
mapping.label = 'Zmagaxis';
mapping.method = 'tdiliuqe';
mapping.expression = '\results::z_axis';
mapping.expression = '\tcv_shot::top.results.equil_1.results:z_axis';
mapping.expression = 'tcv_eq(''''z_axis'''',''''LIUQE.M'''')';

Olivier Sauter
committed
%
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% extra TCV cases (not necessarily in official data_request name list)
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% $$$ case '\results::total_energy'
% $$$ mapping.timedim = 1;
% $$$ mapping.gdat_timedim = 1;
% $$$ mapping.method = 'tdiliuqe';
% $$$ % mapping.expression = '\results::total_energy:foo';
% $$$ mapping.expression = '\results::total_energy';
% $$$ case '\results::thomson:psiscatvol'
% $$$ mapping.timedim = 1;
% $$$ mapping.gdat_timedim = 1;
% $$$ mapping.method = 'tdiliuqe';
% $$$ % mapping.expression = '\results::thomson:psiscatvol:foo';
% $$$ mapping.expression = '\results::thomson:psiscatvol';
case 'mpx'
mapping.timedim = 1;
mapping.gdat_timedim = 2;
mapping.method = 'switchcase';
case {'profnerho','profterho'}
mapping.timedim = 1;
mapping.label = data_request;
mapping.method = 'switchcase';
mapping.expression = '';
case 'xte'
mapping.timedim = 1;
mapping.gdat_timedim = 1;
mapping.method = 'tdiliuqe';
mapping.expression = '\results::te_x_a[*,12]';
mapping.method = 'expression';
mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''\results::te_x_a[*,12]''; ' ...
'gdat_tmp=gdat_tcv([],params_eff); ' ...
'params_eff = gdat_data.gdat_params;params_eff.data_request=''\magnetics::iplasma:trapeze''; ' ...
'aa=gdat_tcv([],params_eff);it=find(abs(aa.data)<10e3);it2=iround_os(gdat_tmp.t,aa.t(it));gdat_tmp.data(it2)=NaN;'];
% $$$ case ''
% $$$ mapping.timedim = 1;
% $$$ mapping.label = data_request;
% $$$ mapping.method = 'tdi';
% $$$ mapping.expression = '';
otherwise
mapping.label = data_request;
mapping.method = 'tdi'; % assume a full tracename is given, so just try with tdi (could check there are some ":", etc...)
mapping.expression = data_request;
end
if isempty(mapping.gdat_timedim)
mapping.gdat_timedim = mapping.timedim;
end