From 702dae64594b905799cc318131efab027ce8102e Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Thu, 11 Oct 2001 09:10:24 +0000 Subject: [PATCH] fix minor bug with geteqdsk git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@1847 d63d8f72-b253-0410-a779-e742ad2e26cf --- JET/geteqdskJET.m | 167 +++++++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 77 deletions(-) diff --git a/JET/geteqdskJET.m b/JET/geteqdskJET.m index 74902f6a..5585659f 100644 --- a/JET/geteqdskJET.m +++ b/JET/geteqdskJET.m @@ -1,9 +1,11 @@ function [efitdata]=geteqdskJET(shot,time,nrg,nzg,savedir,deltaz,efitlab,uid,seqd,varargin); % % save eqdsk file to savedir/JET_EQDSK_shot_ttime +% returns data used in structure efitdata (efitdata.shot, efitdata.Rbnd, efitdataZbnd....) % % examples: -% geteqdsk(shot,time,33,65,'/tmp') +% efitdata=geteqdskJET(shot,time,33,65,'/tmp') +% efitdata=geteqdskJET(shot,time,33,65,'/tmp',[],[],[],[],1,efitdata); % gives data so no need to load again % % INPUTS : % shot : shot number @@ -56,17 +58,19 @@ end iread=1; if nargin>=11 & ~isempty(varargin{2}) efitdata=varargin{2}; - if shot~=efitdata.shot + if shot==efitdata.shot + iread=0; + else disp(['shot=' num2str(shot) ' different from efitdata.shot=' num2str(efitdata.shot)]) - warning('in geteqdskJET') - return + warning('reload data with new shot') end - iread=0; end if iread==1 + efitdata.shot=shot; % get data needed efitdata.Rbnd=gdat(shot,['ppf/' efitlab '/RBND' s_extra],0,'JET'); + efitdata.tefit=efitdata.Rbnd.t; efitdata.Zbnd=gdat(shot,['ppf/' efitlab '/ZBND' s_extra],0,'JET'); efitdata.R0=gdat(shot,['ppf/' efitlab '/RGEO' s_extra],0,'JET'); % $$$ efitdata.Z0=gdat(shot,['ppf/' efitlab '/ZO' s_extra],0,'JET'); @@ -77,57 +81,57 @@ if iread==1 efitdata.bvac=gdat(shot,['ppf/' efitlab '/bvac' s_extra],0,'JET'); efitdata.ip=gdat(shot,['ppf/' efitlab '/xip' s_extra],0,'JET'); efitdata.F=gdat(shot,['ppf/' efitlab '/F' s_extra],0,'JET'); + efitdata.psin=efitdata.F.x; efitdata.P=gdat(shot,['ppf/' efitlab '/P' s_extra],0,'JET'); efitdata.Q=gdat(shot,['ppf/' efitlab '/Q' s_extra],0,'JET'); efitdata.kappa=gdat(shot,['ppf/' efitlab '/ELON' s_extra],0,'JET'); efitdata.q95=gdat(shot,['ppf/' efitlab '/q95' s_extra],0,'JET'); efitdata.btpd=gdat(shot,['ppf/' efitlab '/btpd' s_extra],0,'JET'); - efitdata.bttd=gdat(shot,['ppf/' efitlab '/efitdata.bttd' s_extra],0,'JET'); + efitdata.bttd=gdat(shot,['ppf/' efitlab '/bttd' s_extra],0,'JET'); efitdata.btnd=gdat(shot,['ppf/' efitlab '/btnd' s_extra],0,'JET'); efitdata.btpm=gdat(shot,['ppf/' efitlab '/btpm' s_extra],0,'JET'); - efitdat.bttm=gdat(shot,['ppf/' efitlab '/bttm' s_extra],0,'JET'); + efitdata.bttm=gdat(shot,['ppf/' efitlab '/bttm' s_extra],0,'JET'); efitdata.btnm=gdat(shot,['ppf/' efitlab '/btnm' s_extra],0,'JET'); efitdata.xli=gdat(shot,['ppf/' efitlab '/xli' s_extra],0,'JET'); efitdata.sspr=gdat(shot,['ppf/' efitlab '/sspr' s_extra],0,'JET'); efitdata.sspi=gdat(shot,['ppf/' efitlab '/sspi' s_extra],0,'JET'); end -tefit=efitdata.Rbnd.t; +tefit=efitdata.tefit; [zz index_efit]=min(abs(tefit-time)); time_efit=tefit(index_efit); disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp(['efit at t=' num2str(time_efit)]) disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') -efitdata.Rbnd=efitdata.Rbnd.data(:,index_efit); -efitdata.Zbnd=efitdata.Zbnd.data(:,index_efit); -efitdata.R0=efitdata.R0.data(index_efit); -% $$$ efitdata.Z0=efitdata.Z0.data(index_efit); -efitdata.rmag=efitdata.rmag.data(index_efit); -efitdata.zmag=efitdata.zmag.data(index_efit); +Rbnd=efitdata.Rbnd.data(:,index_efit); +Zbnd=efitdata.Zbnd.data(:,index_efit); +R0=efitdata.R0.data(index_efit); +% $$$ Z0=efitdata.Z0.data(index_efit); +rmag=efitdata.rmag.data(index_efit); +zmag=efitdata.zmag.data(index_efit); if deltaz==-99 deltaz=-efitdata.zmag; end -efitdata.faxs=efitdata.faxs.data(index_efit); -efitdata.fbnd=efitdata.fbnd.data(index_efit); -efitdata.bvac=-efitdata.bvac.data(index_efit); -efitdata.ip=-efitdata.ip.data(index_efit); -psi_efit=efitdata.F.x; -efitdata.F=efitdata.F.data(:,index_efit); -efitdata.P=efitdata.P.data(:,index_efit); -efitdata.Q=efitdata.Q.data(:,index_efit); -efitdata.kappa=efitdata.kappa.data(index_efit); -efitdata.q95=efitdata.q95.data(index_efit); -efitdata.btpd=efitdata.btpd.data(index_efit); -efitdata.bttd=efitdata.bttd.data(index_efit); -efitdata.btnd=efitdata.btnd.data(index_efit); -efitdata.btpm=efitdata.btpm.data(index_efit); -efitdat.bttm=efitdat.bttm.data(index_efit); -efitdata.btnm=efitdata.btnm.data(index_efit); -efitdata.xli=efitdata.xli.data(index_efit); +faxs=efitdata.faxs.data(index_efit); +fbnd=efitdata.fbnd.data(index_efit); +bvac=-efitdata.bvac.data(index_efit); +ip=-efitdata.ip.data(index_efit); +psi_efit=efitdata.psin; +F=efitdata.F.data(:,index_efit); +P=efitdata.P.data(:,index_efit); +Q=efitdata.Q.data(:,index_efit); +kappa=efitdata.kappa.data(index_efit); +q95=efitdata.q95.data(index_efit); +btpd=efitdata.btpd.data(index_efit); +bttd=efitdata.bttd.data(index_efit); +btnd=efitdata.btnd.data(index_efit); +btpm=efitdata.btpm.data(index_efit); +bttm=efitdata.bttm.data(index_efit); +btnm=efitdata.btnm.data(index_efit); +xli=efitdata.xli.data(index_efit); - -[R,Z,psinrz]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,0,efitdata.sspr,efitdata.sspi); +[R,Z,psinrz]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,ncont,efitdata.sspr,efitdata.sspi); % define file name s = sprintf('%.6f',time); @@ -150,27 +154,27 @@ rmin=min(R); rmax=max(R); zmin=min(Z); zmax=max(Z); -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',rmax-rmin,zmax-zmin,efitdata.R0,rmin,0.5*(zmin+zmax)+deltaz); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',rmax-rmin,zmax-zmin,R0,rmin,0.5*(zmin+zmax)+deltaz); % 3rd line: rmag, zmag, psimag, psiedge, B0 -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.rmag,efitdata.zmag+deltaz,efitdata.faxs,efitdata.fbnd,efitdata.bvac); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',rmag,zmag+deltaz,faxs,fbnd,bvac); % 4th line: Ip, psiax1, psiax2, raxis1, raxis2 -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.ip,efitdata.faxs,0.,efitdata.rmag,0.); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',ip,faxs,0.,rmag,0.); % 5th line: zaxis1, zaxis2, psi_sep, R_xpoint, Z_xpoint -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.zmag+deltaz,0.0,efitdata.fbnd,-1,-1); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',zmag+deltaz,0.0,fbnd,-1,-1); -% 6th entry: efitdata.F(psi) on nr equidistant psi mesh +% 6th entry: F(psi) on nr equidistant psi mesh psieq=[0:1/(nrg-1):1]; -psi_efit_eff=efitdata.faxs+psi_efit.*(efitdata.fbnd-efitdata.faxs); -psieq_eff=efitdata.faxs+psieq.*(efitdata.fbnd-efitdata.faxs); -[G Gprime]=interpos(13,psi_efit_eff,-efitdata.F,psieq_eff); +psi_efit_eff=faxs+psi_efit.*(fbnd-faxs); +psieq_eff=faxs+psieq.*(fbnd-faxs); +[G Gprime]=interpos(13,psi_efit_eff,-F,psieq_eff); fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',G(1:end-1)); fprintf(fid,'%16.9e\n',G(end)); % 7th entry: p(psi) on nr equidistant psi mesh -[press pressprime]=interpos(13,psi_efit_eff,efitdata.P,psieq_eff); +[press pressprime]=interpos(13,psi_efit_eff,P,psieq_eff); fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',press(1:end-1)); fprintf(fid,'%16.9e\n',press(end)); @@ -184,52 +188,52 @@ fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',pressprime(1:end-1)); fprintf(fid,'%16.9e\n',pressprime(end)); % 10th entry: psi(i,j) -psirz=efitdata.faxs+psinrz.*(efitdata.fbnd-efitdata.faxs); +psirz=faxs+psinrz.*(fbnd-faxs); fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',psirz); if mod(nrg*nzg,5)~=0 fprintf(fid,'\n'); end % 11th entry: q profile on nr equidistant psi mesh -y=interpos(13,psi_efit,efitdata.Q,psieq,1e-6); +y=interpos(13,psi_efit,Q,psieq,1e-6); fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',y(1:end-1)); fprintf(fid,'%16.9e\n',y(end)); % 12th entry: (R,Z) plasma boundary and wall position -npts=length(efitdata.Rbnd); +npts=length(Rbnd); fprintf(fid,'%5d%5d\n',npts,5); -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',[efitdata.Rbnd efitdata.Zbnd+deltaz]'); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',[Rbnd Zbnd+deltaz]'); if mod(2*npts,5) ~= 0 fprintf(fid,'\n'); end rdel=2*(R(2)-R(1)); zdel=2*(Z(2)-Z(1)); -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',min(efitdata.Rbnd)-rdel,min(efitdata.Zbnd)+deltaz-zdel, ... - max(efitdata.Rbnd)+rdel,min(efitdata.Zbnd)+deltaz-zdel,max(efitdata.Rbnd)+rdel,max(efitdata.Zbnd)+deltaz+zdel, ... - min(efitdata.Rbnd)-rdel,max(efitdata.Zbnd)+deltaz+zdel,min(efitdata.Rbnd)-rdel,min(efitdata.Zbnd)+deltaz-zdel); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',min(Rbnd)-rdel,min(Zbnd)+deltaz-zdel, ... + max(Rbnd)+rdel,min(Zbnd)+deltaz-zdel,max(Rbnd)+rdel,max(Zbnd)+deltaz+zdel, ... + min(Rbnd)-rdel,max(Zbnd)+deltaz+zdel,min(Rbnd)-rdel,min(Zbnd)+deltaz-zdel); % Some useful data to compare with recomputed equilibria -fprintf(fid,'%18.8e psiedge-psiax\n',efitdata.fbnd-efitdata.faxs); -fprintf(fid,'%18.8e r-magaxe\n',efitdata.rmag); -fprintf(fid,'%18.8e z-magaxe\n',efitdata.zmag+deltaz); -fprintf(fid,'%18.8e z0 (zaver)\n',0.5.*(min(efitdata.Zbnd)+max(efitdata.Zbnd))+deltaz); -fprintf(fid,'%18.8e r-major\n',efitdata.R0); -fprintf(fid,'%18.8e B0\n',efitdata.bvac); -fprintf(fid,'%18.8e CURRT -> I-p [A]: %18.8e \n',efitdata.ip/4e-7/pi,efitdata.ip); -fprintf(fid,'%18.8e kappa\n',efitdata.kappa); -fprintf(fid,'%18.8e q_0\n',efitdata.Q(1)); -y=interpos(13,psi_efit,efitdata.Q,[0:0.01:1],1e-6); -fprintf(fid,'%18.8e q_edge, from int: %18.8e\n',efitdata.Q(end),y(end)); -fprintf(fid,'%18.8e q_95, from int: %18.8e\n',efitdata.q95,y(96)); +fprintf(fid,'%18.8e psiedge-psiax\n',fbnd-faxs); +fprintf(fid,'%18.8e r-magaxe\n',rmag); +fprintf(fid,'%18.8e z-magaxe\n',zmag+deltaz); +fprintf(fid,'%18.8e z0 (zaver)\n',0.5.*(min(Zbnd)+max(Zbnd))+deltaz); +fprintf(fid,'%18.8e r-major\n',R0); +fprintf(fid,'%18.8e B0\n',bvac); +fprintf(fid,'%18.8e CURRT -> I-p [A]: %18.8e \n',ip/4e-7/pi,ip); +fprintf(fid,'%18.8e kappa\n',kappa); +fprintf(fid,'%18.8e q_0\n',Q(1)); +y=interpos(13,psi_efit,Q,[0:0.01:1],1e-6); +fprintf(fid,'%18.8e q_edge, from int: %18.8e\n',Q(end),y(end)); +fprintf(fid,'%18.8e q_95, from int: %18.8e\n',q95,y(96)); [qmin ind]=min(y); fprintf(fid,'%18.8e q_min, at psinorm= %18.8e\n',qmin,y(ind)); -fprintf(fid,'%18.8e beta_pol(wdia)\n',efitdata.btpd); -fprintf(fid,'%18.8e beta_pol(efit)\n',efitdata.btpm); +fprintf(fid,'%18.8e beta_pol(wdia)\n',btpd); +fprintf(fid,'%18.8e beta_pol(efit)\n',btpm); fprintf(fid,'%18.8e beta_tor(wdia)\n',bttd); -fprintf(fid,'%18.8e beta_tor(efit)\n',efitdat.bttm); -fprintf(fid,'%18.8e beta_N(wdia)\n',efitdata.btnd); -fprintf(fid,'%18.8e beta_N(efit)\n',efitdata.btnm); -fprintf(fid,'%18.8e li\n',efitdata.xli); +fprintf(fid,'%18.8e beta_tor(efit)\n',bttm); +fprintf(fid,'%18.8e beta_N(wdia)\n',btnd); +fprintf(fid,'%18.8e beta_N(efit)\n',btnm); +fprintf(fid,'%18.8e li\n',xli); fprintf(fid,'\n%18.8e time\n',time); fprintf(fid,' %d shot number\n',shot); @@ -241,17 +245,26 @@ fclose(fid); disp(['wrote ',fname]); if ncont>0 - figure - contour(r,z,psinrz',ncont); + figure; + pos=get(gcf,'position'); + set(gcf,'position',[pos(1)+0.5*pos(3) 0.8*abs(pos(2)-pos(4)) pos(3) 2*pos(4)]) + subplot(3,1,1) + plot(psi_efit,P/P(1),'-') hold on - [h1, h2]=contour(r,z,psinrz',[1 1]); - for i=1:length(h2) - set(h2(i),'LineWidth',2); - end + plot(psi_efit,F/F(end),'r-') ss=sprintf('%.4f',time); title(['JET #' num2str(shot) ' t= ' ss]) - xlabel('R [m]') - ylabel('Z [m]') - axis equal - axis([rmin rmax zmin zmax]) + legend('P/P(0)','F/F(edge)',3) + subplot(3,1,2) + plot(psieq,pressprime/abs(pressprime(1)),'-') + hold on + plot(psieq,G.*Gprime/abs(G(1).*Gprime(1)),'r-') + legend('Pprime/|Pprime(0)|','F*Fprime/|F*Fprime(0)|',2) + subplot(3,1,3) + plot(psi_efit,Q,'-') + hold on + aa=axis; + plot([0.95 0.95],[aa(3) aa(4)],'k--') + grid on + xlabel('\psi/\psi_{edge}') end -- GitLab