diff --git a/crpptbx_new/TCV/gdat_tcv.m b/crpptbx_new/TCV/gdat_tcv.m
index 201b04d8afaeb494aee51365239995f1eaa5478d..d77241c779c88e1a592c8d1fb3a3d172804fb927 100644
--- a/crpptbx_new/TCV/gdat_tcv.m
+++ b/crpptbx_new/TCV/gdat_tcv.m
@@ -236,6 +236,15 @@ if liuqe_version==2 || liuqe_version==3
   substr_liuqe = ['_' num2str(liuqe_version)];
 end
 
+% special treatment for model shot=-1 or preparation shot >=100'000
+begstr = '';
+if shot==-1 || shot>=100000
+  % requires FBTE
+  liuqe_version = -1;
+  begstr = 'tcv_eq( "';
+  substr_liuqe = '", "FBTE" )';
+end
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 % Specifications on how to get the data provided in tcv_requests_mapping
@@ -244,8 +253,12 @@ gdat_data.label = mapping_for_tcv.label;
 
 ishot=NaN;
 if do_mdsopen_mdsclose
-  mdsdefaultserver tcv1.epfl.ch; % should be in tcv general path, but set-it in the meantime...
-  ishot = mdsopen(shot); % if ishot equal to shot, then mdsclose at the end
+  % mdsdefaultserver tcv1.epfl.ch; % should be in tcv general path, but set-it in the meantime...
+  if liuqe_version==-1
+    ishot = mdsopen('pcs', shot);
+  else
+    ishot = mdsopen(shot); % if ishot equal to shot, then mdsclose at the end
+  end
   if ishot~=shot
     warning(['cannot open shot= ' num2str(shot)])
     return
@@ -273,7 +286,14 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi')
       return
     end
   else
