From cda531763eff24bb78a731e9a299d92b33e07255 Mon Sep 17 00:00:00 2001 From: Olivier Sauter <olivier.sauter@epfl.ch> Date: Thu, 11 Oct 2001 07:14:32 +0000 Subject: [PATCH] put data into structure git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@1846 d63d8f72-b253-0410-a779-e742ad2e26cf --- JET/geteqdskJET.m | 194 ++++++++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 93 deletions(-) diff --git a/JET/geteqdskJET.m b/JET/geteqdskJET.m index 6f5af683..74902f6a 100644 --- a/JET/geteqdskJET.m +++ b/JET/geteqdskJET.m @@ -1,4 +1,4 @@ -function geteqdskJET(shot,time,nrg,nzg,savedir,deltaz,efitlab,uid,seqd,varargin); +function [efitdata]=geteqdskJET(shot,time,nrg,nzg,savedir,deltaz,efitlab,uid,seqd,varargin); % % save eqdsk file to savedir/JET_EQDSK_shot_ttime % @@ -20,8 +20,10 @@ function geteqdskJET(shot,time,nrg,nzg,savedir,deltaz,efitlab,uid,seqd,varargin) % seq: sequence number if not last one required (default: 0) % % varargin{1}: plot option: 0: do not plot contours, >0 plot contour with varargin{1} nb of contours (60 is good) +% varargin{2}: efitdata in input (no need to load again if shot=efitdata.shot) % % OUTPUTS +% efitdata: structure containing all data vs time so that one can call geteqdsk for another time quicker for same shot % %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -52,74 +54,80 @@ if nargin>=10 & ~isempty(varargin{1}) end iread=1; +if nargin>=11 & ~isempty(varargin{2}) + efitdata=varargin{2}; + if shot~=efitdata.shot + disp(['shot=' num2str(shot) ' different from efitdata.shot=' num2str(efitdata.shot)]) + warning('in geteqdskJET') + return + end + iread=0; +end + if iread==1 -% get data needed -Rbnd=gdat(shot,['ppf/' efitlab '/RBND' s_extra],0,'JET'); + % get data needed + efitdata.Rbnd=gdat(shot,['ppf/' efitlab '/RBND' s_extra],0,'JET'); + 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'); + efitdata.rmag=gdat(shot,['ppf/' efitlab '/rmag' s_extra],0,'JET'); + efitdata.zmag=gdat(shot,['ppf/' efitlab '/zmag' s_extra],0,'JET'); + efitdata.faxs=gdat(shot,['ppf/' efitlab '/faxs' s_extra],0,'JET'); + efitdata.fbnd=gdat(shot,['ppf/' efitlab '/fbnd' s_extra],0,'JET'); + 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.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.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.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=Rbnd.t; +tefit=efitdata.Rbnd.t; [zz index_efit]=min(abs(tefit-time)); time_efit=tefit(index_efit); disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') disp(['efit at t=' num2str(time_efit)]) disp('&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&') -Rbnd=Rbnd.data(:,index_efit); -Zbnd=gdat(shot,['ppf/' efitlab '/ZBND' s_extra],0,'JET'); -Zbnd=Zbnd.data(:,index_efit); -R0=gdat(shot,['ppf/' efitlab '/RGEO' s_extra],0,'JET'); -R0=R0.data(index_efit); -% $$$ Z0=gdat(shot,['ppf/' efitlab '/ZO' s_extra],0,'JET'); -% $$$ Z0=Z0.data(index_efit); -rmag=gdat(shot,['ppf/' efitlab '/rmag' s_extra],0,'JET'); -rmag=rmag.data(index_efit); -zmag=gdat(shot,['ppf/' efitlab '/zmag' s_extra],0,'JET'); -zmag=zmag.data(index_efit); +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); if deltaz==-99 - deltaz=-zmag; -end -faxs=gdat(shot,['ppf/' efitlab '/faxs' s_extra],0,'JET'); -faxs=faxs.data(index_efit); -fbnd=gdat(shot,['ppf/' efitlab '/fbnd' s_extra],0,'JET'); -fbnd=fbnd.data(index_efit); -bvac=gdat(shot,['ppf/' efitlab '/bvac' s_extra],0,'JET'); -bvac=-bvac.data(index_efit); -xip=gdat(shot,['ppf/' efitlab '/xip' s_extra],0,'JET'); -xip=-xip.data(index_efit); -F=gdat(shot,['ppf/' efitlab '/F' s_extra],0,'JET'); -psi_efit=F.x; -F=F.data(:,index_efit); -P=gdat(shot,['ppf/' efitlab '/P' s_extra],0,'JET'); -P=P.data(:,index_efit); -Q=gdat(shot,['ppf/' efitlab '/Q' s_extra],0,'JET'); -Q=Q.data(:,index_efit); -kappa=gdat(shot,['ppf/' efitlab '/ELON' s_extra],0,'JET'); -kappa=kappa.data(index_efit); -q95=gdat(shot,['ppf/' efitlab '/q95' s_extra],0,'JET'); -q95=q95.data(index_efit); -btpd=gdat(shot,['ppf/' efitlab '/btpd' s_extra],0,'JET'); -btpd=btpd.data(index_efit); -bttd=gdat(shot,['ppf/' efitlab '/bttd' s_extra],0,'JET'); -bttd=bttd.data(index_efit); -btnd=gdat(shot,['ppf/' efitlab '/btnd' s_extra],0,'JET'); -btnd=btnd.data(index_efit); -btpm=gdat(shot,['ppf/' efitlab '/btpm' s_extra],0,'JET'); -btpm=btpm.data(index_efit); -bttm=gdat(shot,['ppf/' efitlab '/bttm' s_extra],0,'JET'); -bttm=bttm.data(index_efit); -btnm=gdat(shot,['ppf/' efitlab '/btnm' s_extra],0,'JET'); -btnm=btnm.data(index_efit); -xli=gdat(shot,['ppf/' efitlab '/xli' s_extra],0,'JET'); -xli=xli.data(index_efit); - -sspr=gdat(shot,['ppf/' efitlab '/sspr' s_extra],0,'JET'); -sspi=gdat(shot,['ppf/' efitlab '/sspi' s_extra],0,'JET'); - -[R,Z,psinrz]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,0,sspr,sspi); - -% $$$ save geteqdskmat -else -% $$$ load geteqdskmat + 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); + + +[R,Z,psinrz]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,0,efitdata.sspr,efitdata.sspi); % define file name s = sprintf('%.6f',time); @@ -142,27 +150,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,R0,rmin,0.5*(zmin+zmax)+deltaz); +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); % 3rd line: rmag, zmag, psimag, psiedge, B0 -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',rmag,zmag+deltaz,faxs,fbnd,bvac); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.rmag,efitdata.zmag+deltaz,efitdata.faxs,efitdata.fbnd,efitdata.bvac); % 4th line: Ip, psiax1, psiax2, raxis1, raxis2 -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',xip,faxs,0.,rmag,0.); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.ip,efitdata.faxs,0.,efitdata.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',zmag+deltaz,0.0,fbnd,-1,-1); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',efitdata.zmag+deltaz,0.0,efitdata.fbnd,-1,-1); -% 6th entry: F(psi) on nr equidistant psi mesh +% 6th entry: efitdata.F(psi) on nr equidistant psi mesh psieq=[0:1/(nrg-1):1]; -psi_efit_eff=faxs+psi_efit.*(fbnd-faxs); -psieq_eff=faxs+psieq.*(fbnd-faxs); -[G Gprime]=interpos(13,psi_efit_eff,-F,psieq_eff); +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); 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,P,psieq_eff); +[press pressprime]=interpos(13,psi_efit_eff,efitdata.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)); @@ -176,52 +184,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=faxs+psinrz.*(fbnd-faxs); +psirz=efitdata.faxs+psinrz.*(efitdata.fbnd-efitdata.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,Q,psieq,1e-6); +y=interpos(13,psi_efit,efitdata.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(Rbnd); +npts=length(efitdata.Rbnd); fprintf(fid,'%5d%5d\n',npts,5); -fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',[Rbnd Zbnd+deltaz]'); +fprintf(fid,'%16.9e%16.9e%16.9e%16.9e%16.9e\n',[efitdata.Rbnd efitdata.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(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); +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); % Some useful data to compare with recomputed equilibria -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',xip/4e-7/pi,xip); -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)); +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)); [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',btpd); -fprintf(fid,'%18.8e beta_pol(efit)\n',btpm); +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_tor(wdia)\n',bttd); -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,'%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,'\n%18.8e time\n',time); fprintf(fid,' %d shot number\n',shot); -- GitLab