diff --git a/crpptbx/TCV/loadTCVdata.m b/crpptbx/TCV/loadTCVdata.m
index 65dd2e5c225f6b35a61611d782881cfef6682cb6..805005c1df3804060e0c12d3be22147e715a10f0 100644
--- a/crpptbx/TCV/loadTCVdata.m
+++ b/crpptbx/TCV/loadTCVdata.m
@@ -1,6 +1,10 @@
  function [trace,error,varargout]=loadTCVdata(shot,data_type,varargin)
 %
+% Added option to load shot=-1 or >=100000
+%
 % list of data_type currently available (when [_2,_3] is added, means can add _i to get Liuqe i):
+% if -1 is added, can also get it from FBTE with shot=-1, >=100000 or liuqe_version='_-1' (to get model file)
+%
 % 'Ip'[_2,_3]   =  current
 % 'zmag'[_2,_3] =  vertical position of the center of the plasma (magnetic axis)
 % 'rmag'[_2,_3] =  radial position of the center of the plasma
@@ -35,6 +39,7 @@
 % 'vloop'  =  loop voltage
 %
 % 'xx_2 or xx_3' for Liuqe2 or 3: same as above for xx related to equilibrium
+% 'xx_-1 or xx_-1' for FBTE values (model or shot=-1 or shot>=100000): same as above for xx related to equilibrium
 %
 % INPUT:
 % shot: shot number
@@ -83,11 +88,29 @@ error=1;
 % To allow multiple ways of writing a specific keyword, use data_type_eff within this routine
 data_type_eff=data_type;
 i_23=0;
-liuqe_ext='';
-if strcmp(data_type_eff(end-1:end),'_2') | strcmp(data_type_eff(end-1:end),'_3')
-  i_23=2;
-  liuqe_ext=data_type_eff(end-1:end);
+% LIUQE tree
+begstr = '\results::';
+endstr = '';
+liuqe_version = 1;
+if length(data_type_eff)>2
+  if strcmp(data_type_eff(end-1:end),'_2') | strcmp(data_type_eff(end-1:end),'_3')
+    i_23=2;
+    endstr=data_type_eff(end-1:end);
+    liuqe_version = str2num(data_type_eff(end:end));
+  elseif strcmp(upper(data_type_eff(end-2:end)),'_-1')
+    i_23=3;
+    begstr = 'tcv_eq( "';
+    endstr = '", "FBTE" )';
+    liuqe_version = -1;
+  end
 end
+if shot==-1 || shot>=100000
+  % requires FBTE
+  liuqe_version = -1;
+  begstr = 'tcv_eq( "';
+  endstr = '", "FBTE" )';
+end
+
 % use keyword without eventual _2 or _3 extension to check for multiple possibilities
 data_type_eff_noext=data_type_eff(1:end-i_23);
 if ~isempty(strmatch(data_type_eff_noext,[{'ip'} {'i_p'} {'xip'}],'exact'))
@@ -162,6 +185,15 @@ liuqe23=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results:
       {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'} ...
       {'\results::thomson:psiscatvol'} {'\results::thomson:psi_max'} {'\results::rms_error'} {'\results::total_energy'}];
 