-    eval_expr = ['tdi(''' mapping_for_tcv.expression substr_tdi ''');'];
+    if liuqe_version==-1
+      if strcmp(lower(mapping_for_tcv.expression(1:8)),'\results')
+        mapping_for_tcv_expression_eff = mapping_for_tcv.expression(11:end);
+      end
+      eval_expr = ['tdi(''' begstr mapping_for_tcv_expression_eff substr_liuqe ''');']
+    else
+      eval_expr = ['tdi(''' mapping_for_tcv.expression substr_tdi ''');'];
+    end
     aatmp=eval(eval_expr);
   end
   if isempty(aatmp.data) || isempty(aatmp.dim) % || ischar(aatmp.data) (to add?)
@@ -403,7 +423,6 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     % B0 at R0=0.88
     R0EXP=0.88;
     if liuqe_version==-1
-      mdsopen( 'pcs', shot); %synthetic shot generated with FBT and MGAMS.
       nodenameeff = 'tcv_eq("BZERO","FBTE")';
       tracetdi=tdi(nodenameeff);
       gdat_data.data = tracetdi.data;
@@ -455,7 +474,7 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     gdat_data.data = 100.*beta.data ./ abs(ip_t).*1.e6 .* abs(b0_t) .* a_minor_t;
     gdat_data.data_fullpath='100*beta/ip*1e6*b0*a_minor, each from gdat_tcv';
     gdat_data.units = '';
-    gdat_data.dimunits = beta.dimunits;
+    gdat_data.dimunits = 's';
     
    case {'cxrs'}
     %not yet finished, just started
@@ -697,6 +716,65 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
       gdat_data.error_bar = 1.6022e-19 .* (gdat_data.ne.data .* gdat_data.te.error_bar ...
           + gdat_data.te.data .* gdat_data.ne.error_bar);
     end
+
+   case {'powers'}
+    % note: same time array for all main, ec, ohm, nbi, ...
+    % At this stage fill just ech, later add nbi
+    nodenameeff='\results::toray.input:p_gyro';
+    tracetdi=tdi(nodenameeff);
+    gdat_data.ec.data = tracetdi.data*1e3; % at this stage p_gyro is in kW'
+    gdat_data.ec.units = 'W';
+    gdat_data.ec.dim=tracetdi.dim;
+    gdat_data.ec.dimunits=tracetdi.dimunits;
+    gdat_data.ec.t=tracetdi.dim{1};
+    gdat_data.ec.x=tracetdi.dim{2};
+    gdat_data.ec.data_fullpath=[nodenameeff];
+    gdat_data.ec.label='P_{EC}';
+    % set ec time as reference
+    gdat_data.t = gdat_data.ec.t;
+    gdat_data.dim{1} = gdat_data.t;
+    gdat_data.dimunits{1} = 's';
+    gdat_data.units = 'W';
+    
+    % get ohmic power simply from vloop*Ip (minus sign for TCV)
+    ip=gdat([],'ip');
+    vloop=gdat([],'vloop');
+    tension = -1e5;
+    vloop_smooth=interpos(vloop.t,vloop.data,gdat_data.t,tension);
+    ip_t = interp1(ip.t,ip.data,gdat_data.t);
+    gdat_data.ohm.data = -vloop_smooth.*ip_t;
+    gdat_data.ohm.units = 'W';
+    gdat_data.ohm.dim=gdat_data.dim;
+    gdat_data.ohm.dimunits=gdat_data.dimunits;
+    gdat_data.ohm.t=gdat_data.t;
+    gdat_data.ohm.x=[];
+    gdat_data.ohm.data_fullpath=['-vloop(tens=' num2str(tension,'%.0e') ')*ip, from gdat'];
+    gdat_data.ohm.label='P_{OHM}';
+    
+    % total power from all above
+    gdat_data.data = gdat_data.ec.data(:,10) + gdat_data.ohm.data;
+    gdat_data.data_fullpath=['tot power from EC and ohm'];
+    gdat_data.label = 'P_{tot}=P_{EC}+P_{ohm}';
+
+   case {'q_rho'}
+    % q profile on psi from liuqe
+    nodenameeff='\results::q_psi';
+    if liuqe_version==-1
+      nodenameeff=[begstr 'q_psi' substr_liuqe];
+    end
+    tracetdi=tdi(nodenameeff);
+    gdat_data.data = tracetdi.data;
+    gdat_data.dim = tracetdi.dim;
+    gdat_data.t = gdat_data.dim{2};
+    gdat_data.data_fullpath=[nodenameeff ' on rhopol'];
+    rhopol_eff = ones(size(tracetdi.dim{1}));
+    rhopol_eff(:) = sqrt(linspace(0,1,length(tracetdi.dim{1})));
+    gdat_data.dim{1} = rhopol_eff;
+    gdat_data.dimunits{1} = '';
+    gdat_data.dimunits{2} = 's';
+    gdat_data.units = '';
+    gdat_data.request_description = 'q(rhopol\_norm)';
+
    otherwise
     warning(['switchcase= ' data_request_eff ' not known in gdat_tcv'])
     error_status=901;
diff --git a/crpptbx_new/TCV/tcv_requests_mapping.m b/crpptbx_new/TCV/tcv_requests_mapping.m
index 2478786aea8e9eca28f44f67cb5eafc76ca4f4ed..5c40373ad8e585113d6a5da1d27b93e37d7e9039 100644
--- a/crpptbx_new/TCV/tcv_requests_mapping.m
+++ b/crpptbx_new/TCV/tcv_requests_mapping.m
@@ -131,6 +131,7 @@ switch lower(data_request)
   mapping.timedim = 2;
   mapping.method = 'switchcase'; % especially since might have option fit, etc
  case 'powers'
+  mapping.timedim = 1;
   mapping.label = 'various powers';
   mapping.method = 'switchcase';
  case 'q0'
diff --git a/crpptbx_new/gdat_data_request_names_rho.xlsx b/crpptbx_new/gdat_data_request_names_rho.xlsx
index a291e3bd6b325ee1e93a860aaa627486929ad29e..7816b8dab8164387a65273c5600312467169ac69 100644
Binary files a/crpptbx_new/gdat_data_request_names_rho.xlsx and b/crpptbx_new/gdat_data_request_names_rho.xlsx differ