From 02fa09416b98a2998152800e74922a6290d0e099 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Mon, 12 Feb 2018 16:49:30 +0000
Subject: [PATCH] use X-point psi to find plasma boundary for eqdsk, might need
 to check when limited. Use FPC for deafault Ip, closer to EQI/IDE

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@9334 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/AUG/aug_requests_mapping.m |  1 +
 crpptbx/AUG/geteqdskAUG.m          | 20 ++++++++++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/crpptbx/AUG/aug_requests_mapping.m b/crpptbx/AUG/aug_requests_mapping.m
index 92a991d3..c234dae4 100644
--- a/crpptbx/AUG/aug_requests_mapping.m
+++ b/crpptbx/AUG/aug_requests_mapping.m
@@ -149,6 +149,7 @@ switch lower(data_request)
   mapping.label = 'Plasma current';
   mapping.method = 'signal';
   mapping.expression = [{'MAG'},{'Ipa'}];
+  mapping.expression = [{'FPC'},{'IpiFP'}];
  case 'kappa'
   mapping.timedim = 1;
   mapping.label = '\kappa';
diff --git a/crpptbx/AUG/geteqdskAUG.m b/crpptbx/AUG/geteqdskAUG.m
index 928de02a..3ca27016 100644
--- a/crpptbx/AUG/geteqdskAUG.m
+++ b/crpptbx/AUG/geteqdskAUG.m
@@ -82,19 +82,23 @@ eqdsk.zboxlen = equil.Zmesh(end,it) - equil.Zmesh(1,it) ;
 eqdsk.zmid = 0.5*(equil.Zmesh(end,it) + equil.Zmesh(1,it)) ;
 eqdsk.psiaxis = equil.psi_axis(it);
 eqdsk.psiedge = equil.psi_lcfs(it);
+ixpoint = 2;
+if abs(equil.Xpoints.psi(ixpoint,it)-eqdsk.psiedge) < 0.1.*abs(eqdsk.psiedge-eqdsk.psiaxis)
+  eqdsk.psiedge = equil.Xpoints.psi(ixpoint,it);
+end
 % need psimesh ot be equidistant and same nb of points as nr
 eqdsk.psimesh=linspace(0,1,eqdsk.nr)';
 eqdsk.rhopsi = sqrt(eqdsk.psimesh);
 % psimesh assumed from 0 on axis (so psi_edge is delta_psi) to have correct d/dpsi but to have sign(dpsi) easily
 eqdsk.psimesh = (eqdsk.psiedge-eqdsk.psiaxis) .* eqdsk.psimesh;
 nrho = size(equil.pressure,1);
-eqdsk.p = interpos(equil.rhopolnorm(:,it),equil.pressure(:,it),eqdsk.rhopsi,-0.03,[1 2],[0 equil.pressure(end,it)]);
-eqdsk.pprime = interpos(equil.rhopolnorm(:,it),equil.dpressuredpsi(:,it),eqdsk.rhopsi,-0.03,[1 2],[0 equil.dpressuredpsi(end,it)]);
-eqdsk.FFprime = interpos(equil.rhopolnorm(:,it),equil.ffprime(:,it),eqdsk.rhopsi,-0.03,[1 2],[0 equil.ffprime(end,it)]);
+eqdsk.p = interpos(equil.rhopolnorm(:,it),equil.pressure(:,it),eqdsk.rhopsi,-0.01,[1 2],[0 equil.pressure(end,it)]);
+eqdsk.pprime = interpos(equil.rhopolnorm(:,it),equil.dpressuredpsi(:,it),eqdsk.rhopsi,-0.01,[1 2],[0 equil.dpressuredpsi(end,it)]);
+eqdsk.FFprime = interpos(equil.rhopolnorm(:,it),equil.ffprime(:,it),eqdsk.rhopsi,-0.01,[1 2],[0 equil.ffprime(end,it)]);
 if abs(equil.qvalue(end,it)) > 25
   eqdsk.q = interpos(21,equil.rhopolnorm(:,it),equil.qvalue(:,it),eqdsk.rhopsi);
 else
-  eqdsk.q = interpos(equil.rhopolnorm(:,it),equil.qvalue(:,it),eqdsk.rhopsi,-0.03,[1 2],[0 equil.qvalue(end,it)]);
+  eqdsk.q = interpos(equil.rhopolnorm(:,it),equil.qvalue(:,it),eqdsk.rhopsi,-0.01,[1 2],[0 equil.qvalue(end,it)]);
 end
 
 eqdsk.ip = equil.Ip(it);
@@ -102,7 +106,7 @@ eqdsk.stitle=['#' num2str(shot) ' t=' num2str(time_eff) ' from ' equil.gdat_para
 eqdsk.ind1=1;
 
 psisign = sign(eqdsk.psimesh(end)-eqdsk.psimesh(1));
-[dum1,dum2,dum3,F2_05]=interpos(psisign.*eqdsk.psimesh,eqdsk.FFprime,-0.1);
+[dum1,dum2,dum3,F2_05]=interpos(psisign.*eqdsk.psimesh,eqdsk.FFprime,-0.01);
 
 b0=gdat(shot,'b0');
 [zz itb0]=min(abs(b0.t-time_eff));
@@ -122,7 +126,11 @@ eqdsk.zaxis = zmag.data(itrmag) - eqdsk.zshift;
 figure
 contour(eqdsk.rmesh,eqdsk.zmesh,eqdsk.psi',100)
 hold on
-psiedge_eff = 0.001*eqdsk.psiaxis + 0.999*eqdsk.psiedge;
+psiedge_eff = 0.001*eqdsk.psiaxis + 0.999*eqdsk.psiedge; % note for IDE psi edge is already 99%
+%ixpoint=iround_os(equil.Xpoints.psi(:,it),eqdsk.psiedge);
+if abs(equil.Xpoints.psi(ixpoint,it)-eqdsk.psiedge) < 0.1.*abs(eqdsk.psiedge-eqdsk.psiaxis)
+  psiedge_eff = 0.002*eqdsk.psiaxis + 0.998*equil.Xpoints.psi(ixpoint,it);
+end
 [hh1 hh2]=contour(eqdsk.rmesh,eqdsk.zmesh,eqdsk.psi',[psiedge_eff psiedge_eff],'k');
 axis equal
 if ~isempty(hh1)
-- 
GitLab