diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m index 547a646ea7bf2b293faf1f91bbb048af157a4ea4..1a46f4d01056f6bc828b1ff3ccd6e19536d55a6c 100644 --- a/matlab/TCV/gdat_tcv.m +++ b/matlab/TCV/gdat_tcv.m @@ -57,6 +57,8 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_tcv(shot,data_req % a6=gdat(48836,'ip','Opt1',123,'Doplot',1,'opt2','Abc'); % standard call with a few options (note all lowercase in output) % a7 = gdat(48836,'static("r_m")[$1]'',''001'); % note first and last quote of tdi argument added by gdat % a7 = gdat(48836,'tcv_eq(''''psi'''',''''liuqe.m'''')'); % do not use double quote char so 'liuqe',11 will work +% a8 = gdat(64770,['\magnetics::bpol_003[*,$1]'',{''001''; ''030''}']); one string full expression +% a9 = gdat(64770,{'\magnetics::vloop[*,$1]',{'''001''','''A_001'''}}); cell array (other option) % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Remote data access for TCV @@ -387,7 +389,15 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') end eval_expr = ['tdi(''' mapping_for_tcv.expression{1} '''']; for i=2:length(mapping_for_tcv.expression) - eval_expr = [eval_expr ',''' mapping_for_tcv.expression{i} '''']; + if ~iscell(mapping_for_tcv.expression{i}) || length(mapping_for_tcv.expression{i}) == 1 + eval_expr = [eval_expr ',''' mapping_for_tcv.expression{i} '''']; + else + eval_expr = [eval_expr ',{' mapping_for_tcv.expression{i}{1}]; + for j=2:length(mapping_for_tcv.expression{i}) + eval_expr=[eval_expr ',' mapping_for_tcv.expression{i}{j}]; + end + eval_expr = [eval_expr '}']; + end end eval_expr = [eval_expr ');']; aatmp = eval(eval_expr); @@ -586,7 +596,12 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') mapping_for_tcv.gdat_timedim = mapping_for_tcv.timedim; end gdat_data.data_fullpath=[mapping_for_tcv.expression]; - gdat_data.label=[mapping_for_tcv.expression]; + if iscell(mapping_for_tcv.expression) + gdat_data.label=[mapping_for_tcv.expression{1}]; + else + gdat_data.label=[mapping_for_tcv.expression]; + end + gdat_data.help = aatmp.help; % end of method "tdi" @@ -2601,7 +2616,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') case {'psi_edge'} % psi at edge, 0 by construction in Liuqe, thus not given % add surface_psi from surface_flux and d(surface_flux)/dt = vloop -keyboard + warning('now psi_edge expression in tcv_requests_mapping, so should not come here') + keyboard nodenameeff=['\results::psi_axis' substr_liuqe]; if liuqe_version_eff==-1 nodenameeff=[begstr 'q_psi' substr_liuqe]; diff --git a/matlab/TCV/tcv_requests_mapping.m b/matlab/TCV/tcv_requests_mapping.m index 499bbd90d9fb8fe563b13a5f3cc03c18bfb7a9d6..90f5c9e82c7ad5082dedbec20bdffc74fbe22f24 100644 --- a/matlab/TCV/tcv_requests_mapping.m +++ b/matlab/TCV/tcv_requests_mapping.m @@ -32,6 +32,12 @@ mapping.label = data_request; % method = 'switchcase', then there will be a specific case within gdat_tcv (usual case when not directly a signal) % % label is used for plotting +if iscell(data_request) + 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; + return +end switch lower(data_request) case 'a_minor' mapping.timedim = 1;