diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m index d3f2b77db13a8ac974f9d916e98a880dcc7cb19c..84a865aded99e6209e7ded8aeb0b0744011bbeda 100644 --- a/crpptbx/TCV/gdat_tcv.m +++ b/crpptbx/TCV/gdat_tcv.m @@ -107,7 +107,10 @@ gdat_data.data_fullpath = []; % Treat inputs: ivarargin_first_char = 3; data_request_eff = ''; -if nargin>=2 && ischar(data_request); data_request = lower(data_request); end +if nargin>=2 && ischar(data_request); + data_request_eff = data_request; + data_request = data_request; % should not lower until see if keyword +end gdat_data.gdat_request = data_request_names_all; % so if return early gives list of possible request names gdat_data.gdat_params.help = tcv_help_parameters(fieldnames(gdat_data.gdat_params)); @@ -165,8 +168,8 @@ if nargin>=2 && ivarargin_first_char~=1 error_status=3; return end - data_request.data_request = lower(data_request.data_request); data_request_eff = data_request.data_request; + data_request.data_request = lower(data_request.data_request); gdat_params = data_request; else % since data_request is char check from nb of args if it is data_request or a start of pairs @@ -222,11 +225,10 @@ if (nargin>=ivarargin_first_char) return end end -data_request_eff = gdat_params.data_request; % in case was defined in pairs % if it is a request_keyword copy it: if ischar(data_request_eff) || length(data_request_eff)==1 - ij=strmatch(data_request_eff,data_request_names_all,'exact'); + ij=strmatch(lower(data_request_eff),data_request_names_all,'exact'); else ij=[]; end @@ -309,7 +311,7 @@ if do_mdsopen_mdsclose if shot==-1 || liuqe_version_eff==-1 ishot = mdsopen('pcs', shot); else - if length(data_request_eff)>7 && strcmp(data_request_eff(1:6),'\rtc::') + if length(data_request_eff)>7 && strcmp(lower(data_request_eff(1:6)),'\rtc::') ishot = mdsopen('rtc',shot); % sub-tree data_request_eff = data_request_eff(7:end); mapping_for_tcv.expression = data_request_eff; @@ -677,6 +679,10 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') case {'zgeom','z_geom'} % compute average minor or major radius (on z=zaxis normally) % + data_request_eff = 'zgeom'; + gdat_data.gdat_request = data_request_eff; + gdat_data.gdat_params.gdat_request = gdat_data.gdat_request; + gdat_params = gdat_data.gdat_params; if liuqe_matlab==0 nodenameeff=['tcv_eq(''z_contour'',''LIUQE' substr_liuqe_tcv_eq ''')']; else @@ -1067,6 +1073,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if isfield(gdat_data.gdat_params,'channels') && ~isempty(gdat_data.gdat_params.channels) channels = gdat_data.gdat_params.channels; end + % '\base::pd:pd_001'; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'icds'} @@ -1897,18 +1904,22 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'pprime', 'pprime_rho'} if liuqe_matlab==0 - nodenameeff = ['tcv_eq(''' liuqefortran2liuqematlab('pprime_rho',1,0) ''',''LIUQE' substr_liuqe_tcv_eq ''')']; + nodenameeff = ['tcv_eq("' liuqefortran2liuqematlab('pprime_rho',1,0) '",''' psitbx_str ''')']; tracetdi=tdi(nodenameeff); - tracetdi.dim{1} = sqrt(tracetdi.dim{1}); % correct x-axis psi_norm to rhopol - tracetdi.data = tracetdi.data ./2 ./pi; % correct node assumption + if ~isempty(tracetdi.dim) && length(tracetdi.dim)>=1 + tracetdi.dim{1} = sqrt(tracetdi.dim{1}); % correct x-axis psi_norm to rhopol + end + tracetdi.data = tracetdi.data ./2 ./pi; % correct node assumption (same for liuqe_fortran and fbte) else - nodenameeff = ['tcv_eq(''pprime_rho'',''LIUQE.M' substr_liuqe_tcv_eq ''')']; + nodenameeff = ['tcv_eq(''pprime_rho'',''' psitbx_str ''')']; tracetdi=tdi(nodenameeff); end gdat_data.data = tracetdi.data; gdat_data.dim = tracetdi.dim; - gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim}; - gdat_data.x = gdat_data.dim{setdiff([1 2],mapping_for_tcv.gdat_timedim)}; + if ~isempty(gdat_data.dim) && length(gdat_data.dim)>=2 + gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim}; + gdat_data.x = gdat_data.dim{setdiff([1 2],mapping_for_tcv.gdat_timedim)}; + end gdat_data.data_fullpath=nodenameeff; gdat_data.dimunits = tracetdi.dimunits; gdat_data.units = tracetdi.units; @@ -2489,6 +2500,30 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') end + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + case {'ttprime', 'ttprime_rho'} + if liuqe_matlab==0 + nodenameeff = ['tcv_eq("' liuqefortran2liuqematlab('ttprime_rho',1,0) '",''' psitbx_str ''')']; + tracetdi=tdi(nodenameeff); + if ~isempty(tracetdi.dim) && length(tracetdi.dim)>=1 + tracetdi.dim{1} = sqrt(tracetdi.dim{1}); % correct x-axis psi_norm to rhopol + end + tracetdi.data = tracetdi.data ./2 ./pi; % correct node assumption (same for liuqe_fortran and fbte) + else + nodenameeff = ['tcv_eq(''ttprime_rho'',''' psitbx_str ''')']; + tracetdi=tdi(nodenameeff); + end + gdat_data.data = tracetdi.data; + gdat_data.dim = tracetdi.dim; + if ~isempty(gdat_data.dim) && length(gdat_data.dim)>=2 + gdat_data.t = gdat_data.dim{mapping_for_tcv.gdat_timedim}; + gdat_data.x = gdat_data.dim{setdiff([1 2],mapping_for_tcv.gdat_timedim)}; + end + gdat_data.data_fullpath=nodenameeff; + gdat_data.dimunits = tracetdi.dimunits; + gdat_data.units = tracetdi.units; + gdat_data.request_description = 'ttprime=t*dt/dpsi'; + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% case {'profnerho','profterho'} % for backward compatibility but corresponds to ne_rho with param.fit_type='auto' (TCV special) diff --git a/crpptbx/TCV/tcv_requests_mapping.m b/crpptbx/TCV/tcv_requests_mapping.m index 93b32b12741719fd3d59a45bd0f03c7884d6e370..b9b54e9c9eaed4809c1ce82cca177b191033c515 100644 --- a/crpptbx/TCV/tcv_requests_mapping.m +++ b/crpptbx/TCV/tcv_requests_mapping.m @@ -364,7 +364,7 @@ switch lower(data_request) mapping.method = 'switchcase'; case {'ttprime', 'ttprime_rho'} mapping.timedim = 2; - mapping.label = 'pprime'; + mapping.label = 'ttprime'; mapping.method = 'switchcase'; case 'vloop' mapping.timedim = 1; diff --git a/crpptbx/gdat.m b/crpptbx/gdat.m index ed5f95a8ab88911a75795742c186b44bcbc9ec35..e54cb69c37ab35666f0c43a4861ddd6804a586c0 100644 --- a/crpptbx/gdat.m +++ b/crpptbx/gdat.m @@ -51,6 +51,9 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat(shot,data_request % gd = gdat(48836,'ip','doplot',1,'machine','TCV'); % working call for TCV % gd = gdat(35345,'ip','doplot',1,'machine','AUG'); % working call for AUG % +% gd = gdat; to get all available data_requests for the default machine +% gd = gdat('machine',machine); to get all available data_requests for a given machine +% % more detailed examples for specific machine: % help gdat_tcv; help gdat_aug; help gdat_jet; etc % @@ -68,6 +71,9 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat(shot,data_request % if nargin<=4 and >2 and 1st and 3rd are numeric, assume this is an old call and transform it to: % gdat(shot,'data_request','doplot',doplot','machine',machine) % and a warning + +nargin_eff = nargin; + if nargin>2 varargin_eff = varargin; if nargin>=3 && nargin<=4 && isnumeric(shot) && isnumeric(varargin{1}) @@ -102,6 +108,9 @@ if nargin>=2 % need at least 2 inputs to have 'machine','aug' as arguments (to a % in case start directly with pairs of options if ischar(shot) && strcmp(lower(shot),'machine') && ischar(data_request) machine_eff = data_request; + if nargin==2 + nargin_eff = 0; + end elseif isstruct(shot) && isfield(shot,'machine') machine_eff = shot.machine; elseif isstruct(data_request) && isfield(data_request,'machine') @@ -131,9 +140,9 @@ end % copy gdat present call: gdat_call = []; -if nargin==0 +if nargin_eff==0 subcall=['gdat;']; -elseif nargin>=1 +elseif nargin_eff>=1 if isnumeric(shot) subcall=['gdat(' num2str(shot) ]; elseif ischar(shot) @@ -143,14 +152,14 @@ elseif nargin>=1 gdat_call = []; return end - if nargin>=2 + if nargin_eff>=2 if isempty(data_request) subcall = [subcall ',[]']; else substring = subcall_all2str(data_request); subcall = [subcall substring]; end - if nargin>=3 + if nargin_eff>=3 substring = subcall_all2str(varargin_eff{:}); subcall = [subcall substring]; end @@ -164,11 +173,11 @@ gdat_call = [subcall ' % nargout = ' num2str(nargout)]; % Note: would need to check nargout to make call consistent, but to avoid this, each gdat_xxx should return at least an empty varargout: varargout{1}=cell(1); % copy subcall here so is last subnode try - if nargin==0 + if nargin_eff==0 args = {}; - elseif nargin==1 + elseif nargin_eff==1 args = {shot}; - elseif nargin==2 + elseif nargin_eff==2 args = {shot,data_request}; else args = [{shot,data_request},varargin_eff]; diff --git a/crpptbx/gdatpaths.m b/crpptbx/gdatpaths.m index 7c93c1836f02abb026f979b58d5db4e8b72fada0..8a25dd76468078238f5e76452b73acfb0aba9b78 100644 --- a/crpptbx/gdatpaths.m +++ b/crpptbx/gdatpaths.m @@ -14,7 +14,7 @@ a = fileparts(a); % machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'}]; % machines=[{'JET'} {'TCV'} {'AUG'} {'KSTAR'}]; -machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'} {'KSTAR'} {'IMAS'}]; +machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'} {'KSTAR'} {'TCV_IMAS'}]; add_paths = cell(1,length(machines)); for i=1:length(machines) diff --git a/crpptbx/liuqefortran2liuqematlab.m b/crpptbx/liuqefortran2liuqematlab.m index b5effd13341d8dfd9bcfeef771b9e475dea27806..623d6b520a83785ed10b2fa8b1ce7211ff4883a3 100644 --- a/crpptbx/liuqefortran2liuqematlab.m +++ b/crpptbx/liuqefortran2liuqematlab.m @@ -35,6 +35,7 @@ liuqe_fortran_matlab_table = [ ... {'r_min_psi'} , {'r_in'} ; ... % R inboard of rho flux surfaces {'r_max_psi'} , {'r_out'} ; ... % R outboard of rho flux surfaces {'total_energy'} , {'w_mhd'} ; ... + {'ttprime_psi'} , {'ttprime_rho'} ; ... % warning on different x-mesh {'z_contour'} , {'z_edge'} ; ... % z_rho has all the flux surfaces ]; diff --git a/crpptbx/test_all_requestnames.m b/crpptbx/test_all_requestnames.m index dc2c85658a7d3d181129d24019f3ac22369593bb..6d0f440b02f866d49f891e1d03f61ba86e7950b9 100644 --- a/crpptbx/test_all_requestnames.m +++ b/crpptbx/test_all_requestnames.m @@ -27,7 +27,11 @@ else end %% get request list -[gd0,gp0] = gdat; +if isempty(machine) + [gd0,gp0] = gdat; +else + [gd0,gp0] = gdat('machine',machine); +end if isempty(machine) machine = gp0.machine; end @@ -64,7 +68,7 @@ for ireq = 1:Nreq if ~ismember(myrequest,skip) % build request string - gdat_call{ireq} = sprintf('gdat_aug(%d,''%s'',''doplot'',%d,''machine'',''%s'')',shot,myrequest,doplot,machine); + gdat_call{ireq} = sprintf(['gdat_' machine '(%d,''%s'',''doplot'',%d)'],shot,myrequest,doplot); % eval call [err(ireq),telaps(ireq)] = do_gdat_call(gdat_call{ireq},nverbose);