diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m
index e45c3246d111c0d1b58d39195eb0518e4979ab0b..4925e0a7ef2131a9694d0d939238ea07c1432cd2 100644
--- a/matlab/TCV/gdat_tcv.m
+++ b/matlab/TCV/gdat_tcv.m
@@ -2941,174 +2941,29 @@ elseif strcmp(mapping_for_tcv.method,'switchcase')
     %Get the data from mds and fill the data structure defined by
     %define_simulink_signals
 
-    % If the rtccode/developemnet folder is not in your path
-    % read from default or Carpanese's folder ( he might have not
-    % updated the folder to the last version)
-    aaa=which('take_all_signals');
+    % If the rtccode/tools not in paths use sauter's link
+    % need: get_scd_mems.m
+    %
+    aaa=which('get_scd_mems');
     if isempty(aaa)
-      if exist('/home/sauter/TCV/rtc_tools_io_defs_crpptbx')
-        addpath('/home/sauter/TCV/rtc_tools_io_defs_crpptbx','-end');
-      elseif exist('~/rtccode/development/tools/io_defs')
-        addpath('~/rtccode/development/tools/io_defs','-end');
-      else
-        addpath('/home/carpanes/rtccode/development/tools/io_defs','-end');
-      end
-    end
-    sources_avail = {'defined', 'all', 'adcs'};
-    %Check if varargins match source_avail
-    if ~isfield(gdat_data.gdat_params,'source') || isempty(gdat_data.gdat_params.source) % with no specifications all, defined, combined are taken
-      gdat_data.gdat_params.source = sources_avail(1:2);
-    elseif ~iscell(gdat_data.gdat_params.source)
-      if ischar(gdat_data.gdat_params.source)
-        gdat_data.gdat_params.source = lower(gdat_data.gdat_params.source);
-        if ~any(strmatch(gdat_data.gdat_params.source,lower(sources_avail)))
-          if (gdat_params.nverbose>=1)
-            warning(['source= ' gdat_data.gdat_params.source ' is not part of the available sources: ' sprintf('''%s'' ',sources_avail{:})]);
-          end
-          return
-        else
-          gdat_data.gdat_params.source = {lower(gdat_data.gdat_params.source)};
-        end
+      if exist('/home/sauter/NoTivoli/rtccode_develop/tools')
+        addpath('/home/sauter/NoTivoli/rtccode_develop/tools','-end');
       else
-        if (gdat_params.nverbose>=1); warning([' source parameter not compatible with: ' sprintf('''%s'' ',sources_avail{:})]); end
+        warning('Cannot add path for get_scd_mems')
         return
       end
-    else
-      tmp = {};
-      for i=1:length(gdat_data.gdat_params.source)
-        gdat_data.gdat_params.source{i} = lower(gdat_data.gdat_params.source{i}); %put vargin in params
-        if ~any(strmatch(gdat_data.gdat_params.source{i},lower(sources_avail)))
-          if gdat_data.gdat_params.nverbose>=1
-            warning(['source = ' gdat_data.gdat_params.source{i} ' not expected with data_request= ' data_request_eff])
-          end
-        else
-          tmp{end+1} = gdat_data.gdat_params.source{i};
-        end
-      end
-      gdat_data.gdat_params.source = tmp;
     end
-    if isfield(gdat_data.gdat_params,'max_adcs')
-      zshift = gdat_data.gdat_params.max_adcs;
-    else
-      gdat_data.gdat_params.max_adcs = [];
-    end
-
-    % Get data for the source requested
-    for isource=1:numel(gdat_data.gdat_params.source)
-      switch gdat_data.gdat_params.source{isource}
-       case 'adcs'
-        [DS, DSraw] = take_all_adcs(shot,gdat_data.gdat_params.max_adcs);
-        gdat_data.adcs = DSraw;
-        gdat_data.adcs_grouped = DS;
-        mdsclose;
-        mdsdisconnect;
-        mdsopen(shot);
-
-       case 'defined'
-        DS = take_all_signals(shot); %Read from mds
-        SDS_DS = define_simulink_signals(DS); %Put them in predifined structure
-        % Add the .data and .t structure
-        % there was a conflict with r 7471
-        for ii=1:numel(SDS_DS) %iter over node
-          node = ii;
-          for jj=1:numel(SDS_DS{ii}) %iter over threads
-            thread = jj;
-            if ~isempty(SDS_DS{ii}{jj})
-              fieldnameslist = fieldnames(SDS_DS{ii}{jj});
-              if SDS_DS{ii}{jj}.conf.hasthreads
-                is_with_threads = 1;
-              else
-                is_with_threads = 0;
-              end
-              for kk=2:numel(fieldnameslist) %iter over fieldnames (the  first one is configuration)
-                indices = SDS_DS{ii}{jj}.(fieldnameslist{kk}).ind;
-                SDS_DS{ii}{jj}.(fieldnameslist{kk}).data = [];
-                for zz=1:numel(indices) %iter over indices
-                  ind = indices(zz);
-                  mdsconnect('scd');
-                  mdsopen('rtc', shot);
-                  % data expression
-                  if is_with_threads ==0
-                    expression =  sprintf('\\top.crpprt%.2d.mems.mem_%.2d',node,ind);
-                  else
-                    expression =  sprintf('\\top.crpprt%.2d.thread%.1d.mems.mem_%.3d',node,thread,ind);
-                  end
-                  tmp = tdi(expression);
-                  if isnumeric(tmp.data) && ~isempty(tmp.data)
-                    SDS_DS{ii}{jj}.(fieldnameslist{kk}).data =[SDS_DS{ii}{jj}.(fieldnameslist{kk}).data;  tmp.data'];
-
-                    SDS_DS{ii}{jj}.(fieldnameslist{kk}).t =  tmp.dim{1};
-                  else
-                    fprintf('Warning node: %d   thread: %d   signal: %s   ind %d not available\n', ii,jj,fieldnameslist{kk}, zz );
-                  end
-                end
-              end
-            end
-          end
-        end
-        gdat_data.rtc_defined = SDS_DS;
-        mdsclose;
-        mdsdisconnect;
-
-       case 'all'
-        mdsconnect('scd');
-        mdsopen('rtc', shot);
-        %[node, threads, #number of signals for each thread of the node]
-        global_node_thread_signals = ...
-            [1,1,32;
-             2,1,32;
-             3,4,256;
-             6,4,256;
-             7,4,256;
-             8,4,256];
-        % Default signals initialization
-        AS = init_all_signals(global_node_thread_signals);
-        % Put signals in standard data strucure (SDS)
-        SDS_AS = define_simulink_signals(AS);
-        % Add the .data and .t structure
-        for ii=1:numel(SDS_AS) %iter over node
-          node = ii;
-          for jj=1:numel(SDS_AS{ii}) %iter over threads
-            thread = jj;
-            if ~isempty(SDS_AS{ii}{jj})
-              fieldnameslist = fieldnames(SDS_AS{ii}{jj});
-              if numel(SDS_AS{ii})>1
-                is_with_threads = 1;
-              else
-                is_with_threads = 0;
-              end
-              for kk=2:numel(fieldnameslist) %iter over fieldnames (the  first one is configuration)
-                indices = SDS_AS{ii}{jj}.(fieldnameslist{kk}).ind;
-                SDS_AS{ii}{jj}.(fieldnameslist{kk}).data = [];
-                for zz=1:numel(indices) %iter over indices
-                  ind = indices(zz);
-                  % data expression
-                  if is_with_threads ==0
-                    expression =  sprintf('\\top.crpprt%.2d.mems.mem_%.2d',node,ind);
-                  else
-                    expression =  sprintf('\\top.crpprt%.2d.thread%.1d.mems.mem_%.3d',node,thread,ind);
-                  end
-                  tmp = tdi(expression);
-                  if isnumeric(tmp.data)
-                    SDS_AS{ii}{jj}.(fieldnameslist{kk}).data =[SDS_AS{ii}{jj}.(fieldnameslist{kk}).data;  tmp.data'];
-                    SDS_AS{ii}{jj}.(fieldnameslist{kk}).t = tmp.dim{1};
-                  else
-                    if gdat_params.nverbose>=3
-                      fprintf('Warning node: %d   thread: %d   signal: %s   ind %d not available\n', ii,jj,fieldnameslist{kk},zz);
-                    end
-                  end
-                end
-              end
-            end
-          end
-        end
-        gdat_data.rtc_all = SDS_AS;
-        mdsclose;
-        mdsdisconnect;
-       otherwise
-        %to be added in case
+
+    aa = get_scd_mems(shot);
+    if isstruct(aa)
+      scd_names = fieldnames(aa);
+      for i=1:length(scd_names)
+        gdat_data.scd_mems.(scd_names{i}) = aa.(scd_names{i});
       end
     end
+    mdsclose;
+    mdsdisconnect;
+
 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    case {'sxr', 'mpx'}
diff --git a/matlab/TCV/tcv_requests_mapping.m b/matlab/TCV/tcv_requests_mapping.m
index d010ce02c19c67d6c95d5b3de07b9638d2bab44c..53398c803c3df34efd41521ff1ac41bf7d077d31 100644
--- a/matlab/TCV/tcv_requests_mapping.m
+++ b/matlab/TCV/tcv_requests_mapping.m
@@ -395,9 +395,10 @@ switch lower(data_request)
   mapping.expression = '\results::r_axis';
   mapping.expression = '\tcv_shot::top.results.equil_1.results:r_axis';
   mapping.expression = 'tcv_eq(''''r_axis'''',''''LIUQE.M'''')';
- case 'rtc'
+ case {'rtc','scd'}
+  if strcmp('scd',lower(data_request)); error('********* should call with request****** ''rtc'''); end
   mapping.timedim = 1;
-  mapping.label = 'rtc\_signals';
+  mapping.label = 'scd\_mems\_signals';
   mapping.method = 'switchcase';
   mapping.expression = '';
  case 'surface_rho'