From 2c327d1ade2bef538e621ae2c4c6e5d7ed9f2e81 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Mon, 8 May 2017 20:54:24 +0000 Subject: [PATCH] add more traces for d3d, adapt gdat_plot when labels have cells git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@7304 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/D3D/d3d_requests_mapping.m | 158 +++++++++++------------------ crpptbx/D3D/gdat_d3d.m | 16 ++- crpptbx/gdat_plot.m | 4 +- 3 files changed, 74 insertions(+), 104 deletions(-) diff --git a/crpptbx/D3D/d3d_requests_mapping.m b/crpptbx/D3D/d3d_requests_mapping.m index 4ddb0741..81e31730 100644 --- a/crpptbx/D3D/d3d_requests_mapping.m +++ b/crpptbx/D3D/d3d_requests_mapping.m @@ -41,55 +41,28 @@ switch lower(data_request) case 'a_minor' mapping.timedim = 1; mapping.label = 'a\_minor'; - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''r_inboard'';' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);gdat_tmp.r_inboard=gdat_tmp.data;' ... - 'params_eff.data_request=''r_outboard'';' ... - 'gdat_tmp2=gdat_d3d(shot,params_eff);gdat_tmp.r_outboard=gdat_tmp2.data;' ... - 'gdat_tmp.data = 0.5.*(gdat_tmp2.data-gdat_tmp.data);gdat_tmp.label=''' mapping.label ''';' ... - 'gdat_tmp.gdat_request=''' data_request ''';']; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\aminor'}]; case 'b0' mapping.timedim = 1; mapping.label = 'B_0'; mapping.method = 'signal'; - mapping.expression = [{'EFIT01'},{'\bcentr'}]; + mapping.expression = [{'EFIT03'},{'\bcentr'}]; case 'beta' mapping.timedim = 1; mapping.label = '\beta'; - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''betan'';' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''ip'';gdat_tmp2=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''b0'';gdat_tmp3=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''a_minor'';gdat_tmp4=gdat_d3d(shot,params_eff);' ... - 'tmp_data_ip=interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t,[],NaN);' ... - 'tmp_data_b0=interp1(gdat_tmp3.t,gdat_tmp3.data,gdat_tmp.t,[],NaN);' ... - 'tmp_data_a=interp1(gdat_tmp4.t,gdat_tmp4.data,gdat_tmp.t,[],NaN);' ... - 'gdat_tmp.data = 0.01.*abs(gdat_tmp.data.*tmp_data_ip./1e6./tmp_data_a./tmp_data_b0);']; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\betat'}]; case 'betan' mapping.timedim = 1; mapping.label = '\beta_N'; mapping.method = 'signal'; - mapping.expression = [{'TOT'},{'beta_N'}]; - % in many cases, in particular just after an experiment, betaN is not present in TOT, thus compute it from 2/3Wmhd/V /(B0^2/2mu0) - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''TOT''},{''beta_2N''}];' ... - 'gdat_tmp=gdat_d3d(shot,params_eff); if isempty(gdat_tmp.data);' ... - 'params_eff.data_request=''ip'';gdat_ip=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''b0'';gdat_b0=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''a_minor'';gdat_aminor=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''wmhd'';gdat_tmp=gdat_d3d(shot,params_eff);' ... - 'params_eff.data_request=''volume'';gdat_vol=gdat_d3d(shot,params_eff);' ... - 'tmp_data_ip=interp1(gdat_ip.t,gdat_ip.data,gdat_tmp.t,[],NaN);' ... - 'tmp_data_b0=interp1(gdat_b0.t,gdat_b0.data,gdat_tmp.t,[],NaN);' ... - 'tmp_data_a=interp1(gdat_aminor.t,gdat_aminor.data,gdat_tmp.t,[],NaN);' ... - 'tmp_data_vol=interp1(gdat_vol.t,gdat_vol.data,gdat_tmp.t,[],NaN);' ... - 'gdat_tmp.data = 100.*abs(2./3.*gdat_tmp.data./tmp_data_vol.*8e-7.*pi./tmp_data_b0.^2./tmp_data_ip.*1e6.*tmp_data_a.*tmp_data_b0);end;']; + mapping.expression = [{'EFIT03'},{'\betan'}]; case 'betap' mapping.timedim = 1; mapping.label = '\beta_p'; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'betpol'}]; + mapping.expression = [{'EFIT03'},{'\betap'}]; case {'cxrs', 'cxrs_rho'} mapping.timedim = 2; mapping.label = 'cxrs'; @@ -106,12 +79,12 @@ switch lower(data_request) mapping.label = 'delta\_top'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'OT01'},{'\tritop'}]; + mapping.expression = [{'EFIT03'},{'\tritop'}]; case 'delta_bottom' mapping.label = 'delta\_bottom'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'OT01'},{'\tribot'}]; + mapping.expression = [{'EFIT03'},{'\tribot'}]; case {'ece', 'ece_rho'} mapping.timedim = 1; mapping.method = 'switchcase'; @@ -130,15 +103,10 @@ switch lower(data_request) mapping.method = 'signal'; mapping.expression = [{'SPECTROSCOPY'},{'\fs04'}]; case 'h_scalings' - mapping.label = 'H_{scal}'; + mapping.label = 'H_{98y2}'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'TTH'},{'H/L-facs'}]; - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''TTH''},{''Wmhd''}];' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);ij=find(~isnan(gdat_tmp.data)); gdat_tmp.data_raw=gdat_tmp.data;' ... - 'tmp_data=interpos(gdat_tmp.t(ij),gdat_tmp.data(ij),gdat_tmp.t,-1e5);' ... - 'gdat_tmp.data = max(tmp_data,0.);']; + mapping.expression = [{'EFIT02'},{'results.confinement.times.scalings:h_thh98y2'}]; case 'ioh' mapping.timedim = 1; mapping.label = 'I ohmic transformer'; @@ -148,27 +116,27 @@ switch lower(data_request) mapping.timedim = 1; mapping.label = 'Plasma current'; mapping.method = 'signal'; - mapping.expression = [{'efit01'},{'\cpasma'}]; + mapping.expression = [{'efit03'},{'\cpasma'}]; case 'kappa' mapping.timedim = 1; mapping.label = '\kappa'; mapping.method = 'signal'; - mapping.expression = [{'efit01'},{'\kappa'}]; - case 'kappa_top' - mapping.timedim = 1; - mapping.label = '\kappa^{top}'; - mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'koben'}]; - case 'kappa_bottom' - mapping.timedim = 1; - mapping.label = '\kappa_{bottom}'; - mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'kuntn'}]; + mapping.expression = [{'efit03'},{'\kappa'}]; +% $$$ case 'kappa_top' +% $$$ mapping.timedim = 1; +% $$$ mapping.label = '\kappa^{top}'; +% $$$ mapping.method = 'signal'; +% $$$ mapping.expression = [{'EFIT03'},{'kappa'}]; +% $$$ case 'kappa_bottom' +% $$$ mapping.timedim = 1; +% $$$ mapping.label = '\kappa_{bottom}'; +% $$$ mapping.method = 'signal'; +% $$$ mapping.expression = [{'FPG'},{'kuntn'}]; case 'li' mapping.timedim = 1; mapping.label = 'l_i'; mapping.method = 'signal'; - mapping.expression = [{'efit01'},{'\li3'}]; + mapping.expression = [{'efit03'},{'\li3'}]; case 'mhd' mapping.timedim = 1; mapping.label = 'Odd and Even n'; @@ -190,9 +158,14 @@ switch lower(data_request) 'gdat_tmp.gdat_request=''mhd'';gdat_tmp.gdat_params.data_request=gdat_tmp.gdat_request;']; case 'nbi' mapping.timedim = 1; - mapping.label = 'Pnbi'; - mapping.method = 'signal'; - mapping.expression = [{'nb'},{'pinj'}]; + mapping.label = 'Pnbi [W]'; +% $$$ mapping.method = 'signal'; +% $$$ mapping.expression = [{'nb'},{'pinj'}]; % in kW, use expression to have it in W + mapping.method = 'expression'; + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''nb''},{''pinj''}];' ... + 'gdat_tmp=gdat_d3d(shot,params_eff);gdat_tmp.units=''W'';' ... + 'gdat_tmp.data = 1e3.*gdat_tmp.data;gdat_tmp.label=''' mapping.label ''';' ... + 'gdat_tmp.gdat_request=''' data_request ''';']; case 'ne' mapping.timedim = 2; mapping.method = 'switchcase'; @@ -205,7 +178,7 @@ switch lower(data_request) mapping.timedim = 1; mapping.label = 'NEBAR\_R0'; mapping.method = 'signal'; - mapping.expression = [{'efit01'},{'\NEBAR_R0'}]; + mapping.expression = [{'efit03'},{'\NEBAR_R0'}]; case 'ne_rho' mapping.timedim = 2; mapping.label = 'ne'; @@ -226,29 +199,29 @@ switch lower(data_request) mapping.method = 'switchcase'; case 'psi_axis' mapping.timedim = 1; - mapping.method = 'switchcase'; % there is psi_axis-psi_edge in FPG but otherwise complicated to get from equil, thus needs swticth case mapping.label ='psi_\axis' ; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\ssimag'}]; case 'psi_edge' mapping.timedim = 1; - mapping.method = 'switchcase'; % is set to zero, so not in tree nodes mapping.label = 'psi\_edge'; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\ssibry'}]; case 'q0' mapping.timedim = 1; mapping.label = 'q_0'; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'q0'}]; + mapping.expression = [{'EFIT03'},{'\q0'}]; case 'q95' mapping.timedim = 1; mapping.label = 'q_{95}'; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'q95'}]; + mapping.expression = [{'EFIT03'},{'\q95'}]; case 'q_edge' mapping.timedim = 1; mapping.label = 'q_{edge}}'; - mapping.method = 'expression'; - mapping.method = 'switchcase'; - mapping.expression = [{'FPG'},{'q95'}]; - mapping.expression = []; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\ql'}]; case 'q_rho' mapping.timedim = 2; mapping.gdat_timedim = 2; @@ -258,17 +231,17 @@ switch lower(data_request) mapping.timedim = 1; mapping.label = 'R_0'; mapping.method = 'signal'; - mapping.expression = [{'EFIT01'},{'\rzero'}]; + mapping.expression = [{'EFIT03'},{'\rzero'}]; case 'rgeom' mapping.label = 'Rgeom'; mapping.timedim = 1; mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=''r_inboard'';' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);gdat_tmp.r_inboard=gdat_tmp.data;' ... - 'params_eff.data_request=''r_outboard'';' ... - 'gdat_tmp2=gdat_d3d(shot,params_eff);gdat_tmp.r_outboard=gdat_tmp2.data;' ... - 'gdat_tmp.data = 0.5.*(gdat_tmp2.data+gdat_tmp.data);gdat_tmp.label=''' mapping.label ''';' ... - 'gdat_tmp.gdat_request=''' data_request ''';']; + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''EFIT03''},{''results.geqdsk:rbbbs''}];' ... + 'gdat_tmp2=gdat_d3d(shot,params_eff);params_eff = gdat_data.gdat_params;' ... + 'params_eff.data_request=[{''EFIT03''},{''\zmaxis''}];gdat_tmp=gdat_d3d(shot,params_eff);' ... + 'ij=find(gdat_tmp2.data==0);if (~isempty(ij));gdat_tmp2.data(ij)=NaN;end;' ... + 'gdat_tmp.data = 0.5.*(nanmax(gdat_tmp2.data'',[],2)+nanmin(gdat_tmp2.data'',[],2));gdat_tmp.label=''' mapping.label ''';' ... + 'gdat_tmp.gdat_request=''' data_request ''';']; case 'r_inboard' mapping.label = 'R\_inboard'; mapping.timedim = 1; @@ -299,7 +272,7 @@ switch lower(data_request) mapping.label = 'R\_magaxis'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'Rmag'},{'D3DD'}]; + mapping.expression = [{'EFIT03'},{'\rmaxis'}]; case 'sxr' mapping.timedim = 1; mapping.gdat_timedim = 2; @@ -323,18 +296,13 @@ switch lower(data_request) case 'vloop' mapping.label = 'Vloop'; mapping.timedim = 1; - % mapping.method = 'signal'; - % mapping.expression = [{'MAG'},{'ULid12'},{'D3DD'}]; - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''MAG''},{''ULid12''},{''D3DD''}];' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);ij=find(~isnan(gdat_tmp.data));' ... - 'tmp_data=interpos(gdat_tmp.t,gdat_tmp.data,-3e4);' ... - 'gdat_tmp.data_smooth = tmp_data;gdat_tmp.gdat_request=''vloop'';gdat_tmp.gdat_params.data_request=gdat_tmp.gdat_request;']; + mapping.method = 'signal'; + mapping.expression = [{'EFIT03'},{'\vloopmhd'}]; case 'volume' mapping.label = 'Volume'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'Vol'},{'D3DD'}]; + mapping.expression = [{'EFIT03'},{'\volume'}]; case 'volume_rho' mapping.timedim = 2; mapping.label = 'volume\_norm'; @@ -343,12 +311,7 @@ switch lower(data_request) mapping.label = 'Wmhd'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'Wmhd'},{'D3DD'}]; - mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''FPG''},{''Wmhd''},{''D3DD''}];' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);ij=find(~isnan(gdat_tmp.data)); gdat_tmp.data_raw=gdat_tmp.data;' ... - 'tmp_data=interpos(gdat_tmp.t(ij),gdat_tmp.data(ij),gdat_tmp.t,-1e5);' ... - 'gdat_tmp.data = max(tmp_data,0.);']; + mapping.expression = [{'EFIT03'},{'\Wmhd'}]; case 'zeff' mapping.label = 'zeff from cxrs'; mapping.timedim = 1; @@ -358,18 +321,17 @@ switch lower(data_request) mapping.label = 'Zgeom'; mapping.timedim = 1; mapping.method = 'expression'; - mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''FPG''},{''Zoben''},{''D3DD''}];' ... - 'gdat_tmp=gdat_d3d(shot,params_eff);gdat_tmp.z_top=gdat_tmp.data;' ... - 'params_eff.data_request=[{''FPG''},{''Zunt''},{''D3DD''}];' ... - 'gdat_tmp2=gdat_d3d(shot,params_eff);gdat_tmp.z_bottom=gdat_tmp2.data;' ... - 'gdat_tmp.data = 0.5.*(gdat_tmp2.data+gdat_tmp.data);gdat_tmp.label=''' mapping.label ''';' ... - 'gdat_tmp.gdat_request=''' data_request ''';']; - + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''EFIT03''},{''results.geqdsk:zbbbs''}];' ... + 'gdat_tmp2=gdat_d3d(shot,params_eff);params_eff = gdat_data.gdat_params;' ... + 'params_eff.data_request=[{''EFIT03''},{''\zmaxis''}];gdat_tmp=gdat_d3d(shot,params_eff);' ... + 'ij=find(gdat_tmp2.data==0);if (~isempty(ij));gdat_tmp2.data(ij)=NaN;end;' ... + 'gdat_tmp.data = 0.5.*(nanmax(gdat_tmp2.data'',[],2)+nanmin(gdat_tmp2.data'',[],2));gdat_tmp.label=''' mapping.label ''';' ... + 'gdat_tmp.gdat_request=''' data_request ''';']; case 'zmag' mapping.label = 'Z\_magaxis'; mapping.timedim = 1; mapping.method = 'signal'; - mapping.expression = [{'FPG'},{'Zmag'},{'D3DD'}]; + mapping.expression = [{'EFIT03'},{'\zmaxis'}]; % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % extra D3D cases (not necessarily in official data_request name list) diff --git a/crpptbx/D3D/gdat_d3d.m b/crpptbx/D3D/gdat_d3d.m index d20e5db5..15bd5c09 100644 --- a/crpptbx/D3D/gdat_d3d.m +++ b/crpptbx/D3D/gdat_d3d.m @@ -254,7 +254,9 @@ if strcmp(mapping_for_d3d.method,'signal') if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source) || ~ischar(gdat_data.gdat_params.source) gdat_data.gdat_params.source = mapping_for_d3d.expression{1}; else + mapping_for_d3d.expression{1} = gdat_data.gdat_params.source; end + gdat_data.gdat_params.source = mapping_for_d3d.expression{1}; [shoteff,stat] = mdsopen(['atlas.gat.com::' mapping_for_d3d.expression{1}],shot); if shoteff~=shot disp('cannot open shot'); @@ -270,7 +272,7 @@ if strcmp(mapping_for_d3d.method,'signal') return end if iscell(gdat_data.label) && length(gdat_data.label)==2; - gdat_data.label = {[gdat_data.label{1} ' ' gdat_data.label{2}]}; + gdat_data.label = [gdat_data.label{1} ' ' gdat_data.label{2}]; end gdat_data.data_fullpath=mapping_for_d3d.expression; % end of method "signal" @@ -1151,6 +1153,9 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') for i=1:length(labels) if ~isempty(labels{i}) icount=icount+1; + if icount==1 & ~iscell(gdat_data.label) + gdat_data = rmfield(gdat_data,'label'); + end gdat_data.label{icount} = labels{i}; end end @@ -1165,6 +1170,7 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'powers'} sources_avail = {'ohm','ec','nbi','ic'}; % note should allow ech, nbh, ohmic in parameter sources + sources_avail = {'ohm','ec','nbi'}; % note should allow ech, nbh, ohmic in parameter sources for i=1:length(sources_avail) gdat_data.(sources_avail{i}).data = []; gdat_data.(sources_avail{i}).units = []; @@ -1209,7 +1215,7 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') % total of each source in .data, but full data in subfield like pgyro in .ec, to check for nbi params_eff = gdat_data.gdat_params; % ohmic, use its time-base - params_eff.data_request={'TOT','P_OH'}; + params_eff.data_request={'EFIT03','\vloopmhd'}; %poh too noisy even if vloop*ip is not quite correct try ohm=gdat_d3d(shot,params_eff); catch @@ -1217,6 +1223,9 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') ohm.dim = []; end if ~isempty(ohm.data) && ~isempty(ohm.dim) + ip=gdat_d3d(shot,'ip'); + ip_ohm=interp1(ip.t,ip.data,ohm.t); + ohm.data = ohm.data .* ip_ohm; for i=1:length(fields_to_copy) if isfield(ohm,fields_to_copy{i}) gdat_data.ohm.(fields_to_copy{i}) = ohm.(fields_to_copy{i}); @@ -1243,7 +1252,6 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') % if any(strmatch('ec',gdat_data.gdat_params.source)) % ec - params_eff.data_request={'ECS','PECRH'}; params_eff.data_request='pgyro'; try ec=gdat_d3d(shot,params_eff); @@ -1264,7 +1272,7 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') % if any(strmatch('nb',gdat_data.gdat_params.source)) % nbi - params_eff.data_request={'NIS','PNIQ'}; + params_eff.data_request='nbi'; try nbi=gdat_d3d(shot,params_eff); catch diff --git a/crpptbx/gdat_plot.m b/crpptbx/gdat_plot.m index 5f12e909..295fe32a 100644 --- a/crpptbx/gdat_plot.m +++ b/crpptbx/gdat_plot.m @@ -71,9 +71,9 @@ if all(isfield(gdat_data,{'data','t'})) && ~isempty(gdat_data.data) && ~isempty( ylabel_eff = gdat_data.label; if iscell(gdat_data.label) && length(gdat_data.label)>=2; ylabel_eff = gdat_data.label{end}; end if ~isempty(gdat_data.units) - hylabel=ylabel([ylabel_eff '[' gdat_data.units ']']); + hylabel=ylabel([ylabel_eff '[' gdat_data.units ']'],'interpreter','none'); else - hylabel=ylabel(ylabel_eff); + hylabel=ylabel(ylabel_eff,'interpreter','none'); end if iscell(gdat_data.label) && length(gdat_data.label)>=2; legend(gdat_data.label,'interpreter','none'); -- GitLab