From f19ac3277ddcca73d8092ad593d3371d7bd53a37 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Tue, 18 Mar 2025 23:31:04 +0100 Subject: [PATCH] add status_mds and help more systematically --- matlab/TCV/gdat_tcv.m | 171 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 138 insertions(+), 33 deletions(-) diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m index 8acfc6f3..93226dcb 100644 --- a/matlab/TCV/gdat_tcv.m +++ b/matlab/TCV/gdat_tcv.m @@ -117,6 +117,8 @@ gdat_data.shot = []; gdat_data.gdat_request = []; gdat_data.gdat_params = gdat_params; gdat_data.data_fullpath = []; +gdat_data.help = ''; +gdat_data.status_mds = 2; % Treat inputs: @@ -505,10 +507,13 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') strdata=sprintf('%s',abc{:}); eval(['aatmp.data = bbtmp.data(' strdata num2str(gdat_data.gdat_params.trialindx+1) ');']); aatmp.help = [bbtmp.help ' :trial(...,trialindx=' num2str(gdat_data.gdat_params.trialindx) ')']; + keyboard end end end - if isempty(aatmp.data) || (isempty(aatmp.dim) && ischar(aatmp.data) && ~isempty(strfind(lower(aatmp.data),'no data')) ) % || ischar(aatmp.data) (to add?) + gdat_data.help = aatmp.help; + gdat_data.status_mds = aatmp.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' eval_expr ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp('check .gdat_request list'); end return @@ -592,7 +597,6 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi') else gdat_data.label=[mapping_for_tcv.expression]; end - if isfield(mapping_for_tcv,'help') && ~isempty(mapping_for_tcv.help) gdat_data.help = mapping_for_tcv.help; else @@ -673,18 +677,18 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if liuqe_matlab==0 nodenameeff=['tcv_eq("r_max_psi","' psitbx_str '")']; rmaxpsi=tdi(nodenameeff); - ijnan = find(isnan(rmaxpsi.data)); - if isempty(rmaxpsi.data) || isempty(rmaxpsi.dim) || ischar(rmaxpsi.data) || ... - ( ~isempty(ijnan) && prod(size(ijnan))==prod(size(rmaxpsi.data)) ) + gdat_data.help = rmaxpsi.help; + gdat_data.status_mds = rmaxpsi.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end return end nodenameeff2=['tcv_eq("r_min_psi","' psitbx_str '")']; rminpsi=tdi(nodenameeff2); - ijnan = find(isnan(rminpsi.data)); - if isempty(rminpsi.data) || isempty(rminpsi.dim) || ... - ( ~isempty(ijnan) && prod(size(ijnan))==prod(size(rminpsi.data)) ) + gdat_data.help = rminpsi.help; + gdat_data.status_mds = rminpsi.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff2 ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end return @@ -743,6 +747,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') return end aatmp = tdi(nodenameeff); + gdat_data.help = aatmp.help; + gdat_data.status_mds = aatmp.status; if strcmp(data_request_eff(end-3:end),'_rho') aatmp2 = tdi(nodenameeff2); if strcmp(data_request_eff,'a_minor_rho') @@ -784,7 +790,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') nodenameeff=['tcv_eq("z_edge","' psitbx_str '")']; end zcontour=tdi(nodenameeff); - if isempty(zcontour.data) || isempty(zcontour.dim) % || ischar(zcontour.data) (to add?) + gdat_data.help = zcontour.help; + gdat_data.status_mds = zcontour.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end return @@ -844,7 +852,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.data = tracetdi.data .* added_correction; end end - if isempty(tracetdi.data) || isempty(tracetdi.dim) % || ischar(tracetdi.data) (to add?) + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end return end @@ -869,13 +879,13 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'bfields'} params_eff = gdat_data.gdat_params; - + try if params_eff.liuqe == 1 % load LIUQE data [L,LY] = mds2meq(gdat_data.shot,'LIUQE.M',[],'ifield',true); % flag to allow field computation LY = meqreprocess(L,LY); % compute fields etc, since not directly loaded from mds2meq - datapath = 'Outputs from [L,LY]=mds2meq(gdat_data.shot,''LIUQE.M'',[],''ifield'',true); LY = meqreprocess(L,LY);'; + datapath = 'Outputs from [L,LY]=mds2meq(gdat_data.shot,''LIUQE.M'',[],''ifield'',true); LY = meqreprocess(L,LY);'; Br = permute(LY.Brx,[2,1,3]); % permute for (Z,R)->(R,Z) Bz = permute(LY.Bzx,[2,1,3]); Btor = permute(LY.Btx,[2,1,3]); @@ -890,10 +900,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') Bz = B.z; Btor = B.phi; dim_in = {coord.R,coord.z,time}; - time_in = time; + time_in = time; x_in = {coord.R,coord.z}; end - + gdat_data.data_fullpath = datapath; % radial magnetic field @@ -925,7 +935,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.Btor.x = x_in; gdat_data.Btor.data_fullpath = datapath; gdat_data.Btor.label = 'Toroidal magnetic field map in (R,Z)'; - + % total magnetic field gdat_data.Btot.data = sqrt(gdat_data.Btor.data.^2 + gdat_data.Bz.data.^2 + gdat_data.Br.data.^2); gdat_data.Btot.units = 'T'; @@ -935,7 +945,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.Btot.x = x_in; gdat_data.Btot.data_fullpath = datapath; gdat_data.Btot.label = 'Total magnetic field map in (R,Z)'; - + gdat_data.data = gdat_data.Btot.data; gdat_data.units = 'T'; gdat_data.dim = dim_in; @@ -976,6 +986,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dim = beta.dim; gdat_data.t = beta.dim{1}; gdat_data.data = beta.data; + gdat_data.help = beta.help; + gdat_data.status_mds = beta.status_mds; if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) % should already have all data at times time_out since called gdat_tcv above end @@ -1086,7 +1098,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') inb_times = length(cxrs_profiles.Times); gdat_data.cxrs_params = cxrs_profiles.param; if isempty(cxrs_profiles.Times) || ~isfield(cxrs_profiles,'proffit') - if (gdat_params.nverbose>=1); warning(['problems loading data with CXRS_get_profiles for data_request= ' data_request_eff]); end + gdat_data.status_mds = 2; + gdat_data.help = ['problems loading data with CXRS_get_profiles for data_request= ' data_request_eff]; + if (gdat_params.nverbose>=1); warning(gdat_data.help); end for i=1:length(sub_nodes) sub_eff_out = sub_nodes_out{i}; gdat_data.(sub_eff_out).fit.data = []; @@ -1157,6 +1171,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end gdat_data.dimunits{1} = ''; gdat_data.dimunits{2} = 's'; + gdat_data.help = ''; + gdat_data.status_mds = 1; % add grids_1d to have rhotor, etc if cxrs_rho was asked for if strcmp(data_request_eff,'cxrs_rho') gdat_data = get_grids_1d(gdat_data,2,1,gdat_params.nverbose); @@ -1207,6 +1223,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') return; end end + gdat_data.help = ''; + gdat_data.status_mds = 2; time=1.; % default time if isfield(gdat_data.gdat_params,'time') && ~isempty(gdat_data.gdat_params.time) time = gdat_data.gdat_params.time; @@ -1364,6 +1382,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dimunits = {'m','m','s'}; gdat_data.request_description = ['data=psi, x=(R,Z), eqdsk contains eqdsk structure with which ' ... 'plot_eqdsk, write_eqdsk, read_eqdsk can be used']; + gdat_data.status_mds = 1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'gas', 'gas_flux', 'gas_request', 'gas_feedforward','gas_valve', 'gas_fluxes'} @@ -1375,6 +1394,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end gasflux = gdat_tcv(gdat_data.shot,params_eff); gdat_data.gas_flux = gasflux; + gdat_data.help = gasflux.help; + gdat_data.status_mds = gasflux.status_mds; params_eff.data_request = '\hybrid::mat_m_signals:output_019'; gasrequest = gdat_tcv(gdat_data.shot,params_eff); gdat_data.gas_request_volt = gasrequest; @@ -1446,6 +1467,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end end case {'gas_fluxes'} + gdat_data.help = 'cell array'; + gdat_data.status_mds = 2; try if shot > 82186 for i=1:20 @@ -1491,6 +1514,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') elseif ~isfield(gdat_data.gdat_params,'time_out') gdat_data.gdat_params.time_out = []; end + gdat_data.status_mds = 1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'halphas'} @@ -1509,8 +1533,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.t = halphas.t; end gdat_data.data(channels(i),:) = halphas.data; + gdat_data.help = halphas.help; + gdat_data.status_mds = halphas.status_mds; catch - disp([params_eff.data_request ' not ok']); + gdat_data.help = [params_eff.data_request ' not ok']; + gdat_data.status_mds = 2; + disp(halphas.help); end end gdat_data.label = ['\base::pd:pd_' num2str(min(channels),'%.3d') ' to ' num2str(max(channels),'%.3d')]; @@ -1531,11 +1559,15 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') ids_empty_path = fullfile(fileparts(mfilename('fullpath')),'..','TCV_IMAS','ids_empty'); params_eff = gdat_data.gdat_params; + gdat_data.help = ''; + gdat_data.status_mds = 2; if isfield(params_eff,'source') && ~isempty(params_eff.source) ids_top_name = params_eff.source; else ids_top_name = []; - warning('gdat:EmptyIDSName','Need an ids name in ''source'' parameter\n check substructure gdat_params.sources_available for an ids list'); + gdat_data.help = ['gdat:EmptyIDSName','Need an ids name in ''source'' parameter\n check substructure ', ... + 'gdat_params.sources_available for an ids list']; + warning(gdat_data.help); addpath(ids_empty_path); assert(~~exist('ids_list_all','file'),'could not find ids_list_all.m in %s',ids_empty_path); gdat_data.gdat_params.sources_available = ids_list_all; % avoid adding ids_list.m which would override ids_list from IMAS @@ -1618,6 +1650,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.([ids_top_name '_description']) = getReport(ME_tcv_get_ids); rethrow(ME_tcv_get_ids) end + gdat_data.status_mds = 1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'ec_data', 'aux', 'h_cd', 'nbi_data', 'ic_data', 'lh_data','ohm_data', 'bs_data'} @@ -1638,6 +1671,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if ~isempty(gdat_data.gdat_params.trialindx) && gdat_data.gdat_params.trialindx < 0 gdat_data.gdat_params.trialindx = []; end + gdat_data.help = ''; + gdat_data.status_mds = 2; % specific parameters check and default settings if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source) switch data_request_eff @@ -1911,10 +1946,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if filled_successfully if isempty(ec_data.cd_tot.data) || isempty(ec_data.cd_tot.t) || ischar(ec_data.cd_tot.data) if (gdat_params.nverbose>=1) + gdat_data.status_mds = 2; warning(['problems loading data for ' source_icd.ec ... ' for data_request= ' data_request_eff]); end else + gdat_data.status_mds = 1; % now default is icdtot, will depend on request and data_out param of some kind data_fullpath = ['from toray nodes using astra_tcv_EC_exp(shot), all results in .ec_data, subfield=' field_for_main_data ... 'in ec.data, .x, .t, .dim, .dimunits, .label, .units']; @@ -2229,6 +2266,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') aaHFSz0_sect11=tdi('\atlas::DT196_MHD_002:channel_038'); gdat_data.n1_HFS=aaHFSz0_sect3; gdat_data.n1_HFS.data = gdat_data.n1_HFS.data - aaHFSz0_sect11.data; + gdat_data.n1_HFS.help = aaHFSz0_sect3.help; + gdat_data.n1_HFS.status_mds = aaHFSz0_sect3.status; gdat_data.n2_HFS=aaHFSz0_sect3; gdat_data.n2_HFS.data = gdat_data.n2_HFS.data + aaHFSz0_sect11.data; gdat_data.data_fullpath=['\atlas::DT196_MHD_001:channel_083 -+ \atlas::DT196_MHD_001:channel_091 for n=1,2, LFS_sect3/11, z=0cm; _HFS' ... @@ -2288,6 +2327,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if shot>= 50926 gdat_data.label = {'n odd','n even'}; % can be used in legend(gdat_data.label) end + gdat_data.help = n1.help; + gdat_data.status_mds = n1.status; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -2503,8 +2544,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') trialindx = []; end tracetdi=tdi(nodenameeff); + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if isempty(trialindx) - if ~isempty(tracetdi.data) && ~isempty(tracetdi.dim) && ~ischar(tracetdi.data) + if mod(gdat_data.status_mds,2) == 1 gdat_data.fit.data = tracetdi.data; else if gdat_params.nverbose>=1 @@ -2545,8 +2588,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.fit.help = '.x is rhopol coordinate'; tmp = tdi(def_rhotornorm); gdat_data.fit.rhotornorm = tmp.data; + gdat_data.fit.rhotornorm_help = tracetdi.help; + gdat_data.fit.rhotornorm_status_mds = tracetdi.status; tmp = tdi(def_rhovolnorm); gdat_data.fit.rhovolnorm = tmp.data; + gdat_data.fit.rhovolnorm_help = tmp.help; + gdat_data.fit.rhovolnorm_status_mds = tmp.status; % do te as well if nete asked for if strcmp(data_request_eff(1:4),'nete') for subfields={'data','x','t','units','help','rhotornorm','rhovolnorm','data_fullpath'} @@ -2567,6 +2614,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end if ~isempty(trialindx); nodenameeff=[nodenameeff ':trial']; end tracetdi=tdi(nodenameeff); + gdat_data.fit.te.help = tracetdi.help; + gdat_data.fit.te.status_mds = tracetdi.status; if isempty(trialindx) gdat_data.fit.te.data = tracetdi.data; else @@ -2634,6 +2683,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') case {'powers'} % note: same time array for all main, ec, ohm, nbi, ... % At this stage fill just ech, later add nbi + gdat_data.help = ''; + gdat_data.status_mds = 2; sources_avail = {'ohm','ec','nbi1','nbi2','dnbi','rad'}; % note should allow ech, nbh, ohmic in parameter sources % create empty structures for all, so in return one always have same substructres for i=1:length(sources_avail) @@ -2678,7 +2729,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % thus should take it from conf if present mdsopen(shot); ptot_ohm = tdi('\results::conf:ptot_ohm'); - if ~isempty(ptot_ohm.data) && ~ischar(ptot_ohm.data) && ~isempty(ptot_ohm.dim) && any(~isnan(ptot_ohm.data)) + gdat_data.ohm.help = ptot_ohm.help; + gdat_data.ohm.status_mds = ptot_ohm.status; + if mod(gdat_data.ohm.status_mds,2) == 1 gdat_data.ohm.data = ptot_ohm.data; gdat_data.ohm.t = ptot_ohm.dim{1}; gdat_data.ohm.dim = ptot_ohm.dim; @@ -2720,7 +2773,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % EC nodenameeff='\results::toray.input:p_gyro'; tracetdi=tdi(nodenameeff); - if isempty(tracetdi.data) || isempty(tracetdi.dim) || ischar(tracetdi.data) + gdat_data.ec.help = tracetdi.help; + gdat_data.ec.status_mds = tracetdi.status; + if mod(gdat_data.ec.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end else ij=[~isfinite(tracetdi.data)]; tracetdi.data(ij)=0.; @@ -2746,7 +2801,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') nodenameeff = '\results::NBH:POWR_TCV'; end nbh_data_tdi = tdi(nodenameeff); - if ~isempty(nbh_data_tdi.data) && ~ischar(nbh_data_tdi.data) && ~isempty(nbh_data_tdi.dim) + gdat_data.nbi1.help = tracetdi.help; + gdat_data.nbi1.status_mds = tracetdi.status; + if mod(gdat_data.nbi1.status_mds,2) == 1 nbi_neutral_power_tot = nbh_data_tdi.data.*1e6; % in W ij = nbi_neutral_power_tot<100; nbi_neutral_power_tot(ij) = 0.; @@ -2791,7 +2848,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') nodenameeff='\results::bolo_u:prad'; if shot< 71076, nodenameeff='\results::bolo:prad:total'; end tracetdi=tdi(nodenameeff); - if isempty(tracetdi.data) || isempty(tracetdi.dim) || ischar(tracetdi.data) + gdat_data.rad.help = tracetdi.help; + gdat_data.rad.status_mds = tracetdi.status; + if mod(gdat_data.rad.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end else gdat_data.rad.data = tracetdi.data*1e3; % at this stage bolo is in kW' @@ -2814,7 +2873,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % NB2 nodenameeff = '\results::NB2:POWR_TCV'; nb2_data_tdi = tdi(nodenameeff); - if ~isempty(nb2_data_tdi.dim) && ~ischar(nb2_data_tdi.data) && ~isempty(nb2_data_tdi.dim) + gdat_data.nbi2.help = nb2_data_tdi.help; + gdat_data.nbi2.status_mds = nb2_data_tdi.status; + if mod(gdat_data.nbi2.status_mds,2) == 1 nbi_neutral_power_tot = nb2_data_tdi.data.*1e6; % in W ij = nbi_neutral_power_tot<100; nbi_neutral_power_tot(ij) = 0.; @@ -2854,7 +2915,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % NB2 nodenameeff = '\RESULTS::DNBI:POWR_TCV'; nb2_data_tdi = tdi(nodenameeff); - if ~isempty(nb2_data_tdi.data) && ~ischar(nb2_data_tdi.data) && ~isempty(nb2_data_tdi.dim) + gdat_data.dnbi.help = nb2_data_tdi.help; + gdat_data.dnbi.status_mds = nb2_data_tdi.status; + if mod(gdat_data.dnbi.status_mds,2) == 1 nbi_neutral_power_tot = nb2_data_tdi.data.*1e6; % in W ij = nbi_neutral_power_tot<100; nbi_neutral_power_tot(ij) = 0.; @@ -2900,6 +2963,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') elseif ~isfield(gdat_data.gdat_params,'time_out') gdat_data.gdat_params.time_out = []; end + gdat_data.status_mds = 1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'q_rho'} @@ -2913,6 +2977,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') nodenameeff=[begstr 'q_psi' substr_liuqe]; end tracetdi=tdi(nodenameeff); + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if liuqe_matlab==1 && liuqe_version_eff==-1 % may have problems with dim{1} being indices instead of rhopol if max(tracetdi.dim{1}) > 2 @@ -2923,7 +2989,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end end end - if isempty(tracetdi.data) || isempty(tracetdi.dim) % || ischar(tracetdi.data) (to add?) + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end return @@ -2964,7 +3030,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') return end tracetdi=tdi(nodenameeff); - if isempty(tracetdi.data) || isempty(tracetdi.dim) % || ischar(tracetdi.data) (to add?) + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; + if mod(gdat_data.status_mds,2) == 0 if (gdat_params.nverbose>=1); warning(['problems loading data for ' nodenameeff ' for data_request= ' data_request_eff]); end if (gdat_params.nverbose>=3); disp(['rerun LIUQE?']); end return @@ -3004,8 +3072,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') else phi_tor.data = []; phi_tor.units = 'Wb'; + phi_tor.status = 2; end - if ~any(any(isfinite(phi_tor.data))) || ischar(phi_tor.data) + if mod(phi_tor.status,2) == 0 % no phi_tor, compute it from q profile q_rho = tdi(['tcv_eq("' liuqefortran2liuqematlab('q',1,liuqe_matlab) '","' psitbx_str '")']); if liuqe_matlab==0 @@ -3013,6 +3082,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end phi_tor.dim = q_rho.dim; phi_tor.dimunits = q_rho.dimunits; + phi_tor.help = q_rho.help; + phi_tor.status = q_rho.status; params_eff.data_request='psi_axis'; % psi_edge=0 with LIUQE psi_axis=gdat_tcv(shot,params_eff); if isnumeric(q_rho.data) @@ -3086,6 +3157,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dim = phi_tor.dim; gdat_data.dimunits = phi_tor.dimunits; gdat_data.units = phi_tor.units; + gdat_data.help = phi_tor.help; + gdat_data.status_mds = phi_tor.status; if (length(gdat_data.dim)>=mapping_for_tcv.gdat_timedim); gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim}; end if (length(gdat_data.dim)>0); gdat_data.x = gdat_data.dim{1}; end if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) @@ -3118,6 +3191,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dimunits = tracetdi.dimunits; gdat_data.units = tracetdi.units; gdat_data.request_description = 'pprime=dp/dpsi'; + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) [gdat_data] = gdat2time_out(gdat_data,1); elseif ~isfield(gdat_data.gdat_params,'time_out') @@ -3145,6 +3220,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dimunits = tracetdi.dimunits; gdat_data.units = tracetdi.units; gdat_data.request_description = 'pressure'; + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) [gdat_data] = gdat2time_out(gdat_data,1); elseif ~isfield(gdat_data.gdat_params,'time_out') @@ -3206,6 +3283,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.data_fullpath=nodenameeff; gdat_data.dimunits = tracetdi.dimunits; gdat_data.units = tracetdi.units; + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) [gdat_data] = gdat2time_out(gdat_data,1); elseif ~isfield(gdat_data.gdat_params,'time_out') @@ -3314,6 +3393,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') params_eff.data_request='b0'; b0=gdat_tcv([],params_eff); gdat_data.t = phi_tor.t; + gdat_data.help = phi_tor.help; + gdat_data.status_mds = phi_tor.status_mds; ij=find(isfinite(b0.data)); if length(gdat_data.t) > 0 gdat_data.b0 = interpos(b0.t(ij),b0.data(ij),gdat_data.t); @@ -3383,7 +3464,9 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end end end - if isempty(tracetdi.data) || isempty(tracetdi.dim) || ischar(tracetdi.data) + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; + if mod(gdat_data.status_mds,2) == 0 return end gdat_data.units = tracetdi.units; @@ -3447,6 +3530,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') % If the rtccode/tools not in paths use sauter's link % need: get_scd_mems.m % + gdat_data.help = ''; + gdat_data.status_mds = 2; aaa=which('get_scd_mems'); if isempty(aaa) error('no path for get_scd_mems') @@ -3460,16 +3545,18 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end end gdat_data.data_fullpath = sprintf('used %s with patterns specified in source gdat_params',aaa); + gdat_data.status_mds = 1; catch % to make sure close and disconnect even if error, since connects to scd end mdsclose; - mdsdisconnect; - + mdsdisconnect; % because connected to rtc/scd %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'sxr', 'mpx', 'radcam'} + gdat_data.help = ''; + gdat_data.status_mds = 2; if any(contains(data_request_eff,{'mpx','radcam'})) % effective source chosen through parameter 'source' within 'sxr' gdat_data.gdat_params.source = data_request_eff; @@ -3656,8 +3743,11 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.(gdat_data.gdat_params.camera{i}).label = sprintf('radcam %s nb chords: %d', ... gdat_data.gdat_params.camera{i},numel(gdat_data.(gdat_data.gdat_params.camera{i}).x)); end + gdat_data.status_mds = 1; case {'mpx', 'dmpx'} + gdat_data.help = ''; + gdat_data.status_mds = 2; gdat_data.gdat_params.source = 'mpx'; if ~isfield(gdat_data.gdat_params,'camera') || isempty(gdat_data.gdat_params.camera) gdat_data.gdat_params.camera = 'top'; @@ -3719,8 +3809,11 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') char(10) gdat_data.data_fullpath]; gdat_data.x = gdat_data.dim{1}; end + gdat_data.status_mds = 1; case 'xtomo' + gdat_data.help = ''; + gdat_data.status_mds = 2; % so far allow string and array as 'camera' choices: % camera = [] (default, thus get XTOMOGetData defaults), 'central', [3 6] (camera numbers) camera_xtomo = []; @@ -3782,12 +3875,15 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if gdat_data.gdat_params.nverbose>=1 warning(['camera = ' gdat_data.gdat_params.camera ' not expected with data_request= ' data_request_eff]) end + gdat_data.status_mds = 1; return end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'transp'} + gdat_data.help = ''; + gdat_data.status_mds = 2; % read transp netcdf output file provided in source parameter and generate substructure with all variables if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source) || ~exist(gdat_data.gdat_params.source,'file') warning([char(10) 'requires a netcdf file in ''source'' parameter' char(10)]) @@ -3815,6 +3911,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end gdat_data.data_fullpath = ['.transp structure obtained from cdf2mat(gdat_data.gdat_params.source)']; gdat_data.help='Can use transp_gui(gdat_data.transp) to browse and plot'; + gdat_data.status_mds = 1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'ttprime', 'ttprime_rho'} @@ -3839,6 +3936,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dimunits = tracetdi.dimunits; gdat_data.units = tracetdi.units; gdat_data.request_description = 'ttprime=t*dt/dpsi'; + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; if isfield(gdat_data.gdat_params,'time_out') && ~isempty(gdat_data.gdat_params.time_out) [gdat_data] = gdat2time_out(gdat_data,1); elseif ~isfield(gdat_data.gdat_params,'time_out') @@ -3902,6 +4001,8 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') elseif ~isfield(gdat_data.gdat_params,'time_out') gdat_data.gdat_params.time_out = []; end + gdat_data.help = tracetdi.help; + gdat_data.status_mds = tracetdi.status; otherwise if (gdat_params.nverbose>=1); warning(['switchcase= ' data_request_eff ' not known in gdat_tcv']); end @@ -4000,8 +4101,10 @@ end % try time=mdsdata('\results::thomson:times'); + gdat_data.status_mds = 1; catch gdat_data.error_bar = []; + gdat_data.status_mds = 2; if strcmp(data_request_eff(1:2),'ne') tracefirrat_data = []; gdat_data.firrat=tracefirrat_data; @@ -4047,7 +4150,9 @@ for is = 1:nsys nodenameeff = ['\results::thomson' edge_str ':' data_request_eff(1:2)]; tracetdi=tdi(nodenameeff); - if isempty(tracetdi.data) || ischar(tracetdi.data) || isempty(tracetdi.dim) + data_tmp(is).help = tracetdi.help; + data_tmp(is).status_mds = tracetdi.status; + if mod(data_tmp(is).status_mds,2) == 0 data_tmp(is).data = []; data_tmp(is).error_bar = []; data_tmp(is).data_fullpath = ''; -- GitLab