From b9a53842170f4ae02d3ac03d9a1cb5d3406e3876 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Sun, 27 Jun 2010 14:24:17 +0000 Subject: [PATCH] allow for liuqe type -1: _-1 at end of name git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@2183 d63d8f72-b253-0410-a779-e742ad2e26cf --- crpptbx/TCV/loadTCVdata.m | 163 +++++++++++++++++++++++++++----------- 1 file changed, 118 insertions(+), 45 deletions(-) diff --git a/crpptbx/TCV/loadTCVdata.m b/crpptbx/TCV/loadTCVdata.m index 65dd2e5c..805005c1 100644 --- a/crpptbx/TCV/loadTCVdata.m +++ b/crpptbx/TCV/loadTCVdata.m @@ -1,6 +1,10 @@ function [trace,error,varargout]=loadTCVdata(shot,data_type,varargin) % +% Added option to load shot=-1 or >=100000 +% % list of data_type currently available (when [_2,_3] is added, means can add _i to get Liuqe i): +% if -1 is added, can also get it from FBTE with shot=-1, >=100000 or liuqe_version='_-1' (to get model file) +% % 'Ip'[_2,_3] = current % 'zmag'[_2,_3] = vertical position of the center of the plasma (magnetic axis) % 'rmag'[_2,_3] = radial position of the center of the plasma @@ -35,6 +39,7 @@ % 'vloop' = loop voltage % % 'xx_2 or xx_3' for Liuqe2 or 3: same as above for xx related to equilibrium +% 'xx_-1 or xx_-1' for FBTE values (model or shot=-1 or shot>=100000): same as above for xx related to equilibrium % % INPUT: % shot: shot number @@ -83,11 +88,29 @@ error=1; % To allow multiple ways of writing a specific keyword, use data_type_eff within this routine data_type_eff=data_type; i_23=0; -liuqe_ext=''; -if strcmp(data_type_eff(end-1:end),'_2') | strcmp(data_type_eff(end-1:end),'_3') - i_23=2; - liuqe_ext=data_type_eff(end-1:end); +% LIUQE tree +begstr = '\results::'; +endstr = ''; +liuqe_version = 1; +if length(data_type_eff)>2 + if strcmp(data_type_eff(end-1:end),'_2') | strcmp(data_type_eff(end-1:end),'_3') + i_23=2; + endstr=data_type_eff(end-1:end); + liuqe_version = str2num(data_type_eff(end:end)); + elseif strcmp(upper(data_type_eff(end-2:end)),'_-1') + i_23=3; + begstr = 'tcv_eq( "'; + endstr = '", "FBTE" )'; + liuqe_version = -1; + end end +if shot==-1 || shot>=100000 + % requires FBTE + liuqe_version = -1; + begstr = 'tcv_eq( "'; + endstr = '", "FBTE" )'; +end + % use keyword without eventual _2 or _3 extension to check for multiple possibilities data_type_eff_noext=data_type_eff(1:end-i_23); if ~isempty(strmatch(data_type_eff_noext,[{'ip'} {'i_p'} {'xip'}],'exact')) @@ -162,6 +185,15 @@ liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results: {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ... {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::rms_error'} {'\results::total_energy'}]; +% nodes which have FBTE equivalence, related to simpletdi case +liuqeFBTE=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ... + {'\results::beta_tor'} {'\results::beta_pol'} {'\results::q_95'} {'\results::l_i'} {'\results::delta_95'} ... + {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'}]; + +% keywords which do not have FBTE equivalence and are returned empty +noFBTE=[{'ne'} {'te'} {'nerho'} {'terho'} {'nerhozshift'} {'terhozshift'} {'profnerho'} {'profterho'} ... + {'neft'} {'teft'} {'neftav'} {'teftav'} {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'}]; + % all keywords and corresponding case to run below TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'rhovol'} {'qrho'} {'q95'} {'kappa'} ... {'delta'} {'deltatop'} {'deltabot'} {'neint'} ... @@ -265,7 +297,7 @@ if strcmp(data_type_eff(1:1),'\') if irpintwarn & isempty(index) disp('********************') disp('trace not yet registered.') - disp('If standard data, ask andrea.scarabosio@epfl.ch or olivier.sauter@epfl.ch to create a keyqord entry for this data') + disp('If standard data, ask olivier.sauter@epfl.ch to create a keyqord entry for this data') % eval(['!mail -s ''' data_type_eff ' ' num2str(shot) ' ' getenv('USER') ' TCV'' olivier.sauter@epfl.ch < /dev/null']) disp('********************') elseif isempty(index) @@ -292,6 +324,10 @@ else disp('********************') return end + if liuqe_version==-1 && ~isempty(strmatch(TCVkeywrdall{index},noFBTE,'exact')) + disp(['node ' TCVkeywrdall{index} ' not defined within FBTE']) + return + end end if irpintwarn disp(['loading' ' ' data_type_eff_noext ' from TCV shot #' num2str(shot)]); @@ -314,18 +350,33 @@ switch TCVkeywrdcase{index} case 'simpletdi' % load TCV other data - mdsopen(shot); - nodenameeff=[TCVsiglocation{index} liuqe_ext]; - % test if node exists - error=1; - ij=findstr(nodenameeff,'['); - if isempty(ij); ij=length(nodenameeff)+1; end - if eval(['~mdsdata(''node_exists("\' nodenameeff(1:ij-1) '")'')']) - disp(['node ' nodenameeff(1:ij-1) ' does not exist for shot = ' num2str(shot)]) - return + if liuqe_version==-1 + mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS. + else + mdsopen(shot); + % test if node exists + error=1; + ij=findstr(TCVsiglocation{index},'['); + if isempty(ij); ij=length(TCVsiglocation{index})+1; end + if eval(['~mdsdata(''node_exists("\' TCVsiglocation{index}(1:ij-1) '")'')']) + disp(['node ' TCVsiglocation{index}(1:ij-1) ' does not exist for shot = ' num2str(shot)]) + return % $$$ elseif eval(['mdsdata(''getnci("\' nodenameeff ':foo","length")'')==0']) % $$$ disp(['no data for node ' nodenameeff ' for shot = ' num2str(shot)]) % $$$ return + end + end + if strcmp(TCVsiglocation{index}(1:9),'\psitbx::') + begstr = 'tcv_psitbx("'; + nodenameeff=[begstr TCVsiglocation{index}(10:end) endstr] + elseif length(TCVsiglocation{index})>16 && strcmp(TCVsiglocation{index}(1:16),'\results::psitbx') + begstr = 'tcv_psitbx("'; + nodenameeff=[begstr TCVsiglocation{index}(18:end) endstr] + elseif strcmp(TCVsiglocation{index}(1:10),'\results::') + nodenameeff=[begstr TCVsiglocation{index}(11:end) endstr] + else + nodenameeff=TCVsiglocation{index} + disp(['should not have gone through here, mention this example to O. Sauter']); end tracetdi=tdi(nodenameeff); mdsclose; @@ -473,8 +524,9 @@ switch TCVkeywrdcase{index} trace.name=[num2str(shot) ';' nodenameeff]; % add correct dimensions % construct rho mesh - psi_max=tdi(['\results::thomson:psi_max' liuqe_ext]); - psiscatvol=tdi(['\results::thomson:psiscatvol' liuqe_ext]); + endstr + psi_max=tdi(['\results::thomson:psi_max' endstr]); + psiscatvol=tdi(['\results::thomson:psiscatvol' endstr]); for ir=1:length(psiscatvol.dim{2}) rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))'; end @@ -513,8 +565,11 @@ switch TCVkeywrdcase{index} % add correct dimensions time=mdsdata('\results::thomson:times'); % construct rho mesh - psi_max=tdi(['\results::thomson:psi_max' liuqe_ext]); - psiscatvol=tdi(['\results::thomson:psiscatvol' liuqe_ext]); + if strcmp(endstr,'_-1') + error(['in ' TCVkeywrdcase{index} ' endstr should not be ' endstr]); + end + psi_max=tdi(['\results::thomson:psi_max' endstr]); + psiscatvol=tdi(['\results::thomson:psiscatvol' endstr]); if abs(zshift)>1e-5 % calculate new psiscatvol psitdi=tdi('\results::psi'); @@ -615,8 +670,12 @@ switch TCVkeywrdcase{index} %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case {'qrho'} % q profile on psi from liuqe - mdsopen(shot); - nodenameeff=['\results::q_psi' liuqe_ext]; + if liuqe_version==-1 + mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS. + else + mdsopen(shot); + end + nodenameeff=[begstr 'q_psi' endstr]; tracetdi=tdi(nodenameeff); trace.data=tracetdi.data; trace.x=sqrt(tracetdi.dim{1}/(length(tracetdi.dim{1})-1)); @@ -633,17 +692,24 @@ switch TCVkeywrdcase{index} %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case {'vol'} % vol from psitbx - mdsopen(shot); - nodenameeff=['\results::psitbx:vol']; - tracetdi=tdi(nodenameeff); - if i_23==2 - ['LIUQE' liuqe_ext(2:2)] - psi=psitbxtcv(shot,'+0',['LIUQE' liuqe_ext(2:2)]); - fsd=psitbxp2p(psi,'FS'); - fsg=psitbxfsg(fsd); - tracetdi.data = fsg.vol.x; - tracetdi.dim{1}=fsg.vol.grid.x{:}'; - tracetdi.dim{2}=fsg.vol.grid.t'; + if liuqe_version==-1 + begstr = 'tcv_psitbx("'; + mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS. + nodenameeff=[begstr 'vol' endstr]; + tracetdi=tdi(nodenameeff); + else + mdsopen(shot); + nodenameeff=['\results::psitbx:vol']; + tracetdi=tdi(nodenameeff); + if i_23==2 + ['LIUQE' endstr(2:2)] + psi=psitbxtcv(shot,'+0',['LIUQE' endstr(2:2)]); + fsd=psitbxp2p(psi,'FS'); + fsg=psitbxfsg(fsd); + tracetdi.data = fsg.vol.x; + tracetdi.dim{1}=fsg.vol.grid.x{:}'; + tracetdi.dim{2}=fsg.vol.grid.t'; + end end trace.data=tracetdi.data; if isempty(tracetdi.data) @@ -660,23 +726,30 @@ switch TCVkeywrdcase{index} if any(strcmp(fieldnames(tracetdi),'units')) trace.units=tracetdi.units; end - trace.name=[num2str(shot) ';' nodenameeff liuqe_ext]; + trace.name=[num2str(shot) ';' nodenameeff '_' num2str(liuqe_version)]; mdsclose; %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& case {'rhovol'} % vol from psitbx - mdsopen(shot); - nodenameeff=['\results::psitbx:vol']; - tracetdi=tdi(nodenameeff); - if i_23==2 - ['LIUQE' liuqe_ext(2:2)] - psi=psitbxtcv(shot,'+0',['LIUQE' liuqe_ext(2:2)]); - fsd=psitbxp2p(psi,'FS'); - fsg=psitbxfsg(fsd); - tracetdi.data = fsg.vol.x; - tracetdi.dim{1}=fsg.vol.grid.x{:}'; - tracetdi.dim{2}=fsg.vol.grid.t'; + if liuqe_version==-1 + begstr = 'tcv_psitbx("'; + mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS. + nodenameeff=[begstr 'vol' endstr]; + tracetdi=tdi(nodenameeff); + else + mdsopen(shot); + nodenameeff=['\results::psitbx:vol']; + tracetdi=tdi(nodenameeff); + if i_23==2 + ['LIUQE' endstr(2:2)] + psi=psitbxtcv(shot,'+0',['LIUQE' endstr(2:2)]); + fsd=psitbxp2p(psi,'FS'); + fsg=psitbxfsg(fsd); + tracetdi.data = fsg.vol.x; + tracetdi.dim{1}=fsg.vol.grid.x{:}'; + tracetdi.dim{2}=fsg.vol.grid.t'; + end end trace.data=tracetdi.data; for i=1:size(tracetdi.data,2) @@ -690,7 +763,7 @@ switch TCVkeywrdcase{index} if any(strcmp(fieldnames(tracetdi),'units')) trace.units=tracetdi.units; end - trace.name=[num2str(shot) '; sqrt(V/Va) from ' nodenameeff liuqe_ext]; + trace.name=[num2str(shot) '; sqrt(V/Va) from ' nodenameeff '_' num2str(liuqe_version)]; mdsclose; %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @@ -718,7 +791,7 @@ switch TCVkeywrdcase{index} if nargin>=5 & ~isempty(varargin{3}) zmag=varargin{3}; else - zmag=loadTCVdata(shot,['zmag' liuqe_ext]); + zmag=loadTCVdata(shot,['zmag' '_' num2str(liuqe_version)]); end t_1=zmag.t(1); t_2=zmag.t(end); -- GitLab