From 5909d74d5a332acd9eb44fd76a410a164c5cfbb5 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <Olivier.Sauter@epfl.ch>
Date: Thu, 9 Feb 2023 17:36:25 +0100
Subject: [PATCH] start mv mds/efit files from d3d to private

---
 matlab/D3D/efit/Contents.m                   |   50 -
 matlab/D3D/efit/cc_efit_to_tok.m             |  242 ----
 matlab/D3D/efit/efit_movie.m                 |   59 -
 matlab/D3D/efit/eq_mds.m                     |   81 --
 matlab/D3D/efit/eq_mod.m                     |  113 --
 matlab/D3D/efit/equil_to_gdata.m             |  197 ---
 matlab/D3D/efit/get_efit_data1.m             |  274 ----
 matlab/D3D/efit/gfile_def.m                  |   52 -
 matlab/D3D/efit/inside_plasma.m              |  292 -----
 matlab/D3D/efit/make_mhdindat_from_tds.m     |  211 ---
 matlab/D3D/efit/plasma_current.m             |  200 ---
 matlab/D3D/efit/read_mhdin.m                 |  392 ------
 matlab/D3D/efit/run_efit.m                   |   93 --
 matlab/D3D/efit/shot_from_gfile.m            |  125 --
 matlab/D3D/efit/std_efit_units.m             | 1238 ------------------
 matlab/D3D/efit/trace_boundary.m             |  229 ----
 matlab/D3D/efit/write_afile.m                |  634 ---------
 matlab/D3D/efit/write_cc_file.m              |   55 -
 matlab/D3D/efit/write_eqdsk_efit.m           |   65 -
 matlab/D3D/efit/write_gfile.m                |  320 -----
 matlab/D3D/efit/write_kfile.m                |  190 ---
 matlab/D3D/mdsplus_func/Contents.m           |   11 -
 matlab/D3D/mdsplus_func/get_mds_tree.m       |  291 ----
 matlab/D3D/mdsplus_func/getmds.m             |  465 -------
 matlab/D3D/mdsplus_func/make_mdsipmex.m      |   25 -
 matlab/D3D/mdsplus_func/make_mdsipmex_east.m |   28 -
 matlab/D3D/mdsplus_func/mds_eq.m             |  298 -----
 matlab/D3D/mdsplus_func/mds_sub_tree.m       |   70 -
 28 files changed, 6300 deletions(-)
 delete mode 100644 matlab/D3D/efit/Contents.m
 delete mode 100644 matlab/D3D/efit/cc_efit_to_tok.m
 delete mode 100644 matlab/D3D/efit/efit_movie.m
 delete mode 100644 matlab/D3D/efit/eq_mds.m
 delete mode 100644 matlab/D3D/efit/eq_mod.m
 delete mode 100644 matlab/D3D/efit/equil_to_gdata.m
 delete mode 100644 matlab/D3D/efit/get_efit_data1.m
 delete mode 100644 matlab/D3D/efit/gfile_def.m
 delete mode 100644 matlab/D3D/efit/inside_plasma.m
 delete mode 100644 matlab/D3D/efit/make_mhdindat_from_tds.m
 delete mode 100644 matlab/D3D/efit/plasma_current.m
 delete mode 100644 matlab/D3D/efit/read_mhdin.m
 delete mode 100644 matlab/D3D/efit/run_efit.m
 delete mode 100644 matlab/D3D/efit/shot_from_gfile.m
 delete mode 100644 matlab/D3D/efit/std_efit_units.m
 delete mode 100644 matlab/D3D/efit/trace_boundary.m
 delete mode 100644 matlab/D3D/efit/write_afile.m
 delete mode 100644 matlab/D3D/efit/write_cc_file.m
 delete mode 100644 matlab/D3D/efit/write_eqdsk_efit.m
 delete mode 100644 matlab/D3D/efit/write_gfile.m
 delete mode 100644 matlab/D3D/efit/write_kfile.m
 delete mode 100644 matlab/D3D/mdsplus_func/Contents.m
 delete mode 100644 matlab/D3D/mdsplus_func/get_mds_tree.m
 delete mode 100644 matlab/D3D/mdsplus_func/getmds.m
 delete mode 100644 matlab/D3D/mdsplus_func/make_mdsipmex.m
 delete mode 100644 matlab/D3D/mdsplus_func/make_mdsipmex_east.m
 delete mode 100644 matlab/D3D/mdsplus_func/mds_eq.m
 delete mode 100644 matlab/D3D/mdsplus_func/mds_sub_tree.m

