From c6085829b02f76c6bbce485e2666037a16f833bb Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Thu, 11 Oct 2001 20:59:47 +0000
Subject: [PATCH] add symmetric z box option

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@1848 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 JET/geteqdskJET.m | 21 ++++++++++++---------
 JET/psirz.m       | 13 ++++++++++++-
 2 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/JET/geteqdskJET.m b/JET/geteqdskJET.m
index 5585659f..58df56e2 100644
--- a/JET/geteqdskJET.m
+++ b/JET/geteqdskJET.m
@@ -11,6 +11,8 @@ function [efitdata]=geteqdskJET(shot,time,nrg,nzg,savedir,deltaz,efitlab,uid,seq
 % shot : shot number
 % time   : single time slice of analysis
 % nrg, nzg: nb of R and Z points for R,Z grid
+%   if nzg<0 force symmetric box aorund z=deltaz
+%
 % OPTIONAL
 % savedir: directory to save eqdsk file (default: './')
 % deltaz: shift equilibrium vertically
@@ -111,7 +113,7 @@ R0=efitdata.R0.data(index_efit);
 rmag=efitdata.rmag.data(index_efit);
 zmag=efitdata.zmag.data(index_efit);
 if deltaz==-99
-  deltaz=-efitdata.zmag;
+  deltaz=-zmag;
 end
 faxs=efitdata.faxs.data(index_efit);
 fbnd=efitdata.fbnd.data(index_efit);
@@ -131,11 +133,12 @@ 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,ncont,efitdata.sspr,efitdata.sspi);
+[R,Z,psinrz]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,ncont,efitdata.sspr,efitdata.sspi,deltaz);
+nzg=abs(nzg);
 
 % define file name
 s = sprintf('%.6f',time);
-fname=sprintf('%s/JET_EQDSK_%st%s',savedir,num2str(shot),s);
+fname=sprintf('%s/EQDSK.%st%s',savedir,num2str(shot),s);
 fid=fopen(fname,'w');
 
 % 1st eqdsk line: 48 characters for file description and then, 3, nr, nz
@@ -150,10 +153,10 @@ end
 fprintf(fid,'%s%4d%4d%4d\n',ss,3,nrg,nzg);
 
 % 2nd line: rboxlen, zboxlen, r0, rboxlft, zboxmid
-rmin=min(R);
-rmax=max(R);
-zmin=min(Z);
-zmax=max(Z);
+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);
 
 % 3rd line: rmag, zmag, psimag, psiedge, B0
@@ -206,8 +209,8 @@ 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));
+rdel=+0.8*(R(2)-R(1));
+zdel=+0.8*(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);
diff --git a/JET/psirz.m b/JET/psirz.m
index dc3296a0..ffab4a72 100644
--- a/JET/psirz.m
+++ b/JET/psirz.m
@@ -13,9 +13,11 @@ function [r,z,psinrz,sspr,sspi]=psirz(shot,time,nrg,nzg,efitlab,uid,seqd,varargi
 % time   : time de l'analyse
 % nrg, nzg: nb de points de la grille en r (resp. en z) sur laquelle on fait la 
 %           reconstruction des surfaces de flux.
+%           if nzg is negative, make symmetric box around zero
 % varargin{1}: plot option: 0: do not plot contours, >0 plot contour with varargin{1} nb of contours (60 is good)
 % varargin{2}: sspr from ppf/efit/sspr, structure containing sspr.data and sspr.t
 % varargin{3}: sspi from ppf/efit/sspi, structure containing sspi.data and sspi.t
+% varargin{4}: deltaz
 %
 % facultatifs :
 % efitlab : efit ou eftm (efitlab=efit par defaut)
@@ -58,6 +60,11 @@ else
 end
 sspis=sspi.data;
 tpefit=sspi.t;
+if nargin>=11 & ~isempty(varargin{4})
+  deltaz=varargin{4};
+else
+  deltaz=0;
+end
   
 [x,ind]=min(abs(time-tpefit));
 sspr_t=ssprs(:,ind);
@@ -81,7 +88,11 @@ zmin=zmin+1e-4;
 zmax=zmax-1e-4;
 
 r=linspace(rmin,rmax,nrg);
-z=linspace(zmin,zmax,nzg);
+z=linspace(zmin,zmax,abs(nzg));
+if nzg<0
+  zlim=max(abs(zmin-deltaz),abs(zmax+deltaz));
+  z=linspace(-zlim-deltaz,zlim-deltaz,abs(nzg));
+end
 
 % mapflux contruit la carte de flux psin sur (r,z)
 psinrz=mapflux(cij,0.01*ri,0.01*zi,r,z);
-- 
GitLab