From 2388b01d27d5c8d263fcc682486f12f09bd08315 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Fri, 18 Aug 2017 05:34:43 +0000 Subject: [PATCH] add generic get_grids_1d call to AUG as well, added .rhotor_edge .volume_edge to all in JET and TCV as well git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@8230 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/AUG/aug_requests_mapping.m | 4 ++-- crpptbx/AUG/gdat_aug.m | 19 +++++++++------ crpptbx/JET/gdat_jet.m | 5 ++-- crpptbx/TCV/gdat_tcv.m | 5 +++- crpptbx/get_grids_1d.m | 38 +++++++++++++++++++++++------- 5 files changed, 50 insertions(+), 21 deletions(-) diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m index 92f32ef1..92a991d3 100644 --- a/crpptbx/AUG/aug_requests_mapping.m +++ b/crpptbx/AUG/aug_requests_mapping.m @@ -357,14 +357,14 @@ switch lower(data_request) 'gdat_tmp=gdat_aug(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;']; - case 'volume' + case {'volume', 'volume_edge'} mapping.label = 'Volume'; mapping.timedim = 1; mapping.method = 'signal'; mapping.expression = [{'FPG'},{'Vol'},{'AUGD'}]; case 'volume_rho' mapping.timedim = 2; - mapping.label = 'volume\_norm'; + mapping.label = 'Volume'; mapping.method = 'switchcase'; case 'wmhd' mapping.label = 'Wmhd'; diff --git a/crpptbx/AUG/gdat_aug.m b/crpptbx/AUG/gdat_aug.m index 0c3bc45a..b86a199a 100644 --- a/crpptbx/AUG/gdat_aug.m +++ b/crpptbx/AUG/gdat_aug.m @@ -1163,13 +1163,15 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.x(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhopolnorm(:,iaaa); gdat_data.dim{1} = gdat_data.x; gdat_data.dimunits{1} = 'rhopolnorm'; - gdat_data.grids_1d.rhopolnorm = gdat_data.x; - gdat_data.grids_1d.psi = gdat_data.(lower(node_child_nameeff)).psi; - gdat_data.grids_1d.psi(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).psi(:,iaaa); - gdat_data.grids_1d.rhotornorm = gdat_data.(lower(node_child_nameeff)).rhotornorm; - gdat_data.grids_1d.rhotornorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhotornorm(:,iaaa); - gdat_data.grids_1d.rhovolnorm = gdat_data.(lower(node_child_nameeff)).rhovolnorm; - gdat_data.grids_1d.rhovolnorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhovolnorm(:,iaaa); + gdat_data2 = get_grids_1d(gdat_data,2,1,gdat_params.nverbose); + gdat_data.grids_1d = gdat_data2.grids_1d; +% $$$ gdat_data.grids_1d.rhopolnorm = gdat_data.x; +% $$$ gdat_data.grids_1d.psi = gdat_data.(lower(node_child_nameeff)).psi; +% $$$ gdat_data.grids_1d.psi(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).psi(:,iaaa); +% $$$ gdat_data.grids_1d.rhotornorm = gdat_data.(lower(node_child_nameeff)).rhotornorm; +% $$$ gdat_data.grids_1d.rhotornorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhotornorm(:,iaaa); +% $$$ gdat_data.grids_1d.rhovolnorm = gdat_data.(lower(node_child_nameeff)).rhovolnorm; +% $$$ gdat_data.grids_1d.rhovolnorm(inb_chord_core+1:inb_chord_core+inb_chord_edge,:) = gdat_data.(lower(node_child_nameeff_e)).rhovolnorm(:,iaaa); gdat_data.data_fullpath = [gdat_data.data_fullpath ' projected on equilibrium ' gdat_data.gdat_params.equil]; @@ -1806,6 +1808,7 @@ elseif strcmp(mapping_for_aug.method,'switchcase') gdat_data.dim{2} = gdat_data.t; gdat_data.dimunits{1} = 'rhopolnorm'; gdat_data.dimunits{2} = 'time [s]'; + gdat_data.volume_edge = gdat_data.vol(end,:); if strcmp(data_request_eff,'volume_rho') gdat_data.data = gdat_data.vol; gdat_data.units = Vol.units; @@ -1826,6 +1829,8 @@ elseif strcmp(mapping_for_aug.method,'switchcase') psi_lcfs(it)= psi_it(end); gdat_data.x(:,it) = sqrt(abs((psi_it-psi_axis(it)) ./(psi_lcfs(it)-psi_axis(it)))); end + % always provide rhotor_edge so field always exists + gdat_data.rhotor_edge = gdat_data.rhotor(end,:); if strcmp(data_request_eff,'rhotor') gdat_data.data = gdat_data.rhotor; gdat_data.units = 'm'; diff --git a/crpptbx/JET/gdat_jet.m b/crpptbx/JET/gdat_jet.m index 3dfdbe76..82bc3108 100644 --- a/crpptbx/JET/gdat_jet.m +++ b/crpptbx/JET/gdat_jet.m @@ -1431,6 +1431,7 @@ elseif strcmp(mapping_for_jet.method,'switchcase') gdat_data.b0 = interpos(b0.t,b0.data,t,-0.1); if strcmp(data_request_eff,'rhotor_edge') gdat_data.data = sqrt(phi(end,:)./pi./reshape(gdat_data.b0,1,numel(gdat_data.b0))); + gdat_data.rhotor_edge = gdat_data.data; % always provide rhotor_edge so field always exists gdat_data.dim = {t}; gdat_data.t = gdat_data.dim{1}; gdat_data.data_fullpath='sqrt(Phi_edge/pi/B0) from {''ppf''},{''EFIT''},{''FTOR''}'; @@ -1438,6 +1439,7 @@ elseif strcmp(mapping_for_jet.method,'switchcase') gdat_data.dimunits{1} = 's'; elseif strcmp(data_request_eff,'rhotor') gdat_data.data = sqrt(phi./(ones(length(x),1)*reshape(gdat_data.b0,1,numel(gdat_data.b0)))./pi); + gdat_data.rhotor_edge = gdat_data.data(end,:); gdat_data.dim{1} = x; gdat_data.dim{2} = t; gdat_data.x = x; @@ -1485,13 +1487,12 @@ elseif strcmp(mapping_for_jet.method,'switchcase') gdat_data.t = t; gdat_data.dim = [{gdat_data.x}, {gdat_data.t}]; gdat_data.dimunits = [{'rhopol'}, {'s'}]; + gdat_data.volume_edge = volpsi(end,:); switch data_request_eff case 'volume_rho' gdat_data.data = volpsi; - gdat_data.volume_edge = volpsi(end,:); case 'rhovol' gdat_data.data = sqrt(volpsi./(ones(length(gdat_data.x),1)*reshape(volpsi(end,:),1,length(gdat_data.t)))); - gdat_data.volume_edge = volpsi(end,:); end otherwise disp(['data_request_eff = ' data_request_eff ' not defined in this section']); diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m index ea72c068..ee6795ef 100644 --- a/crpptbx/TCV/gdat_tcv.m +++ b/crpptbx/TCV/gdat_tcv.m @@ -1712,6 +1712,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.t = phi_tor.t; ij=find(isfinite(b0.data)); gdat_data.b0 = interpos(b0.t(ij),b0.data(ij),gdat_data.t); + % always provide rhotor_edge so field always exists gdat_data.rhotor_edge = sqrt(phi_tor.data(end,:)./pi./reshape(gdat_data.b0,1,numel(gdat_data.b0)))'; if strcmp(data_request_eff,'rhotor_edge') gdat_data.data = gdat_data.rhotor_edge; @@ -1772,6 +1773,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if strcmp(data_request_eff,'volume') if length(gdat_data.dim >=2) gdat_data.data = tracetdi.data(end,:); + gdat_data.volume_edge = gdat_data.data; gdat_data.dim{1} = tracetdi.dim{2}; gdat_data.dimunits{1} = tracetdi.dimunits{2}; else @@ -1788,11 +1790,12 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') gdat_data.dim = tracetdi.dim; gdat_data.x = gdat_data.dim{1}; gdat_data.dimunits = tracetdi.dimunits; + % to always have field volume_edge + gdat_data.volume_edge = gdat_data.data(end,:); if strcmp(data_request_eff,'volume_rho') gdat_data.request_description = 'volume(rho)'; gdat_data.data_fullpath=['Volume(rho) from ' nodenameeff]; elseif strcmp(data_request_eff,'rhovol') - gdat_data.volume_edge = gdat_data.data(end,:); gdat_data.data = sqrt(gdat_data.data./repmat(reshape(gdat_data.volume_edge,1,size(gdat_data.data,2)),size(gdat_data.data,1),1)); gdat_data.data_fullpath=['sqrt(volume/volume(edge) from ' nodenameeff]; gdat_data.request_description = 'sqrt(volume(rho)/volume(edge))'; diff --git a/crpptbx/get_grids_1d.m b/crpptbx/get_grids_1d.m index 57d2be4f..fbda005d 100644 --- a/crpptbx/get_grids_1d.m +++ b/crpptbx/get_grids_1d.m @@ -28,16 +28,20 @@ end params_eff = gdat_data.gdat_params;params_eff.doplot=0; params_eff.data_request='rhotor_norm'; rhotor_norm = gdat(gdat_data.shot,params_eff); +ndim_x_rhotor = length(find(size(rhotor_norm.x)>1)); params_eff.data_request='rhovol'; rhovol = gdat(gdat_data.shot,params_eff); +ndim_x_rhovol = length(find(size(rhotor_norm.x)>1)); params_eff.data_request='psi_axis'; psi_axis = gdat(gdat_data.shot,params_eff); -psi0 = interpos(psi_axis.t,psi_axis.data,gdat_data.t,-0.01); +params_eff.data_request='psi_edge'; +psi_edge = gdat(gdat_data.shot,params_eff); +psi0_edge = interpos(63,psi_axis.t,psi_axis.data-psi_edge.data,gdat_data.t,-0.01); if (nbdim_x == 1) - gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2*reshape(psi0,1,length(psi0)); + gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2*reshape(psi0_edge,1,length(psi0_edge)); elseif (nbdim_x == 2) - gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2.*repmat(reshape(psi0,1,length(psi0)),size(gdat_data.grids_1d.rhopolnorm,1),1); + gdat_data.grids_1d.psi = gdat_data.grids_1d.rhopolnorm.^2.*repmat(reshape(psi0_edge,1,length(psi0_edge)),size(gdat_data.grids_1d.rhopolnorm,1),1); else if nverbose>=0; disp(['option: nbdim_x = ' numstr(nbdim_x) ' not implemented, check with O. Sauter']); end return @@ -58,21 +62,37 @@ for it=1:length(gdat_data.t) end if (nbdim_x == 1) if length(ii)==length(gdat_data.grids_1d.rhopolnorm) - gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm); + if ndim_x_rhotor==1 + gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm); + else + gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x(:,it_rt_eff),rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm); + end if ~isempty(rhovol.x) - gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm); + if ndim_x_rhovol==1 + gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm); + else + gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x(:,it_vol_eff),rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm); + end end end else if length(ii)==size(gdat_data.grids_1d.rhopolnorm,1) - gdat_data.grids_1d.rhotornorm(:,it)=interpos(rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + if ndim_x_rhotor==1 + gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x,rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + else + gdat_data.grids_1d.rhotornorm(:,it)=interpos(-13,rhotor_norm.x(:,it_rt_eff),rhotor_norm.data(:,it_rt_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + end if ~isempty(rhovol.x) - gdat_data.grids_1d.rhovolnorm(:,it)=interpos(rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + if ndim_x_rhovol==1 + gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x,rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + else + gdat_data.grids_1d.rhovolnorm(:,it)=interpos(-13,rhovol.x(:,it_vol_eff),rhovol.data(:,it_vol_eff),gdat_data.grids_1d.rhopolnorm(:,it)); + end end end end end -gdat_data.grids_1d.rhotor_edge=interpos(rhotor_norm.t',rhotor_norm.rhotor_edge,gdat_data.t',-0.01); -gdat_data.grids_1d.volume_edge=interpos(rhovol.t',rhovol.volume_edge,gdat_data.t',-0.01); +gdat_data.grids_1d.rhotor_edge=interpos(-63,rhotor_norm.t',rhotor_norm.rhotor_edge,gdat_data.t',-0.01); +gdat_data.grids_1d.volume_edge=interpos(-63,rhovol.t',rhovol.volume_edge,gdat_data.t',-0.01); -- GitLab