diff --git a/matlab/D3D/efit/Contents.m b/matlab/D3D/efit/Contents.m
deleted file mode 100644
index 705ea442..00000000
--- a/matlab/D3D/efit/Contents.m
+++ /dev/null
@@ -1,50 +0,0 @@
- %
-% Matlab EFIT Area (Plus MDS-EFIT Read)
-%
-% read_afile      Reads a0-eqdsk file and puts variables in Matlab env
-% read_gfile      Reads g0-eqdsk file and puts variables in Matlab env
-% read_gfile_func Same as read_gfile but function call & structure output
-% read_gfile_tok  read gfile structure for particular machines d3d,kstar...
-% read_mfile_func read mfile in netcdf format into struct (ONLY for Matlab 7 V14)
-% plot_efit       Plots efit flux contours
-% get_efit_data1  Gets data for lots of EFIT slices and plots it
-%                 Note: Conflict with daves get_efit_data in /plasma_models 7/03
-% efit_movie      Make movie from EFIT flux data
-% run_efit        Runs EFIT from inside Matlab much as EFIT runs from unix
-% get_efit_profile Get EFIT current profile parametrization from esave.dat
-% read_esave      Read the esave.dat file (fortran mex function)
-% efit_lp         Calculate plasma inductance from gfile information
-% plasma_field    Calculate plasma flux and field at arbitrary rpt,zpt points
-% shot_from_gfile returns shot,time,dir (or tree,server) based on gfile name
-%
-% New Routines to extract EFIT "eq." structure from MDS: (work in progress)
-%
-% cc_efit_to_tok  converts data fetched from mdsplus or gfile to toksys units
-% eq_mds          Fetch an EFIT tree out of mdsplus
-% eq_mk_time_last Modifies eq. to put time index as last index in all vectors
-% gdata_to_eq     Reads gdata from read_gfile_tok and puts into "eq." structure
-% read_mds_eqdsk  Return data like output of read_gfile_tok.m from mdsplus
-% read_mds_eq_func Return data like output of read_gfile_func.m from mdsplus
-% equil_to_gdata  Identical output as read_gfile_func but reads from mds+
-%
-% Below eq. routines work in progress:
-% eq_time_lim    Reduces time data in sructure eq. within limits; also makes var
-% eq_plasma_cur  Generates the plasma current from flux inside eq.
-% plasma_current Generates plasma current and current density from efit psi
-% inside_plasma  Function Determines all points inside plasma
-% eq_ga_env      Makes standard G (& later A file) variables from eq. into env.
-%
-% Misc EFIT scripts
-%
-% calc_fpcurr    Emulates fpcurr in efit (ffprime calculation from polynom.)
-% calc_ppcurr    Emulates ppcurr in efit (pprime calculation from polynom.)
-% calc_bsffel    Emulates bsffel in efit (iparm'th term of poly representation)
-% calc_bsppel    Emulates bsppel in efit (iparm'th term of poly rep. of pprime)
-% gfile_def      Generates structure of EFIT gfile variable definitions 
-% test_get_efit_profile - Example for get_efit_profile.m,current reconstruction
-%
-% Emmanuel Joffrin's EFIT tools:
-%
-% fluxfun - function to extract profile data from EFIT and make flux mappings
-% fluxmoy - called by fluxfun...
-% isoflux - called by fluxfun...
diff --git a/matlab/D3D/efit/cc_efit_to_tok.m b/matlab/D3D/efit/cc_efit_to_tok.m
deleted file mode 100644
index 66b35a9d..00000000
--- a/matlab/D3D/efit/cc_efit_to_tok.m
+++ /dev/null
@@ -1,242 +0,0 @@
-function equil_I = cc_efit_to_tok(vac_objs,equil_data)
- %
-%  SYNTAX: equil_I = cc_efit_to_tok(vac_objs,equil_data)
-%
-%  PURPOSE: Convert equilibrium conductor currents in internal EFIT 
-%	representation (contained in equil_data) into a representation 
-%	compatible with toksys environment.
-%
-%  INPUT:
-%    vac_objs = vacuum model data object structure
-%    equil_data = equilibrium data structure
-%    idx_efit_to_tok = optional map of efit pf coil indices to toksys indices, s.t. if
-%	                    I=currents in efit order, then
-%`                     I(idx_efit_to_tok)=currents in toksys order
-%    idxvv_efit_to_tok = " vv indices " " "
-%
-%  OUTPUT: (units defined by imks, iterminal in vac_objs)
-%    equil_I = structure containing:
-%             cc0t = coil current equilibrium vector, toksys conductors
-%             cc0e = coil current equilibrium vector, EFIT conductors
-%             vc0t = vessel current equilibrium vector, toksys conductors
-%             vc0e = vessel current equilibrium vector, EFIT conductors
-%             cprojet = mapping: cc0t = cprojet*cc0e
-%             cprojte = mapping: cc0e = cprojte*cc0t
-%             vprojte = mapping: vc0e = vprojte*vc0t
-%    (Equilibrium vessel currents are usually all zero. In those cases, vc0e
-%	and vprojte are not produced.)
- 
-%  RESTRICTIONS:
-%
-%  METHOD:  
-%
-%  WRITTEN BY:  Mike Walker 	ON 	8/31/09 (from in-line code in rzrig)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%Derived values:
-   if vac_objs.imks, iscale=1e6; else iscale=1; end
-   iterminal = vac_objs.iterminal;
-   ncc = size(vac_objs.mcc,1);
-
-% Extract Needed EFIT data from equil_data:
-
-   if(~isfield(vac_objs,'ecnturn') | isempty(vac_objs.ecnturn))
-      ecnturn = 0;
-   else
-      ecnturn = vac_objs.ecnturn;
-   end
-   if(ecnturn~=0)
-      ccnturn = [ecnturn; vac_objs.fcnturn];
-      if(~iterminal)
-         ccnturn = ones(size(ccnturn));
-      end
-   else
-      ccnturn = vac_objs.fcnturn;
-      if(~iterminal)
-         ccnturn = ones(size(ccnturn));
-      end
-   end
-% make all "turn" objects into columns, consistent with coil current vectors
-   [s1,s2]=size(ccnturn); if(s1==1), ccnturn = ccnturn'; end
-
-% Define desired currents for calculating equilibrium field.
-% Assumes cc came out of read_gfile always in MA-turns.
-
-if(~isfield(equil_data,'cc') | isempty(equil_data.cc))
-
-   wait('ERROR cc_efit_to_tok: no valid cc data - returning empty matrices')
-   equil_I = struct( ...
-   'cc0t', [], ...
-   'cc0e', [], ...
-   'cprojte', []);
-
-else
-   ccx = iscale*equil_data.cc(:);      % ccx now in proper units (MA or Amps)
-
-% Complicated logic required here because either turnfc or fcturn can hold
-% the fraction of current values - depends on how used internally in EFIT.
-
-   if(any(equil_data.fcturn<1))
-      Ifrac = equil_data.fcturn;
-      nturn = equil_data.turnfc;
-   elseif(any(equil_data.turnfc<1))
-      Ifrac = equil_data.turnfc;
-      nturn = equil_data.fcturn;
-   elseif(any(equil_data.turnfc>1))
-      Ifrac = equil_data.fcturn;
-      nturn = equil_data.turnfc;
-   elseif(any(equil_data.fcturn>1))
-      Ifrac = equil_data.turnfc;
-      nturn = equil_data.fcturn;
-   else                                 % all must be = 1
-      Ifrac = equil_data.turnfc;
-      nturn = equil_data.fcturn;
-   end
-% if any ecoils, insert before fcoils:
-
-   idxf = abs(equil_data.fcid);	% use abs in case anti-series connection
-   isign = sign(equil_data.fcid);
-   if(~isempty(equil_data.ecid))
-      nee = length(unique(equil_data.ecid));
-      Ifrac = [ones(1,nee) Ifrac];
-      for i=nee:-1:1
-         idx = find(equil_data.ecid==i);
-         neturn = sum(equil_data.ecturn(idx));
-         nturn = [neturn nturn];
-      end
-      idx = [[1:nee] idxf+nee];
-      isign = [ones(1,nee) isign];
-   else
-      idx = idxf;
-   end
-
-   [mm,i1] = min(size(Ifrac)); [mm,i2] = min(size(ccx));
-   if(i1~=i2) Ifrac = Ifrac'; end;
-   cc0 = isign'.*ccx(idx).*Ifrac;
-
-   nn = length(cc0);
-   if(isfield(equil_data,'idx_efit_to_tok'))
-      idx_efit_to_tok = equil_data.idx_efit_to_tok;
-   else
-      idx_efit_to_tok = 1:length(nturn);
-   end
-
-   if(iterminal)
-      [mm,i1] = min(size(nturn)); [mm,i2] = min(size(ccnturn));
-      if(i1~=i2) nturn = nturn'; end;
-% (length(ccnturn) > length(nturn) is allowed. Extra currents are 0.)
-      if(norm(ccnturn(1:length(nturn)) - nturn(idx_efit_to_tok)))
-        fprintf('WARNING cc_efit_to_tok:\n');
-        fprintf('  #turns equil. data=');
-        fprintf('%d ',nturn); fprintf('\n');
-        fprintf('  #turns vacuum objects=');
-        fprintf('%d ',ccnturn(1:length(nturn))); fprintf('\n');
-%        wait
-      end
-      cc0 = cc0./nturn;
-   end
-
-% The following accounts for coils assumed to carry no steady state current
-% NOTE that these are always assumed to be listed last.
-   if(length(cc0)<ncc)
-      cc0 = [cc0; zeros(ncc-length(cc0),1)];
-   end
-
-% At this point, cc0 is in correct units, lumped/terminal mode, and represents
-% equilibrium currents assigned to all coils represented by vacuum objects.
-
-cprojet = zeros(length(cc0),length(equil_data.cc));
-cprojte = zeros(length(equil_data.cc),length(cc0));
-if(isfield(vac_objs,'ecnturn'))
-   nec = length(vac_objs.ecnturn);
-   for k=1:nec
-      cprojet(k,k)=1;        % ohmic coil
-      cprojte(k,k)=1;        % ohmic coil
-   end
-else
-   nec = 0;
-end
-for k=nec+1:size(cprojte,1)
-   idx = find(equil_data.fcid==k-nec);
-   if(~isempty(idx))
-      cprojet(idx+nec,k)=1;
-      cprojte(k,idx(1)+nec)=1;
-   end
-end
-
-if(isfield(equil_data,'idx_efit_to_tok'))
-   nn = length(cc0);
-   ni = max(idx_efit_to_tok);
-   temp = zeros(nn);
-   for k=1:ni
-      temp(idx_efit_to_tok(k),k)=1;
-   end
-   cc0t = zeros(size(cc0));
-   cc0t(1:ni) = cc0(idx_efit_to_tok);
-   cprojte = cprojte*temp;
-   cprojet = temp'*cprojet;
-else
-   cc0t = cc0;
-end
-
-cc0e = cprojte*cc0t;
-
-equil_I = struct( ...
-'cc0t', cc0t, ...
-'cc0e', cc0e, ...
-'cprojet', cprojet, ...
-'cprojte', cprojte);
-
-description = struct( ...
-'cc0t', 'coil currents corresponding to toksys vacuum objects', ...
-'cc0e', 'coil currents corresponding to EFIT fitted coils', ...
-'cprojet', 'mapping: cc0t = cprojet*cc0e', ...
-'cprojte', 'mapping: cc0e = cprojte*cc0t');
-
-end
-
-% If vessel currents in equilibrium, these must be used in rzrig calculation.
-if(isfield(equil_data,'vc') & ~isempty(equil_data.vc))
-   vcx = iscale*equil_data.vc;       % vcx now in proper units (MA or Amps)
-   vprojte= proj_turn(equil_data.vvid,equil_data.vvfrac);
-   vc0= vprojte'*vcx;  
-   
-
-%  construct a projection without inverting
-   vprojte= proj_turn(equil_data.vvid,1./equil_data.vvfrac);
-   ii = find(vprojte~=0);
-   vprojtej= zeros(size(vprojte));
-   vprojtej(ii)= 1;
-   num= sum(vprojtej')';
-   vprojtej= (1./num)*ones(1,size(vprojte,2));
-   vprojte= vprojte.*vprojtej;
-   
-   % Translate conductors if toksys & efit have different indices or #
-   if(isfield(equil_data,'idxvv_efit_to_tok'))
-      nn = length(vc0);
-      ni = max(equil_data.idxvv_efit_to_tok);
-      temp = zeros(nn,ni);
-      for k=1:ni
-         temp(equil_data.idxvv_efit_to_tok(k),k)=1;
-      end
-      vc0t = zeros(vac_objs.nv,1);
-      vc0t(1:ni) = vc0(equil_data.idxvv_efit_to_tok);
-      vprojte = vprojte*temp;
-   else
-      vc0t = vc0;
-   end
-   
-   vc0e = vprojte*vc0t;
-   equil_I.vc0t = vc0t;
-   equil_I.vc0e = vc0e;
-   equil_I.vprojte = vprojte;
-
-   description.vc0t='vessel currents corresponding to toksys vacuum objects from equil_data';
-   description.cc0e='vessel currents corresponding to toksys.def_connect fitted conductors';
-   description.vprojte= 'mapping: vc0e = vprojte*vc0t';
-else
-   equil_I.vc0t = zeros(vac_objs.nv,1);
-   description.vc0t='vessel currents corresponding to toksys vacuum objects';
-end
-
-equil_I.description = description;
diff --git a/matlab/D3D/efit/efit_movie.m b/matlab/D3D/efit/efit_movie.m
deleted file mode 100644
index fa710f3b..00000000
--- a/matlab/D3D/efit/efit_movie.m
+++ /dev/null
@@ -1,59 +0,0 @@
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  USAGE:  >>efit_movie
-%
-%  PURPOSE: Script to display movie of EFIT flux patterns from set of EFITs.
-%
-%  INPUTS:
-%	eqdir = string giving directory containing EFIT g-files 
-%		(final character is '/', e.g. '/u/humphrys/efit/')
-%	shot = integer shot number
-%	t1ms = initial EFIT slice time (msec)
-%	t2ms = final EFIT slice time (msec)
-%	dtms = EFIT slices time interval (msec)
-%
-%  OUTPUTS:
-%	EFIT movie displayed.
-%
-%  RESTRICTIONS:
-%	EFIT g0-files identified by shot, t1ms, t2ms, dtms must exist in eqdir.
-%	Input variables must be defined; no defaults provided EXCEPT for
-%	eqdir, defaulted to './' (so uses default directory).
-%
-%  METHOD:  
-
-%  WRITTEN BY:  Dave Humphreys  ON	1/1/97
-%
-%  MODIFICATION HISTORY:
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Default inputs:
-  if ~exist('eqdir')
-     eqdir = './';
-  end
-
-% Prelims:
-   mu0 = 0.4*pi;
-   clf,hold off  %clear current figure
-
-% Derived Values:
-  npts = (t2ms-t1ms)/dtms + 1;
-
-% Acquire data and make movie:
-  for ii=1:npts
-    disp(['ii=',int2str(ii),' of ',int2str(npts)])
-    itime = t1ms + (ii-1)*dtms;
-    filename = [eqdir,'g0',int2str(shot),'.0',int2str(itime)];
-    hold off
-    plot_efit
-    if ii==1, M=moviein(npts); end  %initialize M first time
-    M(:,ii) = getframe;
-  end
-
-% Play movie:
-  disp('Playing movie once...')
-  movie(M)
-  disp('Movie complete. To play again N times, do >>movie(M,N)')
-
-
-            
diff --git a/matlab/D3D/efit/eq_mds.m b/matlab/D3D/efit/eq_mds.m
deleted file mode 100644
index b587d8bb..00000000
--- a/matlab/D3D/efit/eq_mds.m
+++ /dev/null
@@ -1,81 +0,0 @@
-  function  eq= eq_mds(shot, tree, server, toupper, verbose)
-%
-%  SYNTAX:
-%         eq= eq_mds(shot, tree, server, toupper, verbose); % full call
-%         eq= eq_mds(shot);                        % defaults to DIII-D server
-%         eq= eq_mds(shot, 'EFIT01', 'NSTX');      % for NSTX
-%         eq= eq_mds(shot, 'NB', 'DIII-D');        % Other MDS+ Tree Data -beam
-%  Should also Run:
-%         eq= eq_mk_time_last(eq); % puts time at end (i.e. (130,1) => (1,130)
-%
-%  PURPOSE: Get EFIT equilibrium (GEQDSK AEQDSK MEQDSK) from mdsplus database. 
-%
-%  INPUT: <default>
-%    shot   = shot number
-%    tree   = which efit tree to use <'EFIT01'>
-%    server = which MDS+ database to use: defaults to <'DIII-D'>
-%             'DIII-D' opens 'atlas.gat.com'
-%             'NSTX'   opens 'europa.pppl.gov:8501'
-%             'OPEN'   assumes mdsconnect already called
-%              server  arbitrary server is called using mdsconnect(server)
-%    toupper= 1= all variables made upper case, =-1 all var. made lower case
-%             [0]= no change, variables made depending on mds case (typical UC)
-%    verbose = set to 1 to get diagnostic prints during execution
-%
-%  OUTPUT:
-%    eq    = structure containing EFIT eqdsk variables for all times
-%            structure follows MDS tree structure with 'TOP' replaced with 'eq'
-%            See: eq.allnames
-%
-%  EXAMPLE Variables (Examples below are for DIII-D -- NSTX is different)
-%
-%   Ex:  eq.RESULTS.AEQDSK.IPMEAS, eq.RESULTS.GEQDSK.PSIRZ 
-%   Use: plot(eq.RESULTS.GEQDSK.GTIME,eq.RESULTS.GEQDSK.CPASMA)
-%        contour(eq.RESULTS.GEQDSK.R(:,1), eq.RESULTS.GEQDSK.Z(:,1), ...
-%        eq.RESULTS.GEQDSK.PSIRZ(:,:,round(length(eq.RESULTS.GEQDSK.GTIME)/2))')
-%
-%    Some Extra items added to structure (all lower case)
-%      eq.id    =   sting array of important data identifyer enf
-%      eq.shot  =   shot number
-%      eq.server=   MDS+ server
-%      eq.allnames= list of all variables in structure with full struc. address
-%      eq.mdsnames= list of all variables in structure with mds struc. address
-% 
-%  NOTE: 1)Function returns all TIME data for shot in large arrays.
-%          Example:
-%          eq.RESULTS.AEQDSK.BETAN(255,1)
-%          eq.RESULTS.AEQDSK.ATIME(255,1); % Time data vector for AEQDSK data
-%          plot(eq.RESULTS.AEQDSK.ATIME,eq.RESULTS.AEQDSK.BETAN)
-%          eq.RESULTS.GEQDSK.GTIME(130,1)
-%          eq.RESULTS.GEQDSK.PPRIME(65,130)
-%          eq.RESULTS.GEQDSK.PSIRZ(65,65,130) 
-%        2) Time is in vector eq...GTIME and is in ms. All other units are as
-%           they come from EFIT. psi(Vs/r) I(A) R(m) ...
-%
-%  SEE ALSO: eq= eq_mk_time_last(eq); (should be run on eq)
-%            eq_time_lim eq_ga_env str_to_ws
-%
-%  NOTE: Written very generally and should return any subtree of MDS+
-%        Example: ions= eq_mds(shot,'IONS');
-
-%  WRITTEN BY:  Jim Leuer    ON      3/1/05
-%  taken from mds_eq.m uses sub-structure to store
-%  USES:   eq_mod
-% To see MDS structure on HYDRA run traverser
-% tested on DIII-D and NSTX data and should work for JET data but not tested
-% ==========================================================================
-%  @(#)eq_mds.m	1.7 06/23/10
-
-wait('WARNING eq_mds: eq_mds is OBSOLETE - use get_mds_tree instead')
-
-if(nargin<2)
-   wait('ERROR eq_mds: requires at least 2 inputs')
-elseif(nargin==2)
-   eq = get_mds_tree(shot, tree);
-elseif(nargin==3)
-   eq = get_mds_tree(shot, tree, server);
-elseif(nargin==4)
-   eq = get_mds_tree(shot, tree, server, toupper);
-elseif(nargin==5)
-   eq = get_mds_tree(shot, tree, server, toupper, verbose);
-end
diff --git a/matlab/D3D/efit/eq_mod.m b/matlab/D3D/efit/eq_mod.m
deleted file mode 100644
index 2644e28c..00000000
--- a/matlab/D3D/efit/eq_mod.m
+++ /dev/null
@@ -1,113 +0,0 @@
-  function  eqmod= eq_mod(eq)
-%
-%  SYNTAX:
-%         eqmod= eq_mod(eq);
-%
-%  PURPOSE:  Puts time index as last index of each array. 
-%
-%  INPUT: <default>
-%    eq         = structure from mds_eq
-%
-%  OUTPUT:
-%    eqmod      = structure containing EFIT eqdsk variables with time last entry
-%                 Example: eq.BCENTR(255,1) => eqmod.BCENTER(1,255)
-%
-%    see also mds_eq
-%
-%  WRITTEN BY:  Jim Leuer    ON      6/11/03
-% ==========================================================================
-% 
-% Defaults
-  if nargin==0
-     disp('% eq_mod needs at least a "eq" argument')
-     help eq_mod
-     return
-  end
-
-% -----------------------------------------------
-  eqmod= eq;
-
- if isfield(eq,'GTIME') & isfield(eq,'gnames')
-
-  nt= length(eq.GTIME);
-    
-% loop over all variables
-  for ii= 1:length(eq.gnames);
-%    ii=0; ii=ii+1;
-     nam= deblank(eq.gnames(ii,:));
-     
-     str= ['ndim= ndims(eq.' nam ');'];
-     eval(str);
-     if ndim<=2
-        str= ['siz= size(eq.' nam ');'];
-        eval(str);
-	if siz(1)==nt
-           str= ['eqmod.' nam '= eq.' nam ''' ;'];
-	   eval(str);
-	end
-      end
-   end
-
- end
- 
-% AFILE
-    
-if isfield(eq,'ATIME') & isfield(eq,'anames')
-
-  nt= length(eq.ATIME);
-    
-% loop over all variables
-  for ii= 1:length(eq.anames);
-%    ii=0; ii=ii+1;
-     nam= deblank(eq.anames(ii,:));
-     
-     str= ['ndim= ndims(eq.' nam ');'];
-     eval(str);
-     if ndim<=2
-        str= ['siz= size(eq.' nam ');'];
-        eval(str);
-	if siz(1)==nt
-           str= ['eqmod.' nam '= eq.' nam ''' ;'];
-	   eval(str);
-	end
-      end
-   end
-
- end
-
-% MFILE:
-
-
-if (isfield(eq,'TIME') | isfield(eq,'MTIME')) & isfield(eq,'mnames')
-
-   if isfield(eq,'MTIME') 
-     nt= length(eq.MTIME);
-   else
-     nt= length(eq.TIME);
-   end
-    
-% loop over all variables
-  for ii= 1:length(eq.mnames);
-%    ii=0; ii=ii+1;
-     nam= deblank(eq.mnames(ii,:));
-     
-     str= ['ndim= ndims(eq.' nam ');'];
-     eval(str);
-     if ndim<=2
-        str= ['siz= size(eq.' nam ');'];
-        eval(str);
-	if siz(1)==nt
-           str= ['eqmod.' nam '= eq.' nam ''' ;'];
-	   eval(str);
-	end
-      end
-   end
-
- end
-
- return
-  
-% Testing
-%  eq= mds_eq(114504, 'EFIT01', 0);
-%  eqmod= eq_mod(eq)
-
diff --git a/matlab/D3D/efit/equil_to_gdata.m b/matlab/D3D/efit/equil_to_gdata.m
deleted file mode 100644
index 50978b71..00000000
--- a/matlab/D3D/efit/equil_to_gdata.m
+++ /dev/null
@@ -1,197 +0,0 @@
- function [gdata,ireadok]= equil_to_gdata(equil,tms)
-  %
-%  USAGE:  [gdata,ireadok] = equil_to_gdata(equil, tms);
-%  USAGE:  [gdata,ireadok] = equil_to_gdata(mds_string); % calls read_mds_func
-%
-%
-%  PURPOSE: Convert equil data generated by read_mds_eq_func to read_gfile_func
-%
-%  INPUTS: <default>
-%     equil=	   equilibrium data: equil=read_mds_eq_func(shot,tree,server);
-%
-%     mds_string=  optionally if equil is a string containing MDS+ tree information:
-%                  format: <Server><.><tree>.shot.time
-%                  Examples:
-%                  'D3D.EFIT09.g131498.02600'
-%                  'D3D.EFITRT1.131498.02600'
-%                  '.g131498.02600' => 'D3D.EFIT01.g131498.02600'
-%     tms=	   time [ms] to use from equil data 
-%
-%  OUTPUTS:
-%    gdata =   data structure containing EFIT G-file variables
-%    ireadok = flag to report good read of gfile (0=bad, 1=good)
-%
-%  RESTRICTIONS:
-%   MDS EFIT Tree must exist for call with mds_string string convention
-% 
-%  NOTE TESTED WITH ANY MDS+ except D3D
-%  
- 
-%  METHOD: Based on read_gfile_func & read_mds_eq_func  
-
-%  WRITTEN BY:  Jim Leuer ON 8Mar2010
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-% ================================================================
-% See if input is a 'DOT' format convention and then get data from MDS+
-% ================================================================
-
-  if isstr(equil) | nargin <=1 
-    mds_string= equil;
-    id= strfind(mds_string,'.'); % Format: SERVER.TREE.SHOTNUM.TIME	
-    if length(id) >=2      % must have 2 dots: .SHOTNUM.TIME
-      [shot,tms,tree,server] = shot_from_gfile(mds_string); % Dot Format
-      disp([' % NOTE equil_to_gdata is reading MDS+ for: ',mds_string]);
-
-      jphi= []; % make sure this is variable and not function
-      [equil,neq,eq] = read_mds_eq_func1(shot,tree,server);
-	
-     else % if length(id)<=2
-
-      disp([' %ERROR equil_to_gdata: needs "server.tree.shot.time" ']);
-      gdata=[];
-      ireadok= 0;
-      return
-     end % if ~isempty(id)
-   end % if isstr(equil)
- 
-% =========================================================================
-% Get only ONE time
-  if ~isempty(equil)
-    if ~isfield(equil,'tms')
-      if strcmp(upper(server),'NSTX')
-         equil.time=  eq.results.geqdsk.gtime;
-         equil.tms=  eq.results.geqdsk.gtime*1e+3;
-      elseif strcmp(upper(server),'KSTAR') | findstr(upper(tree),'KSTR') |...
-             strcmp(upper(server),'EAST') | findstr(upper(tree),'EAST')
-         equil.time=  eq.results.geqdsk.gtime;
-         equil.tms=  eq.results.geqdsk.gtime*1e+3;         
-      else % DIIID
-         equil.time=  eq.results.geqdsk.gtime*1e-3;
-         equil.tms= eq.results.geqdsk.gtime;
-      end       
-    end
-    
-    if tms >= equil.tms(1) & tms <= equil.tms(end)   
-       idx= interp1(equil.tms,1:length(equil.tms),tms,'nearest');
-    else
-      disp([' %ERROR equil_to_gdata, tms: ' num2str(tms) ...
-            ' not between equil.tms ', ...
-	    num2str(equil.tms(1)) ' ' num2str(equil.tms(end))]);
-      ireadok= 0;
-      gdata= [];
-      return
-    end
-% =========================================================================
- 
-  gdef = gfile_def; % definitions of all variables read in from G-file
-
-  gdata = struct( ...	
-    'gdef',   gdef, ...                   
-    'brsp',   equil.gdata(idx).brsp, ... 
-    'bzero',  equil.gdata(idx).bzero, ...
-    'cpasma', equil.gdata(idx).cpasma, ...
-    'ecase',  equil.gdata(idx).ecase, ...
-    'ecurrt', equil.gdata(idx).ecurrt, ...
-    'ffprim', equil.gdata(idx).ffprim, ...
-    'fpol',   equil.gdata(idx).fpol, ...
-    'limitr', equil.gdata(idx).limitr, ...
-    'nbbbs',  equil.gdata(idx).nbbbs, ...
-    'nh',     equil.gdata(idx).nh, ...
-    'nw',     equil.gdata(idx).nw, ...
-    'pcurrt', equil.gdata(idx).pcurrt, ...
-    'pprime', equil.gdata(idx).pprime, ...
-    'pres',   equil.gdata(idx).pres, ...
-    'psirz',  equil.gdata(idx).psirz, ...
-    'qpsi',   equil.gdata(idx).qpsi, ...
-    'rbbbs',  equil.gdata(idx).rbbbs, ...
-    'rgrid1', equil.gdata(idx).rgrid1, ...
-    'rmaxis', equil.gdata(idx).rmaxis, ...
-    'rzero',  equil.gdata(idx).rzero, ...
-    'ssibry', equil.gdata(idx).ssibry, ...
-    'ssimag', equil.gdata(idx).ssimag, ...
-    'xdim',   equil.gdata(idx).xdim, ...
-    'xlim',   equil.gdata(idx).xlim, ...
-    'ylim',   equil.gdata(idx).ylim, ...
-    'zbbbs',  equil.gdata(idx).zbbbs, ...
-    'zdim',   equil.gdata(idx).zdim, ...
-    'zmaxis', equil.gdata(idx).zmaxis, ...
-    'zmid',   equil.gdata(idx).zmid);
-
-  gdata.time= equil.time(idx);
-  gdata.tms=  equil.tms(idx);
-  gdata.gdef.time= ['time in seconds; ', ...
-       'Note: gtime,atime = ms in D3D,EAST,KSTAR but sec in NSTX (TRUTH)'];
-  gdata.gdef.tms= ['time in ms; '];
-  if exist('shot')
-     gdata.shot= shot;
-     gdata.gdef.shot= 'Shot number; used for mds call';
-  end
-  if exist('tms')
-     gdata.tms_target= tms;
-     gdata.gdef.tms_target= ...
-      'Target time in ms; (.tms and .time are actual mds times found)';
-  end
-  if exist('tree')
-     gdata.tree= tree;
-     gdata.gdef.tree= 'tree; used for mds call';
-  end
-  if exist('server')
-     gdata.server= server;
-     gdata.gdef.server= 'server; used for mds call';
-  end
-  if exist('mds_string')
-     gdata.mds_string= mds_string;
-     gdata.gdef.mds_string= '1st input argument to equil_to_gdata';
-  end
-  
-  ireadok= 1;
- else
-  disp([' %ERROR equil_to_gdata, no gdata generated ']);
-  gdata= [];
-  ireadok= 0;
- end % ~isempty(equil)
-
-  return
-% ==========================================================
-% testing
-   gfile= '/u/leuer/efit/d3d/shot131498/g131498.02600'
-   g0= read_gfile_func(gfile);
-
-   mds_name='d3d.efit01.g131498.02600'; 
-   [g1,ireadok] = equil_to_gdata(mds_name)
-   [g2,ireadok] = read_gfile_func(mds_name)
- 
-   nms= char(fieldnames(g0));
-   s= char(' '*ones(size(nms,1),1));
-   [int2str((1:size(nms,1))') s nms]
-   
-   id= [2:12,14:15 17,19:26,28:30];
-   for ii=id
-    n= deblank(nms(ii,:))
-    s= ['[g0.' n ' g1.' n ']'];
-    eval(s)
-    pause
-   end
-   
-   contour(g0.pcurrt - g1.pcurrt)
-   
-   for ii=1:g0.nw
-     [g0.pcurrt(:,ii) g1.pcurrt(:,ii)]
-     pause
-   end
-   
-   for ii=1:g0.nw
-     [g0.psirz(:,ii) g1.psirz(:,ii)]
-     pause
-   end
-   
-   [g0.rbbbs(1:g0.nbbbs) g1.rbbbs(1:g1.nbbbs)]
-  
-% test read_gfile_func
-   [g2,iok]= read_gfile_func(filename);
-   [g3,iok]= read_gfile_func(gfilename);
-   
-
-
diff --git a/matlab/D3D/efit/get_efit_data1.m b/matlab/D3D/efit/get_efit_data1.m
deleted file mode 100644
index f9201aa0..00000000
--- a/matlab/D3D/efit/get_efit_data1.m
+++ /dev/null
@@ -1,274 +0,0 @@
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  SYNTAX:  get_efit_data
-%
-%  PURPOSE:  Script to extract many slices of EFIT data from set of a0-eqdsk 
-%  files assumed present in default directory and plot selected data.
-%
-%  INPUT:
-%	eqdir   = directory for EFIT data files (default='./');
-%		  eqdir string must end in "/" (eg '/users/humphrys/matlab/')
-%       shot	= shot number
-%    	iplot 	= 1 if want to plot many frames on one plot (default)
-%	      	= 2 if want to plot Z,R,Ip(t) on different plots
-%		= 0 to skip plotting
-%    EFIT time slices are specified using EITHER of the following methods:
-%       tmiefit	= 1st efit time slice (msec)
-%       dt 	= delta time (msec)
-%       nslices	= # of efit slices
-%    OR:
-%       tefit 	= vector of efit times (msec) to read from a0 files.  
-%    If tefit is specified, input variables tmiefit, dt, nslices are ignored.
-%       ipltref = present figure if want to start plotting after present fig
-%		  (default=0) e.g. if ipltref=2, EFIT plots start at fig 3 
-%		  Currently used only for iplot=1
-%
-%  OUTPUT:
-%       Extracts data from a0 files and plots things.
- 
-%  RESTRICTIONS:
-%     A0-files specified by inputs must exist in default directory.
-%	In present version, efit times must all have 4 digits (ie t must be
-%	> 999, and < 9999)...
-%
-%  METHOD:  
-%     Uses read_afile to read A0-eqdsk file for series of EFIT slices.
-%
-%  WRITTEN BY:  Dave Humphreys ON 	6/25/95 Adapted from compare_efitz.m
-%
-%  MODIFICATION HISTORY:
-%      Finally completed to work properly. DAH 2/96 
-%      Modified to accept inputs from Matlab environment instead of definitions
-%         at beginning of script.  MLW 5/15/97
-%      Plotting logic modified.  DAH 5/16/97
-%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Initial definitions:
-fprintf('shot = %d\n',shot)
-if ~exist('iplot'), iplot = 1; end
-fprintf('iplot = %d\n',iplot)
-if(exist('tefit'))
-   fprintf('time slices specified by tefit \n')
-else
-   fprintf('tmiefit = %d\n',tmiefit)
-   fprintf('dt = %d\n',dt)
-   fprintf('nslices = %d\n',nslices)
-   tefit = linspace(tmiefit,tmiefit+dt*(nslices-1),nslices)';  %time vec in msec
-end
-
-% Default for EFIT data directory:
-  if ~exist('eqdir')
-    eqdir = './';    %default to default directory
-  end
-
-%Derived Quantities:
-  nt = length(tefit);
-  shotno=int2str(shot);
-
-% Data vectors:
-  t=tefit*1e-3;    %time vector in secs
-  t1=t(1); t2=max(t);
-  zmagt=t; rmagt=t; zcurt=t; rcurt=t; routt=t; ipt=t; kappat=t;
-  aoutt=t; zsep1t=t; rsep1t=t; zsep2t=t; rsep2t=t; zoutt=t;
-  gaptopt=t; gapint=t; gapoutt=t;
-  betapt=t; lit=t; qet=t;
-  cmpr2t = [];
-
-for ii=1:nt
-  if shot<10000
-     stmp='00'
-  elseif shot<100000
-     stmp='0'
-  else 
-     stmp=''; 
-  end
-  if tefit(ii) < 1e4
-      padstr = '.0';
-      if tefit(ii) < 1e3
-         padstr = '.00';
-         if tefit(ii) < 1e2
-            padstr = '.000';
-            if tefit(ii) < 1e1
-               padstr = '.0000';
-            end
-         end
-      end
-   end
-  filename = [eqdir,'a',stmp,shotno,padstr,int2str(tefit(ii))];
-  read_afile;
-  zmagt(ii) = zmagx*0.01;   %cm->m
-  rmagt(ii) = rmagx*0.01;
-  zcurt(ii) = zcurrt*0.01;
-  rcurt(ii) = rcurrt*0.01;
-  zoutt(ii) = zout*0.01;
-  routt(ii) = rout*0.01;
-  aoutt(ii) = aout*0.01;
-  kappat(ii) = eout;
-  zsep1t(ii) = zseps1*0.01;
-  rsep1t(ii) = rseps1*0.01;
-  zsep2t(ii) = zseps2*0.01;
-  rsep2t(ii) = rseps2*0.01;
-  gaptopt(ii) = otop*0.01;
-  gapoutt(ii) = oright*0.01;
-  gapint(ii) = oleft*0.01;
-  ipt(ii) = pasmat*1e-6;    %A->MA
-  betapt(ii) = betap;
-  lit(ii) = ali;
-  qet(ii) = qpsib;
-  cmpr2t = [cmpr2t; cmpr2'];
-  cpasmat(ii) = cpasma; 
-end
-
-%Derived and others:
-  zlim = -1.3675;   %floor limiter vertical position [m]
-  zrelt = (zcurt-zlim);  %vert posit rel to floor limiter
-  dzdipt = (zrelt(2:nt)-zrelt(1:nt-1))./(ipt(2:nt)-ipt(1:nt-1));
-
-%Plot things:
-if iplot==1
-if ~exist('ipltref'), ipltref=0; end
-figure(1+ipltref),clf,hold off
-nplots=4;
-subplot(nplots,1,1)
-  plot(t,rcurt)
-  hold on
-  plot(t,rmagt,'m--')
-  plot(t,routt,'c-.')
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Rcur,mag,out [m]')
-title([shotno,': EFIT Ovrvu 1 '])
-subplot(nplots,1,2)
-  plot(t,zcurt)
-  hold on
-  plot(t,zmagt,'m--')
-  plot(t,zoutt,'c-.')
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Zcur,mag,out [m]')
-subplot(nplots,1,3)
-  plot(t,aoutt)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('a [m]')
-subplot(nplots,1,4)
-  plot(t,kappat)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Kappa')
-xlabel('t [sec]')
-
-figure(2+ipltref),clf,hold off
-nplots=4;
-subplot(nplots,1,1)
-  plot(t,rsep1t)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Rx1 [m]')
-title([shotno,': EFIT Ovrvu 2'])
-subplot(nplots,1,2)
-  plot(t,zsep1t)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Zx1 [m]')
-subplot(nplots,1,3)
-  plot(t,rsep2t)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Rx2 [m]')
-subplot(nplots,1,4)
-  plot(t,zsep2t)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Zx2 [m]')
-xlabel('t [sec]')
-
-figure(3+ipltref),clf,hold off
-nplots=4;
-subplot(nplots,1,1)
-  plot(t,zsep1t)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Zx1 [m]')
-title([shotno,': EFIT Ovrvu 3'])
-subplot(nplots,1,2)
-  plot(t,gapoutt)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Gout [m]')
-subplot(nplots,1,3)
-  plot(t,gaptopt)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Gtop [m]')
-subplot(nplots,1,4)
-  plot(t,gapint)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Gin [m]')
-xlabel('t [sec]')
-
-figure(4+ipltref),clf,hold off
-nplots=4;
-subplot(nplots,1,1)
-  plot(t,ipt)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Ip [MA]')
-title([shotno,': EFIT Ovrvu 4'])
-subplot(nplots,1,2)
-  plot(t,lit)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('li')
-subplot(nplots,1,3)
-  plot(t,betapt)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('Betap')
-subplot(nplots,1,4)
-  plot(t,qet)
-  axis0=axis; axis([t1 t2 axis0(3:4)])
-  grid
-  ylabel('q_{edge}')
-xlabel('t [sec]')
-
-end  %end iplot==1
-
-
-if iplot==2
-  figure(1),clf,hold off
-  plot(t,zrelt)
-  hold on
-  plot(t,zmagt-zlim,'m--')   %vert posit of mag axis rel to floor
-  xlabel('t [sec]')
-  ylabel('Zrel [m]')
-  title([shotno,': Z Relative to Floor'])
-  grid
-
-figure(2),clf,hold off
-  plot(t,rcurt)
-  hold on
-  plot(t,rmagt,'m--')
-  xlabel('t [sec]')
-  ylabel('Rcur [m]')
-  title([shotno,': Rcur '])
-  grid
-
-figure(3),clf,hold off
-  plot(t,ipt)
-  xlabel('t [sec]')
-  ylabel('Ip_meas [MA]') 
-  title([shotno,': Plasma Current']) 
-  grid
-
-%figure(3),clf,hold off
-%  plot(t(1:nt-1),dzdipt)
-%  hold on
-%  plot(t(1:nt-1),smoothdt(dzdipt,t,4e-3),'m--')
-%  xlabel('t [sec]')
-%  ylabel('dz/dIp [m/MA]')
-%  title([shotno,': dZ/dIp During VDE'])  
-%  grid
-
-end  %end iplot==2
-
diff --git a/matlab/D3D/efit/gfile_def.m b/matlab/D3D/efit/gfile_def.m
deleted file mode 100644
index 9809de13..00000000
--- a/matlab/D3D/efit/gfile_def.m
+++ /dev/null
@@ -1,52 +0,0 @@
- function gdef = gfile_def()
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  SYNTAX:  gdef = gfile_def
-%
-%  PURPOSE:  Produces G-file variable definition structure for inclusion in
-%            gfile structure
-%
-%  INPUT: (none)
-%
-%  OUTPUT:
-%	gdef = data structure containing EFIT G-file variable definitions
- 
-%  RESTRICTIONS:
-%
-%  METHOD:  
-%
-%  WRITTEN BY:  Jim Leuer 	ON 	01/05/2005
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% From efit_definitions.xls (sheet gfile)
-
-  gdef = struct( ...	
-    'brsp', 	'OPTIONAL F-coil current vector; BRSP(1:NFCOIL); UNITS: depend on fcturn in mhdin.dat: fcturn()=1 brsp=[A-turns]; fcturn()=#turns brsp= [A]; brsp.*fcturn() is always [A-t], brsp.*fcturn().*turnfc() is always [A] ', ... 
-    'bzero', 	'Vacuum toroidal magnetic field corresponding to RZERO, [T]', ... 
-    'cpasma', 	'Plamsma Current [A]', ... 
-    'ecase', 	'Identification character string; (1:48 characters of 1st line)', ... 
-    'ecurrt', 	'OPTIONAL E-coil current vector; ECURRT(1:NESUM); [A]', ... 
-    'ffprim', 	'Poloidal current function derivitive; FFPRIM= f*df/dPsi;  ffprim= -sign(cpasma)*ffprime(in file); See FPOL; Jt (Amp/m2) = R*PPRIME + FFPRIM/(R*muo); FFPRIM(1:NW); [(Tm)^2/(Vs/Rad)]', ... 
-    'fpol', 	'Poloidal current function;  F= R*Bt on flux grid; Jt (Amp/m2) = R dP/dPsi + FdF/dPsi/(mu0*R); fpol(1:NW); [Tm]', ... 
-    'limitr', 	'Number of limiter points; See: xlim,ylim; []', ... 
-    'nbbbs', 	'Number of plasma boundary points; []', ... 
-    'nh', 	'Number of vertical Z grid points ', ... 
-    'nw', 	'Number of horizontal R grid points ', ... 
-    'pcurrt', 	'OPTIONAL Plasma current on each grid point; PCURRT(1:NH;1:NW); [A]', ... 
-    'pprime', 	'Plasma presure function derivitive; PPRIME= dp/dPsi;  ppprime= -sign(cpasma)*pprime(in file); See PRES; Jt (Amp/m2) = R*PPRIME + FFPRIM/(R*muo); PPRIME(1:NW); [A/m^3 => N/(m^2)/(Vs/rad)]', ... 
-    'pres', 	'Plasma pressure function;  PRES= pressure on flux grid, Jt (Amp/m2) = R dP/dPsi + FdF/dpsi/(R*mu0); PRES(1:NW); [N/m^2]', ... 
-    'psirz', 	'Poloidal flux on plasma grid in radial direction 1st order; PSIRZ(1:NW,1:NH); [Vs/rad]', ... 
-    'qpsi', 	'Safety factor, q function; q(1)= axis; qpsi(1:nw); []', ... 
-    'rbbbs', 	'Radial locaion of boundary; RBBBS(1:NBBBS); [m]', ... 
-    'rgrid1', 	'Starting Radius of Grid; =rgrid(1); [m]', ... 
-    'rmaxis', 	'R of magnetic axis; [m]', ... 
-    'rzero', 	'Radius Used in Current Profile Parameterization for Ro;  Radial location where BZERO is measured; [m] ', ... 
-    'ssibry', 	'Poloidal flux at plasma boundary; [Vs/rad]', ... 
-    'ssimag', 	'Poloidal flux at magnetic axis; [Vs/rad]', ... 
-    'xdim', 	'Width of Grid; =rgrid(nw)-rgrid(1); [m]', ... 
-    'xlim', 	'Radial locaion of limiter points; XLIM(1:LIMITR); [m]', ... 
-    'ylim', 	'Z locaion of limiter points; YLIM(1:LIMITR); [m]', ... 
-    'zbbbs', 	'Z location of boundary; ZBBBS(1:NBBBS); [m]', ... 
-    'zdim', 	'Height of Grid; =zgrid(nh)-zgrid(1); [m]', ... 
-    'zmaxis', 	'Z of magnetic axis; [m]', ... 
-    'zmid', 	'Z of center of computational box; =(zgrid(1)+zgrid(nh))/2.0; [m] ' ... 
-	);
-  return
diff --git a/matlab/D3D/efit/inside_plasma.m b/matlab/D3D/efit/inside_plasma.m
deleted file mode 100644
index 36c20e89..00000000
--- a/matlab/D3D/efit/inside_plasma.m
+++ /dev/null
@@ -1,292 +0,0 @@
-  function inside= inside_plasma(psizr, rgefit,zgefit, rbbbs,zbbbs,nbbbs,...
-                                 psimag,psibnd, iplot,dofast)
-%
-% inside_plasma sets matrix "inside" to 0's & 1's for outside & inside plasma
-% 
-% SYNTAX:
-%   inside= inside_plasma(psizr, rgefit,zgefit, rbbbs,zbbbs,...
-%                         psimag,psibnd, iplot,dofast);
-%   inside= inside_plasma(psirz, rgefit,zgefit, rbbbs,zbbbs); % minimum input
-%
-%  PURPOSE: set matrix "inside" with 0's or 1's depending if inside or outside
-%           plasma. Uses same input as typically generated by read_gfile
-%
-%  INPUTS: <default> [optional]
-%
-%          psizr=   Flux on plasma grid in (nz,nr) array format (Wb)
-%          rgefit=  Radius vector of plasma grid (m)
-%          zgefit=  Z vector of plasma grid (m)
-%          rbbbs=   Radius vector of closed polygon plasma boundary (m)
-%          zbbbs=   Z vector of closed polygon plasma boundary (m)
-%          nbbbs=   number of elements to use in rbbbs,zbbbs
-%         [psimag]= Flux on axis (Wb) <max(max(psizr))>
-%         [psibnd]= Flux on boundary (Wb)  <average of psi on boundary>
-%         [iplot]=  1; plot results <0>, 2= outside plasma only
-%         [dofast]= 1; % increases algorithm speed at risk of including some
-%                   private flux in solution. Only extreme shapes like
-%                   crescents and beans are expected to need dofast=0.
-%                   Default is dofast=0 since speed is still very fast. <0>
-%
-%  OUTPUTS:
-%
-%          inside=  Matrix of 1's & 0's for inside or outside plasma  (nz,nr)
-%
-%  RESTRICTIONS:
-%          rb,zb adjacent elements cant be identical.
-%          Not tested for coarse plasma boundary polygon mesh.
-%          
-%  METHOD: 
-%          uses limits to do most screening and finally FE triangular formula 
-
-%  WRITTEN BY:  Jim Leuer ON 6-3-03	
-%
-%  MODIFICATION HISTORY:
-%
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Input Checks:
-
-  if nargin==9
-    dofast= 0;
-  elseif nargin==8
-    iplot=1;
-    dofast= 0;
-  elseif nargin==7
-    psibnd= mean(interp2(rgefit,zgefit,psizr,rbbbs,zbbbs));
-    iplot=0;
-    dofast= 0
-  elseif nargin==6
-    psimag= max(max(psizr));
-    psibnd= mean(interp2(rgefit,zgefit,psizr,rbbbs,zbbbs));
-    iplot=0;
-    dofast= 0;
-  elseif nargin==5
-    nbbb= length(rbbb);
-  elseif nargin<=4
-    disp('%ERROR inside_plasma: Needs atleast 4 arguments to work')
-    return
-  end
-      
-% ========================================================================
-% INITIAL SETUP PARAMTERS (boundary, grid, plasma)
-
-  inside= zeros(size(psizr)); %  0's mean plasma 1's means no plasma
-
-% ---------------------------------------------------------------------
-% boundary polygon manipuliation to get in CCW and assending angle order
-
-  rbb= rbbbs(1:nbbbs);  zbb= zbbbs(1:nbbbs);
-  if(size(rbb,1)==1), rbb=rbb'; end; % make sure its a column vector
-  if(size(zbb,1)==1), zbb=zbb'; end; % make sure its a column vector
-  rb0= mean(rbb);       zb0= mean(zbb);
-  if rbb(1)==rbb(end) & zbb(1)==zbb(end)  % remove duplicate last point
-    rbb= rbb(1:end-1);  zbb= zbb(1:end-1);
-  end
-  
-  drb= rbb-rb0;
-  dzb= zbb-zb0;
-% assending angular order from -pi makes this Counter Clockwise CCW
-  angb= atan2(dzb,drb);
-  [angb,id]= sort(angb);
-% make sure -pi to +pi is covered in assending order
-  rbb= rbb([id(end); id; id(1)]); % add points at front and back for 2pi
-  zbb= zbb([id(end); id; id(1)]); % add points at front and back for 2pi
-  angb= angb([id(end); id; id(1)]); % add points at front and back for 2pi
-  angb(1)= angb(1)-2*pi;    % make 1 and end correct 
-  angb(end)= angb(end)+2*pi; %
-  drb= drb([id(end); id; id(1)]);
-  dzb= dzb([id(end); id; id(1)]);
-  radb= sqrt(drb.^2+dzb.^2);
-  radbmn= min(radb);
-  
-  drbmx= max(drb);
-  drbmn= min(drb);
-  dzbmx= max(dzb);
-  dzbmn= min(dzb);
-
-% plot(drb,dzb,'.b'), hold on, plot(drb([1,end]),dzb([1,end]),'rx'), grid on
-    
-% Geometrical setup for particular grid
-
-  r2= ones(length(zgefit),1)*rgefit'; % same size as psizr
-  z2= zgefit*ones(1,length(rgefit));
-  dr2= r2-rb0;
-  dz2= z2-zb0;
-
-% plasma boundary psi limits clipped at grid limits
-
-  psibmx= max(max(psizr));
-  psibmn= min(min(psizr));
-
-  psibmx= min([psibmx, max(psibnd,psimag)]); % insure clip at grid values
-  psibmn= max([psibmn, min(psibnd,psimag)]); % insure clip at grid values
-  
-% ======================================
-% Main Selection Part
-% ======================================
-
-% ======================================
-% 1st sort on center to boundary flux
-%  figure(3)
-%  clf
-%  plot(rbbbs,zbbbs,'k')
-%  hold on
-%  axis equal
-      
-  id1= find(psizr >= psibmn & psizr <= psibmx); % find points within min:max psi
-  inside(id1)= 1;
-
-%  idplt= find(inside);
-%  plot(r2(idplt),z2(idplt),'r.')
-
-
-% ======================================
-% 2nd sort on min/max Delta dimensions
-
-  ii= ones(size(id1));  
-  id2= find( dr2(id1)<drbmn | dr2(id1)>drbmx | dz2(id1)<dzbmn | dz2(id1)>dzbmx);
-  ii(id2)= 0;
-
-  id2no= id1(find(~ii)); % find 0's which are outside plasma
-  inside(id2no)= 0;      % set points outside plasma to zero
-  id22= id1(find(ii));   % this is remaining set that have ones
-  
-%  idplt= find(inside);
-%  plot(r2(idplt),z2(idplt),'b*')
-
-% ===========================================================================
-% For most plasma we really dont have to do the below detailed calculations
- if ~dofast   
-
-% ======================================
-% 3rd eliminate points close to center based on smallest radius
-
-  rad= sqrt(dr2(id22).^2 + dz2(id22).^2);
-
-  ii= ones(size(id22));
-  id3= find(rad <= radbmn);
-  ii(id3)= 0; % this are GOOD point but dont have to do angle; inside already 1
-  id23= find(ii);
-  id33= id22(id23);  
-%  plot(r2(id33),z2(id33),'go') % now we must work on these points with angles
-
-% reduce set to work on:
-
-  rad= rad(id23); % reduced set to work on
-  ang= atan2(dz2(id33),dr2(id33)); 
-
-% ======================================
-% 4th elimination based on angle
-     
-%  pause
-
-% loop over boundary lines
-  for ibm=1:length(drb)-1 %
-% ibm=5; ibm= ibm+1
-
-    ibp= ibm+1; % boundary line end point id
-%    plot(rbb([ibm,ibp]),zbb([ibm,ibp]),'co')
-%    plot(rbb([ibm,ibp]),zbb([ibm,ibp]),'c')
-%    plot([rbb(ibm),rb0],[zbb(ibm),zb0],'c')
-%    plot([rbb(ibp),rb0],[zbb(ibp),zb0],'c')
-%    plot(rb0,zb0,'ro')
-        
-    id= find(ang>= angb(ibm) & ang<= angb(ibp)); % all points to process
-%    plot(r2(id33(id)),z2(id33(id)),'b.')
-
-    if ~isempty(id)
-       radbm= min(radb(ibm:ibp));
-       id3= find(rad(id) > radbm); % Eliminates most points inside radius
-
-%      Final detailed calculation based on local proximity to boundary
-%      new method uses FE rotation dircetion of triangle see segerlind, pg29
-%      assumes boundary is traversed in CCW direction
-%      i=>j is boundary line, k is plasma point (use delta coordinates)
-       if ~isempty(id3) % work on all points which outside minimum bound rad
-           xi= drb(ibm);
-	   yi= dzb(ibm);
-	   xj= drb(ibp);
-	   yj= dzb(ibp);
-
-           for ii=1:length(id3) % loop over remaining points to see if inside
-%            ii=0, ii=ii+1;
-             id4= id33(id(id3(ii))); % pointer to main arrays
-%             plot(r2(id4),z2(id4),'ro')
-             xk= dr2(id4);
-	     yk= dz2(id4);             
-	     ccw= (xj-xi)*(yk-yj)-(xk-xj)*(yj-yi); % inside= + ccw around triang
-
-%             plot([xi,xj,xk,xi]+rb0,[yi,yj,yk,yi]+zb0,'r')     
-%             arrow_head([xi;xj]+rb0,[yi;yj]+zb0,.1,'r');
-%             arrow_head([xj;xk]+rb0,[yj;yk]+zb0,.1,'r');
-
-             if ccw < 0
-               inside(id4)=0; % this is where final points eliminated
-%               plot([rb0,xx+rb0],[zb0,yy+zb0],'r')
-             end
-        
-%            pause(3)
-%            disp('paused')
-%            pause
-           end % for ii    
-
-       end % ~isempty(id3)
-
-%      need to reduce rad and ang by points processed        
-       jj= ones(size(rad)); % all indexes in rad & ang;
-       jj(id)= 0;             % eliminate all point processed
-       id23= find(jj);
-       id33= id33(id23); % reduce main pointer count
-       rad= rad(id23);   % reduced set to work on
-       ang= ang(id23); 
-%       pause
-                
-     end % ~isempty(id)
-
-  end    % for ibm
- end     % dofast
- 
-% ======================================
-% plot results
-
-  if iplot
-%    plot(rgefit([1;end;end;1;1]),zgefit([1;1;end;end;1]),'r')
-    plot(rbbbs(1:nbbbs),zbbbs(1:nbbbs),'k')
-    hold on
-    axis equal
-% jal ERROR WORK AROUND FOR MAC/X11/ssh/THOR/MATLAB13 4/6/2005
-    if size(r2,1)*size(z2,2) >= 2145
-     inside1= inside(1:2:size(inside,1),1:2:size(inside,2));
-     r2= r2(1:2:size(r2,1),1:2:size(r2,2));
-     z2= z2(1:2:size(z2,1),1:2:size(z2,2));
-    else
-     inside1= inside;
-    end
-     idd= find(~inside1);
-     plot(r2(idd),z2(idd),'b.')
-
-    if iplot==1
-      idd= find(inside1);
-      plot(r2(idd),z2(idd),'r.')
-    end
-  end
-
-% ======================================
-
-  return
-
-
-% test: see also inside_plasma_old.m for different different algorithm
-   
-%  filename= '/users/walker/NSTX/g107167.00223'; % looks like BAD current data
-%  read_gfile_nstx
-%  nargin=8;    
-%  inside= inside_plasma(psizr,rgefit,zgefit,rbbbs,zbbbs,nbbbs,psimag,psibnd,1,0);  
-%  clear
-  
-%  filename= '/u/leuer/efit/diiid/g110214.01740';
-%  read_gfile
-%  inside= inside_plasma(psizr,rgefit,zgefit,rbbbs,zbbbs,nbbbs,psimag,psibnd,1,0);  
-
-
-        
diff --git a/matlab/D3D/efit/make_mhdindat_from_tds.m b/matlab/D3D/efit/make_mhdindat_from_tds.m
deleted file mode 100644
index 737f069e..00000000
--- a/matlab/D3D/efit/make_mhdindat_from_tds.m
+++ /dev/null
@@ -1,211 +0,0 @@
-function make_mhdindat_from_tds(tok_data_struct,options)
-%  SYNTAX:  make_mhdindat_from_tds(tok_data_struct,options)
-%
-%  PURPOSE:  Creates EFUND input file mhdin.dat from Toksys tok_data_struct
-%
-%  INPUT:
-%     tok_data_struct
-%     options = structure
-%        fcid = Connections between fcoils (see cccirc in build_tokamak_system) [1:nc]
-%        use_vv = 1:Add VV elements as coils 0:Don't [0]
-%        vvid = VV element conenctions (see vvid in build_tokamamk_system) [1:nv]
-%
-%  OUTPUT: mhdin.dat file
-% 
-%  RESTRICTIONS:  
-
-%  WRITTEN BY:  Nick Eidietis 	ON 	2016-05-18
-%                 based upon Ander Welanders make_file_mhdin_dat4east
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-   if exist('options','var')
-      struct_to_ws(options);
-   end
-   struct_to_ws(tok_data_struct);
-   if ~exist('use_vv','var')
-      use_vv = 0;
-   end
-
-
-   bpnam=' ';
-   for j=1:size(bpnames,1)
-      bpnam = [bpnam '''' deblank(bpnames(j,:)) ''','];
-      if j/5==round(j/5), bpnam=[bpnam 10 32]; end
-   end
-   xmp2='  ';
-   for j=1:size(bpnames,1)
-      s = num2str(bpdata(2,j)); while length(s)<5, s=[s '0']; end
-      xmp2 = [xmp2  s ', '];
-      if j/6==round(j/6), xmp2=[xmp2 10 32 32]; end
-   end
-   ymp2=' ';
-   for j=1:size(bpnames,1)
-      s = num2str(bpdata(1,j));
-      if bpdata(1,j)==0, s='0.';end
-      if bpdata(1,j)>=0, s=[' ' s];end    
-      while length(s)<6, s=[s '0']; end
-      ymp2 = [ymp2  s ','];
-      if j/6==round(j/6), ymp2=[ymp2 10 32]; end
-   end
-   amp2='';
-   for j=1:size(bpnames,1)
-      s = [num2str(bpdata(3,j)) ','];
-      if bpdata(3,j)>=0, s=[' ' s];end    
-      if abs(bpdata(3,j))<10, s=[' ' s];end    
-      if abs(bpdata(3,j))<100, s=[' ' s];end    
-      while length(s)<7, s=[s ' ']; end
-      amp2 = [amp2  s];
-      if j/6==round(j/6), amp2=[amp2 10 32]; end
-   end
-   smp2='';
-   for j=1:size(bpnames,1)
-      s = [num2str(bpdata(4,j)) ','];
-      if bpdata(4,j)>=0, s=[' ' s];end    
-      if abs(bpdata(4,j))<10, s=[' ' s];end    
-      while length(s)<7, s=[s ' ']; end
-      smp2 = [smp2  s];
-      if j/6==round(j/6), smp2=[smp2 10]; end
-   end
-   patmp2=[num2str(length(tok_data_struct.bpnames)),'*0.0'];
-
-   flnam=' ';
-   for j=1:size(flnames,1)
-      flnam = [flnam '''' deblank(flnames(j,:)) ''','];
-      if j/5==round(j/5), flnam=[flnam 10 32]; end
-   end
-   rsi='  ';
-   for j=1:size(flnames,1)
-      s = num2str(fldata(2,j)); while length(s)<5, s=[s '0']; end
-      rsi = [rsi  s ', '];
-      if j/6==round(j/6), rsi=[rsi 10 32 32]; end
-   end
-   zsi=' ';
-   for j=1:size(flnames,1)
-      s = num2str(fldata(1,j));
-      if fldata(1,j)==0, s='0.';end
-      if fldata(1,j)>=0, s=[' ' s];end    
-      while length(s)<6, s=[s '0']; end
-      zsi = [zsi  s ','];
-      if j/6==round(j/6), zsi=[zsi 10 32]; end
-   end
-
-
-   fcdat = '';  
-   for ii=[1:size(fcdata,2)]
-      fcdat = strvcat(fcdat,sprintf('%-12.4f%-12.4f%-12.4f%-12.4f%-12.4f%-12.4f\n',fcdata([2 1 4 3 5 6],ii)));
-   end
-   if use_vv
-      for ii=[1:nv]
-         fcdat = strvcat(fcdat,sprintf('%-12.4f%-12.4f%-12.4f%-12.4f%-12.4f%-12.4f\n',vvdata([2 1 4 3 5 6],ii)));
-      end
-   end
-
-
-   % a holds the characters that go in the file
-   a =  [ ...
-      ' $IN3' 10 ...
-      ' RLEFT=',num2str(min(rg)),'     RRIGHT=',num2str(max(rg)) 10 ...
-      ' ZBOTTO=',num2str(min(zg)),'    ZTOP=',num2str(max(zg)), ...
-      ' NSMP2=25' 10 ...
-      ' IGRID=1 IFCOIL=1 IVESEL=0 ISLPFC=1 IECOIL=0 IACOIL=0' 10];
-
-   if ~exist('fcid','var')
-      fcid = [1:tok_data_struct.nc];
-   end
-   if ~use_vv
-      vvid = [];
-   end
-   if ~exist('vvid','var')
-      vvid = [1:tok_data_struct.nv];
-   end
-
-   [FCID, FCTURN, TURNFC] = make_fc_strings(tok_data_struct,fcid,vvid);
-
-   
-   a = [a, ... 
-      FCID ...
-      FCTURN ...
-      TURNFC ...       
-      ' LPNAME=' 10 ...
-      flnam ...
-      '' 10 ...
-      ' MPNAM2=' 10 ...
-      bpnam ...
-      '' 10 ...
-      ' XMP2=' 10 ...
-      xmp2 ...
-      '' 10 ...
-      ' YMP2=' 10 ...
-      ymp2 ...
-      '' 10 ...
-      ' RSI=' 10 ...
-      rsi ...
-      '' 10 ...
-      ' ZSI=' 10 ...
-      zsi ...
-      '' 10 ...
-      '' 10 ...
-      ' AMP2=' 10 ...
-      amp2 ...
-      '' 10 ...
-      ' SMP2= ' 10 ...
-      smp2 ...
-      '' 10 ...
-      [' PATMP2  =  ' patmp2 10] ...
-      '' 10 ...
-      '' 10 ...
-      ' $' 10 ...
-      ];
-
-
-   f=fopen('mhdin.dat','w');
-   fwrite(f,a);
-   fwrite(f,fcdat');
-   fclose(f);
-   disp('Wrote file mhdin.dat')
-end
-
-
-function [fcidStr, fcturnStr, turnfcStr] = make_fc_strings(tds,fcid,vvid)
-   allid  = [fcid max(fcid)+vvid];
-   allTurn = [tds.ccnturn' ones(size(vvid))];
-   %uniqueGroups = unique(abs(fcid));
-   uniqueGroups = unique(abs(allid));
-   nGroup = length(uniqueGroups);
-   nTurnGroup = zeros(1,nGroup);
-   for ii=1:nGroup
-      idxGroup = find(abs(allid) == uniqueGroups(ii));
-      nTurnGroup(ii) = sum(allTurn(idxGroup));
-   end
-   for ii=1:length(allid)
-      fcturn(ii) = sign(allid(ii))*allTurn(ii)/nTurnGroup(abs(allid(ii)));
-   end
-
-   fcidStr = ' FCID=';
-   for ii=allid(:)'
-      fcidStr = [fcidStr num2str(ii) '.,'];
-   end
-   fcidStr = [fcidStr 10];
-   
-   fcturnStr = ' FCTURN=';
-   for ii=1:length(fcturn)
-      if fcturn(ii) < 1
-         fcturnStr = [fcturnStr num2str(abs(fcturn(ii))) ','];
-      else
-         fcturnStr = [fcturnStr num2str(abs(fcturn(ii))) '.,'];
-      end
-   end
-   fcturnStr = [fcturnStr 10];
-
-   turnfcStr = ' TURNFC=';    
-   for ii=1:nGroup
-      if ismember(uniqueGroups(ii),fcid)
-         turnfcStr = [turnfcStr num2str(nTurnGroup(ii)) '.,'];
-      else
-         turnfcStr = [turnfcStr '1.,'];
-      end
-   end
-   turnfcStr = [turnfcStr 10];
-end
-
-
diff --git a/matlab/D3D/efit/plasma_current.m b/matlab/D3D/efit/plasma_current.m
deleted file mode 100644
index 4971c41a..00000000
--- a/matlab/D3D/efit/plasma_current.m
+++ /dev/null
@@ -1,200 +0,0 @@
-  function [pcur,jphi,cpasma]= plasma_current(psizr, pprime, ffprim,...
-                                              psimag,psibnd,...
-                                              rgefit,zgefit,...
-					      rbbbs,zbbbs,nbbbs,...
-					      iplot,dofast,cpasma)
-% Function generates plasma current (pcurrt) from flux (psizr)
-% 
-% SYNTAX:
-%  [pcur,jphi,cpasma]= plasma_current(psizr, pprime, ffprim,...
-%                                     psimag,psibnd,...
-%                                     rgefit,zgefit,...
-%				      rbbbs,zbbbs,nbbbs,...
-%				      iplot,dofast)
-%
-%  PURPOSE: Generate plasma current from flux and current profile information
-%           Input is same as read_gfile input or mds_eq => eq_ga_env
-%           pcur is almost identical to that obtained using iecurr=2 in EFIT
-%           (error <~ 0.2% and max near boundary)
-%
-%  INPUTS: [default] <optional>
-%
-%          psizr=   true flux on grid (Wb)
-%          pprime=  p' vector  (pprime from read_gfile) (nt/m^2)/(Vs/rad)
-%          ffprim=  ff' vector (ffprim in read_gfile)   (mT)^2/(Vs/rad)
-%          psimag=  Flux on axis (Wb) [max(max(psizr))]
-%          psibnd=  Flux on boundary (Wb)  [average of flux on boundary]
-%          rgefit=  Radius vector of grid (m)
-%          zgefit=  Z vector of grid (m)
-%          rbbbs=   Radius vector of boundary (m)
-%          zbbbs=   Z vector of boundary (m)
-%          nbbbs=   number of elements in rbbbs zbbbs [length(rbbbs]
-%          iplot=   2; % 1= plot boundary, 2= contour jphi; 3= clabel [0]
-%          dofast=  1; % increases algorithm speed at risk of including some
-%                   private flux in solution. Only extreme shapes like
-%                   crescents and beans are expected to need dofast=0.
-%                   Default is dofast=0 since speed is still very fast. [0]
-% 
-%         <cpasma>= Plasma Current (A)
-%
-%  OUTPUTS:
-%          pcur   = plasma current on nr,nz grid [A]
-%          jphi=    plasma current density on nr,nz grid [MA/m^2]
-%          cpasma=  plasma current = sum(sum(pcur))
-%
-%          Warning messages displayed if sum(sum(pcur)) and existing cpasma
-%          are widely different. cpasma then overwritten.
-%
-%  NOTE:    ALL UNITS ARE MKS (except jphi is MA/m^2)
-%  CAUTION: Overwrites pcur, jphi & cpasma if read_gfile read from gfile
-%
-%  RESTRICTIONS:
-%
-%  SEE ALSO:  inside_plasma
-
-%  WRITTEN BY:  Jim Leuer ON 6-3-03	
-%
-%  Routines Used: inside_plasma
-%
-%  MODIFICATION HISTORY: 
-%  jal30sep10: +cpasma normalization, spline fit; garea per efit
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  @(#)plasma_current.m	1.4 07/15/09
-
-% Default:
-% Note: cpasma is 12 argument
-
-  if nargin==11
-    dofast= 0;
-  elseif nargin==10
-    iplot=0;
-    dofast= 0;
-  elseif nargin==9
-    nbbb= length(rbbb);
-  elseif nargin<=8
-    disp('%ERROR plasma_current: Needs at least 9 arguments to work')
-    return
-  end
-  
-  if isempty(psimag), 
-     disp('% CAUTION: plasma_current: psimag is empty using max on grid')
-     psimag= max(max(psizr)),
-  end
-
-  if isempty(psibnd) % average on boundary
-    disp('% CAUTION: plasma_current: psibnd is empty using ave. on boundary')
-    temp = interp2(rgefit,zgefit,psizr,rbbbs,zbbbs);
-    idx = find(isnan(temp));
-    idx = setdiff(1:length(temp),idx);
-    temp = temp(idx);
-    psibnd= mean(temp);
-  end
-  if exist('iplot')~=1, iplot=0; end   % no plotting
-  if exist('dofast')~=1, dofast=0; end % 100% guaranteed mapping
-
-% ====================================================
-% Find Plasma Grid that is "INSIDE" plasma Boundary:
-
-  inside= inside_plasma(psizr,rgefit,zgefit,rbbbs,zbbbs,nbbbs, psimag,psibnd,...
-                        iplot,dofast);  
-
-% ==================================================================
-% Compute (see GA-A14490, pg8): Jphi= r*Pprime + F*Fprime/(amu0*r)
-
-  garea=   (rgefit(2)-rgefit(1))*(zgefit(2)-zgefit(1)); % EFIT area def
-  areaomu= garea/(4*pi*1e-7);
-  [nz,nr]= size(psizr);
-  jphi=    zeros(nz,nr);             % initialize to zero current
-  pcur=    jphi;                     % Plasma current on grid (initial 0)
-  rg=      ones(nz,1)*rgefit';       % R on grid (same size as psizr)
-  id=      find(inside);                   % work only on inside plasma points
-  if(isempty(id))	% handle badly converged EFIT
-     cpasma = 0;
-     return;
-  end
-  rr=      rg(id);                         % reduced set of R's Inside plasma
-  psi=     linspace(psimag,psibnd,length(pprime))'; % from center to edge
-  pp=      interp1(psi,pprime,psizr(id),'spline');  % Pprime
-  ffp=     interp1(psi,ffprim,psizr(id),'spline');  % F*Fprime
-  pcur(id)=  garea*rr.*pp + areaomu*ffp./rr;  % Toroidal current density (inside)
-  cpas= sum(pcur(id));
-  if exist('cpasma')==1 & ~isempty(cpasma)
-    if abs((cpas-cpasma)/cpasma) > 0.01
-     disp(['%CAUTION: plasma_current sum(pcur)-cpasma>1.0% want,got: ',...
-          num2str(cpasma),' ',num2str(cpas)])
-     disp(['%         Re-Normalizing current distribution to cpasma: ', ...
-          num2str(cpasma)])
-    end
-     pcur(id)= pcur(id)*cpasma/cpas;
-     cpas= cpasma;
-  end
-
-  jphi(id)=  pcur(id)/(garea*1e+6);           % Convert to MA/m^2 (daves Convention)
-  cpasma= cpas; % set plasma current to sum of grid current
-
-  if iplot>=2
-    hold on
-    [c,h]= contour(rgefit,zgefit,jphi);
-    if iplot>=3
-      clabel(c,h)
-    end
-    hold on
-    plot(rbbbs(1:nbbbs),zbbbs(1:nbbbs),'k');
-    hold on
-    axis image
-    xlabel('R [m]')
-    ylabel('Z [m]')
-    title([' Plasma Current Density [MA/m^2], Ip= ',...
-           num2str(1e-6*cpasma), ' MA']);  
-  end
-  
-  return
-
-% =============================================================================
-% Testing (FOR MAIN TESTING SEE Leuer's efit area: test_plasma_current)
-
-%  filename= '/u/leuer/efit/diiid/g110214.01740'; % DIIID file with: iecurr=2
-  filename= '/u/leuer/efit/diiid/shot113697/g113697.03000'; %
-  read_gfile
-  cpasma0= cpasma;
-  if exist('pcurrt')
-    pcurrt0= pcurrt; % save gfile currents for later error analysis
-  end
-
-  iplot=3;
-  dofast=0;
-  
-% do plasma_current
-
-  figure(3)
-  clf
-  iplot=3;
-  [pcur,jphi,cpasma]= plasma_current(psizr, pprime, ffprim,...
-                                     psimag,psibnd,...
-                                     rgefit,zgefit,...
-				     rbbbs,zbbbs,nbbbs,...
-				     iplot,dofast);
-% do some checks to see error
- if exist('pcurrt0')==1
-  figure(7)
-  clf
-  colormap('default');
-  cmap= colormap;
-  cmap= [cmap(1:end-1,:);[1 1 1]];
-  colormap(cmap);
-  err1= zeros(size(pcurrt0));
-  id= find(pcurrt0~=0);
-  err1(id)= (pcur(id)-pcurrt0(id))./pcurrt0(id);  
-  contourf(rgefit,zgefit,100*err1)
-  hold on
-  plot(rbbbs(1:nbbbs),zbbbs(1:nbbbs),'k');
-  hold on
-  axis image  
-  title(['%Error= 100*(pcur-pcurrt0)/pcurrt0, Max value= ',...
-         num2str(100*max(max(abs(err1)))),' %'])
-  colorbar('vertical')
-  
-% Results: Max error for 98549.04000: 0.11% toward edge Most error <.04%
- end
-
diff --git a/matlab/D3D/efit/read_mhdin.m b/matlab/D3D/efit/read_mhdin.m
deleted file mode 100644
index 2096cbd0..00000000
--- a/matlab/D3D/efit/read_mhdin.m
+++ /dev/null
@@ -1,392 +0,0 @@
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  USAGE:  >>read_mhdin
-%
-%  PURPOSE: reads efit file mhdin.dat. All variables are added in UPPER CASE
-%
-%  INPUTS: [default]
-%     filename = ['mhdin.dat']; % EFIT mhdin.dat file name Can contain directory
-%
-%   Note: below dimensions are needed only if geometry is read below namelist
-%         defaults for D3D   
-%
-%     nfcoil = [18]; % # of F-coils; must be specified for non-D3D (Opt.)
-%                        defaults to D3D values of nfcoil=18
-%     necoil = [122];% # number of E-coils elements specify for non-D3D (Opt.)
-%                        defaults to D3D value of nesum=6
-%     nsilop = [41]; % # flux loops, needed if not read in namelist (opt.)
-%     nvesel = [24]; % # vessels, needed if not read in namelist (opt.)
-%
-%  OUTPUTS:
-%    all name list items: IGRID, RLEFT, RRIGHT, ... FCID, FCTURN, ...
-%    PF coil geometry if nfcoil>0,
-%    E-coil geometry if nesum>0
-%    ireadok = flag to report good read of gfile (0=bad, 1=good)
-% 
-%  CAUTION: Namelist is read with to_upper=+1 which makes all variables UPPER
-%           CASE.
-%           New read_namelist in /thor/leuer/matlab/util/read_namelist.m 
-%           allows change of case. We want to read and make all variables UC
-%
-%  To change UPPER CASE to lower case use:
-%  mhdin_list= mk_uc_lc_var; % makes all lower case variables (nothing to UPCASE)
-%  mhdin_list= mk_uc_lc_var('-remove_upper','*'); % remove upper case
-
-% Generated by Jim Leuer 03/25/2004     
-% taken from frotran of efund.for 
-% updated to all UPPER CASE 6/2/2004
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Prelims:
-
-% if exist('nfcoil')~=1,   nfcoil=18,  end  %default to D3D values...
-% if exist('necoil')~=1,   necoil=122, end
-% if exist('nsilop')~=1,   nsilop=41,  end
-% if exist('nvesel')~=1,   nvesel=24,  end
-
- to_upper= +1; % this is now default read into all UPPER CASE
-
-% -------------------------- Open File: filename
-
-   if exist('filename')~=1
-      filename= 'mhdin.dat'
-   end
-   
-   if ~isstr(filename)
-      disp([' %ERROR Filename must be a string ',filename]);
-      ireadok= 0;
-      return
-   end
-
-   if exist(filename)~=2
-      disp([' %ERROR Filename doesnt exist ',filename]);
-      ireadok= 0;
-      return
-   end
-
-   fid= fopen(filename, 'r');
-
-   if fid == (-1)
-      disp([' %ERROR read_mhdin: Couldn''t open file ',filename]);
-      ireadok= 0;
-      return
-   end
-
-   ireadok= 1;
-   fclose(fid);
- 
-% =============================================================
-% Start 
- read_namelist; % new version works for most namelist types
-
-% NOT USED SINCE TOUPPER in read_namelist CONTROLS CASE
-% Convert all upper case to lower case
-%  disp('% NOTE: We are making lower case variables out of ALL UPPER CASE')
-%  disp('% NOTE: We are REMOVING ALL UPPER CASE VARIABLES')
-  
-%  mhdin_list= mk_uc_lc_var; % makes all lower case variables (nothing to UPCASE)
-%  mhdin_list= mk_uc_lc_var('-remove_upper','*'); % remove upper case
-
-%
-% =============================================================
-% Now start reading data at end of namelist
- 
-%      if (rf(1).lt.0.0)
-%     .read (nin,10000) (rf(i),zf(i),wf(i),hf(i),af(i),af2(i),
-%     .                  i=1,nfcoil)
-% 10000 format (6e12.6)
-
-
-% open filename and find end of namelist
-  fid= fopen(filename, 'r');
-
-
-% find start of namelist
-   nlcnt = 0;
-   line1 = fgets(fid);
-   totstr = '';
-   if(~isempty(findstr(line1,'$')) | ~isempty(findstr(line1,'&')))
-%      fprintf('Begin processing %s\n',line1)
-      nlcnt = nlcnt+1;
-      temp = deblank(line1);
-      if(size(nlnames,2)~=0)
-         if(length(temp)>size(nlnames,2))
-            bb = blanks(length(temp)-size(nlnames,2));
-            nlnames = [nlnames bb*ones(size(nlnames,1))];
-         end
-      end
-      nlnames(nlcnt,1:length(temp)) = temp;
-      while line1~=-1
-         line1 = fgets(fid);
-
-% find end of namelist
-         idx = union(findstr(line1,'$'),findstr(line1,'&'));
-         if(~isempty(idx))
-           break
-         end;
-         if(length(line1)>1 & strcmp(line1(2),'/'))
-           break
-         end;
-      end
-   end
-
-  if isempty(findstr(upper(nlnames(1,:)),'IN3'))
-    disp('%WARNING: couldnt find namelist IN3 in the input file')
-  end 
-  
-% ===========================
-% Read F-coil
-% ===========================
-% next lines should be F-coil
-%      if (rf(1).lt.0.0)
-%     .read (nin,10000) (rf(i),zf(i),wf(i),hf(i),af(i),af2(i),
-%     .                  i=1,nfcoil)
-% 10000 format (6e12.6)
-
-   disp('% Looking after namelist for other data: F-coil, Flux, B-probe, E, VV')
-
-% see if these were written in name list and make all dummy variables not read
-  if exist('RF')==1 & exist('HF')==1
-    if exist('WF')~=1
-       WF= zeros(size(RF));
-    end
-    if exist('HF')~=1
-       HF= zeros(size(RF));
-    end
-    if exist('AF')~=1
-       AF= zeros(size(RF));
-    end
-    if exist('AF2')~=1
-       AF2= zeros(size(RF));
-    end
-  end
-      
-  if exist('RF')~=1 RF= -1; end
-  if RF(1) < 0.0
-   disp(['% reading ',int2str(nfcoil),' PF coils: rf,zf,wf,hf,af,af2'])
-   clear RF ZF
-   RF=  zeros(nfcoil,1);
-   ZF=  RF;
-   HF=  RF;
-   AF=  RF;
-   AF2= RF;
-   for ii=1:nfcoil
-      str= fgetl(fid);
-      dum= sscanf(str,'%f');
-      len= length(dum);
-      RF(ii,1)= dum(1);
-      ZF(ii,1)= dum(2);
-      if len>=3 WF(ii,1)=  dum(3); end
-      if len>=4 HF(ii,1)=  dum(4); end
-      if len>=5 AF(ii,1)=  dum(5); end
-      if len>=6 AF2(ii,1)= dum(6); end
-   end % do      
-   disp('F-COIL RF,ZF,WF,HF,AF,AF2')
-   disp([RF,ZF,WF,HF,AF,AF2])
-  end
-
-% ===========================
-% Read Flux Loops
-% ===========================
-%      if (rsi(1).lt.0.0)
-%     .read (nin,10000) (rsi(i),zsi(i),wsi(i),hsi(i),as(i),as2(i),
-%     .              i=1,nsilop)
-
-% see if UC was read in namelist
-  if exist('RSI')==1 & exist('ZSI')==1
-    if exist('WSI')~=1
-       WSI= zeros(size(RSI));
-    end
-    if exist('HSI')~=1
-       HSI= zeros(size(RSI));
-    end
-    if exist('AS')~=1
-       AS= zeros(size(RSI));
-    end
-    if exist('AS2')~=1
-       AS2= zeros(size(RSI));
-    end
-    if exist('LPNAME')~=1
-       LPNAME= int2str((1:length(RSI))');
-    end
-  end
-      
-  if exist('RSI')~=1 RSI(1)=-1; end
-  if RSI(1) < 0.0
-   disp(['% reading ',int2str(nsilop),' flux loops: rsi,zsi,wsi,hsi,as,as2'])
-   clear RSI ZSI
-   RSI=  zeros(nsilop,1);
-   ZSI=  RSI;
-   WSI=  RSI;
-   HSI=  RSI;
-   AS=   RSI;
-   AS2=  RSI;
-   for ii=1:nsilop
-      str= fgetl(fid);
-      dum= sscanf(str,'%f');
-      len= length(dum);
-      RSI(ii,1)= dum(1);
-      ZSI(ii,1)= dum(2);
-      if len>=3 WSI(ii,1)=  dum(3); end
-      if len>=4 HSI(ii,1)=  dum(4); end
-      if len>=5 AS(ii,1)=   dum(5); end
-      if len>=6 AS2(ii,1)=  dum(6); end
-   end % do      
-   disp('flux loops: RSI,ZSI,WSI,HSI,AS,AS2')
-   disp([RSI,ZSI,WSI,HSI,AS,AS2])
-  end
-
-
-% ===========================
-% Read Ecoil & Vessel
-% ===========================
-%      if ((iecoil.gt.0).or.(ivesel.gt.0)) then
-%        if (re(1).lt.0.0)
-%       .read (nin,10020) (re(i),ze(i),we(i),he(i),ecid(i),i=1,necoil)
-
-%       if (ivesel.gt.0.and.rvs(1).lt.0.0) then
-%        if (wvs(1).lt.0.0) then
-%          read (nin,10000) (rvs(i),zvs(i),wvs(i),hvs(i),avs(i),avs2(i),
-%        .              i=1,nvesel)
-%        else
-%          do i=1,nvesel
-%           read (nin,*) rvs(i),zvs(i)
-%          enddo
-%        endif
-%       endif
-%      endif
-
-  if exist('IECOIL')~=1 IECOIL= 0; end
-
-  if IECOIL>=1
-     if exist('RE')~=1 RE= -1; end % must read in ecoil
-     if RE(1) < 0
-       disp(['% Reading ',int2str(necoil),' Ecoil: re ze we he ecid'])
-       clear RE ZE
-       WE= zeros(necoil,1);
-       HE= WE;
-       ECID= (1:length(necoil))';
-       for ii=1:necoil
-         str= fgetl(fid);
-         dum= sscanf(str,'%f');
-	 len= length(dum);
-         RE(ii,1)= dum(1);
-         ZE(ii,1)= dum(2);
-         if len>=3 WE(ii,1)=    dum(3); end
-         if len>=4 HE(ii,1)=    dum(4); end
-         if len>=5 ECID(ii,1)=  dum(5); end
-      end % end do
-      disp('Ecoil: RE, ZE, WE, HE, ECID')
-      disp([RE, ZE, WE, HE, ECID])
-    end      
-  end
-
-  if exist('IVESEL')~=1 IVESEL= 0; end
-
-  if IVESEL>=1
-     if exist('RVS')~=1
-        RVS= -1; % must read in vessel
-	WVS= -1; % parallogram 
-     end
-     if RVS(1) < 0
-       disp(['% Reading ',int2str(nvesel),' Vessels: rvs zvs wvs hvs avs avs2'])
-       clear RVS ZVS
-       WVS=  zeros(nvesel,1);
-       HVS=  WVS;
-       AVS=  WVS;
-       AVS2= WVS;
-       for ii=1:nvesel
-         str= fgetl(fid);
-         dum= sscanf(str,'%f');
-         len= length(dum);
-         RVS(ii,1)= dum(1);
-         ZVS(ii,1)= dum(2);
-         if len>=3 WVS(ii,1)=  dum(3); end
-         if len>=4 HVS(ii,1)=  dum(4); end
-         if len>=5 AVS(ii,1)=  dum(5); end
-         if len>=6 AVS2(ii,1)= dum(6); end
-      end % end do
-      disp('Vessels: RVS,ZVS,WVS,HVS,AVS,AVS2')
-      disp([RVS,ZVS,WVS,HVS,AVS,AVS2])
-    end      
-  end
-
-% ========================================================
-% Do Some ERROR Checking
-  if exist('RSI')~=1
-    disp('% ERROR: No Flux loops in mhdin.dat file')
-  end 
-  if exist('XMP2')~=1
-    disp('% ERROR: No Bprobes in mhdin.dat file')
-  end 
-  if exist('RF')~=1
-    disp('% ERROR: No PF Coils in mhdin.dat file')
-  end 
-
-% ========================================================   
-% Do some Plotting:
-  if exist('RF') & exist('AF2')
-    plot_box(RF,ZF,WF,HF,'r',AF,AF2)
-    hold on
-  end
-  if exist('RE') & exist('HE')
-    plot_box(RE,ZE,WE,HE,'k')
-    hold on
-  end
-  if exist('RVS') & exist('AVS')
-    plot_box(RVS,ZVS,WVS,HVS,'r',AVS,AVS2)
-    hold on
-  end
-  if exist('RSI') & exist('ZSI')
-    plot(RSI,ZSI,'xb')
-    hold on
-  end
-  if exist('XMP2') & exist('YMP2')
-    plot(XMP2,YMP2,'og')
-    hold on
-  end
-  if exist('RLEFT') & exist('ZBOTTO')
-    plot([RLEFT RRIGHT RRIGHT RLEFT RLEFT],[ZBOTTO ZBOTTO ZTOP ZTOP ZBOTTO],'k')
-    hold on
-  end
-  axis image
-  grid
-  title([fix_undscr(filename)])
-  ylabel('R')
-  xlabel('Z')
-  
- return
-% ========================================================
-
-% ========================================================
-% NOW generate some zero arrays if they dont exist      
- if exist('RSI')~=1
-  if exist('HSI')~=1 HSI= zeros(size(RSI)); end
-  if exist('WSI')~=1 WSI= zeros(size(RSI)); end
-  if exist('AS')~=1  AS= zeros(size(RSI));  end
-  if exist('AS2')~=1 AS2= zeros(size(RSI)); end
-  if exist('HSI')~=1 HSI= zeros(size(RSI)); end
- end
- 
- if exist('XMP2')~=1 XMP2= zeros(nbprobe,1); end
-  if exist('AMP2')~=1 AMP2= zeros(size(XMP2)); end
-  if exist('SMP2')~=1 SMP2= zeros(size(XMP2)); end
-  if exist('MPNAM2')~=1 MPNAM2= int2str((1:length(XMP2))'); end
-  if exist('PATMP2')~=1 PATMP2= zeros(size(XMP2)); end
-  if exist('MPNAM2')~=1 MPNAM2= int2str((1:length(XMP2))'); end
-
-% Probably will need to add more default arrays here
-    
- return
- 
-% =====================================================================
-% testing:
-% tested for east ok
-% Not tested for any other mhdin.dat but should be reasonable   
-  filename='/u/leuer/efit/east/green/run/ef20040325.est'
-  nfcoil=14
-  read_mhdin
-
-
-
-
- 
diff --git a/matlab/D3D/efit/run_efit.m b/matlab/D3D/efit/run_efit.m
deleted file mode 100644
index 47ad68b8..00000000
--- a/matlab/D3D/efit/run_efit.m
+++ /dev/null
@@ -1,93 +0,0 @@
-
-   function run_efit(shot,tims,dtms,nslices,snap,snapidx,efitver,efitdir)
-
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  SYNTAX:  run_efit(shot,tims,dtms,nslices,snap,snapidx,efitver,efitdir)
-%
-%  PURPOSE: 
-%	Run EFIT from inside Matlab: uses basic input format just as in
-%	standard invokation from command line (so will perform many slices
-%	as usual with starting time, delta time, nslices).
-%
-%  INPUTS:
-%	shot = shot number
-%	tims = starting time (in ms) at which to calculate EFIT
-%	dtms = delta time (in ms) between each slice
-%	nslices = # of slices to calculate
-%	snap = (optional) string specifying:
-%		if snapidx=2: data file to read input data from
-%		if snapidx=3: use snap file in default directory (or in /link)
-%		if snapidx=7: snap file extension (eg 'jta_t') 
-%	snapidx = (optional) EFIT input mode (2=input file, 3=snap file)
-%		Default=3 (used if nargin<6). Note if snapidx=2, the shot,
-%		tims,dtms,nslices inputs are ignored, and snap specifies the 
-%		input file to use.
-%	efitver = (optional) string specifying EFIT version (eg 'efitd65yd' or 'efitd6565d')
-%	efitdir = (optional) string specifying directory in which EFIT version
-%		is to be found (default = /link/efit/ or /d/linux/efit/)
-%
-%  OUTPUTS:
-%	None
-%
-%  RESTRICTIONS:
-%
-%  METHOD:  
-%	Uses Matlab unix() command to execute command string built in 
-%	this function for desired inputs. 
-
-%  WRITTEN BY:  Dave Humphreys 	ON	11/1/00
-%
-%  VERSION @(#)run_efit.m	1.1 08/27/10
-%
-%  MODIFICATION HISTORY: ASW 4/30/04 runs on either thor or uscws9 transparently
-%                        ASW 8/27/10 changed from int2str to num2str 
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Define defaults:
-   if nargin<5
-      snap='';       %no default: use snap file in default dir...
-      snapidx = 3;   %select snap option "3" in efit call (use file in def dir)
-   end   
-   if nargin==5
-      snapidx = 7;   %select snap option "7" in efit call (use snap file ext)
-   end   
-   if nargin<7, efitver='efitd65yd'; end   %default version (recommend efitd6565d for 65x65 grid)
-   if nargin<8
-      efitdir='/link/efit/'; % default efit directory for hp
-      % Check to see if we are on Thor (a linux machine)
-      thordisk = getenv('THORDISK');
-      if length(thordisk)==5
-        if thordisk=='/home'
-	   efitdir='/d/linux/efit/';
-	end
-      end
-   end
-
-% Prelims:
-   mu0 = 0.4*pi;
-
-% Derived Values:
-
-% Build command string:
-  if snapidx==3   %use snap file input, use snap file "efit_snap.dat"
-     efitcom = ['echo ',' "','3\n', ...
-        num2str(shot),',',num2str(tims),',',num2str(dtms),',', ...
-          num2str(nslices),'" ','| ',efitdir,efitver];
-  end
-
-  if snapidx==7  %use snap file input, use snap file with extension snap
-     efitcom = ['echo ',' "','7\n', ...
-	snap,'\n', ...
-        num2str(shot),',',num2str(tims),',',num2str(dtms),',', ...
-          num2str(nslices),'" ','| ',efitdir,efitver];
-  end
-
-  if snapidx==2  %use input file input, input file specified by snap variable
-     efitcom = ['echo ',' "','2\n', ...
-          '1\n',snap,'\n','" ','| ',efitdir,efitver];
-  end
-
-% Execute EFIT:
-  unix(efitcom);
-
-
diff --git a/matlab/D3D/efit/shot_from_gfile.m b/matlab/D3D/efit/shot_from_gfile.m
deleted file mode 100644
index 24bf7df0..00000000
--- a/matlab/D3D/efit/shot_from_gfile.m
+++ /dev/null
@@ -1,125 +0,0 @@
-  function  [shot,tms,dr,server] = shot_from_gfile(gfile)
- %
-%  SYNTAX:
-%  [shot,tms,dr]         = shot_from_gfile(gfile) % pointer to file
-%  [shot,tms,tree,server] = shot_from_gfile(gfile) % pointer to MDS+ tree
-%
-%  PURPOSE: look at string in gfile name and extract shot, tms, etc
-%
-%  INPUT: <default>
-%    gfile   = string contining gfile name or "dot" pointer to MDS tree ex:
-%              '/u/leuer/efit/d3d/shot131498/g131498.02000' % file pointer
-%              'D3D.EFITRT1.g131498.02000'                  % MDS+ pointer
-%
-%  OUTPUT: <default>
-%    shot  = shot number
-%    tms   = shot time [ms]
-%    dr    = directory if pointer to gfile
-%    tree  = EFIT Tree if pointer to MDS tree <'EFIT01'>
-%    server= MDS server for efit data <'D3D'>
-
-% NOTE:
-%           FULL Pointer to efit trees is: '\D3D::TOP.MHD.EFIT'
- 
-%  WRITTEN BY:  Jim Leuer    ON      17Mar2010 
-% ==========================================================================
-
-  if nargin==0
-     disp('% shot_from_gfile needs at least a "gfile" argument')
-     help shot_from_gfile
-     return
-  end
-
-  id= strfind(gfile,'.'); % "dot" Format: SERVER.TREE.SHOTNUM.TIME	
-
-  if isempty(id)
-     disp(['%ERROR: shot_from_gfile: minimum form "shot.tms" ',gfile])
-     shot=[]; tms=[]; dr=[]; server=[];
-
-  else % isempty(id)
-
-     [dr, nam, ext]= parse_filename(gfile);
-
-% ---------------------
-% 1) Time in ms
-     id1= strfind(ext,'.'); 
-     if length(ext)~= 6 | isempty(id1)
-       disp([' %ERROR shot_from_gfile file extention needs format ".02600" ',ext])
-     end
-     tms= str2num(ext(2:end));
-     if tms<0 | tms>99999
-        disp([' %ERROR shot_from_gfile:TIME extention error ',ext]);
-        tms=[];
-     end
-
-% ---------------------
-% 2) Shot Number
-     sshot= nam(end-5:end); % string of shotnum last 6 digits of nam
-     shot= sscanf(sshot,'%d'); 
-     if shot<0 | shot>999999
-        disp([' %ERROR shot_from_gfile:SHOT number error ',sshot]);
-        shot=[];
-     end
-
-     if length(id)<=1 % gfile points to file directory
-
-% ---------------------
-% 3a) Directory
-       server=[];
-       if exist(gfile) ~= 2
-          disp(['%WARNING: shot_from_gfile: gfile doesnt exist ',gfile])
-       end
-
-     else % if length(id)<=1
-
-% ---------------------
-% 3b) tree = optional <EFIT01>
-       if length(id)<=2 id0= 0; else id0= id(end-2); end
-       idd= id0+1:id(end-1)-1;
-       if ~isempty(idd)
-         tree= gfile(idd); % this is TREE
-       else
-          tree= 'EFIT01';
-          disp([' % NOTE shot_from_gfile:is setting TREE to ',tree]);
-       end 
-       dr= tree;  
-
-% ---------------------
-%  4)  server = optional <d3d>
-       if length(id)<=2
-         server= 'D3D';
-       else
-         if length(id)<=3 id0= 0; else id0= id(end-3); end
-         server= gfile(id0+1:id(end-2)-1);
-       end
-% ----------------------
-% Could check HERE to see if tree exists in MDS+ 
-% Can do for d3d using get_mdsefit_nms
-%      fln=[server '.' tree '.' int2str(shot) '.' stms];
-      if strmatch(upper(server),'D3D') & ~isempty(shot) & ...
-          exist('get_mdsefit_nms')==2
-         [efit_nms] = get_mdsefit_nms(shot);
-	 if isempty(strmatch(upper(tree),efit_nms))
-	   disp([' % CAUTION shot_from_gfile cant find D3D tree in mds+ ' tree])
-	   efit_nms
-	 end
-      end
-     end % if length(id)<=1
-
-  end % isempty(id)
- 
-  return
-% =========================================================
-% testing
-  gfile = '/u/leuer/efit/d3d/shot131498/g131498.02600'
-  gfile = '.g123216.03000'
-  gfile = '.D3D.EFITRT1.131498.02600'
-  gfile = '.D3D.dum.131498.02600'
-  gfile = '131498.02600'
-  gfile = '.xxx.EFITRT1.131498.02600'
-
-     [dr, nam, ext]= parse_filename(gfile)
-
-   [shot,tms,dr] = shot_from_gfile(gfile) % pointer to file
-   [shot,tms,tree,server] = shot_from_gfile(gfile) % pointer to file
-
diff --git a/matlab/D3D/efit/std_efit_units.m b/matlab/D3D/efit/std_efit_units.m
deleted file mode 100644
index 784f1ce8..00000000
--- a/matlab/D3D/efit/std_efit_units.m
+++ /dev/null
@@ -1,1238 +0,0 @@
-function gfile_data = std_efit_units(gdata,tokamak,options)
- %
-%  SYNTAX:  gfile_data = std_efit_units(gdata,tokamak)
-%
-%  PURPOSE:  Do device-dependent conversions of eqdsk data to a common
-%	          set of units and conventions.
-%
-%  INPUT:
-%	   gdata = structure containing g eqdsk data
-%	   tokamak = name of device
-%	   options = parameters needed to customize logic for a particular device
-%
-%  OUTPUT:
-%	   gfile_data = structure containing g eqdsk data with standard units (i.e., MA-turns)
- 
-%  RESTRICTIONS:
-%
-%  METHOD:  
-%
-%  WRITTEN BY:  Mike Walker 	ON 	8/25/11
-%	(extracted from read_gfile_tok.m)
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  @(#)std_efit_units.m	1.16 07/12/12
-
-  gfile_data = gdata;
-  if(nargin>2)
-     struct_to_ws(options);
-  end
-  if(nargin<3 | ~isfield(options,'old_efit'))
-     old_efit = 0;
-  end
-
-  switch upper(tokamak)
-
-% ===========================================================================
-  case {'DIII-D','D3D','DIIID'}
-% ===========================================================================
-    if(~exist('nesum','var'))
-       nesum = 6; 
-    end
-
-% include d3d build parameters (see build area => must be same)
-    gfile_data.fcturn = ones(1,18);
-    gfile_data.turnfc = [58 58 58 58 58 55 55 58 55 58 58 58 58 58 55 55 58 55];
-    gfile_data.fcid = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18];
-%   NOTE: EFIT IS CONSTRUCTED with ecid having 1,2,3,4,5,6 numbers. Even are 1's
-%         odds hook to 2
-    gfile_data.ecid = [ ...			% must be same as ecdata(5,:)
-			1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 ...
-			1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 ...
-			1 2 2 1 1 2 2 1 1 1 1 1 2 2 2 2 2 2 2 1 ...
-			1 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 ...
-			2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 ...
-			2 2 1 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 1 1 ...
-			2 2];
-    gfile_data.ecturn = ones(122,1);	% required if ecid is not empty
-    gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-
-% Construct E-coil Number of turns to make output MA-turns:
-    dum= min(2,nesum); % if nesum=1 then use ONLY 1 ECOIL current
-
-  if ~isempty(gdata.brsp) & ~isempty(gdata.ecurrt)
-% Construct E-coil Number of turns to make output MA-turns:
-    dum= min(2,nesum); % if nesum=1 then use ONLY 1 ECOIL current
-%  find reducted ecoil set data 
-      nee = length(unique(gfile_data.ecid));
-      clear neturn
-      for ii=1:nee
-         idx = find(gfile_data.ecid==ii);
-         neturn(ii,1) = sum(gfile_data.ecturn(idx));
-      end
-
- %cc-vector with 2 e-coil segments (MA-t):
-    cc2 = [gdata.ecurrt(1:dum).*neturn(1:dum);gdata.brsp]*1.e-6;
-
-% CAUTION: we are not using the 6segment e-coil anymore so this is crippled
-%cc-vector with all e-coil segs(2 or 6) (MA-t):
-% 6 ecoils: ECOILA    ECOILB    E567UP    E567DN    E89DN     E89UP
-% (When only 2 ecoils, ECOILA = E567UP = E89UP, ECOILB = E567DN = E89DN.)
-%    cc = [gdata.ecurrt;gdata.brsp]*1.e-6;
-    cc= cc2;
-
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc2;
- 
-    gfile_data.gdef.cc = 'E/F coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'E/F coil currents in MA-turns (for 2-segment E-coil). CAUTION: cc2 has min(2,nesum) E-coil elements (could be 1 vs std: 2)';
-  end
-
-  if(isfield(gdata,'gtime') | isfield(gdata,'time'))
-     if(~isfield(gdata,'gtime') & isfield(gdata,'time'))
-        gdata.gtime = gdata.time;
-     end
-     gfile_data.time=gdata.gtime*1e-3;
-     gfile_data.tms= gdata.gtime;
-  end
-
-% ===========================================================================
-  case {'EAST'}
-% ===========================================================================
-
-% Construct coil current vector:
-    ncadd=2; 	% fix cc so it has extra control coils
-    ncadd=0; 	% fix cc so it has extra control coils
- if ~isempty(gdata.brsp)
-    cc = [gdata.brsp*1e-6;zeros(ncadd,1)];
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc;
-    gfile_data.gdef.cc = 'PF coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
- end
-%    gfile_data.fcturn = [1 1 1 0.17741935 0.82258065 1 1 ...
-%                         1 1 1 0.17741935 0.82258065 1 1]';
-    gfile_data.fcturn = [1 1 1 44/(44+204) 204/(44+204) 1 1 ...
-                         1 1 1 44/(44+204) 204/(44+204) 1 1 1/2 -1/2]';
-    gfile_data.turnfc = [140 140 140 44 204 60 32 140 140 140 44 204 60 32 2 2]';
-    gfile_data.fcid = [1 2 3 4 4 5 6 7 8 9 10 10 11 12 13 13];
-    gfile_data.ecid = [];
-
-% EFIT order of coils is not the same as toksys order:
-    gfile_data.idx_efit_to_tok = [1 8 2 9 3 10 4 11 5 12 6 13 7 14 15 16];
-
-  if(isfield(gdata,'gtime') | isfield(gdata,'time'))
-     if(~isfield(gdata,'gtime') & isfield(gdata,'time'))
-        gdata.gtime = gdata.time;
-     end
-     gfile_data.time = gdata.gtime;
-     gfile_data.tms = gdata.gtime*1e+3;
-  end
-
-% ===========================================================================
-  case {'KSTAR'}
-% ===========================================================================
-
-% select case based on gfile header ecase date which is from EFITD fortran
-    ecase= gdata.ecase;
-    icase = 0;
-    if ~isempty(findstr('03/16/2004',ecase))
-      icase = 0;		% Leuer's Original KSTAR efit's
-    elseif ~isempty(findstr('01/23/2002',ecase)) % this is SABBAGH EFIT
-      dum= sscanf(ecase(27:38),'%f');
-      if ~isempty(dum)
-        shot= dum(1);
-        if length(dum)>=2
-          time= dum(2);
-        end
-        if shot<=3000 % ? guess where is shot transition from 2009 to 2010?
-          icase = 1;		% Sabbagh efit 2008/2009
-          nfcoil= 14;
-          nves=    56;
-          nesum=    1;
-        else
-          icase = 3;		% Sabbagh efit 2010
-          nfcoil= 14;
-          nves=    60;
-          nesum=    1;
-        end % if shot
-      end % if ~isempty(dum)
-    elseif (gdata.nh==33 & gdata.nw==33 & length(gdata.brsp)==32) % rtEFIT v7b (2011)
-      icase = 5;
-      nfcoil = 18;
-      nves = 70; % Like sabbagh, vv is listed as Fcoil
-      nesum = 1;
-   elseif  (gdata.nh==33 & gdata.nw==33 & length(gdata.brsp)==42) % rtEFIT v7d2 (2012 active version w/ more passive els)
-      icase= 6; 
-      nfcoil = 18;
-      nves = 180;
-   elseif (gdata.nh==33 & gdata.nw==33 & length(gdata.brsp)==37) % rtefit_v7e (2012 active version, series coils and slightly shifted divertor indices)
-      icase = 7;
-      nfcoil = 13;
-      nves = 180;
-    end
-      
-% =============
-    switch icase
-% =============
-       case 0	% Original Leuer EFIT
-         ncadd=4; 	% fix cc so it has extra control coils
-         if ~isempty(gdata.brsp)
-           cc = [gdata.brsp*1e-6;zeros(ncadd,1)];
-           cc2= cc;
-           gfile_data.cc  = cc;
-           gfile_data.cc2 = cc2;
-           gfile_data.gdef.cc = 'PF coil currents in MA-turns ';
-           gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-         end
-         gfile_data.fcturn = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
-         gfile_data.turnfc = [180 144 72 108 208 128 72 180 144 72 108 208 128 72 6 4 6 4];
-         gfile_data.fcid = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18];
-         gfile_data.ecid = [];
-
-
-% =============
-       case 1	% Sabbagh efit 2009 => should use tok_sys.config_name= sab09
-%       %  PF Order is: % f1u:7u,7l,6l,5l...1l, must add 4 zero current IC's IC1U..
-         ncadd=4; 	% add in extra ic coils with zero current
-         gfile_data.fcid=   1:(nfcoil+4); % add in 4 IC's	    
-         gfile_data.turnfc= [180 144 72 108 208 128 72 72 128 208 108 72 144 180 6 4 6 4];
-         gfile_data.fcturn=  ones(1,nfcoil+4);
-
-       % VV has 56elements broken into 6 cur groups. We expand 6 actual currents to 56 elements	    
-          %  load /home/leuer/tokamaks/kstar/make/sab/vvid.mat
-          %  disp(int2str(vvid'))
-	  %  load /home/leuer/tokamaks/kstar/make/sab/vvfrac.mat
-          vvid= [...
-             1  1  2  2  2  2  2  2  3  3  3  3  3  4  4  5  5  5  5  5  6  6  6  6  6  6  1  1 ...
-             1  1  2  2  2  2  2  2  3  3  3  3  3  4  4  5  5  5  5  5  6  6  6  6  6  6  1  1]';
-	  gfile_data.vvfrac= ones(nves,1);
-
-         if ~isempty(gdata.brsp)
-       %  EFIT brsp is terminal current (A) => Changing cc and cc2 are Mamp-turns
-	    cc_terminal = [gdata.brsp(1:nfcoil)*1.e-6; zeros(ncadd,1)] ; % 1st 14 brsp => F-coils [A]
-            cc= cc_terminal.*gfile_data.turnfc'; % convert to MA-turns
-
-       % VV has 56elements broken into 6 cur groups. We expand 6 actual currents to 56 elements	    
-	    proj= proj_turn(vvid,gfile_data.vvfrac);
-            vc6_terminal=  gdata.brsp(nfcoil + (1:6)); % 6 currents after nfcoil are VV groups [A]
-	    vc= proj'*vc6_terminal*1e-6; % expand 6 => 56 and change to MA-turn
-
-            if any( abs(gdata.brsp((nfcoil+6+1):end)) > 1e-5*max(abs(gdata.brsp)) )
-	       wait(' % CAUTION: some Sabbagh EFIT brsp(21:60) have substantial current???')
-	    end
-
-            gfile_data.cc= cc;
-            gfile_data.cc2= cc;
-            gfile_data.gdef.cc= 'PF coil currents in MA-turns; sab09; 14F & 4IC=0 ';
-            gfile_data.gdef.cc2= 'PF coil currents in MA-turns ';
-            gfile_data.vc= vc;
-            gfile_data.gdef.vc =  'vessel currents in MA; sab09; 6 groups => 56elm; 1 turn per elm.';
-         end
-         gfile_data.vvid= 1:nves; % NOTE: we are expanding 6=>56 so keep all VV elements
-         gfile_data.gdef.vvid =  'VV identifier; Note: sab09 has 6 VV  groups but we maintain 56elm';
-         gfile_data.gdef.vvfrac =  'VV fraction used in Green generation; sab09 WILL CHANGE LATER ';
-
-% =============
-       case 2			% KI You efit 2009
-          ncadd=4; 	% fix cc so it has extra control coils holding place of IC
-          if ~isempty(gdata.brsp)
-             gfile_data.cc = [gdata.brsp*1e-6;zeros(ncadd,1)];
-             gfile_data.cc2 = gfile_data.cc;
-          end
-
-% =============
-       case 3			% Sabbagh efit 2010
-         %  PF Order is: % f1u:7u,7l,6l,5l...1l, must add 4 zero current IC's IC1U..
-         ncadd=4; 	% add in extra ic coils with zero current
-         %      Need to map Sab which is clockwise from inner midplane to toksysKSTAR which is CW top and CCW bottom
-
-         id= [1 2 3 4 5 6 7 14 13 12 11 10 9 8]; % EFIT/Sab PF coil convert to sab10.mat
-
-         gfile_data.fcid=   1:(nfcoil+4); % add in 4 IC's	   
-
-         % NOTE: Some how the conventions for turnfc and fcturn seems opposite of EFIT!!!!!!
-         % gfile order gfile_data.turnfc= [180 144 72 108 208 128 72 72 128 208 108 72 144 180 6 4 6 4]';
-         gfile_data.turnfc= [180 144 72 108 208 128 72 180 144 72 108 208 128 72 6 4 6 4]';
-         gfile_data.fcturn= ones(1,length(gfile_data.fcid));
-
-         % VV see /home/leuer/tokamaks/kstar/efit/sab10/
-         vvid0= [...
-           1 1 2 2 2 3 3 4 4 5 5 5 5 6 6 7 7 8 8 8 8 9 9 10 10 11 11 11 12 12 ... % Outer VV
-           1 1 2 2 2 3 3 4 4 5 5 5 5 6 6 7 7 8 8 8 8 9 9 10 10 11 11 11 12 12 ]'; % Inner VV
-         vvid= [vvid0; (13:36)']; % add in 10 passive plates and 14 inner limiter = 24 elements
-         gfile_data.vvid= vvid;
-
-         vvfrac0= [...  
-           0.2500    0.2500    0.1667    0.1667    0.1667    0.2500    0.2500 ... 
-           0.2500    0.2500    0.1250    0.1250    0.1250    0.1250    0.2500 ... 
-           0.2500    0.2500    0.2500    0.1250    0.1250    0.1250    0.1250 ... 
-           0.2500    0.2500    0.2500    0.2500    0.1667    0.1667    0.1667 ... 
-           0.2500    0.2500]'; % this is Outer VV 
-
-         vvfrac0= [vvfrac0; vvfrac0]; % add in Inner VV which is same
-
-         vvfrac= [vvfrac0; ones(24,1)]; % add in 10 PP + 14 IL
-
-         if ~isempty(gdata.brsp)
-           %  EFIT brsp in SABBAGH EFIT is terminal current (A) => Changing cc and cc2 are Mamp-turns
-
-           id= [1 2 3 4 5 6 7 14 13 12 11 10 9 8]; % EFIT/Sab PF coil convert to sab10.mat
-           cc_terminal = [gdata.brsp(id)*1.e-6; zeros(ncadd,1)] ; % 1st 14 brsp => F-coils [MA]
-           cc= cc_terminal.*gfile_data.turnfc; % convert to MA => MA-turns
-
-           % VV has 60elements broken into 12 cur groups. We expand 12 actual currents to 60 elements	    
-           proj= proj_turn(vvid0,vvfrac0);
-           vc6_terminal=  gdata.brsp(nfcoil + (1:12)); % 12 currents after nfcoil are VV groups [A]
-           vc0= proj'*vc6_terminal*1e-6; % expand 12 => 60 and change to MA-turn
-           vc= [vc0; zeros(24,1)]; % add in zeros for 10PP and 12IL
-           vvid= (1:length(vvid))'; % since we have expaned up to all elements keep all
-           gfile_data.gdef.vvid =     'VV id; We expand 12 groups in 60 elemnts +24 extra so 1:84';
-           vvfrac= ones(size(vvfrac)); % since we have expaned up fractons are one
-           gfile_data.gdef.vvid =  'VV id; We expand 12 groups in 60 elemnts +24 extra so 1:84';
-
-           if any( abs(gdata.brsp((nfcoil+12+1):end)) > 1e-5*max(abs(gdata.brsp)) )
-             wait(' % CAUTION: some Sabbagh EFIT brsp(15:74) have substantial current???')
-           end
-
-           gfile_data.cc= cc; 
-           gfile_data.cc2= cc;
-           gfile_data.gdef.cc= 'PF coil currents in MA-turns; sab09; 14F & 4IC=0 ';
-           gfile_data.gdef.cc2= 'PF coil currents in MA-turns ';
-           gfile_data.vc= vc; % example of vv is vc(1)= brsp(15)*1e-6*[vvturn(1) == 0.25]
-           gfile_data.gdef.vc =  'vessel currents in MA; sab10; 12 groups => 60elm;';
-
-           vvid= (1:length(vvid))'; % since we have expaned up to all elements keep all
-           gfile_data.gdef.vvid =  'VV id; We expand 12 groups in 60 elemnts +24 extra so 1:84';
-
-         end
-         gfile_data.vvfrac= vvfrac;
-         gfile_data.vvid= vvid;  % NOTE: we are expanding 12=>56+24 so keep all VV elements
-         gfile_data.gdef.vvid =   'VV identifier; Note: sab10 has 12 VV  groups but we maintain 60elm';
-         gfile_data.gdef.vvfrac = 'VV fraction used in Green generation; sab10 WILL CHANGE LATER ';
-
-       case 4			% KI You efit 2010
-
-       case 5  % 2011 rtEFIT
-%         This EFIT seems to be different than SAB2010 in that:
-%         1) PF ordering is like DIII-D so we do not have to reorder to get to TokSys (DIII-D) ordering
-%         2) Inside Coils (IC) are included with the coils (14PF + 4IC = 18 currents)
-%         3) Only the passive plates (10 elements) are added VV; BUT NOT Center Limiter (14 elements)
-%         Below"if 0" allows VC ouput of EFIT (reduced) size elements or EFUNT (full size) elements
-
-          ncadd = 0;
-          id = [1:18]; % Fcoils
-          % PF coils
-          gfile_data.fcturn = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
-          gfile_data.turnfc = [180 144 72 108 208 128 72 180 144 72 108 208 128 72 6 4 6 4];
-          gfile_data.fcid = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18];
-          gfile_data.ecid = [];
-          gfile_data.fcturn= ones(1,length(gfile_data.fcid)); 
-          if ~isempty(gdata.brsp)
-             cc = [gdata.brsp(id)*1e-6;zeros(ncadd,1)];
-             cc2= cc;
-             gfile_data.cc  = cc;
-             gfile_data.cc2 = cc2;
-             gfile_data.gdef.cc = 'PF coil currents in MA-turns ';
-             gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-          end
-          
-          % Vessel = 60 VV -> 12 sections + 10 PP -> 2 sections
-          vvid= [...
-             1 1 2 2 2 3 3 4 4 5 5 5 5 6 6 7 7 8 8 8 8 9 9 10 10 11 11 11 12 12 ... % Outer VV
-             1 1 2 2 2 3 3 4 4 5 5 5 5 6 6 7 7 8 8 8 8 9 9 10 10 11 11 11 12 12 ... % Inner VV
-             13 13 13 14 14 14 13 13 14 14]'; % Passive Plates
-          vvfrac0= [...  
-            0.2500    0.2500    0.1667    0.1667    0.1667    0.2500    0.2500 ... 
-            0.2500    0.2500    0.1250    0.1250    0.1250    0.1250    0.2500 ... 
-            0.2500    0.2500    0.2500    0.1250    0.1250    0.1250    0.1250 ... 
-            0.2500    0.2500    0.2500    0.2500    0.1667    0.1667    0.1667 ... 
-            0.2500    0.2500]'; % this is Outer VV 
-          vvfrac0= [vvfrac0; vvfrac0]; % add in Inner VV which is same
-          vvfrac= [vvfrac0; 0.2*ones(10,1)]; % add in 10 PP elements
-          vvfrac = [vvfrac; 
-                 [0.250, 0.250, 0.250, 0.250, 0.200, 0.200, 0.200, 0.200, 0.200, 0.200,...
-                 0.200, 0.200, 0.200, 0.200, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050,...
-                 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050, 0.050,...
-                 0.050, 0.050, 0.050, 0.050, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034,...
-                 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034,...
-                 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034, 0.034,...
-                 0.034, 0.034, 0.034, 0.062, 0.062, 0.062, 0.062, 0.062, 0.062, 0.062,...
-                 0.062, 0.062, 0.062, 0.062, 0.062, 0.062, 0.062, 0.062, 0.062, 0.040,...
-                 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040,...
-                 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040, 0.040,...
-                 0.040, 0.040, 0.040, 0.040]'];
-
-          vvid(71:174) = 0; % These elements do not exist in 2011 rtefit_v7b 
-
-          vc14_terminal=  gdata.brsp(nfcoil + (1:14)); % 14 currents after nfcoil are VV groups [A]
-          vc = vc14_terminal*1e-6; % Keep EFIT size (14) vc=> 1:14
-
-          gfile_data.vc= vc; % example of vv is vc(1)= brsp(15)*1e-6*[vvturn(1) == 0.25]
-          gfile_data.vvid = vvid; % NOTE: we are expanding 14=>70 so keep all VV elements
-          gfile_data.vvfrac = vvfrac; % Expanded out, so all ones
-         
-          gfile_data.gdef.vc =  'vessel currents in MA; 14 groups => 70elm;';
-          gfile_data.gdef.vvid =   'VV identifier';
-          gfile_data.gdef.vvfrac = 'VV fraction used in Green generation';
-        
-        case 6  %  rtEFIT v7d2 (2012 intermediate version)
-          % Similar to previous rtEFIT, except includes inner limiter, cryo, and additional
-          % anti-parallel circuit to model eddy currents in passive plate. This means
-          % 180 vessel elements instead of 70. 
-          ncadd = 0;
-          id = [1:18]; % Fcoils
-          % PF coils
-          gfile_data.fcturn = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
-          gfile_data.turnfc = [180 144 72 108 208 128 72 180 144 72 108 208 128 72 6 4 6 4];
-          gfile_data.fcid = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18];
-          gfile_data.ecid = [];
-          gfile_data.fcturn= ones(1,length(gfile_data.fcid)); 
-          if ~isempty(gdata.brsp)
-             cc = [gdata.brsp(id)*1e-6;zeros(ncadd,1)];
-             cc2= cc;
-             gfile_data.cc  = cc;
-             gfile_data.cc2 = cc2;
-             gfile_data.gdef.cc = 'PF coil currents in MA-turns ';
-             gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-          end
-          
-          % Vessel = 180 VV -> 12 vessel sections + 2 inner lim + 2 diverter + 2 symmetrical
-          % passive plates + 4 cryo sections + 2 antiparallel pp eddy circuits = 24 sections
-          vvid= [...
-              1  1  2  2  2  3  3  4  4  5  5  5  5  6  6  7  7  8  8  8 ...
-              8  9  9 10 10 11 11 11 12 12  1  1  2  2  2  3  3  4  4  5 ...
-              5  5  5  6  6  7  7  8  8  8  8  9  9  10 10 11 11 11 12 12 ...
-              13 13 13 14 14 14 15 15 16 16 15 15 16 16 15 15 16 16 17 17 ...
-              17 18 18 18 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 ...
-              19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
-              20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 ...
-              21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 ...
-              22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 24 24 24]'; %rtefit_v7e
-           vvfrac= [...  
-                    0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500  0.2500  0.2500  0.1250 ...
-                    0.1250  0.1250  0.1250  0.2500  0.2500  0.2500  0.2500  0.1250  0.1250  0.1250 ...
-                    0.1250  0.2500  0.2500  0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500 ...
-                    0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500  0.2500  0.2500  0.1250 ...
-                    0.1250  0.1250  0.1250  0.2500  0.2500  0.2500  0.2500  0.1250  0.1250  0.1250 ...
-                    0.1250  0.2500  0.2500  0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500 ...
-                    0.3333  0.3333  0.3333  0.3333  0.3333  0.3333  0.1667  0.1667  0.1667  0.1667 ...
-                    0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.3333  0.3333 ...
-                    0.3333  0.3333  0.3333  0.3333  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500 ...
-                    0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500 ...
-                    0.0500  0.0500  0.0500  0.0500  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625 ...
-                    0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.500   0.500  -1.000  -1.000   0.500   0.500]';
-          idxvv_efit_to_tok = [1:length(vvfrac)-6]; % toksys model does not have anti-series PP
-
-          vc =  gdata.brsp(nfcoil + (1:24))*1e-6; % 24 currents after nfcoil are VV groups [MA-turn]
-          
-          gfile_data.vc= vc; % example of vv is vc(1)= brsp(15)*1e-6*[vvturn(1) == 0.25]
-          gfile_data.vvid = vvid; 
-          gfile_data.vvfrac = vvfrac; 
-          gfile_data.idxvv_efit_to_tok = idxvv_efit_to_tok;
-         
-          gfile_data.gdef.vc =  'vessel currents in MA; 24 groups => 180 elm;';
-          gfile_data.gdef.vvid =   'VV identifier';
-          gfile_data.gdef.vvfrac = 'VV fraction used in Green generation';
-
-        case 7  %  rtEFIT v7e ()
-           % Similar to rtEFIT_v7d, but with series PF coils and slightly shifted divertor indices 
-           ncadd = 0;
-           id = [1:13]; % Fcoils
-           % PF coils
-           gfile_data.fcid   = [ 1  2  3  4  5  6  7  1  2  8  9 10 11  7 12 13  12  13];
-           gfile_data.fcturn = [.5 .5  1  1  1  1 .5 .5 .5  1  1  1  1 .5 .5 .5 -.5  .5]';
-           gfile_data.turnfc = [360 288 72 108 208 128 144 72 108 208 128 12 8];
-
-           gfile_data.ecid = [];
-           if ~isempty(gdata.brsp)
-              cc = [gdata.brsp(id)*1e-6;zeros(ncadd,1)];
-              cc2= cc;
-              gfile_data.cc  = cc;
-              gfile_data.cc2 = cc2;
-              gfile_data.gdef.cc = 'PF coil currents in MA-turns ';
-              gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-           end
-
-           % Vessel = 180 VV -> 12 vessel sections + 2 inner lim + 2 diverter + 2 symmetrical
-           % passive plates + 4 cryo sections + 2 antiparallel pp eddy circuits = 24 sections
-           vvid= [...
-              1  1  2  2  2  3  3  4  4  5  5  5  5  6  6  7  7  8  8  8 ...
-              8  9  9 10 10 11 11 11 12 12  1  1  2  2  2  3  3  4  4  5 ...
-              5  5  5  6  6  7  7  8  8  8  8  9  9  10 10 11 11 11 12 12 ...
-              13 13 13 14 14 14 15 15 16 16 15 15 16 16 15 15 16 16 17 17 ...
-              17 18 18 18 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 19 ...
-              19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
-              20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 ...
-              21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 ...
-              22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 24 24 24]'; %rtefit_v7e
-           vvfrac= [...  
-                    0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500  0.2500  0.2500  0.1250 ...
-                    0.1250  0.1250  0.1250  0.2500  0.2500  0.2500  0.2500  0.1250  0.1250  0.1250 ...
-                    0.1250  0.2500  0.2500  0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500 ...
-                    0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500  0.2500  0.2500  0.1250 ...
-                    0.1250  0.1250  0.1250  0.2500  0.2500  0.2500  0.2500  0.1250  0.1250  0.1250 ...
-                    0.1250  0.2500  0.2500  0.2500  0.2500  0.1667  0.1667  0.1667  0.2500  0.2500 ...
-                    0.3333  0.3333  0.3333  0.3333  0.3333  0.3333  0.1667  0.1667  0.1667  0.1667 ...
-                    0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.1667  0.3333  0.3333 ...
-                    0.3333  0.3333  0.3333  0.3333  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500 ...
-                    0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500  0.0500 ...
-                    0.0500  0.0500  0.0500  0.0500  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345  0.0345 ...
-                    0.0345  0.0345  0.0345  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625 ...
-                    0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0625  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400  0.0400 ...
-                    0.0400  0.0400  0.0400  0.0400  0.500   0.500  -1.000  -1.000   0.500   0.500]';
- 
-           idxvv_efit_to_tok = [1:length(vvfrac)-6]; % toksys model does not have anti-series PP
-
-           vc =  gdata.brsp(nfcoil + (1:24))*1e-6; % 24 currents after nfcoil are VV groups [MA-turn]
-
-           gfile_data.vc= vc; % example of vv is vc(1)= brsp(15)*1e-6*[vvturn(1) == 0.25]
-           gfile_data.vvid = vvid; 
-           gfile_data.vvfrac = vvfrac; 
-           gfile_data.idxvv_efit_to_tok = idxvv_efit_to_tok;
-
-           gfile_data.gdef.vc =  'vessel currents in MA; 24 groups => 180 elm;';
-           gfile_data.gdef.vvid =   'VV identifier';
-           gfile_data.gdef.vvfrac = 'VV fraction used in Green generation';
-
-       otherwise
-          wait(['ERROR read_gfile_tok: unsupported KSTAR efit format ' gfile_data.ecase])
-          return;
-    end
-
-    gfile_data.ecid = [];
-    if(isfield(gdata,'gtime') | isfield(gdata,'time'))
-       if(~isfield(gdata,'gtime') & isfield(gdata,'time'))
-          gdata.gtime = gdata.time;
-       end
-       gfile_data.time = gdata.gtime;
-       gfile_data.tms = gdata.gtime*1e+3;
-    end
-
-% ===========================================================================
-  case {'NSTXU'}
-% ===========================================================================
-
-  if(~exist('nfcoil','var'))
-     nfcoil = [];
-  end
-  if(~exist('nesum','var'))
-     nesum = [];
-  end
-  if(~exist('nves','var'))
-     nves = [];
-  end
-
-  icase = 'rtefit_v7a';
-  
-  switch icase
-     
-    case 'lrdfit'   %used for initial model development
-     
-     if isempty(nfcoil),   nfcoil=14; end  % default NSTXU values
-     if isempty(nves),     nves=12; end     % default NSTXU values
-     if isempty(nesum),    nesum=1; end    % default NSTXU values
-     nec=6;	   %number of ohmic coil elements
-     
-     % Believe turnfc should be tok_data_struct.fcnturn  
-     if(~isfield(gfile_data,'turnfc'))
-       %This turnfc consistent with Menard Nucl. Fusion 52 (2012) 083015
-       gfile_data.turnfc=[64 32 20 14 14 7 8 7 8  4  5  8  4  5 ...
- 			   8 12 12 12 12 7 8 7 8 14 14 20 32 64];
-       %This turnfc tweaked so build_tokamak_system doesn't complain
-       %about PF3U,L coil currents being different (line 562)
-       %Change is to increase turns to 32 instead of 30
-       %Eg turnfc=8 8 8 8 instaed of 7 8 7 8
-       % (there must be a better way to do this)
-       %gfile_data.turnfc=[64 32 20 14 14 8 8 8 8  4  5  8  4  5 ...
-       %		   8 12 12 12 12 8 8 8 8 14 14 20 32 64];
-     end
-     
-     % Group 28 VF coils into 14 circuits
-     if(~isfield(gfile_data,'fcid'))
-       gfile_data.fcid=[1 2 3 4 4 5 5 5 5 6 6 6 7 7 7 8 8 9 9 10 10 10 10 11 11 12 13 14];
-     end
-     % Specify fraction of current in each coil for the specified fcid
-     % Hence, if you do k = find(fcid==2) % where 2 is an example
-     % then sum(fcturn(k)) % should be 1
-     if(~isfield(gfile_data,'fcturn'))
- 	 for k=1:nfcoil
- 	   idfc = gfile_data.fcid(k);
- 	   tmp = sum(gfile_data.turnfc(gfile_data.fcid==idfc)); % get total turns according to fcid
- 	   gfile_data.fcturn(k)=gfile_data.turnfc(k)/tmp;    % apply fcturn definition
- 	 end	   
-     end
-
-   % vv 
-     gfile_data.vvid = [1:nves];
-     gfile_data.vvfrac = ones(nves,1);
-   
-   % ec
-   % To make the object have a consistent interpretation, this needs to be the
-   % fraction of current carried by each defined group????
-   %	gfile_data.ecturn = gfile_data.ecturn/sum(gfile_data.ecturn);
-     if(~isfield(gfile_data,'ecid'))
-       gfile_data.ecid=ones(59,1);
-     end  
-     if(~isfield(gfile_data,'ecturn'))
-       gfile_data.ecturn=repmat(15,[59 1]);
-     end   
-     gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-   
-   % Changing cc and cc2 so they are amp-turns
-   % brsp is terminal current (A) NOT Amp-turns because NSTX uses groups and turns
-   % for each group. 
-   
-   % for LRDFIT equilibria, brsp and ecurrt are NaN.
-   
-     if length(gdata.brsp)==1 & isnan(gdata.brsp)
-       fprintf('WARNING std_efit_units: brsp is NaN, coil currents cannot be processed\n')
-       gfile_data.vc  = [];
-       gfile_data.cc  = [];
-       gfile_data.cc2 = [];
-     elseif length(gdata.ecurrt)==1 & isnan(gdata.ecurrt)
-       fprintf('WARNING std_efit_units: ecurrt is NaN, coil currents cannot be processed\n')
-       gfile_data.vc  = [];
-       gfile_data.cc  = [];
-       gfile_data.cc2 = [];
-     elseif (~isempty(gdata.brsp) & ~isempty(gdata.ecurrt) & length(gdata.brsp)>=(nfcoil+nves))
-       gfile_data.vc = gdata.brsp(nfcoil+1:nfcoil+nves)*1.e-6;
-       cc_terminal = [gdata.ecurrt; gdata.brsp(1:nfcoil)]*1.e-6;
-
-       turns = zeros(2,1); %force to be column
-       for k=1:nesum
- 	  turns(k) = sum(gfile_data.ecturn);
-       end
-       for k=1:nfcoil
- 	  idx = find(gfile_data.fcid==k);
- 	  turns(k+nesum) = sum(gfile_data.turnfc(idx));
-       end
-
-       gfile_data.cc	 = cc_terminal.*turns;
-       gfile_data.cc2	 = gfile_data.cc;
-
-       gfile_data.gdef.cc =  'Fcoil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-       gfile_data.gdef.cc2 = 'Fcoil currents in MA-turns ';
-       gfile_data.gdef.vc =  'vessel currents in MA';
-     end
-
-
-   case 'rtefit_v7a'   %first rtefit for NSTXU based on Sabbagh mhdin.dat dated 1/15/15 
-
-     if isempty(nfcoil),   nfcoil=14; end  % default NSTXU values
-     if isempty(nves),     nves=40; end     % default NSTXU values
-     if isempty(nesum),    nesum=1; end    % default NSTXU values
-     nec=8;	   %number of ohmic coil elements
-
-     % 22 sub coils now so can't use with LRDFIT models
-     % Order is from rtefit_NSTX_diagnostics.h
-     % "PF1AU","PF1BU","PF1CU", "PF2U","PF3U","PF4U","PF5U","PF5L","PF4L","PF3L","PF2L","PF1CL","PF1BL","PF1AL",     
-     gfile_data.fcid = [1.00000000E+00,   2.00000000E+00,   3.00000000E+00,   4.00000000E+00,... 
-                        4.00000000E+00,   5.00000000E+00,   5.00000000E+00,   6.00000000E+00,...
-                        6.00000000E+00,   7.00000000E+00,   7.00000000E+00,   8.00000000E+00,... 
-                        8.00000000E+00,   9.00000000E+00,   9.00000000E+00,   1.00000000E+01,...
-                        1.00000000E+01,   1.10000000E+01,   1.10000000E+01,   1.20000000E+01,... 
-                        1.30000000E+01,   1.40000000E+01];
-     gfile_data.turnfc = [6.40000000E+01,   3.20000000E+01,   2.00000000E+01,   1.40000000E+01,... 
-                           1.40000000E+01,   1.50000000E+01,   1.50000000E+01,   9.00000000E+00,... 
-                           8.00000000E+00,   1.20000000E+01,   1.20000000E+01,   1.20000000E+01,... 
-                           1.20000000E+01,   9.00000000E+00,   8.00000000E+00,   1.50000000E+01,... 
-                           1.50000000E+01,   1.40000000E+01,   1.40000000E+01,   2.00000000E+01,... 
-                           3.20000000E+01,   6.40000000E+01];
-     gfile_data.fcturn = [1, 1, 1,...
-                          0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,...
-			  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5,...
-			  1, 1, 1];			   
-     gfile_data.vvid = [1, 1, 2, 2, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7,...
- 			8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9,...
- 			9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10,...
- 			11, 11, 11, 11, 11, 12, 12, 13, 13, 13, 14, 15, 16, 17, 18, 18, 18, 19, 19, 20,...
- 			20, 20, 20, 20, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,...
- 			22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,...
- 			24, 24, 24, 24, 25, 25, 25, 25, 25, 23, 23, 23, 23, 23, 23, 26, 26, 26, 27, 28,...
-			29, 29, 30, 30, 31, 31, 32, 32, 33, 34, 35, 36, 37, 38, 39, 40]; 			
-     gfile_data.vvfrac = [0.5000,  0.5000,  0.5000,  0.5000,  1.0000,  1.0000,  0.3333,  0.3333,  0.3333,  0.0625,...
- 			  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.2000,  0.2000,  0.2000,  0.2000,  0.2000,...
- 			  0.2500,  0.2500,  0.2500,  0.2500,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,...
- 			  0.0625,  0.0625,  0.0625,  0.0625,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,...
- 			  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,...
- 			  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.5000,  0.5000,...
- 			  0.2000,  0.2000,  0.2000,  0.2000,  0.2000,  0.5000,  0.5000,  0.3333,  0.3333,  0.3333,...
- 			  1.0000,  1.0000,  1.0000,  1.0000,  0.3333,  0.3333,  0.3333,  0.5000,  0.5000,  0.2000,...
- 			  0.2000,  0.2000,  0.2000,  0.2000,  0.5000,  0.5000,  0.0417,  0.0417,  0.0417,  0.0417,...
- 			  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,...
- 			  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,  0.0417,...
- 			  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,...
- 			  0.2500,  0.2500,  0.2500,  0.2500,  0.2000,  0.2000,  0.2000,  0.2000,  0.2000,  0.0625,...
- 			  0.0625,  0.0625,  0.0625,  0.0625,  0.0625,  0.3333,  0.3333,  0.3333,  1.0000,  1.0000,...
- 			  0.5000,  0.5000,  0.5000,  0.5000,  0.5000,  0.5000,  0.5000,  0.5000,  1.0000,  1.0000,...
- 			  1.0000,  1.0000,  1.0000,  1.0000,  1.0000,  1.0000];
-     gfile_data.ecid  = [1, 1, 1, 1, 1, 1, 1, 1];
-     gfile_data.ecturn = [112.0,  110.0, 109.5, 108.5, 108.5, 109.5, 110.0,  112.0];
-
-     turns = zeros(2,1); %force to be column
-     for k=1:nesum
-        turns(k) = sum(gfile_data.ecturn);
-     end
-     for k=1:nfcoil
-        idx = find(gfile_data.fcid==k);
-        turns(k+nesum) = sum(gfile_data.turnfc(idx));
-     end
-     
-     %brsp has also the vessel currents
-     cc_terminal = [gdata.ecurrt; gdata.brsp(1:nfcoil)]*1.e-6;
-     gfile_data.cc     = cc_terminal.*turns;
-     gfile_data.cc2    = gfile_data.cc;
-
-
-     gfile_data.gdef.fcid    = 'Fcoil circuit id';
-     gfile_data.gdef.fcturn = 'Multiplier used in generation of EFIT greens tables; if =1 brsp is in A-turn; fraction of total turns';
-     gfile_data.gdef.turnfc = 'Multiplier of EFIT input currents, if =1 brsp is in terminal [A]';
-     gfile_data.gdef.vvid   =  'VV identifier; Note: sab09 has 6 VV  groups but we maintain 56elm';
-     gfile_data.gdef.vvfrac =  'VV fraction used in Green generation; sab09 WILL CHANGE LATER ';
-     gfile_data.gdef.ecid   = 'Ohmic coil circuit id';
-     gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-     gfile_data.gdef.cc     =  'Fcoil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-     gfile_data.gdef.cc2    = 'Fcoil currents in MA-turns ';
-     gfile_data.gdef.vc     =  'vessel currents in MA';
-     
-   
-   end %icase switch
-
-     if(isfield(gdata,'gtime') | isfield(gdata,'time'))
- 	  if(~isfield(gdata,'gtime') & isfield(gdata,'time'))
- 	     gdata.gtime = gdata.time;
- 	  end
- 	  gfile_data.time = gdata.gtime;
- 	  gfile_data.tms = gdata.gtime*1e+3;
-      end
-
-% ===========================================================================
-  case {'NSTX'}
-% ===========================================================================
-
-  if(~exist('nfcoil','var'))
-     nfcoil = [];
-  end
-  if(~exist('nesum','var'))
-     nesum = [];
-  end
-  if(~exist('nves','var'))
-     nves = [];
-  end
-
-  if old_efit==0 % NEW Apr 05 EFIT Config: 04202005Av1.0
-
-    if isempty(nfcoil),   nfcoil=17; end  % default NSTX values
-    if isempty(nves),     nves=35; end    % default NSTX values
-    if isempty(nesum),    nesum=1; end    % default NSTX values
-
-% Coil Note except for changes to pf1aul,
-%      below I add a 2nd vector which adds from the Old to the New(Apr05)
-    gfile_data.fcid= [[1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11] ...
-                      [12 13 14 15 16 17]];
-    gfile_data.turnfc=[[20 14 14 15 15 9 8 12 12 12 12 9 8 15 15 14 14 20 32]...
-                       [1 1 1 1 48 48]];
-
-    gfile_data.fcturn = ...
-     [[1 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 1 1]...
-      [1 1 1 1 1 1]];
-
-% vv has some differences internal so new from "make"
-    gfile_data.vvid = [ ...
-        1 2 3 4 4 5 6 6 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 10 10 11 11 11 12 ...
-        13 14 15 16 16 16 17 17 18 18 18 18 18 19 19 19 19 19 20 20 21 ...
-        22 22 23 24 25 26 26 27 27 28 29 30 31 32 33 34 35];
-
-    gfile_data.vvfrac = [ ...
-   	1 1 1 0.5 0.5 1 ...
-	0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 ...
-	0.25 0.25 0.25 0.25 ...
-	0.33333 0.33333 0.33333 0.33333 0.33333 0.33333 ...
-	0.5 0.5 0.5 0.5 ...
-	0.33333 0.33333 0.33333 0.33333 0.33333 0.33333 ...
-	0.25 0.25 0.25 0.25 ...
-	0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 ...
-	1 0.5 0.5 1 1 1 0.5 0.5 0.5 0.5 1 1 1 1 1 1 1 1];
-
-    gfile_data.vvfrac = [ ...
-    1.0000    1.0000    1.0000    0.5000    0.5000    1.0000    0.5000 ...
-    0.5000    0.3333333 0.3333333 0.3333333 0.1250    0.1250    0.1250 ...
-    0.1250    0.1250    0.1250    0.1250    0.1250    0.2000    0.2000 ...
-    0.2000    0.2000    0.2000    0.5000    0.5000    0.3333333 0.3333333 ...
-    0.3333333 1.0000    1.0000    1.0000    1.0000    0.3333333 0.3333333 ...
-    0.3333333 0.5000    0.5000    0.2000    0.2000    0.2000    0.2000 ...
-    0.2000    0.2000    0.2000    0.2000    0.2000    0.2000    0.5000 ...
-    0.5000    1.0000    0.5000    0.5000    1.0000    1.0000    1.0000 ...
-    0.5000    0.5000    0.5000    0.5000    1.0000    1.0000    1.0000 ...
-    1.0000    1.0000    1.0000    1.0000    1.0000];
-
-% ecoil - no change old to new
-    gfile_data.ecid = ones(240,1);
-    gfile_data.ecturn = [ ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ];
-    gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-
-% To make the object have a consistent interpretation, this needs to be the
-% fraction of current carried by each defined group????
-%    gfile_data.ecturn = gfile_data.ecturn/sum(gfile_data.ecturn);
-%    gfile_data.turnec = ?;  % WHAT IS THIS??????
-
-% Changing cc and cc2 so they are amp-turns
-% brsp is terminal current (A) NOT Amp-turns because NSTX uses groups and turns
-% for each group. 
-
-% for LRDFIT equilibria, brsp and ecurrt are NaN.
-
-  if length(gdata.brsp)==1 & isnan(gdata.brsp)
-    fprintf('WARNING std_efit_units: brsp is NaN, coil currents cannot be processed\n')
-    gfile_data.vc  = [];
-    gfile_data.cc  = [];
-    gfile_data.cc2 = [];
-  elseif length(gdata.ecurrt)==1 & isnan(gdata.ecurrt)
-    fprintf('WARNING std_efit_units: ecurrt is NaN, coil currents cannot be processed\n')
-    gfile_data.vc  = [];
-    gfile_data.cc  = [];
-    gfile_data.cc2 = [];
-  elseif ~isempty(gdata.brsp) & ~isempty(gdata.ecurrt)
-    gfile_data.vc = gdata.brsp(nfcoil+1:nfcoil+nves)*1.e-6;
-    cc_terminal = [gdata.ecurrt; gdata.brsp(1:nfcoil)]*1.e-6;
-
-    turns = zeros(2,1);	%force to be column
-    for k=1:nesum
-       turns(k) = sum(gfile_data.ecturn);
-    end
-    for k=1:nfcoil
-       idx = find(gfile_data.fcid==k);
-       turns(k+nesum) = sum(gfile_data.turnfc(idx));
-    end
-
-    gfile_data.cc     = cc_terminal.*turns;
-    gfile_data.cc2    = gfile_data.cc;
-
-    gfile_data.gdef.cc =  'Fcoil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'Fcoil currents in MA-turns ';
-    gfile_data.gdef.vc =  'vessel currents in MA';
-  end
-  
-% ----------------------------------------------------------------------------
- else % if old_efit==1 OLD Feb 2002 EFIT BELOW  Config_name= '02072002Av1.0';
-% ----------------------------------------------------------------------------
-
-    if isempty(nfcoil),   nfcoil=11; end    % default NSTX values
-    if isempty(nves),     nves=30; end    % default NSTX values
-    if isempty(nesum),    nesum=1; end       % default NSTX values
-
-    gfile_data.fcid = [1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 11];
-    gfile_data.turnfc = [48 14 14 15 15 9 8 12 12 12 12 9 8 15 15 14 14 48 32];
-    gfile_data.fcturn = ...
-     [1 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 1 1];
-
-    gfile_data.vvid = [ ...
-	1 2 3 4 4 5 6 6 6 6 6 6 6 7 7 7 7 8 8 8 9 9 9 10 10 11 11 12 12 12 ...
-	13 13 13 14 14 14 14 15 15 15 15 15 15 15 16 17 17 18 19 20 21 21 ...
-	22 22 23 24 25 26 27 28 29 30];
-    gfile_data.vvfrac = [ ...
-   	1 1 1 0.5 0.5 1 ...
-	0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 ...
-	0.25 0.25 0.25 0.25 ...
-	0.33333 0.33333 0.33333 0.33333 0.33333 0.33333 ...
-	0.5 0.5 0.5 0.5 ...
-	0.33333 0.33333 0.33333 0.33333 0.33333 0.33333 ...
-	0.25 0.25 0.25 0.25 ...
-	0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 0.14286 ...
-	1 0.5 0.5 1 1 1 0.5 0.5 0.5 0.5 1 1 1 1 1 1 1 1];
-
-    gfile_data.ecid = ones(240,1);
-    gfile_data.ecturn = [ ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 4.0875 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     4.033333 4.033333 4.033333 4.033333 4.033333 4.033333 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.995833 3.995833 3.995833 3.995833 3.995833 3.995833 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ...
-     3.933333 3.933333 3.933333 3.933333 3.933333 3.933333 ];
-    gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-
-% To make the object have a consistent interpretation, this needs to be the
-% fraction of current carried by each defined group????
-%    gfile_data.ecturn = gfile_data.ecturn/sum(gfile_data.ecturn);
-%    gfile_data.turnec = ?;  % WHAT IS THIS??????
-
-% Changing cc and cc2 so they are amp-turns
-% brsp is terminal current (A) NOT Amp-turns because NSTX uses groups and turns
-% for each group. 
-
- if ~isempty(gdata.brsp) & ~isempty(gdata.ecurrt)
-    gfile_data.vc = gdata.brsp(nfcoil+1:nfcoil+nves)*1.e-6;
-    cc_terminal = [gdata.ecurrt; gdata.brsp(1:nfcoil)]*1.e-6;
-
-    turns = zeros(2,1);	%force to be column
-    for k=1:nesum
-       turns(k) = sum(gfile_data.ecturn);
-    end
-    for k=1:nfcoil
-       idx = find(gfile_data.fcid==k);
-       turns(k+nesum) = sum(gfile_data.turnfc(idx));
-    end
-
-    gfile_data.cc     = cc_terminal.*turns;
-    gfile_data.cc2    = gfile_data.cc;
-
-    gfile_data.gdef.cc =  'Fcoil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'Fcoil currents in MA-turns ';
-    gfile_data.gdef.vc =  'vessel currents in MA';
-  end
-% --------------------------------------------------
- end % if old_efit 
-% --------------------------------------------------
-
-  if(isfield(gdata,'gtime') | isfield(gdata,'time'))
-     if(isfield(gfile_data,'gtime'))
-        gfile_data.time = gdata.gtime;
-        gfile_data.tms = gdata.gtime*1e+3;
-     else
-        gfile_data.time = gdata.time;
-        gfile_data.tms = gdata.time*1e+3;
-     end
-  end
-
-% ===========================================================================
-  case {'ITER'}
-% ===========================================================================
-
-  if ~isempty(gdata.brsp)
-    cc = [gdata.brsp*1e-6];
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc;
-    gfile_data.gdef.cc = 'PF coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-  end
-    gfile_data.fcid = 1:12;
-
-% use date of file to switch between turns in system: iter07 Vs 2010, See /u/leuer/efit/iter/
-    date2010= datenum('01-Jan-2010'); % Runs prior to 2010 use old turns
-    d= dir(filename);
-    if datenum(d.date) < datenum('01-Jan-2010') % Runs prior to 2010 use old turns
-      disp('% NOTE: read_gfile using OLD 2007 ITER TURNS: 249 106 185 169 217 425 548 548..')
-      gfile_data.turnfc = [249 106 185 169 217 425 548 548 548 548 548 548];
-    else
-      disp('% NOTE: read_gfile using 2010 ITER TURNS: 249 115 186 170 217 459 553 553..')
-      gfile_data.turnfc = [249 115 186 170 217 459 553 553 553 553 553 553];
-    end   
-    gfile_data.fcturn = ones(12,1);
-
-    gfile_data.ecid = [];
-
-%    disp('Using Build for ITER07')
-
-% ===========================================================================
-  case {'CTF'}
-% ===========================================================================
-
-%cc-vector with NO-ECOIL (MA-t):
- if ~isempty(gdata.brsp)
-    cc = gdata.brsp*1.e-6;
-
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc;
- 
-    gfile_data.gdef.cc =  '14 F coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = '14 F coil currents in MA-turns ';
- end
-    gfile_data.fcturn = ones(1,nfcoil);    % used to build efit greens tables
-    gfile_data.turnfc = 50*ones(1,nfcoil); % Ipf*turnfc => efit greens table
-    gfile_data.fcid = 1:14;
-    gfile_data.ecid = [];
-%    disp(['read_gfile_tok done reading CTF gfile: ',filename])
-
-% ===========================================================================
-  case {'FDF'}
-% ===========================================================================
-
-%cc-vector with NO-ECOIL (MA-t):
- if ~isempty(gdata.brsp)
-
-% special reordering of brsp for symmetric EFIT runs:
-    if size(gdata.brsp,1)==22
-       sm= 0;
-       mx= 0;
-       for ii= 1:11 
-          sm= (gdata.brsp(ii)-gdata.brsp(ii+11)).^2 + sm;
-	  mx= max([mx,abs(gdata.brsp(ii)),abs(gdata.brsp(ii+1))]);
-       end
-       err= sqrt(sm/11)/mx; % diff is typically of order 6e-7 for symmetric
-       if err <= 1e-5
-          gfile_data.brsp= gfile_data.brsp([1:11 22:-1:12]); % reorder for sym efit
-       end
-     end
-
-    cc = gdata.brsp*1.e-6;
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc;
- 
-    gfile_data.gdef.cc =  'F coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'F coil currents in MA-turns ';
- end
-    gfile_data.fcturn = ones(1,nfcoil);    % used to build efit greens tables
-  %Apparently turnfc must be ones, even though MHDIN.DAT claims = 50; 
-  %  ==> Logic in rzrig or here may be broken...   DAH 5/31/08
-% Below depends if MATLAB is build with fcnturn=1 or 50 JAL 6may2011
-    gfile_data.turnfc = turnfc0*ones(1,nfcoil); % Ipf*turnfc => efit greens table
-    gfile_data.fcid = 1:nfcoil;
-    gfile_data.ecid = [];
-%    disp(['read_gfile_tok done reading FDF gfile: ',filename])
-
-
-% ===========================================================================
-  case {'CFETR'}
-% ===========================================================================
-
-  if ~isempty(gdata.brsp)
-    cc = [gdata.brsp*1e-6];
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc;
-    gfile_data.gdef.cc = 'PF coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
-  end
-    nfc=14;
-    gfile_data.fcid = 1:nfc;
-    gfile_data.turnfc = ones(nfc,1);
-    gfile_data.fcturn = ones(nfc,1);
-    gfile_data.ecid = [];
-    
-    disp('cfetr')
-
-% ===========================================================================
-  case {'PEGASUS'}
-% ===========================================================================
-
- if ~isempty(gdata.brsp)
-%   ncadd=4;    % fix cc so it has extra control coils
-%   cc = [gdata.brsp*1e-6;zeros(ncadd,1)];
-%   cc2= cc;
-
-%   gfile_data.cc  = cc;
-%   gfile_data.cc2 = cc2;
-%   gfile_data.gdef.cc = 'PF coil currents in MA-turns ';
-%   gfile_data.gdef.cc2 = 'PF coil currents in MA-turns ';
- end
-
-% ???  Do we care that length(cc)~=length(turnfc) ???
-
-%    gfile_data.fcturn = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]';
-    gfile_data.turnfc = [2 3 5 5 5 5 3 2 5 5 280 4 4 1 1 1 1];
-    gfile_data.fcid = [1 2 3 4 4 3 2 5 6 7 8 9 10 11 12 13 14];
-    gfile_data.ecid = [];
-
-    gfile_data.fcturn = [1 0.5 0.5 0.5 0.5 0.5 0.5 1 1 1 1 1 1 1 1 1 1]';
-
-% ===========================================================================
-  case {'SST'}
-% ===========================================================================
-
-    gfile_data.fcturn = ones(1,14);
-    gfile_data.turnfc = [40 40 192 40 40 8 1 40 40 192 40 40 8 1];
-    gfile_data.fcid = [1 2 3 4 5 6 7 8 9 10 11 12 13 14];
-    gfile_data.ecid = [ ...                     % must be same as ecdata(5,:)
-                        1 1 1 1 1 ];
-    gfile_data.ecturn = [692 40 8 40 8]; % required if ecid is not empty
-    gfile_data.gdef.ecturn = 'individual turns in ecoil(s)';
-
-% Construct E-coil Number of turns to make output MA-turns:
-    dum= min(2,nesum); % if nesum=1 then use ONLY 1 ECOIL current
-
-  if ~isempty(gdata.brsp) & ~isempty(gdata.ecurrt)
-% Construct E-coil Number of turns to make output MA-turns:
-    dum= min(2,nesum); % if nesum=1 then use ONLY 1 ECOIL current
-%  find reduced ecoil set data
-      nee = length(unique(gfile_data.ecid));
-      clear neturn
-      for ii=1:nee
-         idx = find(gfile_data.ecid==ii);
-         neturn(ii,1) = sum(gfile_data.ecturn(idx));
-      end
-
- %cc-vector with 2 e-coil segments (MA-t):
-    cc2 = [gdata.ecurrt(1:dum).*neturn(1:dum);gdata.brsp]*1.e-6;
-
-% CAUTION: we are not using the 6segment e-coil anymore so this is crippled
-%cc-vector with all e-coil segs(2 or 6) (MA-t):
-    cc= cc2;
-
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc2;
-
-    gfile_data.gdef.cc = 'E/F coil currents in MA-turns; convert to toksys cc0 using cc_efit_to_tok';
-    gfile_data.gdef.cc2 = 'E/F coil currents in MA-turns ';
-  end
-% ===========================================================================
-  case {'HL2M'} % Jim Leuer 2jul2015
-% ===========================================================================
-    if(~exist('nesum','var'))
-       nesum = 1; 
-    end
-
-% include d3d build parameters (see build area => must be same)
-    gfile_data.fcturn = [28 28 28 28 28 27 28 28 28 28 28 28 28 27 28 28];
-    gfile_data.turnfc = ones(1,16);
-    gfile_data.fcid =    1:16;
-    gfile_data.ecid = [ 1 1];
-    gfile_data.ecturn = [48 48]; % ? NOT SURE IF THIS IS 1 or 48?
-    gfile_data.gdef.ecturn = 'individual turns in upper and lower ecoils';
-
-
-  if ~isempty(gdata.brsp) & ~isempty(gdata.ecurrt)
-% Construct E-coil Number of turns to make output MA-turns:
-    dum= 1; % ONLY 1 ECOIL current
-%  find reducted ecoil set data 
-      nee = length(unique(gfile_data.ecid));
-      clear neturn
-      for ii=1:nee
-         idx = find(gfile_data.ecid==ii);
-         neturn(ii,1) = sum(gfile_data.ecturn(idx));
-      end
-
- % cc-vector with 1 e-coil segment is in Amps, brsp is in Amps so conversion  (MA-t):
-    cc2 = [gdata.ecurrt(1:dum).*neturn(1:dum);...
-           gdata.brsp.*gfile_data.fcturn']*1.e-6; % this is now in MA-t
-
-    cc= cc2;
-
-    gfile_data.cc     = cc;
-    gfile_data.cc2    = cc2;
- 
-    gfile_data.gdef.cc = 'E/F currents in MA-t; convert to toksys cc0 using std_efit_units';
-    gfile_data.gdef.cc2 = 'E/F currents in MA-turns';
-  end
-
-  if(isfield(gdata,'gtime') | isfield(gdata,'time'))
-     if(~isfield(gdata,'gtime') & isfield(gdata,'time'))
-        gdata.gtime = gdata.time;
-     end
-     gfile_data.time=gdata.gtime*1e-3;
-     gfile_data.tms= gdata.gtime;
-  end
-% Validated using test_build jal 7jul2014
-
-% ===========================================================================
-  otherwise
-% ===========================================================================
-
-  disp(['%ERROR: std_efit_units does not recognize tokamak:' tokamak])
-
-end  % switch
-
-  gfile_data.gdef.fcturn = 'Multiplier used in generation of EFIT greens tables; if =1 brsp is in A-turn';
-  gfile_data.gdef.turnfc = 'Multiplier of EFIT input currents, if =1 brsp is in terminal [A]';
-  gfile_data.gdef.fcid =   'Coil identifier used in construction of greens tables';
-  gfile_data.gdef.ecid =   'Coil identifier used in construction of greens tables';
-
-% ===========================================================================
-% DERIVED DATA
-% ===========================================================================
-
-% Derive efit grid:
-
-  rg= linspace(gdata.rgrid1, gdata.rgrid1+gdata.xdim, gdata.nw)';
-  zg= linspace(gdata.zmid-gdata.zdim/2,gdata.zmid+gdata.zdim/2,gdata.nh)';
-  dr= (rg(end)-rg(1))/(gdata.nw-1);
-  dz= (zg(end)-zg(1))/(gdata.nh-1);
-   
-% Create useful fluxes (even for iecurr not = 2)
-% Convert flux objects to REAL units:
-
-  psizr  = -gdata.psirz'*2*pi*sign(gdata.cpasma);
-  psimag = -gdata.ssimag*2*pi*sign(gdata.cpasma);
-  psibry = -gdata.ssibry*2*pi*sign(gdata.cpasma);
-  psibnd = -gdata.ssibry*2*pi*sign(gdata.cpasma);
-
-% Convert pcurrt to nh x nw array and scale to MA/m^2:
-
- if ~isempty(gdata.pcurrt) & ~isfield(gfile_data,'jphi')
-  jphi = gdata.pcurrt*1.e-6/(dz*dr);
-  gfile_data.jphi   = jphi;
-  gfile_data.gdef.jphi = 'current density on grid  MA/m^2';
- end
-
-% Construct output object:
-
-  gfile_data.rg= rg;
-  gfile_data.zg= zg;
-  gfile_data.dr= dr;
-  gfile_data.dz= dz;
-  gfile_data.psizr  = psizr;
-  gfile_data.psimag = psimag;
-  gfile_data.psibry = psibry;
-  gfile_data.psibnd = psibnd;
-
-  gfile_data.gdef.rg=  'radial coordinates of plasma grid';
-  gfile_data.gdef.zg= 'vertical coordinates of plasma grid';
-  gfile_data.gdef.dr= 'radial distance between plasma grid points';
-  gfile_data.gdef.dz= 'vertical distance between plasma grid points';
-  gfile_data.gdef.psizr = 'true total flux on grid in Wb';
-  gfile_data.gdef.psimag = 'axis flux in true Wb';
-  gfile_data.gdef.psibry = 'flux on plasma boundary';
-  gfile_data.gdef.psibnd = 'boundary flux in true Wb  (psibry also defined same)';
-
diff --git a/matlab/D3D/efit/trace_boundary.m b/matlab/D3D/efit/trace_boundary.m
deleted file mode 100644
index a2bb4343..00000000
--- a/matlab/D3D/efit/trace_boundary.m
+++ /dev/null
@@ -1,229 +0,0 @@
-function [rb,zb,rx,zx,ra,za,r0,z0,ilimited,psimag,psibry]=trace_boundary(psizr,rg,zg,limdata)
-%
-%  USAGE:   [rb,zb,rx,zx,ra,za,r0,z0,ilimited,psimag,psibry]=trace_boundary(psizr,rg,zg,limdata)
-%
-%  PURPOSE: Find boundary
-%
-%  INPUTS:  psizr
-%
-%  OUTPUTS: Coordinates of boundary: rb, zb
-%           Coordinates of x or touch point: r0,z0
-%           Coordinates of axis: ra, za
-%
-%  RESTRICTIONS:
-%
-%  METHOD: 
-%
-	
-%  VERSION @(#)trace_boundary.m	1.1 01/12/11
-%
-%  WRITTEN BY:  Anders Welander  ON	3/31/10
-%
-%  MODIFICATION HISTORY:				
-%	
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-  % Prelims
-  mu0 = .4e-6*pi;
-  twopi = 2*pi;
-  nr = length(rg); nz = length(zg);
-  dr = rg(2)-rg(1); dz = zg(2)-zg(1);
-  rb=0; zb=0; rx=0; zx=0; ra=0; za=0; r0=0; z0=0; ilimited=0; % Always return values to avoid error
-  
-  if exist('limdata','var')
-    if size(limdata,2)<size(limdata,1), limdata=limdata'; end
-    nlim = size(limdata,2);
-    rlm = interp1(1:nlim,limdata(2,:),1:.01:nlim);
-    zlm = interp1(1:nlim,limdata(1,:),1:.01:nlim);
-    psilim = interp2(rg,zg,psizr,rlm,zlm,'spline');
-  end
-  
-  % Determine whether the axis is at max or min flux
-  [psimax, imax] = max(psizr); zmax = zg(imax); [psimax, imax] = max(psimax); rmax = rg(imax); zmax=zmax(imax);
-  [psimin, imin] = min(psizr); zmin = zg(imin); [psimin, imin] = min(psimin); rmin = rg(imin); zmin=zmin(imin);
-  % Pick the extremum closest to the middle of the grid.
-  if (rmax-mean(rg))^2+(zmax-mean(zg))^2 < (rmin-mean(rg))^2+(zmin-mean(zg))^2
-    ra = rmax; za = zmax; % First stab at ra, za
-  else
-    ra = rmin; za = zmin;
-    psizr = -psizr; % This way the flux always has max at axis
-  end
- 
-  % Find weights in grid points to calculate value in a point using cubic Hermite spline (ref. wikipedia)
-  mx = [0 2 0 0;-1 0 1 0;2 -5 4 -1;-1 3 -3 1]/2;
-  neighbors = reshape([-1-nz -1 -1+nz -1+2*nz;-nz 0 nz 2*nz;1-nz 1 1+nz 1+2*nz;2-nz 2 2+nz 2+2*nz],1,16);
-  
-  % Magnetic axis
-  for j=1:50
-    iz = max(find(zg<za)); ir = max(find(rg<ra)); ia = iz+nz*(ir-1);
-    if length(ia)==0
-      disp('trace_boundary: Could not find axis.')
-      return
-    end
-    iia = ia+neighbors; % iia indexes 16 points around magnetic axis
-    if min(iia)<1 | max(iia)>nr*nz
-      disp('trace_boundary: Could not find axis.')
-      return
-    end
-    pp = psizr(iia);
-    tr = (ra-rg(ir))/dr; tz = (za-zg(iz))/dz;
-    wa = reshape(([1 tz tz^2 tz^3]*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-    war = reshape(([1 tz tz^2 tz^3]*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-    waz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-    warr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 0 2 6*tr]/dr^2*mx,1,16);
-    wazz = reshape(([0 0 2 6*tz]/dz^2*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-    warz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-    ashift_Ba = -inv([pp*warr' pp*warz';pp*warz' pp*wazz']);
-    c = ashift_Ba*[pp*war'; pp*waz']; ra = ra+c(1)/5; za = za+c(2)/5;
-  end
-  psimag = pp*wa';
-
-  % Find x-point
-  na = 2*(nr-1); psix = -1e99; rho = linspace(0,sqrt((zg(end)-zg(1))^2+(rg(end)-rg(1))^2)/2,100);
-  for ia = 1:na
-    r = ra+rho*cos(ia*2*pi/na); z = za+rho*sin(ia*2*pi/na);
-    p = interp2(rg,zg,psizr,r,z,'spline');
-    j = 5;
-    while p(j+1)<p(j) & j<99, j=j+1; end
-    if p(j) > psix
-      psix = p(j);
-      rx = r(j); zx=z(j);
-    end
-  end
-
-  % Now we are close
-  for j=1:30
-    if rx<rg(3) | rx>rg(end-3) | zx<zg(3) | zx>zg(end-3)
-      if exist('limdata','var')
-        ilimited = 1; j=99;
-      else
-        disp('trace_boundary: Could not find x-point.')
-        return
-      end
-    end
-    if ~ilimited
-      iz = max(find(zg<zx)); ir = max(find(rg<rx)); ix = iz+nz*ir;
-      iix = ix+neighbors;
-      pp = psizr(iix);
-      tr = (rx-rg(ir))/dr; tz = (zx-zg(iz))/dz;
-      wx = reshape(([1 tz tz^2 tz^3]*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-      wxr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-      wxz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-      wxrr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 0 2 6*tr]/dr^2*mx,1,16);
-      wxzz = reshape(([0 0 2 6*tz]/dz^2*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-      wxrz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-      xshift_Bx = -inv([pp*wxrr' pp*wxrz';pp*wxrz' pp*wxzz']);
-      c = xshift_Bx*[pp*wxr'; pp*wxz']; rx = rx+c(1)/5; zx = zx+c(2)/5;
-    end
-  end
-  if ilimited
-    [psibry, ilim] = max(psilim);
-    r0 = rlm(ilim); z0 = zlm(ilim);
-  else
-    psibry = pp*wx';
-    w0 = wx; r0 = rx; z0 = zx;
-  end
-
-  th0 = angle(r0-ra+sqrt(-1)*(z0-za)); dth = 2*pi/na;
-  % Trace boundary
-  rb([1 na+1]) = r0; zb([1 na+1]) = z0;
-  for ia = 2:na
-    th = th0+dth*(ia-1);
-    r = ra+rho*cos(th); z = za+rho*sin(th);
-    p = interp2(rg,zg,psizr,r,z,'spline');
-    j = 5;
-    while p(j+1)<p(j) & j<99 & p(j)>psibry, j=j+1; end
-    if p(j) > psibry
-      if j<99 % In this case we are close to the other x-point
-        rx2 = r(j); zx2 = z(j);
-	rx2a = r(min(100,j+3)); zx2a = z(min(100,j+3));
-	rx2b = r(max(1,j-3)); zx2b = z(max(1,j-3));
-	for k=1:9
-	  iz = max(find(zg<zx2)); ir = max(find(rg<rx2)); ix = iz+nz*ir;
-	  if length(ix)==0 | iz<3 | iz>nz-3 | ir<3 | ir>nr-3 % Found no x-point so set point like normal
-	    rx2 = spline(p(3:j),r(3:j),psibry);
-	    zx2 = spline(p(3:j),z(3:j),psibry);
-	    k = 9;
-	  else
-	    iix = ix+neighbors;
-	    pp = psizr(iix);
-	    tr = (rx2-rg(ir))/dr; tz = (zx2-zg(iz))/dz;
-	    wx = reshape(([1 tz tz^2 tz^3]*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	    wxr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-	    wxz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	    wxrr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 0 2 6*tr]/dr^2*mx,1,16);
-	    wxzz = reshape(([0 0 2 6*tz]/dz^2*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	    wxrz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-	    xshift_Bx = -inv([pp*wxrr' pp*wxrz';pp*wxrz' pp*wxzz']);
-	    c = xshift_Bx*[pp*wxr'; pp*wxz']; rx2 = rx2+c(1); zx2 = zx2+c(2);
-	  end
-	end
-	c = sort([rx2a rx2 rx2b]); rb(ia) = c(2);
-	c = sort([zx2a zx2 zx2b]); zb(ia) = c(2);
-      else
-        disp('trace_boundary: error in tracing boundary. Could not find flux value below psibry.')
-      end
-    else
-      rb(ia) = spline(p(3:j),r(3:j),psibry); zb(ia) = spline(p(3:j),z(3:j),psibry);
-    end
-  end
-  if ~ilimited & exist('limdata','var')
-    k = find(zlm<max(zb) & zlm>min(zb));
-    if max(psilim(k))>psibry
-      ilimited = 1;
-      [psibry, ilim] = max(psilim(k));
-      r0 = rlm(k(ilim)); z0 = zlm(k(ilim));
-      th0 = angle(r0-ra+sqrt(-1)*(z0-za)); dth = 2*pi/na;
-      % Trace boundary again because it was limited
-      rb([1 na+1]) = r0; zb([1 na+1]) = z0;
-      for ia = 2:na
-	th = th0+dth*(ia-1);
-	r = ra+rho*cos(th); z = za+rho*sin(th);
-	p = interp2(rg,zg,psizr,r,z,'spline');
-	j = 5;
-	while p(j+1)<p(j) & j<99 & p(j)>psibry, j=j+1; end
-	if p(j) > psibry
-	  if j<99 % In this case we are close to the other x-point
-            rx2 = r(j); zx2 = z(j);
-	    rx2a = r(min(100,j+3)); zx2a = z(min(100,j+3));
-	    rx2b = r(max(1,j-3)); zx2b = z(max(1,j-3));
-	    for k=1:9
-	      iz = max(find(zg<zx2)); ir = max(find(rg<rx2)); ix = iz+nz*ir;
-	      iix = ix+neighbors;
-	      pp = psizr(iix);
-	      tr = (rx2-rg(ir))/dr; tz = (zx2-zg(iz))/dz;
-	      wx = reshape(([1 tz tz^2 tz^3]*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	      wxr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-	      wxz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	      wxrr = reshape(([1 tz tz^2 tz^3]*mx)'*[0 0 2 6*tr]/dr^2*mx,1,16);
-	      wxzz = reshape(([0 0 2 6*tz]/dz^2*mx)'*[1 tr tr^2 tr^3]*mx,1,16);
-	      wxrz = reshape(([0 1 2*tz 3*tz^2]/dz*mx)'*[0 1 2*tr 3*tr^2]/dr*mx,1,16);
-	      xshift_Bx = -inv([pp*wxrr' pp*wxrz';pp*wxrz' pp*wxzz']);
-	      c = xshift_Bx*[pp*wxr'; pp*wxz']; rx2 = rx2+c(1); zx2 = zx2+c(2);
-	    end
-	    c = sort([rx2a rx2 rx2b]); rb(ia) = c(2);
-	    c = sort([zx2a zx2 zx2b]); zb(ia) = c(2);
-	  else
-            disp('trace_boundary: error in tracing boundary. Could not find flux value below psibry.')
-	  end
-	else
-	  rb(ia) = spline(p(3:j),r(3:j),psibry); zb(ia) = spline(p(3:j),z(3:j),psibry);
-	end
-      end
-    end
-  end
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-  
diff --git a/matlab/D3D/efit/write_afile.m b/matlab/D3D/efit/write_afile.m
deleted file mode 100644
index 2a4d8031..00000000
--- a/matlab/D3D/efit/write_afile.m
+++ /dev/null
@@ -1,634 +0,0 @@
-function write_afile(equil,eqversion,aday)
-%  USAGE:  write_afile(equil,eqversion,aday)
-%
-%  PURPOSE: write afiles
-%
-%  INPUTS:  equil: equilibrium on the toksys format (that is returned by read_mds_eqdsk)
-%           eqversion: (optional) source of equilibrium (default is TOKSYS)
-%           aday: (optional) the date the equilibrium was created
-%
-%  OUTPUTS: afiles to disk
-%
-%  RESTRICTIONS: 
-%
-
-%  VERSION @(#)write_afile.m	1.3 10/09/14
-%
-%  WRITTEN BY:  Anders Welander  ON	6/1/11
-%
-%  MODIFICATION HISTORY:
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-  
-  xlim = 0; ylim = 0; % fixes matlab bug
-  mu0 = 4e-7*pi;
-  
-  struct_to_ws(equil);
-  if exist('adata','var') & isstruct(adata)
-    struct_to_ws(adata);
-  end
-  if ~exist('shotnum','var')
-    shotnum = 0;
-  end
-  if ~exist('dr','var') & exist('dw','var')
-    dr = dw;
-  end
-  if ~exist('dz','var') & exist('dh','var')
-    dz = dh;
-  end
-  
-  if ~exist('uday','var')
-    uday = datestr(date,'dd-mmm-yyyy');
-    uday = uday([1:7 10:11]);
-  end
-  while length(uday)<10, uday = [' ' uday]; end
-  if ~exist('mfvers','var')
-    mfvers = datestr(date,23);
-  end
-  
-  if ~exist('tims','var')
-    if exist('time','var')
-      tims = round(1000000*time)/1000;
-    else
-      tims = 0;
-    end
-  end
-  ss = num2str(shotnum); while length(ss)<6, ss = ['0' ss]; end
-  tt = num2str(fix(tims)); while length(tt)<5, tt = ['0' tt]; end
-  if mod(tims,1), tt = [tt '_' num2str(mod(tims,1))]; end
-  filename = ['a' ss '.' tt];
-  
-  fid = fopen(filename,'w');
-  
-% 1 -------------------------- Start writing file
-  fprintf(fid,'%s %s\n',uday,mfvers);
-  
-% 2 --------------------------------------------
-  if ~exist('ktime','var'), ktime = 1; end % ktime is total number of time slices 
-  if length(num2str(shotnum))>5
-    fprintf(fid,'%7d',shotnum);
-  else
-    fprintf(fid,'%6d',shotnum);
-  end
-  fprintf(fid,'%16d\n',ktime);
-
-% 3 --------------------------------------------
-  fprintf(fid,' % 11.9E\n',tims); % time in ms
-
-% 4 --------------------------------------------
-  if ~exist('jflag','var'), jflag = 1; end
-  if ~exist('lflag','var'), lflag = 0; end % lflag is an efit error flag
-  if ~exist('limloc','var'), limloc = 'SNB'; end % Type of shape: IN , OUT, TOP, BOT, DN , SNT, SNB, MAR
-  if ~exist('mco2v','var'), mco2v = 3; end % Number of co2v items
-  if ~exist('mco2r','var'), mco2r = 2; end % Number of co2r items
-  if ~exist('fwtqa','var'), fwtqa = 0; end % Fit weight for assumed q on axis
-  if ~exist('qvfit','var'), qvfit = 0; end % A parameter for q-profile model used by fitting logic
-  if fwtqa > 0 & qvfit > 0
-    qmflag='FIX';
-  else
-    qmflag='CLC';
-  end
-  if ~exist('n1old','var'), n1old = 39; end
-  if ~exist('n1new','var'), n1new = 40; end
-  fprintf(fid,'*%8.3f',tims);
-  fprintf(fid,'%14d',jflag);
-  fprintf(fid,'%16d',lflag);
-  fprintf(fid,'%4s',limloc);
-  fprintf(fid,'%4d%4d',mco2v,mco2r);
-  fprintf(fid,'%4s',qmflag);
-  fprintf(fid,'%6d',n1old);
-  fprintf(fid,'%5d',n1new);
-  fprintf(fid,'\n ');
-  
-% 5 --------------------------------------------
-  if ~exist('rcentr','var')
-    rcentr = rzero;
-  end
-  if ~exist('tsaisq','var'), tsaisq = 0; end % saisq for 1 or several time slices
-  if ~exist('rcencm','var'), rcencm = rzero*100; end % rcentr*100 for 1 or several time slices
-  if ~exist('bcentr','var'), bcentr = bzero; end % Bt at rcentr for 1 or several time slices
-  if ~exist('pasmat','var'), pasmat = cpasma; end % Measured? plasma current for 1 or several time slices
-  skriv(fid,tsaisq);
-  skriv(fid,rcencm);
-  skriv(fid,bcentr);
-  skriv(fid,pasmat);
-  fprintf(fid,'\n ');
-
-% 6 --------------------------------------------
-  if ~exist('rout','var'), rout = 100*(max(rbbbs(1:nbbbs))+min(rbbbs(1:nbbbs)))/2; end
-  if ~exist('zout','var'), zout = 100*(max(zbbbs(1:nbbbs))+min(zbbbs(1:nbbbs)))/2; end
-  if ~exist('aout','var'), aout = 100*(max(rbbbs(1:nbbbs))-min(rbbbs(1:nbbbs)))/2; end
-  skriv(fid,cpasma);
-  skriv(fid,rout);
-  skriv(fid,zout);
-  skriv(fid,aout);
-  fprintf(fid,'\n ');
-
-% 7 --------------------------------------------
-  if ~exist('eout','var')
-    eout = 100*(max(zbbbs(1:nbbbs))-min(zbbbs(1:nbbbs)))/2/aout;
-  end
-  if ~exist('doutu','var')
-    [ztop, k] = max(zbbbs(1:nbbbs));
-    rtop = 100*rbbbs(k);
-    doutu = (rout-rtop)/aout;
-  end
-  if ~exist('doutl','var')
-    [zbot, k] = min(zbbbs(1:nbbbs));
-    rbot = 100*rbbbs(k);
-    doutl = (rout-rbot)/aout;
-  end
-  if ~exist('vout','var')
-    vout = 0;
-    for j = 1:nh
-      for k = 1:nw
-        if jphi(j,k)~=0
-	  vout = vout+2*pi*rg(k)*dr*dz*1e6;
-        end
-      end
-    end
-  end
-  skriv(fid,eout);
-  skriv(fid,doutu);
-  skriv(fid,doutl);
-  skriv(fid,vout);
-  fprintf(fid,'\n ');
-
-% 8 --------------------------------------------
-  if ~exist('rcurrt','var')
-    rcurrt = 0;
-    for j = 1:nh
-      for k = 1:nw
-	rcurrt = rcurrt+jphi(j,k)*rg(k)*100;
-      end
-    end
-    rcurrt = rcurrt/sum(sum(jphi));
-  end
-  if ~exist('zcurrt','var')
-    zcurrt = 0;
-    for j = 1:nh
-      for k = 1:nw
-	zcurrt = zcurrt+jphi(j,k)*zg(j)*100;
-      end
-    end
-    zcurrt = zcurrt/sum(sum(jphi));
-  end
-  aspect = rout/aout;
-  if ~exist('qsta','var')
-    qsta   = abs(rcentr*bcentr/mu0/cpasma*(eout^2+1)/2/aspect^2);
-  end
-  if ~exist('betat','var'),  betat  = 0; end
-  skriv(fid,rcurrt); % R of current centroid? in cm
-  skriv(fid,zcurrt); % Z of current centroid? in cm
-  skriv(fid,qsta);
-  skriv(fid,betat);
-  fprintf(fid,'\n ');
-
-% 9 --------------------------------------------
-  if ~exist('betap','var'), betap = 0; end
-  if ~exist('ali','var')
-    if exist('li','var')
-      ali = li;
-    else
-      ali = 0;
-    end
-  end
-  if ~exist('oleft','var') % Closest distance to limiter
-    oleft   = 1e10;
-  end
-  if ~exist('oright','var'),  oright  = 1e10; end
-  skriv(fid,betap);
-  skriv(fid,ali);
-  skriv(fid,oleft);
-  skriv(fid,oright);
-  fprintf(fid,'\n ');
-
-% 10 --------------------------------------------
-  if ~exist('otop','var'), otop = 1e10; end
-  if ~exist('obott','var'), obott = 1e10; end
-  if ~exist('qpsib','var')
-    psibar = linspace(0,1,nw);
-    qpsib = spline(psibar(1:nw-1),qpsi(1:nw-1),0.95);
-  end
-  if ~exist('vertn','var'),  vertn  = 0; end
-  skriv(fid,otop);
-  skriv(fid,obott);
-  skriv(fid,qpsib);
-  skriv(fid,vertn);
-  fprintf(fid,'\n ');
-  
-% 11 --------------------------------------------
-  if ~exist('rco2v','var'), rco2v = zeros(1,mco2v); end
-  if ~exist('dco2v','var'), dco2v = zeros(1,mco2v); end
-  for j = 1:mco2v
-    skriv(fid,rco2v(j));
-  end
-  fprintf(fid,'\n ');
-
-% 12 --------------------------------------------
-  for j = 1:mco2v
-    skriv(fid,dco2v(j));
-  end
-  fprintf(fid,'\n ');
-  
-% 13 --------------------------------------------
-  if ~exist('rco2r','var'), rco2r = zeros(1,mco2r); end
-  if ~exist('dco2r','var'), dco2r = zeros(1,mco2r); end
-  for j = 1:mco2r
-    skriv(fid,rco2r(j));
-  end
-  fprintf(fid,'\n ');
-
-% 14 --------------------------------------------
-  for j = 1:mco2r
-    skriv(fid,dco2r(j));
-  end
-  fprintf(fid,'\n ');
-
-% 15 --------------------------------------------
-  if ~exist('shearb','var'), shearb = 0; end
-  if ~exist('bpolav','var'), bpolav = 0; end
-  if ~exist('s1','var'),   s1   = 0; end
-  if ~exist('s2','var'),  s2  = 0; end
-  skriv(fid,shearb);
-  skriv(fid,bpolav);
-  skriv(fid,s1);
-  skriv(fid,s2);
-  fprintf(fid,'\n ');
-
-% 16 --------------------------------------------
-  if ~exist('s3','var'), s3 = 0; end
-  if ~exist('qout','var'), qout = 0; end
-  if ~exist('olefs','var'),   olefs   = 0; end
-  if ~exist('orighs','var'),  orighs  = 0; end
-  skriv(fid,s3);
-  skriv(fid,qout);
-  skriv(fid,olefs);
-  skriv(fid,orighs);
-  fprintf(fid,'\n ');
-
-% 17 --------------------------------------------
-  if ~exist('otops','var'), otops = 0; end
-  if ~exist('sibdry','var'), sibdry = 0; end
-  if ~exist('areao','var'), % Area of plasma in cm^2
-    areao   = 0;
-    for j = 1:nh
-      for k = 1:nw
-        if jphi(j,k) ~= 0
-          areao = areao+dr*dz*1e4;
-	end
-      end
-    end
-  end
-  if ~exist('wplasm','var'),  wplasm  = 0; end
-  skriv(fid,otops);
-  skriv(fid,sibdry);
-  skriv(fid,areao);
-  skriv(fid,wplasm);
-  fprintf(fid,'\n ');
-
-% 18 --------------------------------------------
-  if ~exist('terror','var'), terror = 0; end
-  if ~exist('elongm','var'), elongm = 0; end
-  if ~exist('qqmagx','var'), qqmagx = qpsi(1); end
-  if ~exist('cdflux','var'), cdflux  = 0; end
-  skriv(fid,terror);
-  skriv(fid,elongm);
-  skriv(fid,qqmagx);
-  skriv(fid,cdflux);
-  fprintf(fid,'\n ');
-
-% 19 --------------------------------------------
-  if ~exist('alpha','var'), alpha = 0; end
-  if ~exist('rttt','var'), rttt = 0; end
-  if ~exist('psiref','var'),   psiref   = 0; end
-  if ~exist('xndnt','var'),  xndnt  = 0; end
-  skriv(fid,alpha);
-  skriv(fid,rttt);
-  skriv(fid,psiref);
-  skriv(fid,xndnt);
-  fprintf(fid,'\n ');
-
-% 20 --------------------------------------------
-  if ~exist('rseps1','var'), rseps1 = 0; end
-  if ~exist('zseps1','var'), zseps1 = 0; end
-  if ~exist('rseps2','var'), rseps2 = 0; end
-  if ~exist('zseps2','var'), zseps2 = 0; end
-% THIS NEEDS TO BE FIXED to correctly handle empty objects.
-  if isempty(rseps1), rseps1=0; end
-  if isempty(zseps1), zseps1=0; end
-  if isempty(rseps2), rseps2=0; end
-  if isempty(zseps2), zseps2=0; end
-  skriv(fid,rseps1);
-  skriv(fid,zseps1);
-  skriv(fid,rseps2);
-  skriv(fid,zseps2);
-  fprintf(fid,'\n ');
-
-% 21 --------------------------------------------
-  if ~exist('sepexp','var'), sepexp = 0; end
-  if ~exist('obots','var'), obots = 0; end
-  if ~exist('btaxp','var'), btaxp = 0; end
-  if ~exist('btaxv','var'), btaxv = 0; end
-  skriv(fid,sepexp);
-  skriv(fid,obots);
-  skriv(fid,btaxp);
-  skriv(fid,btaxv);
-  fprintf(fid,'\n ');
-
-% 22 --------------------------------------------
-  if ~exist('aaq1','var'), aaq1 = 0; end
-  if ~exist('aaq2','var'), aaq2 = 0; end
-  if ~exist('aaq3','var'), aaq3 = 0; end
-  if ~exist('seplim','var'), seplim = 0; end
-  skriv(fid,aaq1);
-  skriv(fid,aaq2);
-  skriv(fid,aaq3);
-  skriv(fid,seplim);
-  fprintf(fid,'\n ');
-
-% 23 --------------------------------------------
-  if ~exist('rmagx','var'), rmagx = 100*rmaxis; end
-  if ~exist('zmagx','var'), zmagx = 100*zmaxis; end
-  if ~exist('simagx','var'), simagx = psimag/2/pi; end
-  if ~exist('taumhd','var'), taumhd = 0; end
-  skriv(fid,rmagx);
-  skriv(fid,zmagx);
-  skriv(fid,simagx);
-  skriv(fid,taumhd);
-  fprintf(fid,'\n ');
-
-% 24 --------------------------------------------
-  if ~exist('betapd','var'), betapd = 0; end
-  if ~exist('betatd','var'), betatd = 0; end
-  if ~exist('wplasmd','var'), wplasmd = 0; end
-  if ~exist('fluxx','var'), fluxx = 0; end
-  skriv(fid,betapd);
-  skriv(fid,betatd);
-  skriv(fid,wplasmd);
-  skriv(fid,fluxx);
-  fprintf(fid,'\n ');
-
-% 25 --------------------------------------------
-  if ~exist('vloopt','var'), vloopt = 0; end
-  if ~exist('taudia','var'), taudia = 0; end
-  if ~exist('qmerci','var'), qmerci = 0; end
-  if ~exist('tavem','var'), tavem = 0; end
-  skriv(fid,vloopt);
-  skriv(fid,taudia);
-  skriv(fid,qmerci);
-  skriv(fid,tavem);
-  fprintf(fid,'\n ');
-
-% 26 --------------------------------------------
-  if ~exist('nsilop','var'), nsilop = 1; end
-  if ~exist('magpri','var'), magpri = 1; end
-  if ~exist('nfcoil','var'), nfcoil = 1; end
-  if ~exist('nesum','var')
-    if exist('ecurrt','var')
-      nesum = length(ecurrt);
-      if nesum == 0
-        nesum = 1;
-	ecurrt = 0;
-      end
-    else
-      nesum = 1;
-    end
-  end
-  fprintf(fid,'%5i',nsilop);
-  fprintf(fid,'%5i',magpri);
-  fprintf(fid,'%5i',nfcoil);
-  fprintf(fid,'%5i\n ',nesum);
-
-% 27 --------------------------------------------
-  if ~exist('csilop','var'), csilop = zeros(nsilop,1); end
-  if ~exist('cmpr2','var'), cmpr2 = zeros(magpri,1); end
-  if ~exist('ccbrsp','var'), ccbrsp = zeros(nfcoil,1); end
-  if ~exist('ecurrt','var'), ecurrt = zeros(nesum,1); end
-  for j = 1:nsilop+magpri
-    if j<=nsilop
-      skriv(fid,csilop(j));
-    else
-      skriv(fid,cmpr2(j-nsilop));
-    end
-    if mod(j,4) == 0
-      fprintf(fid,'\n ');
-    end
-  end
-  if mod(j,4) ~= 0
-    fprintf(fid,'\n ');
-  end
-
-% 27+ --------------------------------------------
-  for j = 1:nfcoil
-    skriv(fid,ccbrsp(j));
-    if mod(j,4) == 0
-      fprintf(fid,'\n ');
-    end
-  end
-  if mod(j,4) ~= 0
-    fprintf(fid,'\n ');
-  end
-
-% 28+ --------------------------------------------
-  for j = 1:nesum
-    skriv(fid,ecurrt(j));
-    if mod(j,4) == 0
-      fprintf(fid,'\n ');
-    end
-  end
-  if mod(j,4) ~= 0
-    fprintf(fid,'\n ');
-  end
-
-% 29+ --------------------------------------------
-  if ~exist('pbinj','var'), pbinj = 0; end
-  if ~exist('rvsin','var'), rvsin = 0; end
-  if ~exist('zvsin','var'), zvsin = 0; end
-  if ~exist('rvsout','var'), rvsout = 0; end
-  skriv(fid,pbinj);
-  skriv(fid,rvsin);
-  skriv(fid,zvsin);
-  skriv(fid,rvsout);
-  fprintf(fid,'\n ');
-  
-  if ~exist('zvsout','var'), zvsout = 0; end
-  if ~exist('vsurfa','var'), vsurfa = 0; end
-  if ~exist('wpdot','var'), wpdot = 0; end
-  if ~exist('wbdot','var'), wbdot = 0; end
-  skriv(fid,zvsout);
-  skriv(fid,vsurfa);
-  skriv(fid,wpdot);
-  skriv(fid,wbdot);
-  fprintf(fid,'\n ');
-  
-  if ~exist('slantu','var'), slantu = 0; end
-  if ~exist('slantl','var'), slantl = 0; end
-  if ~exist('zuperts','var'), zuperts = 0; end
-  if ~exist('chipre','var'), chipre = 0; end
-  skriv(fid,slantu);
-  skriv(fid,slantl);
-  skriv(fid,zuperts);
-  skriv(fid,chipre);
-  fprintf(fid,'\n ');
-  
-  if ~exist('cjor95','var'), cjor95 = 0; end
-  if ~exist('pp95','var'), pp95 = 0; end
-  if ~exist('ssep','var'), ssep = 0; end
-  if ~exist('yyy2','var'), yyy2 = 0; end
-  skriv(fid,cjor95);
-  skriv(fid,pp95);
-  skriv(fid,ssep);
-  skriv(fid,yyy2);
-  fprintf(fid,'\n ');
-  
-  if ~exist('xnnc','var'), xnnc = 0; end
-  if ~exist('cprof','var'), cprof = 0; end
-  if ~exist('oring','var'), oring = 0; end
-  if ~exist('cjor0','var'), cjor0 = 0; end
-  skriv(fid,xnnc);
-  skriv(fid,cprof);
-  skriv(fid,oring);
-  skriv(fid,cjor0);
-  fprintf(fid,'\n ');
-  
-  if ~exist('fexpan','var'), fexpan = 0; end
-  if ~exist('qqmin','var'), qqmin = min(qpsi); end
-  if ~exist('chigamt','var'), chigamt = 0; end
-  if ~exist('ssi01','var'), ssi01 = 0; end
-  skriv(fid,fexpan);
-  skriv(fid,qqmin);
-  skriv(fid,chigamt);
-  skriv(fid,ssi01);
-  fprintf(fid,'\n ');
-  
-  if ~exist('fexpvs','var'), fexpvs = 0; end
-  if ~exist('sepnose','var'), sepnose = 0; end
-  if ~exist('ssi95','var'), ssi95 = 0; end
-  if ~exist('rqqmin','var'), rqqmin = 0; end
-  skriv(fid,fexpvs);
-  skriv(fid,sepnose);
-  skriv(fid,ssi95);
-  skriv(fid,rqqmin);
-  fprintf(fid,'\n ');
-  
-  if ~exist('cjor99','var'), cjor99 = 0; end
-  if ~exist('cjlave','var'), cjlave = 0; end
-  if ~exist('rmidin','var') % min(rbbbs) at zbbbs=0
-    k = find(zbbbs(1:nbbbs-2).*zbbbs(2:nbbbs-1)<=0);
-    [dum, kk] = sort(rbbbs(k)); k = k(kk(1));
-    rmidin = interp1(zbbbs(k+[0 1]),rbbbs(k+[0 1]),0);
-  end
-  if ~exist('rmidout','var')
-    k = find(zbbbs(1:nbbbs-2).*zbbbs(2:nbbbs-1)<=0);
-    [dum, kk] = sort(rbbbs(k)); k = k(kk(end));
-    rmidout = interp1(zbbbs(k+[0 1]),rbbbs(k+[0 1]),0);
-  end
-  skriv(fid,cjor99);
-  skriv(fid,cjlave);
-  skriv(fid,rmidin);
-  skriv(fid,rmidout);
-  fprintf(fid,'\n ');
-  
-  if ~exist('psurfa','var'), psurfa = 0; end
-  if ~exist('peak','var'), peak = 0; end
-  if ~exist('dminux','var'), dminux = 0; end
-  if ~exist('dminlx','var'), dminlx = 0; end
-  skriv(fid,psurfa);
-  skriv(fid,peak);
-  skriv(fid,dminux);
-  skriv(fid,dminlx);
-  fprintf(fid,'\n ');
-  
-  if ~exist('dolubaf','var'), dolubaf = 0; end
-  if ~exist('dolubafm','var'), dolubafm = 0; end
-  if ~exist('diludom','var'), diludom = 0; end
-  if ~exist('diludomm','var'), diludomm = 0; end
-  skriv(fid,dolubaf);
-  skriv(fid,dolubafm);
-  skriv(fid,diludom);
-  skriv(fid,diludomm);
-  fprintf(fid,'\n ');
-  
-  if ~exist('ratsol','var'), ratsol = 0; end
-  if ~exist('rvsiu','var'), rvsiu = 0; end
-  if ~exist('zvsiu','var'), zvsiu = 0; end
-  if ~exist('rvsid','var'), rvsid = 0; end
-  skriv(fid,ratsol);
-  skriv(fid,rvsiu);
-  skriv(fid,zvsiu);
-  skriv(fid,rvsid);
-  fprintf(fid,'\n ');
-  
-  if ~exist('zvsid','var'), zvsid = 0; end
-  if ~exist('rvsou','var'), rvsou = 0; end
-  if ~exist('zvsou','var'), zvsou = 0; end
-  if ~exist('rvsod','var'), rvsod = 0; end
-  skriv(fid,zvsid);
-  skriv(fid,rvsou);
-  skriv(fid,zvsou);
-  skriv(fid,rvsod);
-  fprintf(fid,'\n ');
-  
-  if ~exist('zvsod','var'), zvsod = 0; end
-  if ~exist('condno','var'), condno = 0; end
-  if ~exist('psin32','var'), psin32 = 0; end
-  if ~exist('psin21','var'), psin21 = 0; end
-  skriv(fid,zvsod);
-  skriv(fid,condno);
-  skriv(fid,psin32);
-  skriv(fid,psin21);
-  fprintf(fid,'\n ');
-
-  if ~exist('rq32in','var'), rq32in = 0; end
-  if ~exist('rq21top','var'), rq21top = 0; end
-  if ~exist('chilibt','var'), chilibt = 0; end
-  if ~exist('ali3','var'), ali3 = 0; end
-  skriv(fid,rq32in);
-  skriv(fid,rq21top);
-  skriv(fid,chilibt);
-  skriv(fid,ali3);
-  fprintf(fid,'\n ');
-
-  fprintf(fid,'\n ');
-
-  if ~exist('header','var'), header = blanks(42); end
-  if ~exist('fit_type','var'), fit_type = blanks(3); end
-  fprintf(fid,' %42s',header);
-  fprintf(fid,' %3s',fit_type);
-    
-  fclose(fid);
-  return
-  
-  % function to print to file EXACTLY like Fortran's write(fid,1040) does
-  function skriv(fid,val)
-  if val >= 0
-    fprintf(fid,' %11.9E',val);
-  else
-    fprintf(fid,'%11.9E',val);
-  end
-  return
-  
-  % function copied from efit code
-  function dismin = dslant(x,y,np,xmin,xmax,ymin,ymax,x1,y1,x2,y2)
-  dismin=inf;
-  delx=x2-x1;
-  dely=y2-y1;
-  dels=sqrt(delx^2+dely^2);
-  nn=dels/0.002;
-  nn=max(5,nn);
-  delx=delx/(nn-1);
-  dely=dely/(nn-1);
-  for j=1:nn
-    xw=x1+delx *(j-1);
-    yw=y1+dely *(j-1);
-    for m=1:np
-      if x(m) > xmin & x(m)<xmax & y(m) > ymin & y(m) < ymax
-        disw=sqrt((xw-x(m))^2+(yw-y(m))^2);
-        dismin=min(dismin,disw);
-      end
-    end
-  end
-  dismin=dismin*100;
-  return
-
diff --git a/matlab/D3D/efit/write_cc_file.m b/matlab/D3D/efit/write_cc_file.m
deleted file mode 100644
index ebdb778b..00000000
--- a/matlab/D3D/efit/write_cc_file.m
+++ /dev/null
@@ -1,55 +0,0 @@
-function [cc_filename,ier] = write_cc_file(eq);
-%  USAGE:  [cc_filename,ier] = write_cc_file(equilibria);
-%
-%  PURPOSE: return absolute path to newly generated cc_file
-%
-%  INPUTS:  filename:name of geqdsk file
-%
-%  OUTPUTS: cc_filename: string containing name of cc_file
-%
-%  RESTRICTIONS: 
-%
-%  METHOD:   
-%
-%     cc_file=  coil current file name [cc=load(cc_file)] or coil current vector
-%               use when coil currents not available from efit (or to override)
-%
-%               ohmic coil current is first, then poloidal shaping currents
-%		(units = MA-turns)
-%
-%  WRITTEN BY:  Matthew J. Lanctot
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-  
-  %inits
-  cc_filename='';
-  ier = 0;
-
-  cc_filename = ['cc' num2str(eq.shotnum) '.' sprintf('%05g',eq.time*1e3)];
-  
-  if isfield(eq,'brsp')
-    brsp = eq.brsp;	%have to fit PF coil, even with small weight
-  else 
-    ier=1;
-  end
-  
-  if isfield(eq,'ecurrt')
-    ecurrt = eq.ecurrt; %have to fit OH coil, even with small weight
-  else 
-    ier=2;
-  end 
- 
-  switch ier
-    case 1
-      warning('gfile does not contain brsp data. were PF coils fit?') 
-      return   
-    case 2
-      warning('gfile does not contain ecurrt data. was OH coil fit?')
-      return
-    otherwise %write cc file
-      nf = length(unique( eq.fcid));
-      data = [ecurrt brsp(1:nf)']';
-      dlmwrite(cc_filename,data,'\t',0,0,14);
-  end
-  
-  
diff --git a/matlab/D3D/efit/write_eqdsk_efit.m b/matlab/D3D/efit/write_eqdsk_efit.m
deleted file mode 100644
index 6ddb7334..00000000
--- a/matlab/D3D/efit/write_eqdsk_efit.m
+++ /dev/null
@@ -1,65 +0,0 @@
-function [equilibria, neq, eqraw, cc_filename] = write_eqdsk(shotnum,tefit,efit_source,tokamak,write_cc)
-%  USAGE: [equilibria, neq, eqraw] = write_eqdsk(shotnum,tefit,efit_source,tokamak,write_cc)
-%
-%  PURPOSE: Retrieves eqdsk data from MDS and saves g,a files to dir
-%
-%  INPUTS:
-%
-%  	 shotnum: Shotnumber for equilibrium eg. 146970
-%        tefit: time of efit, can be two element array specifying time range as in read_eq
-%  	 efit_source: EFIT source eg. 'EFIT01'
-%  	 tokamak: device name eg. 'd3d'
-%
-%  OUTPUTS:  eq = equilibrium data on toksys form, that can be used with
-%              cc_efit_to_tok and build_tokamak_system
-%            neq = number of equilibria returned
-%            eqraw = 'raw' eq data on original form before conversion to toksys convention
-%
-%  RESTRICTIONS: 
-%
-%  METHOD:  
-%
-%
-%  WRITTEN BY:  Matthew J. Lanctot 
-%
-%  MODIFICATION HISTORY:
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-  
-
-
-[equilibria, neq, eqraw] = read_eq(shotnum,tefit,efit_source,tokamak);
-
-cc_filename='';
-if write_cc
-  if neq==1
-    [cc_filename,ier] = write_cc_file(equilibria);
-  else
-    for k=1:neq
-      [cc_filename{k},ier] = write_cc_file(equilibria.gdata(k));
-    end
-  end
-end
-
-if isfield(equilibria,'gdata')
-  % to simply gfile names, do not support sub-ms time resolution if times are unique
-  uttmp = unique(equilibria.time-mod(equilibria.time,1e-3));
-  if length(uttmp)==length(equilibria.time)
-    equilibria.time = equilibria.time-mod(equilibria.time,1e-3);
-    fix_gtime = 1;
-  else
-    fix_gtime = 0;
-  end
- 
-  %write files
-  for k=1:length(equilibria.time)
-    if fix_gtime==1
-      equilibria.gdata(k).time=equilibria.gdata(k).time-mod(equilibria.gdata(k).time,1e-3);
-    end
-    write_gfile(equilibria.gdata(k));
-    % afile from read_eq doesn't have rzero
-    %if isfield(equilibria,'adata'), write_afile(equilibria.adata(k));end
-  end
-else
-  write_gfile(equilibria);
-end
diff --git a/matlab/D3D/efit/write_gfile.m b/matlab/D3D/efit/write_gfile.m
deleted file mode 100644
index 1c7c9045..00000000
--- a/matlab/D3D/efit/write_gfile.m
+++ /dev/null
@@ -1,320 +0,0 @@
-function write_gfile(eq)
-%  USAGE:  write_gfile(eq)
-%
-%  PURPOSE: write gfiles
-%
-%  INPUTS:  eq: equilibrium on the toksys format (that is returned by read_mds_eqdsk)
-%
-%  OUTPUTS: gfiles to disk
-%
-%  RESTRICTIONS: 
-%
-
-%  VERSION @(#)write_gfile.m	1.3 09/17/12
-%
-%  WRITTEN BY:  Anders Welander  ON	6/1/11
-%
-%  MODIFICATION HISTORY:
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-  
-  xlim = 0; ylim = 0; % fixes matlab bug
-  
-  struct_to_ws(eq);
-  
-  if ~exist('pasmat','var')
-    pasmat = cpasma; % pasmat is perhaps measured plasma current
-  end
-
-  if ~exist('ecurrt','var')
-    ecurrt = [];
-  end
-
-  tims = round(1000000*time)/1000;
-  ss = num2str(shotnum); while length(ss)<6, ss = ['0' ss]; end
-  tt = num2str(fix(tims)); while length(tt)<5, tt = ['0' tt]; end
-  if mod(tims,1), tt = [tt '_' num2str(mod(tims,1))]; end
-  filename = ['g' ss '.' tt];
-  
-  fid = fopen(filename,'w');
-  
-  fprintf(fid,'  EFITD    ');
-  fprintf(fid,datestr(now,23));
-  
-  str = num2str(shotnum);
-  while length(str)<6, str = [' ' str]; end
-  str = ['    #' str];
-  fprintf(fid,str);
-  
-  str = [num2str(tims) 'ms'];
-  while length(str)<8, str = [' ' str]; end  
-  str = [str blanks(8)];
-  fprintf(fid,str);
-  
-  fprintf(fid,'%4d%4d%4d\n',3,nw,nh);
-  
-  if ~exist('xdim','var')
-    xdim = rg(end)-rg(1);
-  end
-  if ~exist('zdim','var')
-    zdim = zg(end)-zg(1);
-  end
-  if ~exist('zmid','var')
-    zmid = (zg(end)+zg(1))/2;
-  end
-  fprintf(fid,'% 11.9E',xdim);
-  fprintf(fid,'% 11.9E',zdim);
-  fprintf(fid,'% 11.9E',rzero);
-  fprintf(fid,'% 11.9E',rg(1));
-  fprintf(fid,'% 11.9E\n',zmid);
-
-  fprintf(fid,'% 11.9E',rmaxis);
-  fprintf(fid,'% 11.9E',zmaxis);
-  fprintf(fid,'% 11.9E',ssimag);
-  fprintf(fid,'% 11.9E',ssibry);
-  fprintf(fid,'% 11.9E\n',bzero); % bcentr = bzero?
-  
-  xdum = 0; % introducing xdum...
-  
-  fprintf(fid,'% 11.9E',cpasma);
-  fprintf(fid,'% 11.9E',ssimag);
-  fprintf(fid,'% 11.9E',xdum);
-  fprintf(fid,'% 11.9E',rmaxis);
-  fprintf(fid,'% 11.9E\n',xdum);
-  
-  fprintf(fid,'% 11.9E',zmaxis);
-  fprintf(fid,'% 11.9E',xdum);
-  fprintf(fid,'% 11.9E',ssibry);
-  fprintf(fid,'% 11.9E',xdum);
-  fprintf(fid,'% 11.9E\n',xdum);
-  
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',fpol(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',pres(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',-sign(pasmat)*ffprim(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',-sign(pasmat)*pprime(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  for j = 1:nh
-    for k = 1:nw
-      fprintf(fid,'% 11.9E',psirz(k,j));
-      if mod((j-1)*nw+k,5) == 0, fprintf(fid,'\n'); end
-    end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',qpsi(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  
-  if ~exist('limitr','var')
-    limitr = length(xlim);
-  end  
-  fprintf(fid,'% 5d',nbbbs);
-  fprintf(fid,'% 5d\n',limitr);
-  for j = 1:nbbbs
-    fprintf(fid,'% 11.9E',rbbbs(j));
-    if mod(2*j-1,5) == 0, fprintf(fid,'\n'); end
-    fprintf(fid,'% 11.9E',zbbbs(j));
-    if mod(2*j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(2*nbbbs,5)~=0
-    fprintf(fid,'\n');
-  end
-  for j = 1:limitr
-    fprintf(fid,'% 11.9E',xlim(j));
-    if mod(2*j-1,5) == 0, fprintf(fid,'\n'); end
-    fprintf(fid,'% 11.9E',ylim(j));
-    if mod(2*j,5) == 0, fprintf(fid,'\n'); end
-  end
-  
-  % Rotation information
-  if ~exist('kvtor','var')
-    kvtor = 0;
-  end  
-  if ~exist('rvtor','var')
-    rvtor = 1.7;
-  end  
-  if ~exist('nmass','var')
-    nmass = 0;
-  end  
-  if mod(2*limitr,5)~=0
-    fprintf(fid,'\n');
-  end
-
-  fprintf(fid,'% 5d',kvtor);
-  fprintf(fid,'% 11.9E',rvtor);
-  fprintf(fid,'% 5d\n',nmass);
-  
-  % write out rotation information
-  if kvtor>0
-    for j = 1:nw
-      fprintf(fid,'% 11.9E',pressw(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    fprintf(fid,'\n');
-    for j = 1:nw
-      fprintf(fid,'% 11.9E',-sign(pasmat)*pwprim(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    fprintf(fid,'\n');
-  end
-  
-  % write out ion mass density profile if available
-  if nmass>0
-    for j = 1:nw
-      fprintf(fid,'% 11.9E',dmion(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end    
-    fprintf(fid,'\n');
-  end  
-  
-  if ~exist('rhovn','var')
-    rhovn(1:nw) = 0;
-  end  
-  for j = 1:nw
-    fprintf(fid,'% 11.9E',rhovn(j));
-    if mod(j,5) == 0, fprintf(fid,'\n'); end
-  end
-  if mod(j,5), fprintf(fid,'\n'); end
-  
-  if ~exist('keecur','var')
-    keecur = 0;
-  end
-  fprintf(fid,'% 5d\n',keecur);
-  if keecur>0
-    for j = 1:nw
-      fprintf(fid,'% 11.9E',-sign(pasmat)*epoten(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    if mod(j,5), fprintf(fid,'\n'); end
-  end
-  
-  if exist('jphi','var') % if true then iplcout was 1
-    fprintf(fid,'% 5d',nw);
-    fprintf(fid,'% 5d',nh);
-    fprintf(fid,'% 5d',shotnum);
-    fprintf(fid,'% 5d\n',tims);
-
-    fprintf(fid,'% 11.9E',rg(1));
-    fprintf(fid,'% 11.9E',rg(end));
-    fprintf(fid,'% 11.9E',zg(1));
-    fprintf(fid,'% 11.9E\n',zg(end));
-    
-    if ~exist('nfcoil','var')
-      nfcoil = length(brsp);
-    end
-    for j = 1:nfcoil
-      fprintf(fid,'% 11.9E',brsp(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    if mod(j,5), fprintf(fid,'\n'); end
-    
-    if ~exist('nesum','var')
-      nesum = length(ecurrt);
-    end
-    for j = 1:nesum
-      fprintf(fid,'% 11.9E',ecurrt(j));
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    if mod(j,5), fprintf(fid,'\n'); end
-    
-    for j = 1:nw*nh
-      fprintf(fid,'% 11.9E',pcurrt(j)); % Need to check r,z order
-      if mod(j,5) == 0, fprintf(fid,'\n'); end
-    end
-    if mod(j,5), fprintf(fid,'\n'); end
-  end
-  
-  out1{ 1,1} = 'ishot';
-  out1{ 1,2} = 'shot';
-  out1{ 2,1} = 'itime';
-  out1{ 2,2} = 'tims';
-  out1{ 3,1} = 'betap0';
-  out1{ 3,2} = 'betap';
-  out1{ 4,1} = 'btor';
-  out1{ 4,2} = 'bzero';
-  out1{ 5,1} = 'rcentr';
-  out1{ 5,2} = 'rzero';
-  out1{ 6,1} = 'rbdry';
-  out1{ 6,2} = 'rbbbs';
-  out1{ 7,1} = 'zbdry';
-  out1{ 7,2} = 'zbbbs';
-  out1{ 8,1} = 'nbdry';
-  out1{ 8,2} = 'nbbbs';
-  out1{ 9,1} = 'mw';
-  out1{ 9,2} = 'nw';
-  out1{ 9,3} = 'nr';
-  out1{10,1} = 'mh';
-  out1{10,2} = 'nh';
-  out1{10,3} = 'nz';
-  out1{11,1} = 'psirz';
-  out1{12,1} = 'xlim';
-  out1{13,1} = 'ylim';
-  out1{14,1} = 'limitr';
-  out1{15,1} = 'brsp';
-  out1{15,2} = 'cc';
-  out1{15,3} = 'ic';
-
-  fprintf(fid,[' &OUT1' 10]);
-  for i = 1:size(out1,1)
-    S = upper(out1{i,1});
-    for j = 1:size(out1,2)
-      s = out1{i,j};
-      if ~isempty(s) & exist(s,'var')
-        dum = eval(s);
-	n = min(size(dum));
-	for k = 1:numel(dum)
-	  if k == 1
-	    V = [' ' S ' = '];
-	  else
-	    V = 32+zeros(1,length(S)+3);
-	  end
-	  if dum(k) > 0
-	    x = ' ';
-	  else
-	    x = '';
-	  end
-	  m = num2str(dum(k));
-	  if isa(dum,'logical')
-	    if dum(k)
-	      m = 'T';
-	    else
-	      m = 'F';
-	    end
-	  end
-	  if k/n == round(k/n) % Add new line at the end
-	    if (k-1)/n == round((k-1)/n) % Add V at beginning of line
-	      fprintf(fid,[V x m ',' 10]);
-	    else
-	      fprintf(fid,[x m ', ' 10]);
-	    end
-	  else
-	    if (k-1)/n == round((k-1)/n) % Add V at beginning of line
-	      fprintf(fid,[V x m ',']);
-	    else
-	      fprintf(fid,[x m ', ']);
-	    end
-	  end
-	end
-	break % Don't look for alternatives
-      end
-    end
-  end
-  fprintf(fid,[' /' 10]);
-  
-  fclose(fid);
diff --git a/matlab/D3D/efit/write_kfile.m b/matlab/D3D/efit/write_kfile.m
deleted file mode 100644
index 2cecd1c8..00000000
--- a/matlab/D3D/efit/write_kfile.m
+++ /dev/null
@@ -1,190 +0,0 @@
-function write_kfile(IN1,INWANT,INS,efitin)
-%  USAGE:  write_kfile(eq) % Creates k file from TokSys equilibrium
-%  Alternatively, create k file with exact content of variables:
-%  write_kfile(IN1,INWANT,INS,efitin)
-%
-%  PURPOSE: write k-files
-%
-%  INPUTS:  eq, TokSys equilibrium with fields
-%  List shows: field name, alternative names, description
-%  Note that some alternatives aren't exactly the same things
-%shot, a shot number
-%time, a time in seconds
-%plasma, rog, cpasma, MEASURED total plasma current [A]
-%expmp2, bp MEASURED signals from magnetic probes
-%coils, fl, MEASURED signals from flux loops
-%btor, bzero, toroidal field at rcentr, rzero
-%rcentr, rzero, radius where btor, bzero is measured
-%psibit, physics units per digitizer bit for flux loops
-%bitmpi, physics units per digitizer bit for probes
-%bitip, physics units per digitizer bit for rogowski
-%bitfc, physics units per digitizer bit for F coil currents
-%bitec, physics units per digitizer bit for E coil currents
-%tgamma, tangent for measured pitch angles
-%sgamma, uncertainties in tgamma
-%fitdelz, boolean flag
-
-
-%ISHOT, a shot number
-%ITIME, a time in ms
-%PLASMA, measured total plasma current [A]
-%EXPMP2, measured signals from magnetic probes
-%COILS, measured signals from flux loops
-%BTOR, toroidal field at RCENTR
-%RCENTR, radius where BTOR measured
-%PSIBIT, physics units per digitizer bit for flux loops
-%BITMPI, physics units per digitizer bit for probes
-%BITIP, physics units per digitizer bit for rogowski
-%BITFC, physics units per digitizer bit for F coil currents
-%BITEC, physics units per digitizer bit for E coil currents
-%tgamma, tangent for measured pitch angles
-%sgamma, uncertainties in tgamma
-%fitdelz, boolean flag
-
-%MORE VARIABLES
-%timeu, some other time, default 0
-%qvfit, ?, default 0
-%fwtsi, fitting weights for flux loops
-%fwtcur, fitting weight for rogowski?, default 1
-%limitr, ?, default -nw?
-%fwtmp2, fitting weights for magnetic probes
-%kffcur, number of knots in spline for ffprim
-%kppcur, number of knots in spline for pprime
-%fwtqa, ?, default 0
-%ierchk, ?, default 1
-%fwtbp, ?, default 0
-%serror, ?, default 3e-2
-%nextra, ?, default 2
-%scrape, ?, default 4e-2
-%itrace, ?, default 1
-%xltype, ?, default 0
-%rcentr, rzero, radius where btor, bzero is measured
-%
-%
-
-%  OUTPUTS: kfiles to disk
-%
-%  RESTRICTIONS: 
-%
-
-%  WRITTEN BY:  Anders Welander ON 2016-05-31
-%
-%  MODIFICATION HISTORY:
-% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-if nargin == 1
-  struct_to_ws(IN1);
-
-  if ~exist('ishot','var') & exist('shot','var')
-    ishot = shot;
-  end
-
-  tims = round(1000000*time)/1000;
-  ss = num2str(ishot); while length(ss)<6, ss = ['0' ss]; end
-  tt = num2str(fix(tims)); while length(tt)<5, tt = ['0' tt]; end
-  if mod(tims,1), tt = [tt '_' num2str(mod(tims,1))]; end
-  filename = ['k' ss '.' tt];
-  
-  in1{ 1,1} = 'ishot';
-  in1{ 1,2} = 'shot';
-  in1{ 2,1} = 'itime';
-  in1{ 2,2} = 'tims';
-  in1{ 3,1} = 'plasma';
-  in1{ 3,2} = 'rog';
-  in1{ 3,3} = 'cpasma';
-  in1{ 4,1} = 'expmp2';
-  in1{ 4,2} = 'bp';
-  in1{ 5,1} = 'coils';
-  in1{ 5,2} = 'fl';
-  in1{ 6,1} = 'btor';
-  in1{ 6,2} = 'bzero';
-  in1{ 7,1} = 'rcentr';
-  in1{ 7,2} = 'rzero';
-  in1{ 8,1} = 'psibit';
-  in1{ 9,1} = 'bitmpi';
-  in1{10,1} = 'bitip';
-  in1{11,1} = 'bitfc';
-  in1{12,1} = 'bitec';
-  in1{13,1} = 'tgamma';
-  in1{14,1} = 'sgamma';
-
-  inwant{1,1} = 'fitdelz';
-  
-  
-  fid = fopen(filename,'w');
-  
-  fprintf(fid,['&IN1 ' 10]);
-  for i = 1:size(in1,1)
-    S = upper(in1{i,1});
-    for j = 1:size(in1,2)
-      s = in1{i,j};
-      if ~isempty(s) & exist(s,'var')
-        dum = eval(s);
-	for k = 1:numel(dum)
-	  if k == 1
-	    V = [S ' = '];
-	  else
-	    V = 32+zeros(1,length(S)+3);
-	  end
-	  if dum(k) > 0
-	    x = ' ';
-	  else
-	    x = '';
-	  end
-	  m = num2str(dum(k));
-	  if isa(dum,'logical')
-	    if dum(k)
-	      m = 'T';
-	    else
-	      m = 'F';
-	    end
-	  end
-	  fprintf(fid,[V x m ',' 10]);
-	end
-	break % Don't look for alternatives
-      end
-    end
-  end
-  fprintf(fid,['/' 10]);
-  
-  fprintf(fid,['&INWANT ' 10]);
-  for i = 1:size(inwant,1)
-    S = upper(inwant{i,1});
-    for j = 1:size(inwant,2)
-      s = inwant{i,j};
-      if ~isempty(s) & exist(s,'var')
-        dum = eval(s);
-	for k = 1:numel(dum)
-	  if k == 1
-	    V = [S ' = '];
-	  else
-	    V = 32+zeros(1,length(S)+3);
-	  end
-	  if dum(k) > 0
-	    x = ' ';
-	  else
-	    x = '';
-	  end
-	  m = num2str(dum(k));
-	  if isa(dum,'logical')
-	    if dum(k)
-	      m = 'T';
-	    else
-	      m = 'F';
-	    end
-	  end
-	  fprintf(fid,[V x m ',' 10]);
-	end
-	break % Don't look for alternatives
-      end
-    end
-  end
-  fprintf(fid,['/' 10]);
-    
-  fclose(fid);
-  
-else
-  % Create namelist files for variables 
-
-end
diff --git a/matlab/D3D/mdsplus_func/Contents.m b/matlab/D3D/mdsplus_func/Contents.m
deleted file mode 100644
index 78e3cb2e..00000000
--- a/matlab/D3D/mdsplus_func/Contents.m
+++ /dev/null
@@ -1,11 +0,0 @@
-% MDSplus data manipulation functions.
-%
-% getmds        - get data from the MDSplus database
-% get_mds_tree  - get entire tree out of mdsplus
-% mdsclose      - close an MDSplus tree
-% mdsconnect    - connect to MDSplus server
-% mdsdisconnect - disconnect from MDSplus server
-% mdsopen       - open an MDSplus tree
-% mdsput        - put data in MDSplus database
-% mds_sub_tree	- 
-% mdsvalue      - get data from MDSplus database
diff --git a/matlab/D3D/mdsplus_func/get_mds_tree.m b/matlab/D3D/mdsplus_func/get_mds_tree.m
deleted file mode 100644
index 4bf12703..00000000
--- a/matlab/D3D/mdsplus_func/get_mds_tree.m
+++ /dev/null
@@ -1,291 +0,0 @@
-function  [data,ier] = get_mds_tree(shot, tree, server, toupper, verbose)
-%
-%  SYNTAX:
-%         data= get_mds_tree(shot, tree, server, toupper,verbose); % full call
-%         data= get_mds_tree(shot);                        % defaults to DIII-D
-%         data= get_mds_tree(shot, 'EFIT01', 'NSTX');      % for NSTX
-%         data= get_mds_tree(shot, 'NB', 'DIII-D');        % example other tree
-%
-%  PURPOSE: Get entire selected mds tree from mdsplus database. 
-%
-%  INPUT: <default>
-%    shot    = shot number
-%    tree    = tree to use <'EFIT01'>
-%    server  = MDS+ database to use: 'DIII-D'(default),'NSTX','EAST',
-%		'THOR', 'OPEN'(assumes mdsconnect already called).  Other 
-%		inputs invoke mdsconnect(server) to connect to server.
-%    toupper = 1= all variables made upper case, =-1 all var. made lower case
-%              [0]= no change, variables made depending on mds case (typical UC)
-%    verbose = set to 1 to get diagnostic prints during execution
-%              <1> server= 'NSTX' or 'EAST'; (since can take some time to get)
-%              <0> server= 'DIII-D' & all others;
-%
-%  OUTPUT:
-%    data  = structure containing all data in MDS+ tree, with same tree 
-%	     structure except that 'TOP' replaced by 'tree'
-%            See: data.allnames for list of all variables in full structure 
-%    Some Extra items added to structure (all lower case)
-%      data.id    =   sting array of important data identifyer enf
-%      data.shot  =   shot number
-%      data.server=   MDS+ server
-%      data.allnames= list of variables in structure with path relative to "TOP"
-%      data.mdsnames= list of variables in structure with full mds path
-%    ier = error code
-% 
-%  WRITTEN BY:  Jim Leuer    ON      3/1/05 (original name get_mds_tree)
-%  taken from get_mds_tree.m uses sub-structure to store
-%
-%  USES:   eq_mod
-%  To see MDS structure on HYDRA run traverser
-%  tested on DIII-D and NSTX data and should work for JET data but not tested
-% 
-%  CHANGE LOG:  SMF 20140923 - Changed getnci call to use nid_numbers due to 
-%                              fullpath not accepting wildcards.
-%
-% ==========================================================================
-
-  if nargin==0
-     disp('% get_mds_tree needs at least a "shot" argument')
-     help get_mds_tree
-     return
-  end
-  if nargin < 4
-     toupper=0;
-  end
-  if nargin < 3
-     server='DIII-D';
-  end
-  if nargin < 2
-     tree= 'EFIT01';
-  end
-  if nargin < 5
-    if strcmp(server,'NSTX') | strcmp(server,'EAST')
-     verbose=1;
-    else
-     verbose=0;
-    end
-  end
-  server = upper(server);
-
-  if isempty(toupper)  toupper= 0;       end
-  if isempty(server)   server= 'DIII-D'; end
-  if isempty(tree)     tree= 'EFIT01';   end
-  if isempty(verbose) 
-    if strcmp(server,'NSTX') | strcmp(server,'EAST')
-     verbose=1;
-    else
-     verbose=0;
-    end
-  end
-  
-% -----------------------------------------------
-% Open and check conneciton to MDSPLUS data base:
-  tic
-  ier= 0; status=1;
-  mdsisopen=0;
-% [shoto,status]=mdsopen('atlas.gat.com::EFIT01',shot)
-  if strcmp(server,'DIII-D') | strcmp(server,'DIIID') | strcmp(server,'D3D')
-    status = mdsconnect('atlas.gat.com');
-  elseif strcmp(server,'EAST')
-    status = mdsconnect('202.127.204.12');	% NOT SURE THIS WORKS
-  elseif strcmp(server,'NSTX')
-    status = mdsconnect('skylark.pppl.gov:8501');
-  elseif strcmp(server,'KSTAR')
-    if(strcmp(getenv('HOST'),'datagrid') | strcmp(getenv('HOST'),'ksim2')) % On site at NFRI
-       mds_server =  '172.17.100.200:8300';
-    else % Offsite
-%        mds_server = '203.230.125.212:8005'; 	% not able to connect to NFRI server directly
-        mds_server = 'kd';
-    end    
-    status = mdsconnect(mds_server);
-  elseif strcmp(server,'THOR')
-    status = mdsconnect('thor');
-  elseif strcmp(server,'VIDAR')
-    status = mdsconnect('vidar');
-  elseif strcmp(server,'OPEN')  
-    disp(['get_mds_tree: Assuming MDSCONNECT already called  and MDS is ',server])
-    status = 1;
-  else  
-    disp(['get_mds_tree: Attempting to connect to server = ',server])
-    status = mdsconnect(server);
-  end
-
-  if ~mod(status,2)
-    ier=1;
-    disp(['ERROR get_mds_tree: unable to connect to ' server])
-    data=[];
-    return;
-  end
-
-% Calling this twice seems to work better for NSTX (who knows why?)
-  [shoto,status]=mdsopen(tree,shot);
-  if(~mod(status,2))
-     [shoto,status]=mdsopen(tree,shot);
-  end
-  if ~mod(status,2)
-    ier=1;
-    disp(['ERROR get_mds_tree: unable to open ' tree ' for shot '  ...
-        int2str(shot)])
-    data=[];
-    status=mdsdisconnect;
-    return;
-  else
-    if(verbose)
-       disp(['% get_mds_tree opened tree, shot: ' tree ' ' int2str(shot)])  
-    end
-  end
-
-% add identifier string to structure:
-  data.id= str2mat('mds_efit ', int2str(shot), tree, date);
-  data.shot= shot;
-  data.tree= tree;
-  data.server= server;
-  data.creator= 'get_mds_tree';
-  data.allnames= char([]);
-  data.mdsnames= char([]);
-
-% ===============================================================
-% Get List of tree node names using recursive algorithm & store in mds_all
-% ===============================================================
-  mds_all= char([]);           % storage of all mds path names below TOP
-  mds_nam0= ['\' tree '::TOP']; % Top tree name
-  mds_nam= mds_nam0; % starting tree name
-  top_num= length(mds_nam);
-  mds_ot=  mds_nam;
-  while ~isempty(mds_ot)
-    mds_all= strvcat(mds_all,mds_ot);
-    mds_ot= mds_sub_tree(mds_ot);
-  end
-    
-% ===============================================================
-% Process each name in mds_all for all variables present
-% ===============================================================
-  for kk=1:size(mds_all,1)
-%   kk=0; kk=kk+1
-%   kk
-    mds_nam = deblank(mds_all(kk,:));
-    mdscmd = ['getnci("\' mds_nam ':*","NID_NUMBER")'];
-    [mds_nids,mstatus] = mdsvalue(mdscmd); 
-    if ~mod(mstatus,2) % handle nstx different format
-       mdscmd = ['getnci("\\\' mds_nam ':*","NID_NUMBER")'];
-       [mds_nids,mstatus] = mdsvalue(mdscmd); 
-    end
-    varnames = [];
-    if mod(mstatus,2)
-       num_nids = length(mds_nids);
-       varnames = cell(1,num_nids);
-       for j=1:num_nids
-          mdscmd = ['getnci(' num2str(mds_nids(j)) ',"FULLPATH")'];
-          varnames{j} = char(mdsvalue(mdscmd));
-       end
-    else
-%       fprintf('WARNING get_mds_tree: Bad mds status for command = %s\n',mdscmd);
-    end
-
-    varnamesc = char(varnames);
-    idgood = strmatch(upper(mds_nam0),upper(varnamesc));
-    varnamesc = varnamesc(idgood,:);
-    data_namesc = varnamesc(:,top_num+2:end);    
-    numvar = size(varnamesc,1);
-       
-% loop over all variables
-    if numvar>=30
-       tic
-       for ii= 1:numvar
-%         ii=0; ii=ii+1;
-          fullnam= deblank(varnamesc(ii,:)); 
-          data.mdsnames= strvcat(data.mdsnames,fullnam);
-          dat=  mdsvalue(fullnam);  % Actual value of data 
-
-          subnam= deblank(data_namesc(ii,:)); %      
-          id= findstr(subnam,':');
-	  subnam(id)= '.';
-          if toupper==1
-	     subnam= upper(subnam);
-	  elseif toupper==-1
-	     subnam= lower(subnam);
-	  end
-          totnam= deblank(subnam); % now relative address rather than absolute address allow for data name chg
-          if toc > 5 | ii==1
-            if(verbose)
-               disp(['% get_mds_tree Reading ' int2str(ii) '/', int2str(numvar),' variable: ', totnam]);
-            end
-            tic
-          end  % if toc
-          data.allnames= strvcat(data.allnames,totnam);
-          str= ['data.' totnam '= dat;'];
-          eval(str);
-       end   % for ii
-
-    elseif numvar>=1 % if numvar >=1
-       for ii= 1:numvar
-          fullnam= deblank(varnamesc(ii,:));
-          data.mdsnames= strvcat(data.mdsnames,fullnam);
-          dat=  mdsvalue(fullnam);  % Actual value of data 
-
-          subnam= deblank(data_namesc(ii,:)); %      
-          id= findstr(subnam,':');
-	  subnam(id)= '.';
-          if toupper==1
-	     subnam= upper(subnam);
-	  elseif toupper==-1
-	     subnam= lower(subnam);
-	  end
-          totnam= deblank(subnam);
-          if ii==1
-            if(verbose)
-               disp(['% get_mds_tree Reading ' int2str(ii) '/',int2str(numvar),' variable: ', totnam]);
-            end
-          end  % if ii
-          data.allnames= strvcat(data.allnames,totnam);
-          str= ['data.' totnam '= dat;'];
-          eval(str);
-       end   % for ii
-    end    % if numvar
-  end      % for kk    
-     
-  if strcmp(server,'NSTX') | strcmp(server,'EAST')
-     status=mdsdisconnect;  % Exit MDS+ if conneced to remote server
-  end
-
- return
-  
-% ========================================================
-% Testing
-% ========================================================
-  
-% Testing SEE test_get_mds_tree
-% (WATCH OUT 114504 has problems use 98549 Ferron High Performance)
-
-%  data= get_mds_tree(114504);
-%  data=  get_mds_tree(98549, 'EFIT01', 'DIII-D');
-%  data=  get_mds_tree(98549, 'd3d', 'DIII-D');
-
-  data=  get_mds_tree(98549, [], [], -1);
-  data= eq_mk_time_last(data); % puts time at end (i.e. (130,1) => (1,130)
-
-  shot=98549; tree='EFIT01'; server='DIII-D'; toupper=-1; % make all lc variables
-%  tree='d3d'; tree='IONS'
-  data=  get_mds_tree(shot, tree, server, toupper);
-  data=  get_mds_tree(98549, [], [], -1);
-  data=  get_mds_tree(shot, tree, 'OPEN', toupper);
-
-  filename='/u/leuer/efit/diiid/s98549/g098549.04000' %
-  read_gfile
-
-  shot=98549; tree='IONS'; server='DIII-D'; toupper=-1; 
-  ions=  get_mds_tree(shot, tree, server, toupper);
-  shot=98549; tree='NB'; server='DIII-D'; toupper=-1; 
-  nb=  get_mds_tree(shot, tree, server, toupper);
-
-% ========================================================
-% Check NSTX:
-%  shot=110843; tree='EFIT01'; server='NSTX';
-
-  data=  get_mds_tree(113363, 'EFIT01','NSTX');
-  data= eq_mk_time_last(data); % puts time at end (i.e. (130,1) => (1,130)
-
-  shot=113363; tree='EFIT01'; server='NSTX';
-  clear data
-  data=  get_mds_tree(shot, tree, server);
-
diff --git a/matlab/D3D/mdsplus_func/getmds.m b/matlab/D3D/mdsplus_func/getmds.m
deleted file mode 100644
index 942451cf..00000000
--- a/matlab/D3D/mdsplus_func/getmds.m
+++ /dev/null
@@ -1,465 +0,0 @@
-function [data,varargout] = getmds(shot,name,range_min,range_max,tree,server,ical);
- %
-%  SYNTAX OPTIONS: 
-%      [data,tvec,ier] = getmds(shot,name,range_min,range_max,tree,server,ical)
-%      [data,xvec,tvec,ier] = getmds(shot,name,range_min,range_max,tree,server,ical)
-%
-%  PURPOSE:  Get mdsplus data from the MDS database. 
-%
-%  INPUT:
-%    shot 	= shot number
-%    name	= name of data - must be in single quotes
-%    range_min	= minimum value of independent variable(s) - use NaN to specify no limit:
-%                  if scalar, this is min time (s)
-%                  if vector, last entry is min time (s), other entries are minima 
-%                      for other independent variables
-%    range_max	= maximum value of independent variable(s) - use NaN to specify no limit:
-%                  if scalar, this is max time (s)
-%                  if vector, last entry is max time (s), other entries are maxima
-%                      for other independent variables
-%    tree	= which tree to use (optional, default = 'EFIT01')
-%    server     = which server to use (optional). Options: 'DIII-D'(default),
-%		    'JET', 'NSTX', 'THOR'  
-%    ical       = return data in units of digitizer counts (ical=0), volts into
-%		digitizer (ical=2), or physics units (ical=1).  Only used for
-%		data from 'THOR', 'data-server3' (EAST), and 'pcs_kstar' (KSTAR)
-%
-%  OUTPUT:
-%    data	= data for name defined by input (dimensions correspond to dimensions
-%                 specified in range_min)
-%   (xvec..tvec) = variable number of arguments containing vectors of independent 
-%                   variables specified in range_min and range_max 
-%    ier	= error code = 0 if OK, else > 0
-%
-% 
-%  EXAMPLES
-%    getmds(106649,'rmaxis',1.5,5,'EFIT01','DIII-D')    
-%    getmds(57035,'MAGN/IPLA',1.0,3.0,'PPF','JET')
-%    getmds(109070,'ip',1.0,3.0,'wf','NSTX')
-%    getmds(999991,'PCIP',0.0,8.0,'PCS_KSTAR','THOR');
-%
-%		NEED 3D examples
-%
-%  RESTRICTIONS:  
-%  (1) Only works for range_min/max up to length 2 at the moment (make a request for more).
-%  (2) Use the lower level routines starting with "mds" to manipulate the MDS
-%      data directly. 
-
-%  METHOD: 
-%
-%  WRITTEN BY:  Mike Walker 	ON 	6/4/01
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  @(#)getmds.m	1.12 08/08/13
-
-% Error checking:
-
-if (nargin < 4)
-   disp('ERROR getmds: Must have at least 4 input arguments')
-   return;
-end;
-
-ndim = length(range_min);
-if(ndim~=length(range_max))
-   disp('ERROR getmds: range_min and range_max must be equal length')
-   return;
-end
-
-% test for existence of optional arguments
-
-if (nargin < 5)
-    tree = 'EFIT01';
-end;
-if (nargin < 6)
-    server = 'DIII-D';
-end;
-
-if(ndim>1)
-   xmin = range_min(1); tmin = range_min(2);
-   xmax = range_max(1); tmax = range_max(2);
-else
-   tmin = range_min; tmax = range_max;
-end
-
-if(isempty(tmin))
-   tmin=-1e+6;
-end
-if(isempty(tmax))
-   tmax=1e+6;
-end
-if(nargin < 7)
-   ical=1;
-end
-data=[];tvec=[];ier=0;
-if(ical~=0 & ical~=1 & ical~=2)
-   fprintf('ERROR getmds: invalid ical = %d\n',ical);
-   ier=1; return;
-end
-
-upcase_server = upper(server);
-
-% process default DIII-D server case
-if ((nargin < 6) | ((nargin >= 6) & (strcmp(upcase_server,'DIII-D')))) 
-
-    status = mdsconnect('atlas.gat.com');	% returns status=1 if success, else -1
-    if status ~= 1
-       disp(['ERROR getmds: unable to open server ' server])
-       ier=1;
-       data = [];
-       varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-       return;
-    end
-
-    ier=0;
-    [shoto,status] = mdsopen(tree,shot);  % returns status=1 on success, else 0
-    if ~mod(status,2)
-        ier=1;
-        fprintf(['ERROR getmds: unable to open ' tree ' for shot '  ...
-	int2str(shot) '\n'])
-        varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-        return;
-    end
-
-    % get data vector:
-    dname = ['\' name];
-    [data,status] = mdsvalue(dname);
-    if ~mod(status,2)
-        ier=2;
-        fprintf('ERROR getmds: unable to get data %s from %s\n',dname,tree)
-        data = [];
-        varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-        return;
-    end
-
-    % get time vector:
-    if(ndim==1)
-       tname = ['dim_of(\' name ')'];
-    else
-       tname = ['dim_of(\' name ',1)'];
-    end
-    [tvec,status] = mdsvalue(tname);
-    if ~mod(status,2)
-        ier=3;
-        fprintf(['ERROR getmds: unable to get time data from ' tree '\n'])
-        tvec = [];
-        varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-        return;
-    end
-    if(min(tvec)>10 | max(tvec)>100)	% time units must be milliseconds
-       tvec = tvec*1e-3;	% convert to seconds
-    end
-
-    % get x vector:
-    if(ndim>1)
-       xname = ['dim_of(\' name ',0)'];
-       [xvec,status] = mdsvalue(xname);
-       if ~mod(status,2)
-           ier=3;
-           fprintf(['ERROR getmds: unable to get x data from ' tree '\n'])
-           xvec = [];
-           varargout = getmds_varargout(nargout,ndim,ier,tvec,[]);
-           return;
-       end
-    end
-
-end;
-
-% process non DIII-D server case
-if ((nargin >= 6) & (~strcmp(upcase_server,'DIII-D')))
-
-   if (strcmp(upcase_server,'JET'))
-        status = mdsconnect('mdsplus.jet.efda.org');
-        if status ~= 1
-           disp(['ERROR getmds: unable to open server ' server])
-           ier=1;
-           data = [];
-           varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-           return;
-        end
-        cmdString = '_s = JET("';
-        cmdString = strcat('_s = JET("',tree,'/',name,'",',int2str(shot),')');
-        data = mdsvalue(cmdString);
-        tvec = mdsvalue('DIM_OF(_s)');
-   elseif (strcmp(upcase_server,'NSTX'))
-        status = mdsconnect('birch.pppl.gov:8501');
-        if status ~= 1
-           disp(['ERROR getmds: unable to open server ' server])
-           ier=1;
-           data = [];
-           varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-           return;
-        end
-        
-        ier=0;
-        [shoto,status] = mdsopen(tree,shot);
-        if ~mod(status,2)
-           [shoto,status] = mdsopen(tree,shot);	% seems to work better to do it twice
-        end
-        if ~mod(status,2)
-            ier=1;
-            fprintf(['ERROR getmds: unable to open ' tree ' for shot '  ...
-            int2str(shot) '\n'])
-            data = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end
-
-        % get data vector:
-        dname0=name;
-        if(name(1:1)=='.')
-           dname = name;	% relative reference
-        elseif(strcmp(name(1:1),'\'))
-           dname = name;
-        else
-           dname = ['\' name];
-        end
-        [data,status] = mdsvalue(dname);
-        if ~mod(status,2)
-            ier=2;
-            fprintf('ERROR getmds: unable to get data %s from %s\n',...
-                    deblank(dname),tree);
-            data = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end
-
-        % get time vector:
-        if(ndim==1)
-           tname = ['dim_of(' dname ')'];
-        else
-           tname = ['dim_of(\' name ',1)'];
-        end
-        [tvec,status] = mdsvalue(tname);
-        if ~mod(status,2)
-            ier=3;
-            fprintf(['ERROR getmds: unable to get time data from ' tree '\n'])
-            tvec = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end
-
-        if(ndim>1) 		% get x vector
-           xname = ['dim_of(\' name ',0)'];
-           [xvec,status] = mdsvalue(xname);
-           if ~mod(status,2)
-               ier=3;
-               fprintf(['ERROR getmds: unable to get x data from ' tree '\n'])
-               xvec = [];
-               varargout = getmds_varargout(nargout,ndim,ier,tvec,[]);
-               return;
-           end
-        end
-
-   elseif (strcmp(upcase_server,'THOR') | ...
-	strcmp(upcase_server,'202.127.205.8') | ...
-	strcmp(upcase_server,'203.230.125.212:8005') | ...
-     (strcmp(upcase_server,'202.127.205.59') & strcmp(upper(tree),'PCS_EAST')))
-
-      status = mdsconnect(upcase_server);
-        if status ~= 1
-           disp(['ERROR getmds: unable to open server ' server])
-           ier=1;
-           data = [];
-           varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-           return;
-        end
-
-      ier=0;
-      [shoto,status] = mdsopen(tree,shot);
-      if ~mod(status,2)
-         ier=1;
-         fprintf(['ERROR getmds: unable to open ' tree ' for shot '  ...
-      	 int2str(shot) '\n'])
-           data = [];
-           varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-         return;
-      end
-
-      if(strcmp(upper(tree),'PCS_EAST') | ...		% EAST PCS tree
-	 strcmp(upper(tree),'PCS_KSTAR') | ...		% KSTAR PCS tree
-		strcmp(upper(tree),'RDATA'))		% KSTAR non-PCS tree
-         dname = ['\' name];
-      else
-         dname = name;
-      end
-
-    % get data vector:
-      dname0 = upper(dname);
-      if(ical==1)
-         dname = upper(dname);
-      elseif(ical==2)
-         dname = [upper(dname) ':RAW'];
-      elseif(ical==0)
-         dname = [upper(dname) ':RAW'];
-      end
-      [data,status] = mdsvalue(dname);
-      if ~mod(status,2)
-         ier=2;
-         fprintf(['ERROR getmds: unable to get data from ' tree '\n'])
-         data = [];
-         varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-         return;
-      end
-
-    % get time vector:
-      if(ndim==1)
-         tname = ['dim_of(' dname0 ')'];
-      else
-         tname = ['dim_of(' dname0 ',1)'];
-      end
-      [tvec,status] = mdsvalue(tname);
-      if ~mod(status,2)
-          ier=3;
-          fprintf(['ERROR getmds: unable to get time data from ' tree '\n'])
-          tvec = [];
-          varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-          return;
-      end
-
-      if(ndim>1)			  % get x vector
-         xname = ['dim_of(\' name ',0)'];
-         [xvec,status] = mdsvalue(xname);
-         if ~mod(status,2)
-            ier=3;
-            fprintf(['ERROR getmds: unable to get x data from ' tree '\n'])
-            xvec = [];
-            varargout = getmds_varargout(nargout,ndim,ier,tvec,[]);
-            return;
-         end
-      end
-
-      if(ical==2)
-         attr_name = [upper(name) ':OFFSET'];
-         [offset,status] = mdsvalue(attr_name);
-
-         attr_name = [upper(name) ':FBITS'];
-         [counts_to_volts,status] = mdsvalue(attr_name);
-
-         data = (data+offset) * counts_to_volts;
-         
-         attr_name = [upper(name) ':SCALE'];
-         [scale,status] = mdsvalue(attr_name);
-
-      end
-
-
-   else		% unknown server
-        status = mdsconnect(server);
-        if status ~= 1
-           disp(['ERROR getmds: unable to open server ' server])
-           ier=1;
-           data = [];
-           varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-           return;
-        end
-        
-        ier=0;
-        [shoto,status] = mdsopen(tree,shot);
-        if ~mod(status,2)
-            ier=1;
-            fprintf(['ERROR getmds: unable to open ' tree ' for shot '  ...
-            int2str(shot) '\n'])
-            data = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end
-
-        % get data vector:
-        dname = ['\' name];
-        [data,status] = mdsvalue(dname);
-        if ~mod(status,2)
-            ier=2;
-            fprintf(['ERROR getmds: unable to get data from ' tree '\n'])
-            disp(data)
-            data = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end
-
-        % get time vector:
-        if(ndim==1)
-           tname = ['dim_of(\' name ')'];
-        else
-           tname = ['dim_of(\' name ',1)'];
-        end
-        [tvec,status] = mdsvalue(tname);
-        if ~mod(status,2)
-            ier=3;
-            fprintf(['ERROR getmds: unable to get time data from ' tree '\n'])
-            tvec = [];
-            varargout = getmds_varargout(nargout,ndim,ier,[],[]);
-            return;
-        end 
-
-        if(ndim>1)			% get x vector
-           xname = ['dim_of(\' name ',0)'];
-           [xvec,status] = mdsvalue(xname);
-           if ~mod(status,2)
-               ier=3;
-               fprintf(['ERROR getmds: unable to get x data from ' tree '\n'])
-               xvec = [];
-               varargout = getmds_varargout(nargout,ndim,ier,tvec,[]);
-               return;
-           end
-        end
-
-
-   end;
-end
-
-% return only the data requested:
-if(isempty(tvec) | tvec(end) < tmin | tvec(1) > tmax)
-     ier = 4;
-     data=[]; xvec=[]; tvec=[];
-     fprintf(['ERROR getmds: no data between tmin and tmax \n'])
-elseif((ndim>1) & (isempty(xvec) | max(xvec) < xmin | min(xvec) > xmax))
-    ier = 4;
-    data=[]; xvec=[]; tvec=[];
-    fprintf(['ERROR getmds: no data between xmin and xmax \n'])
-elseif((ndim>1) & (isnan(xmin) || isnan(xmax))) % Don't truncate x-series
-    [mm,m1]=min(abs(tvec-tmin));
-    [mm,m2]=min(abs(tvec-tmax));
-    tvec = tvec(m1:m2);
-    data = data(:,m1:m2);
-elseif (isnan(tmin) || isnan(tmax)) % Don't truncate t-series
-    if(ndim>1)
-       [nn,n1]=min(abs(xvec-xmin));
-       [nn,n2]=min(abs(xvec-xmax));
-       xvec = xvec(n1:n2);
-       data = data(n1:n2,:);
-    end
-else
-    [mm,m1]=min(abs(tvec-tmin));
-    [mm,m2]=min(abs(tvec-tmax));
-    tvec = tvec(m1:m2);
-    if(ndim>1)
-       [nn,n1]=min(abs(xvec-xmin));
-       [nn,n2]=min(abs(xvec-xmax));
-       xvec = xvec(n1:n2);
-       data = data(n1:n2,m1:m2);
-    else
-       data = data(m1:m2);
-    end
-end
-
-if(ndim>1)
-   varargout = getmds_varargout(nargout,ndim,ier,tvec,xvec);
-else
-   varargout = getmds_varargout(nargout,ndim,ier,tvec);
-end
-
-mdsdisconnect;
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-function out = getmds_varargout(nargs,ndim,ier,tvec,xvec)
-
-out = cell(1);
-if(ndim>1)
-   out{1} = xvec;
-   out{2} = tvec;
-else
-   out{1} = tvec;
-end
-if(nargs > ndim+1)
-   out{nargs-1} = ier;
-end
diff --git a/matlab/D3D/mdsplus_func/make_mdsipmex.m b/matlab/D3D/mdsplus_func/make_mdsipmex.m
deleted file mode 100644
index 7e1fdb20..00000000
--- a/matlab/D3D/mdsplus_func/make_mdsipmex.m
+++ /dev/null
@@ -1,25 +0,0 @@
-% make_mdsipmex.m
-% make sure ../mdsplus points to current version of mdsplus distribution
-% to make the debug version, debug=1;make_mdsipmex;
-% to make the shared version, shared=1;make_mdsipmex;
-% Note; if shared, install MdsIpShr library or point $LD_LIBRARY_PATH to shareables
-% Basil P. DUVAL, May 2000
-
-MDSPLUS=getenv('MDSPLUS');
-if(length(MDSPLUS)==0)
-  disp('shell variable MDSPLUS must point to /f/mdsplus/linux/mdsplus before compilation');end
-
-if(exist('debug','var'));DEBUG = '-DDEBUG';else;DEBUG='';end
-
-if(~strcmp(computer,'VMS'));PASSWD = '-DPASSWD';else;PASSWD='mdsipmex.opt';end
-
-if(~exist('shared','var'))
-comm = sprintf('mex -v %s %s mdsipmex.c %s/mdstcpip/mdsipshr.c %s/mdstcpip/mdsiputil.c %s/mdstcpip/mdsip_socket_io.o -DNOCOMPRESSION -I%s/include -I%s/mdstcpip',...
-	       DEBUG,PASSWD,MDSPLUS,MDSPLUS,MDSPLUS,MDSPLUS);
-else
-comm = sprintf('mex -v %s %s mdsipmex.c -DNOCOMPRESSION -I%s/include -I%s/mdstcpip -L%s/lib -lMdsIpShr',...
-	       DEBUG,PASSWD,MDSPLUS,MDSPLUS,MDSPLUS);
-end
-disp(comm);
-comm
-eval(comm);
diff --git a/matlab/D3D/mdsplus_func/make_mdsipmex_east.m b/matlab/D3D/mdsplus_func/make_mdsipmex_east.m
deleted file mode 100644
index e0c62231..00000000
--- a/matlab/D3D/mdsplus_func/make_mdsipmex_east.m
+++ /dev/null
@@ -1,28 +0,0 @@
-% make_mdsipmex.m
-% make sure ../mdsplus points to current version of mdsplus distribution
-% to make the debug version, debug=1;make_mdsipmex;
-% to make the shared version, shared=1;make_mdsipmex;
-% Note; if shared, install MdsIpShr library or point $LD_LIBRARY_PATH to shareables
-% Basil P. DUVAL, May 2000
-
-%MDSPLUS=getenv('MDSPLUS');
-%if(length(MDSPLUS)==0)
-%  disp('shell variable MDSPLUS must point to /f/mdsplus/linux/mdsplus before compilation');end
-%MDSPLUS='/f/mdsplus/linux/mdsplus'
-
-MDSPLUS = '/usr/local/mdsplus'
-
-if(exist('debug','var'));DEBUG = '-DDEBUG';else;DEBUG='';end
-
-if(~strcmp(computer,'VMS'));PASSWD = '-DPASSWD';else;PASSWD='mdsipmex.opt';end
-
-if(~exist('shared','var'))
-comm = sprintf('mex -v %s %s mdsipmex.c %s/mdstcpip/mdsipshr.c %s/mdstcpip/mdsiputil.c %s/mdstcpip/mdsip_socket_io.o -DNOCOMPRESSION -I%s/include -I%s/mdstcpip',...
-	       DEBUG,PASSWD,MDSPLUS,MDSPLUS,MDSPLUS,MDSPLUS);
-else
-comm = sprintf('mex -v %s %s mdsipmex.c -DNOCOMPRESSION -I%s/include -I%s/mdstcpip -L%s/lib -lMdsIpShr',...
-	       DEBUG,PASSWD,MDSPLUS,MDSPLUS,MDSPLUS);
-end
-disp(comm);
-comm
-eval(comm);
diff --git a/matlab/D3D/mdsplus_func/mds_eq.m b/matlab/D3D/mdsplus_func/mds_eq.m
deleted file mode 100644
index 6dccbd10..00000000
--- a/matlab/D3D/mdsplus_func/mds_eq.m
+++ /dev/null
@@ -1,298 +0,0 @@
-  function  eq= mds_eq(shot, tree, gam, mk_var, server)
-%
-%  SYNTAX:
-%         eq= mds_eq(shot, tree, gam, mk_var);    % defaults to DIII-D server
-%             mds_eq(shot, 'EFIT01, 'gam', 1, 'NSTX'); % makes vars in workspace 
-%
-%  PURPOSE: Get EFIT equilibrium (GEQDSK AEQDSK MEQDSK) from mdsplus database. 
-%
-%  INPUT: <default>
-%    shot   = shot number
-%    tree   = which efit tree to use <'EFIT01'>
-%    gam    = ['g']; get only g file, a= only a file, m= mfile, <gam>
-%    mk_var = [1]; Will make efit variables in calling workspace, <0> makes none
-%                      2 will make lower case, 3 will make upper case variable
-%                      note default variables in MDS are upper case
-%                  NOTE: see eq_to_env for way to make tstart<=t<tend arrays
-%    server = which data base to use: defaults to [DIII-D] also NSTX
-%
-%  OUTPUT:
-%    eq      = structure containing EFIT eqdsk variables
-%              See: eq.gnames .anames .mnames for g,a,m file names
-%                   All EFIT variables are as in MDSPLUS => Upper Case
-%              Ex:  eq.BCENTR, eq.BDRY, eq.PSIRZ, 
-%              Use: plot(eq.GTIME, eq.CPASMA),
-%                  contour(eq.R, eq.Z, eq.PSIRZ(:,:,round(length(eq.GTIME)/2))')
-%
-%    Extra items added to structure (all lower case)
-%      eq.id   = sting array of important data identifyer enf
-%      eq.gnames= sting array of all gfile names collected (eq to see all)
-%      eq.anames= sting array of all afile names collected (eq to see all)
-%      eq.mnames= sting array of all mfile names collected (eq to see all)
-%      eq.shot = shot number
-%      eq.tree = mds tree used to get data (ex. EFIT01 EFIT02 (=MSD));
-%
-%    if mk_var>0 it makes variables in base workspace
-%                 BCENTR, BDRY, CPASMA, PSIRZ, ...
-% 
-%  NOTE: 1)Function returns all TIME data for shot in large arrays.
-%          Example:
-%          eq.BCENTER(255,1)
-%          eq.GTIME(255,1); % Time data vector for all .GNAME arrays 255 times
-%          eq.ATIME(251,1); % Time data vector for all .ANAME arrays 251 times
-%          eq.MTIME or eq.TIME % Note old "m" uses TIME new "m" uses MTIME
-%          eq.PPRIME(65,255),PSIRZ(65,65,225) 
-%
-%          Similar arrays (without eq. strucutre) are generated in workspace 
-%          if mk_var>=1 : BCENTER(255,1), GTIME(255,1)  or LC if mk_var==2
-%
-%        2) Time is in vector eq.GTIME and is in ms. All other units are as
-%           they come from EFIT. psi(Vs/r) I(A) R(m) ...
-%
-% CAUTION: All time vectors are last index of vector of array. 
-% CAUTION: GTIME ATIME & (MTIME or TIME) are not necesaarly the same. 
-% CAUTION: Current Bad Variable in d3dMDSPLUS ARE: CASE, HEADER, ZGRID (use Z)
-% CAUTION: THIS ROUTINE GETS ALL MDS EQDSK DATA FOR SHOT AND EQ CAN BE HUGE
-% CAUTION: Afile read 1st then Gfile: variables in common: BCENTR, CPASMA, ...
-%
-%  SEE ALSO: eq_time_lim eq_ga_env
-%
-
-%  WRITTEN BY:  Jim Leuer    ON      6/11/03
-%  USES:   eq_mod
-% To see MDS structure on HYDRA run traverser
-% should work for JET data but not tested
-% ==========================================================================
-% 
-% Defaults
-  wait('%CAUTION: mds_eq is OBSOLETE use eq_mds instead')
-  return;
-
-  if nargin==4
-     server='DIII-D';
-  elseif nargin==3
-     server='DIII-D';
-     mk_var= 0;
-  elseif nargin==2
-     server='DIII-D';
-     mk_var= 0;
-     gam= 'gam';
-  elseif nargin==1
-     server='DIII-D';
-     mk_var= 0;
-     gam= 'gam';
-     tree= 'EFIT01';
-  elseif nargin==0
-     disp('% mds_eq needs at least a "shot" argument')
-     help mds_eq
-     return
-  end
-
-  if isempty(server)  server= 'DIII-D'; end
-  if isempty(tree)    tree= 'EFIT01'; end
-  if isempty(gam)     gam= 'gam';     end
-  if isempty(mk_var)  mk_var= 0;      end
-
-% -----------------------------------------------
-% Open and check conneciton to MDSPLUS data base:
-% -----------------------------------------------
-  tic
-  ier= 0;
-% [shoto,status]=mdsopen('atlas.gat.com::EFIT01',shot)
-  if strcmp(upper(server),'DIII-D')
-    mdsconnect('atlas.gat.com');
-  elseif strcmp(upper(server),'NSTX')
-    mdsconnect('europa.pppl.gov:8501');
-  else
-    disp(['%ERROR: Couldnt recognize parameter server =',server])
-  end
-  [shoto,status]=mdsopen(tree,shot);
-  if ~mod(status,2)
-    ier=1;
-    fprintf(['%ERROR mds_eq: unable to open ' tree ' for shot '  ...
-        int2str(shot) '\n'])
-    eq=[];
-    status=mdsdisconnect;
-    return;
-  end
-
-% add identifier string to structure:
-  id= str2mat('mds_eq ', int2str(shot), tree, date);
-  eq.id= id;
-  eq.shot= shot;
-  eq.tree= tree;
-  eq.creator= 'mds_eq';
-
-% ===============================================================
-% START READ OF AEQDSK DATA
-% ===============================================================
-
- if ~isempty(strfind(gam,'a')) 
-
-  eq.anamesmds= mdsvalue('getnci(".RESULTS.AEQDSK:*","FULLPATH")');
-
-  if isempty(eq.anamesmds)
-    disp('%ERROR mds_eq cant read AEQDSK Names, returning')
-    status=mdsdisconnect;
-    return
-  end
-
-  fullnames= char(eq.anamesmds);
-  id= strfind(fullnames(1,:),'.RESULTS.AEQDSK:');
-  eq.anames=  fullnames(:,id+16:end);
-
-% loop over all variables
-  for ii= 1:length(eq.anames);
-%    ii=0; ii=ii+1;
-     fullnam= char(eq.anamesmds(ii));
-     nam= deblank(eq.anames(ii,:));
-     dat=  mdsvalue(fullnam); % 
-     str= ['eq.' nam '= dat;'];
-     eval(str);
-     if mk_var
-       switch mk_var
-         case 1
-           assignin('base',nam,dat);
-         case 2
-           assignin('base',lower(nam),dat);
-         case 3
-           assignin('base',upper(nam),dat);
-	 end
-     end
-     if toc > 10
-       disp(['%mds_eq still reading at ' int2str(ii) ' of ',...
-               int2str(length(eq.anames)),' at variable: ', nam]);
-       tic
-     end
-   end
- end
-
-% ===============================================================
-% START READ OF MEQDSK DATA which is in measurments area time in eq.TIME
-% ===============================================================
-
- if ~isempty(strfind(gam,'m')) 
-
-  eq.mnamesmds= mdsvalue('getnci(".MEASUREMENTS:*","FULLPATH")');
-
-  if ~isempty(eq.mnamesmds)
-   fullnames= char(eq.mnamesmds);
-   id= strfind(fullnames(1,:),'.MEASUREMENTS:');
-   eq.mnames=  fullnames(:,id+14:end);
-
-% loop over all variables
-   for ii= 1:length(eq.mnames);
-%    ii=0; ii=ii+1;
-     fullnam= char(eq.mnamesmds(ii));
-     nam= deblank(eq.mnames(ii,:));
-     dat=  mdsvalue(fullnam); % 
-     str= ['eq.' nam '= dat;'];
-     eval(str);
-     if mk_var
-       switch mk_var
-         case 1
-           assignin('base',nam,dat);
-         case 2
-           assignin('base',lower(nam),dat);
-         case 3
-           assignin('base',upper(nam),dat);
-	 end
-     end
-     if toc > 10
-       disp(['%mds_eq still reading at ' int2str(ii) ' of ',...
-               int2str(length(eq.mnames)),' at variable: ', nam]);
-       tic
-     end
-   end
-  else
-   disp('%mds_eq COULD NOT FIND ANY EFIT Measurement data: mnamesmds=[]');
-  end
-  
- end
-
-% ===============================================================
-% START READ OF GEQDSK DATA
-% ===============================================================
-
- if ~isempty(strfind(gam,'g'))
- 
-  eq.gnamesmds= mdsvalue('getnci(".RESULTS.GEQDSK:*","FULLPATH")');
-
-  if ~isempty(eq.gnamesmds)
-   fullnames= char(eq.gnamesmds);
-   id= strfind(fullnames(1,:),'.RESULTS.GEQDSK:');
-   eq.gnames=  fullnames(:,id+16:end);
-
-% loop over all variables
-   for ii= 1:length(eq.gnames);
-%    ii=0; ii=ii+1;
-     fullnam= char(eq.gnamesmds(ii));
-     nam= deblank(eq.gnames(ii,:));
-     dat=  mdsvalue(fullnam); % 
-     if isfield(eq,nam);
-        rmfield(eq,nam);
-	disp(['%Note: mds_eq is overwriting structure field: ',nam]);
-     end
-     str= ['eq.' nam '= dat;'];
-     eval(str);
-     if mk_var
-       switch mk_var
-         case 1
-           assignin('base',nam,dat);
-         case 2
-           assignin('base',lower(nam),dat);
-         case 3
-           assignin('base',upper(nam),dat);
-	 end
-     end
-     if toc > 10
-       disp(['%mds_eq still reading at ' int2str(ii) ' of ',...
-               int2str(length(eq.gnames)),' at variable: ', nam]);
-       tic
-     end
-   end
-  else
-   disp('%mds_eq COULD NOT FIND ANY EFIT GEQDSK Data: gnamesmds=[]');
-  end
-
- end
-
-% ========================================================
-     
-  status=mdsdisconnect;
-
-  eq= eq_mod(eq); % fix time so end of vectors
-  
-  return
-  
-% Testing SEE test_mds_eq
-% (WATCH OUT 114504 has problems use 98549 Ferron High Performance)
-
-%  eqg= mds_eq(114504, 'EFIT01', 'g', 0);
-%  eqa= mds_eq(114504, 'EFIT01', 'a', 0);
-%  eqm=  mds_eq(98549, 'EFIT01', 'm', 0);
-
-  shot=98549; tree='EFIT01'; gam='gam'; mk_var= 0;
-  filename='/u/leuer/efit/diiid/s98549/g098549.04000' %
-  read_gfile
-  eq=  mds_eq(shot, tree, 'gam', 0);
-  eq = mds_eq(shot);
-  eq=  mds_eq(shot, tree, 'gm', 0 );
-  eq= eq_time_lim(eq,4,4); % make only 4s time
-  eq_ga_env(eq,[],[],'g');
-
-%  mds_eq(114504, 'EFIT01',[], 1);
-%  mds_eq(114504, 'EFIT02',[], 2);
-
-%   eqg= mds_eq(114504, 'EFIT01', 'g', 0);
-%   id= round(length(eqg.GTIME)/2);
-%   contour(eqg.R, eqg.Z, eqg.PSIRZ(:,:,id)'); hold on, axis equal
-%   plot(eqg.RBBBS(1:eqg.NBBBS(id),id),eqg.ZBBBS(1:eqg.NBBBS(id),id),'k')
-
-% ========================================================
-% Check NSTX:
-  shot=110843; tree='EFIT01'; gam='gam'; mk_var= 0; server='NSTX'
-  clear eq
-  eq=  mds_eq(shot, tree, 'gam', 0, server);
-  plot(eq.ATIME,eq.IPMHD)
-
diff --git a/matlab/D3D/mdsplus_func/mds_sub_tree.m b/matlab/D3D/mdsplus_func/mds_sub_tree.m
deleted file mode 100644
index b82ef479..00000000
--- a/matlab/D3D/mdsplus_func/mds_sub_tree.m
+++ /dev/null
@@ -1,70 +0,0 @@
-function  mds_ot = mds_sub_tree(mds_in)
-%
-%  SYNTAX:
-%          mds_ot= mds_sub_tree(mds_in)
-%
-%  PURPOSE:gets mds subtrees for next level down. 
-%
-%  INPUT: <default>
-%    mds_in    = Input mds tree
-%
-%  OUTPUT:
-%    mds_ot   = Output mds subtree names
-%
-%  WRITTEN BY:  Jim Leuer    ON      3/3/05
-%
-%  CHANGE LOG:  SMF 20140923 - Changed getnci call to use nid_numbers due to 
-%                              fullpath not accepting wildcards.
-%
-% ==========================================================================
-% @(#)mds_sub_tree.m	1.3 07/09/09 
-
-  % Initialize return variable
-  mds_ot = char([]);
-
-  % For all mds paths provided as input
-  for i = 1:size(mds_in,1)
-
-     % Strip trailing blanks from the mds path 
-     mds_inn = deblank(mds_in(i,:));
-
-     % Call GETNCI() to get the NID_NUMBERS 
-     mdscmd = ['getnci("\' mds_inn '.*","NID_NUMBER")'];
-     [mds_nids,status] = mdsvalue(mdscmd); 
-     if ~status
-        mdscmd = ['getnci("\\\' mds_inn '.*","NID_NUMBER")'];
-        [mds_nids,status] = mdsvalue(mdscmd); 
-     end
-  
-     % Call GETNCI() to get the FULLPATH for all NIDs
-     if status 
-        mds_fpath = [];
-        num_nids = length(mds_nids);
-        mds_fpath = cell(1,num_nids);
-        for j=1:num_nids
-           mdscmd = ['getnci(' num2str(mds_nids(j)) ',"FULLPATH")'];
-           mds_fpath{j} = char(mdsvalue(mdscmd));
-        end
-
-        % ?
-        mds_char = char(mds_fpath);
-        id = strmatch(upper(mds_inn), upper(mds_char));
-        if ~isempty(id)
-           mds_ot = strvcat(mds_ot,mds_char(id,:));
-        end
-     end
-
-  end
-
-  return
-
-% testing
-
- mds_in = '\EFIT01::TOP';
- mds_ot = mds_sub_tree(mds_in)
- mds_in = mds_ot
- mds_ot = mds_sub_tree(mds_in)
- mds_in = mds_ot
- mds_ot = mds_sub_tree(mds_in)
- mds_in = mds_ot
- 
-- 
GitLab