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