diff --git a/matlab/D3D/d3d_requests_mapping.m b/matlab/D3D/d3d_requests_mapping.m index 95f09dd47ab980e62e16be029f9fe4d1f5f10b2c..605f31605c3cb84ab7f10349e80c0cdedd28b10f 100644 --- a/matlab/D3D/d3d_requests_mapping.m +++ b/matlab/D3D/d3d_requests_mapping.m @@ -70,11 +70,6 @@ switch lower(data_request) mapping.timedim = 1; mapping.gdat_timedim = 2; mapping.method = 'switchcase'; - case {'cxrs', 'cxrs_rho'} - mapping.timedim = 2; - mapping.label = 'cxrs'; - mapping.method = 'switchcase'; - mapping.expression = ''; case 'delta' mapping.timedim = 1; mapping.label = 'delta'; @@ -194,9 +189,6 @@ switch lower(data_request) 'gdat_tmp.gdat_request=''' data_request ''';' ... 'gdat_tmp.data_smooth=interpos(gdat_tmp.t,gdat_tmp.data,-3e7);' ... 'gdat_tmp.data_smooth=max(0.,gdat_tmp.data_smooth);']; - case 'ne' - mapping.timedim = 2; - mapping.method = 'switchcase'; case {'neint'} mapping.timedim = 1; mapping.label = 'line integrated el. density'; @@ -219,7 +211,7 @@ switch lower(data_request) mapping.label = 'NEBAR\_R0'; mapping.method = 'signal'; mapping.expression = [{'efit01'},{'\NEBAR_R0'}]; - case 'ne_rho' + case {'ne', 'ne_rho'} mapping.timedim = 2; mapping.label = 'ne'; mapping.method = 'switchcase'; @@ -252,6 +244,15 @@ switch lower(data_request) 'tmp_data2=interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t,[],NaN);' ... 'gdat_tmp.data = gdat_tmp.data*1e6./(tmp_data2+1e-5);' ... 'gdat_tmp.units='''';gdat_tmp.dimunits{1}=''s'';']; + case {'f2b', 'pcf2b'} + mapping.label = {'pcf2b','f2b'}'; + mapping.timedim = 1; + mapping.method = 'expression'; + mapping.expression = ['params_eff = gdat_data.gdat_params;params_eff.data_request=[{''d3d''},{''ptdata("pcf2b")''}];' ... + 'gdat_tmp=gdat_d3d(shot,params_eff);params_eff = gdat_data.gdat_params;' ... + 'params_eff.data_request=[{''d3d''},{''ptdata("f2b")''}];gdat_tmp2=gdat_d3d(shot,params_eff);' ... + 'gdat_tmp.data(:,2) = interp1(gdat_tmp2.t,gdat_tmp2.data,gdat_tmp.t);' ... + 'gdat_tmp.gdat_request=''' data_request ''';']; case 'pgyro' mapping.timedim = 1; mapping.label = 'EC gyros'; @@ -290,6 +291,11 @@ switch lower(data_request) mapping.label = 'q_0'; mapping.method = 'signal'; mapping.expression = [{'EFIT01'},{'\q0'}]; + case 'qmin' + mapping.timedim = 1; + mapping.label = 'q_min'; + mapping.method = 'signal'; + mapping.expression = [{'EFIT01'},{'\qmin'}]; case 'q95' mapping.timedim = 1; mapping.label = 'q_{95}'; @@ -305,6 +311,11 @@ switch lower(data_request) mapping.gdat_timedim = 2; mapping.label = 'q'; mapping.method = 'switchcase'; + case {'rot', 'cerqrot'} + mapping.timedim = 2; + mapping.label = 'cerqrot'; + mapping.method = 'switchcase'; + mapping.expression = ''; case 'r0' mapping.timedim = 1; mapping.label = 'R_0'; @@ -346,7 +357,7 @@ switch lower(data_request) mapping.timedim = 2; mapping.label = 'rhovol\_norm'; mapping.method = 'switchcase'; - case 'rmag' + case {'rmag', 'r_mag', 'r_axis'} mapping.label = 'R\_magaxis'; mapping.timedim = 1; mapping.method = 'signal'; @@ -360,11 +371,7 @@ switch lower(data_request) mapping.timedim = 1; mapping.method = 'signal'; mapping.expression = [{'TOT'},{'tau_tot'},{'D3DD'}]; - case 'te' - mapping.timedim = 2; - mapping.label = 'Te'; - mapping.method = 'switchcase'; - case 'te_rho' + case {'te', 'te_rho'} mapping.timedim = 2; mapping.label = 'Te'; mapping.method = 'switchcase'; diff --git a/matlab/D3D/gdat_d3d.m b/matlab/D3D/gdat_d3d.m index 211a9034151a366bdc917a38a83f9ab1c1f5d90a..f7a04a72629da63f71440f92bff79eae16a1ea29 100644 --- a/matlab/D3D/gdat_d3d.m +++ b/matlab/D3D/gdat_d3d.m @@ -788,37 +788,45 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') case {'ne','te'} exp_name_eff = gdat_data.gdat_params.exp_name; % 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]=rdaD3D_eff(shot,'VTA',nodenameeff,exp_name_eff); - if isempty(a.data) || isempty(a.t) || error_status>0 + if strcmp(data_request_eff,'te') + node_leaf = 'TEMP'; + else + node_leaf = 'DENSITY'; + end + % core + nodenameeff = ['TS.BLESSED.CORE:' node_leaf]; + a = gdat_d3d(shot,{'electrons',nodenameeff}); + if isempty(a.data) || isempty(a.t) if gdat_params.nverbose>=3; a disp(['with data_request= ' data_request_eff]) end return end - gdat_data.(lower(node_child_nameeff)).data = a.data; - gdat_data.(lower(node_child_nameeff)).t = a.t; gdat_data.t = a.t; + gdat_data.x = a.x; + gdat_data.gdat_params.tree = a.gdat_params.tree; + gdat_data.gdat_params.equil = a.gdat_params.equil; if any(strcmp(fieldnames(a),'units')) gdat_data.units=a.units; end - [alow,e]=rdaD3D_eff(shot,'VTA',[upper(data_request_eff(1)) 'elow_c'],exp_name_eff); - [aup,e]=rdaD3D_eff(shot,'VTA',[upper(data_request_eff(1)) 'eupp_c'],exp_name_eff); - 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]=rdaD3D_eff(shot,'VTA','R_core',exp_name_eff); - gdat_data.(lower(node_child_nameeff)).r = repmat(a.data,size(gdat_data.(lower(node_child_nameeff)).data,1),1); - [a,error_status]=rdaD3D_eff(shot,'VTA','Z_core',exp_name_eff); - 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']; - nb_core = size(gdat_data.(lower(node_child_nameeff)).z,1); - gdat_data.data = []; - gdat_data.data(1:nb_core,:) = gdat_data.(lower(node_child_nameeff)).data(1:nb_core,:); - gdat_data.dim=[{gdat_data.(lower(node_child_nameeff)).z};{gdat_data.(lower(node_child_nameeff)).t}]; - gdat_data.error_bar(1:nb_core,:) = gdat_data.(lower(node_child_nameeff)).error_bar(1:nb_core,:); + gdat_data.core.data = a.data'; + gdat_data.core.t = a.t; + gdat_data.core.x = a.x; +% $$$ 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]=rdaD3D_eff(shot,'VTA','R_core',exp_name_eff); +% $$$ gdat_data.(lower(node_child_nameeff)).r = repmat(a.data,size(gdat_data.(lower(node_child_nameeff)).data,1),1); +% $$$ [a,error_status]=rdaD3D_eff(shot,'VTA','Z_core',exp_name_eff); + gdat_data.z = gdat_data.x; + gdat_data.data_fullpath=[data_request_eff 'from ' nodenameeff]; + nb_core = numel(gdat_data.x); + gdat_data.data = a.data'; % to get time as 2nd dim + % gdat_data.data(1:nb_core,:) = gdat_data.data(1:nb_core,:); + gdat_data.dim=[{gdat_data.z};{gdat_data.t}]; + gdat_data.dimunits=[{'Z [m]'}; {'time [s]'}]; +% $$$ gdat_data.error_bar(1:nb_core,:) = gdat_data.error_bar(1:nb_core,:); + return % add edge part nodenameeff_e = [upper(data_request_eff(1)) 'e_e']; node_child_nameeff_e = [upper(data_request_eff(1)) 'e_edge']; @@ -1472,6 +1480,75 @@ elseif strcmp(mapping_for_d3d.method,'switchcase') gdat_data.data_fullpath = [DIAG '/PFL extract ' data_request_eff]; end + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + case {'rot', 'cerqrot'} + nth_points = 13; + if isfield(gdat_data.gdat_params,'nth_points') && ~isempty(gdat_data.gdat_params.nth_points) + nth_points = gdat_data.gdat_params.nth_points; + else + gdat_data.gdat_params.nth_points = nth_points; + end + channels = -1; + if isfield(gdat_data.gdat_params,'channels') && ~isempty(gdat_data.gdat_params.channels) + channels = gdat_data.gdat_params.channels; + end + diag_name = 'cerqrot'; + if nth_points>=10 + match_rz_to_time = 1; + else + match_rz_to_time = 0; + end + if isfield(gdat_data.gdat_params,'match_rz_to_time') && ~isempty(gdat_data.gdat_params.match_rz_to_time) + match_rz_to_time = gdat_data.gdat_params.match_rz_to_time; + else + gdat_data.gdat_params.match_rz_to_time = match_rz_to_time; + end + time_interval = [-Inf +Inf]; + if isfield(gdat_data.gdat_params,'time_interval') && ~isempty(gdat_data.gdat_params.time_interval) + time_interval = gdat_data.gdat_params.time_interval; + else + gdat_data.gdat_params.time_interval = time_interval; + end + % + if channels(1)<=0 + channels = [1:24]; + end + chanelles=sort(channels); + gdat_data.dim{1} = channels; + gdat_data.gdat_params.channels = channels; + max_points = 0; + for i=channels + aall{i} = gdat_d3d(shot,['\cerqrott' num2str(i)]); + if isnumeric(aall{i}.data) + gdat_data.channels_ok(i) = 1; + if numel(aall{i}.data) > max_points + max_points = numel(aall{i}.data); + gdat_data.t = aall{i}.t; + end + else + gdat_data.channels_ok(i) = 0; + end + end + gdat_data.dim{2} = gdat_data.t; + gdat_data.data = NaN(max(channels),max_points); + for i=channels + if gdat_data.channels_ok(i) + if nth_points>1 + ieff = [1:nth_points:numel(aall{i}.data)]; + iteff = iround_os(gdat_data.t,aall{i}.t(ieff)); + gdat_data.data(i,iteff) = interp1(aall{i}.t,aall{i}.data,gdat_data.t(iteff)); + else + iteff = iround_os(gdat_data.t,aall{i}.t); + gdat_data.data(i,iteff) = interp1(aall{i}.t,aall{i}.data,gdat_data.t(iteff)); + end + end + end + gdat_data.x = gdat_data.dim{1}; + gdat_data.dimunits=[{'channels'} ; {'time [s]'}]; + %if any(strcmp(fieldnames(a),'units')); gdat_data.units=a.units; end + gdat_data.data_fullpath = [diag_name '\tcerqrot' num2str(channels(1)) '...' num2str(channels(end))]; + gdat_data.allchannels = aall; + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'rhotor', 'rhotor_edge', 'rhotor_norm', 'rhovol', 'volume_rho'} if strcmp(upper(gdat_data.gdat_params.equil),'FPG')