+% nodes which have FBTE equivalence, related to simpletdi case
+liuqeFBTE=[{'\results::i_p'} {'\results::z_axis'} {'\results::r_axis'} {'\results::q_psi'} ...
+	   {'\results::beta_tor'} {'\results::beta_pol'} {'\results::q_95'} {'\results::l_i'}  {'\results::delta_95'} ...
+	   {'\results::kappa_95'} {'\results::r_contour'} {'\results::z_contour'} {'\results::psi_axis'}];
+
+% keywords which do not have FBTE equivalence and are returned empty
+noFBTE=[{'ne'} {'te'} {'nerho'} {'terho'} {'nerhozshift'} {'terhozshift'} {'profnerho'} {'profterho'} ...
+	{'neft'} {'teft'} {'neftav'} {'teftav'} {'sxr'} {'sxR'} {'ece'} {'MPX'} {'IOH'} {'vloop'}];
+
 % all keywords and corresponding case to run below
 TCVkeywrdall=[{'Ip'} {'zmag'} {'rmag'} {'rcont'} {'zcont'} {'vol'} {'rhovol'} {'qrho'} {'q95'} {'kappa'} ...
       {'delta'} {'deltatop'} {'deltabot'} {'neint'} ...
@@ -265,7 +297,7 @@ if strcmp(data_type_eff(1:1),'\')
   if irpintwarn & isempty(index)
     disp('********************')
     disp('trace not yet registered.')
-    disp('If standard data, ask andrea.scarabosio@epfl.ch or olivier.sauter@epfl.ch to create a keyqord entry for this data')
+    disp('If standard data, ask olivier.sauter@epfl.ch to create a keyqord entry for this data')
 %    eval(['!mail -s ''' data_type_eff ' ' num2str(shot) ' ' getenv('USER') ' TCV'' olivier.sauter@epfl.ch < /dev/null'])
     disp('********************')
   elseif isempty(index)
@@ -292,6 +324,10 @@ else
     disp('********************')
     return
   end
+  if liuqe_version==-1 && ~isempty(strmatch(TCVkeywrdall{index},noFBTE,'exact'))
+    disp(['node ' TCVkeywrdall{index} ' not defined within FBTE'])
+    return
+  end
 end
 if irpintwarn
   disp(['loading' ' ' data_type_eff_noext ' from TCV shot #' num2str(shot)]);
@@ -314,18 +350,33 @@ switch TCVkeywrdcase{index}
   case 'simpletdi'
 
     %  load TCV other data
-    mdsopen(shot);
-    nodenameeff=[TCVsiglocation{index} liuqe_ext];
-    % test if node exists
-    error=1;
-    ij=findstr(nodenameeff,'[');
-    if isempty(ij); ij=length(nodenameeff)+1; end
-    if eval(['~mdsdata(''node_exists("\' nodenameeff(1:ij-1) '")'')'])
-      disp(['node ' nodenameeff(1:ij-1) ' does not exist for shot = ' num2str(shot)])
-      return
+    if liuqe_version==-1
+      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
+    else
+      mdsopen(shot);
+      % test if node exists
+      error=1;
+      ij=findstr(TCVsiglocation{index},'[');
+      if isempty(ij); ij=length(TCVsiglocation{index})+1; end
+      if eval(['~mdsdata(''node_exists("\' TCVsiglocation{index}(1:ij-1) '")'')'])
+	disp(['node ' TCVsiglocation{index}(1:ij-1) ' does not exist for shot = ' num2str(shot)])
+	return
 % $$$     elseif eval(['mdsdata(''getnci("\' nodenameeff ':foo","length")'')==0'])
 % $$$       disp(['no data for node ' nodenameeff ' for shot = ' num2str(shot)])
 % $$$       return
+      end
+    end
+    if strcmp(TCVsiglocation{index}(1:9),'\psitbx::')
+      begstr = 'tcv_psitbx("';
+      nodenameeff=[begstr TCVsiglocation{index}(10:end) endstr]
+    elseif length(TCVsiglocation{index})>16 && strcmp(TCVsiglocation{index}(1:16),'\results::psitbx')
+      begstr = 'tcv_psitbx("';
+      nodenameeff=[begstr TCVsiglocation{index}(18:end) endstr]
+    elseif  strcmp(TCVsiglocation{index}(1:10),'\results::')
+      nodenameeff=[begstr TCVsiglocation{index}(11:end) endstr]
+    else
+      nodenameeff=TCVsiglocation{index}
+      disp(['should not have gone through here, mention this example to O. Sauter']);
     end
     tracetdi=tdi(nodenameeff);
     mdsclose;
@@ -473,8 +524,9 @@ switch TCVkeywrdcase{index}
     trace.name=[num2str(shot) ';' nodenameeff];
     % add correct dimensions
     % construct rho mesh
-    psi_max=tdi(['\results::thomson:psi_max' liuqe_ext]);
-    psiscatvol=tdi(['\results::thomson:psiscatvol' liuqe_ext]);
+    endstr
+    psi_max=tdi(['\results::thomson:psi_max' endstr]);
+    psiscatvol=tdi(['\results::thomson:psiscatvol' endstr]);
     for ir=1:length(psiscatvol.dim{2})
       rho(ir,:)= sqrt(1.-psiscatvol.data(:,ir)./psi_max.data(:))';
     end
@@ -513,8 +565,11 @@ switch TCVkeywrdcase{index}
     % add correct dimensions
     time=mdsdata('\results::thomson:times');
     % construct rho mesh
-    psi_max=tdi(['\results::thomson:psi_max' liuqe_ext]);
-    psiscatvol=tdi(['\results::thomson:psiscatvol' liuqe_ext]);
+    if strcmp(endstr,'_-1')
+      error(['in ' TCVkeywrdcase{index} ' endstr should not be ' endstr]);
+    end
+    psi_max=tdi(['\results::thomson:psi_max' endstr]);
+    psiscatvol=tdi(['\results::thomson:psiscatvol' endstr]);
     if abs(zshift)>1e-5
       % calculate new psiscatvol
       psitdi=tdi('\results::psi');
@@ -615,8 +670,12 @@ switch TCVkeywrdcase{index}
   %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   case {'qrho'}
     % q profile on psi from liuqe
-    mdsopen(shot);
-    nodenameeff=['\results::q_psi' liuqe_ext];
+    if liuqe_version==-1
+      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
+    else
+      mdsopen(shot);
+    end
+    nodenameeff=[begstr 'q_psi' endstr];
     tracetdi=tdi(nodenameeff);
     trace.data=tracetdi.data;
     trace.x=sqrt(tracetdi.dim{1}/(length(tracetdi.dim{1})-1));
@@ -633,17 +692,24 @@ switch TCVkeywrdcase{index}
   %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   case {'vol'}
     % vol from psitbx
-    mdsopen(shot);
-    nodenameeff=['\results::psitbx:vol'];
-    tracetdi=tdi(nodenameeff);
-    if i_23==2
-      ['LIUQE' liuqe_ext(2:2)]
-      psi=psitbxtcv(shot,'+0',['LIUQE' liuqe_ext(2:2)]);
-      fsd=psitbxp2p(psi,'FS');
-      fsg=psitbxfsg(fsd);
-      tracetdi.data = fsg.vol.x;
-      tracetdi.dim{1}=fsg.vol.grid.x{:}';
-      tracetdi.dim{2}=fsg.vol.grid.t';
+    if liuqe_version==-1
+      begstr = 'tcv_psitbx("';
+      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
+      nodenameeff=[begstr 'vol' endstr];
+      tracetdi=tdi(nodenameeff);
+    else
+      mdsopen(shot);
+      nodenameeff=['\results::psitbx:vol'];
+      tracetdi=tdi(nodenameeff);
+      if i_23==2
+	['LIUQE' endstr(2:2)]
+	psi=psitbxtcv(shot,'+0',['LIUQE' endstr(2:2)]);
+	fsd=psitbxp2p(psi,'FS');
+	fsg=psitbxfsg(fsd);
+	tracetdi.data = fsg.vol.x;
+	tracetdi.dim{1}=fsg.vol.grid.x{:}';
+	tracetdi.dim{2}=fsg.vol.grid.t';
+      end
     end
     trace.data=tracetdi.data;
     if isempty(tracetdi.data)
@@ -660,23 +726,30 @@ switch TCVkeywrdcase{index}
     if any(strcmp(fieldnames(tracetdi),'units'))
       trace.units=tracetdi.units;
     end
-    trace.name=[num2str(shot) ';' nodenameeff liuqe_ext];
+    trace.name=[num2str(shot) ';' nodenameeff '_' num2str(liuqe_version)];
     mdsclose;
 
   %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
   case {'rhovol'}
     % vol from psitbx
-    mdsopen(shot);
-    nodenameeff=['\results::psitbx:vol'];
-    tracetdi=tdi(nodenameeff);
-    if i_23==2
-      ['LIUQE' liuqe_ext(2:2)]
-      psi=psitbxtcv(shot,'+0',['LIUQE' liuqe_ext(2:2)]);
-      fsd=psitbxp2p(psi,'FS');
-      fsg=psitbxfsg(fsd);
-      tracetdi.data = fsg.vol.x;
-      tracetdi.dim{1}=fsg.vol.grid.x{:}';
-      tracetdi.dim{2}=fsg.vol.grid.t';
+    if liuqe_version==-1
+      begstr = 'tcv_psitbx("';
+      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
+      nodenameeff=[begstr 'vol' endstr];
+      tracetdi=tdi(nodenameeff);
+    else
+      mdsopen(shot);
+      nodenameeff=['\results::psitbx:vol'];
+      tracetdi=tdi(nodenameeff);
+      if i_23==2
+	['LIUQE' endstr(2:2)]
+	psi=psitbxtcv(shot,'+0',['LIUQE' endstr(2:2)]);
+	fsd=psitbxp2p(psi,'FS');
+	fsg=psitbxfsg(fsd);
+	tracetdi.data = fsg.vol.x;
+	tracetdi.dim{1}=fsg.vol.grid.x{:}';
+	tracetdi.dim{2}=fsg.vol.grid.t';
+      end
     end
     trace.data=tracetdi.data;
     for i=1:size(tracetdi.data,2)
@@ -690,7 +763,7 @@ switch TCVkeywrdcase{index}
     if any(strcmp(fieldnames(tracetdi),'units'))
       trace.units=tracetdi.units;
     end
-    trace.name=[num2str(shot) '; sqrt(V/Va) from ' nodenameeff liuqe_ext];
+    trace.name=[num2str(shot) '; sqrt(V/Va) from ' nodenameeff '_' num2str(liuqe_version)];
     mdsclose;
 
   %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
@@ -718,7 +791,7 @@ switch TCVkeywrdcase{index}
         if nargin>=5 & ~isempty(varargin{3})
           zmag=varargin{3};
         else
-          zmag=loadTCVdata(shot,['zmag' liuqe_ext]);
+          zmag=loadTCVdata(shot,['zmag' '_' num2str(liuqe_version)]);
         end
         t_1=zmag.t(1);
         t_2=zmag.t(end);