diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m
index a490cc5c799b502b9ef3b19cf77c15ab93beac23..97bf2f0bc49767a019d36c38d35c0c5cf05c0ba7 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m
@@ -1,6 +1,6 @@
-function [ids_cores_profiles,ids_cores_profiles_description,varargout] = tcv_get_ids_core_profiles(shot,ids_equil_empty, gdat_params,varargin);
+function [ids_core_profiles,ids_core_profiles_description,varargout] = tcv_get_ids_core_profiles(shot,ids_equil_empty, gdat_params,varargin);
 %
-%  [ids_cores_profiles,ids_cores_profiles_description,varargout] = tcv_get_ids_cores_profiles(shot,ids_equil_empty,varargin);
+%  [ids_core_profiles,ids_core_profiles_description,varargout] = tcv_get_ids_core_profiles(shot,ids_equil_empty,varargin);
 %
 %
 % gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options
@@ -21,8 +21,8 @@ machine = 'tcv';
 tens_time = -1;
 tens_rho = -0.1;
 
-[ids_cores_profiles, params_cores_profiles] = tcv_ids_headpart(shot,ids_equil_empty,'cores_profiles',varargin{:});
-ids_cores_profiles_description = [];
+[ids_core_profiles, params_cores_profiles] = tcv_ids_headpart(shot,ids_equil_empty,'cores_profiles',varargin{:});
+ids_core_profiles_description = [];
 
 % base all from times fro nete_rho (which should be conf by default)
 temp_1d.ne_rho = gdat(params_cores_profiles.shot,'ne_rho','machine',machine,'fit',1);
@@ -34,13 +34,20 @@ temp_1d.fit.te_rho.shot = temp_1d.te_rho.shot;
 temp_1d.fit.te_rho = get_grids_1d(temp_1d.fit.te_rho,1,1);
 
 temp_1d.fit.ne_rho = temp_1d.ne_rho.fit;
-ids_cores_profiles.time = temp_1d.te_rho.fit.t;
-ids_cores_profiles_description.time = ['.t subfield from: [''te_rho'',''subnode'',''fit.t''] thus from ' temp_1d.te_rho.fit.data_fullpath];
+if isempty(temp_1d.te_rho.fit.t)
+  disp('te_rho.fit')
+  temp_1d.te_rho.fit
+  warning('may need to run analysis again for profiles fitting, ask O. Sauter')
+  return
+end
+
+ids_core_profiles.time = temp_1d.te_rho.fit.t;
+ids_core_profiles_description.time = ['.t subfield from: [''te_rho'',''subnode'',''fit.t''] thus from ' temp_1d.te_rho.fit.data_fullpath];
 
 % make empty cell arrays for subnodes not filled in before copying default structure to all times
-ids_cores_profiles.profiles_1d{1}.ion{1}.state = {};
-ids_cores_profiles.profiles_1d{1}.neutral{1}.state = {};
-ids_cores_profiles.profiles_1d(1:length(ids_cores_profiles.time)) = ids_cores_profiles.profiles_1d(1);
+ids_core_profiles.profiles_1d{1}.ion{1}.state = {};
+ids_core_profiles.profiles_1d{1}.neutral{1}.state = {};
+ids_core_profiles.profiles_1d(1:length(ids_core_profiles.time)) = ids_core_profiles.profiles_1d(1);
 
 
 % As a general rule, for a new substructure under the main ids, construct a local structure like:
@@ -52,9 +59,9 @@ ids_cores_profiles.profiles_1d(1:length(ids_cores_profiles.time)) = ids_cores_pr
 vacuum_toroidal_field.b0=gdat(params_cores_profiles.shot,'b0','source','liuqe','machine',machine); % to get on liuqe time array
 vacuum_toroidal_field_desc.b0 = '''b0'',''source'',''liuqe''';
 vacuum_toroidal_field_desc.r0 = '.r0 subfield from: [''b0'',''source'',''liuqe'']';
-ids_cores_profiles.vacuum_toroidal_field.r0 = vacuum_toroidal_field.b0.r0;
-ids_cores_profiles.vacuum_toroidal_field.b0 = interpos(63,vacuum_toroidal_field.b0.t,vacuum_toroidal_field.b0.data,ids_cores_profiles.time,-1);
-ids_cores_profiles_description.vacuum_toroidal_field = vacuum_toroidal_field_desc;
+ids_core_profiles.vacuum_toroidal_field.r0 = vacuum_toroidal_field.b0.r0;
+ids_core_profiles.vacuum_toroidal_field.b0 = interpos(63,vacuum_toroidal_field.b0.t,vacuum_toroidal_field.b0.data,ids_core_profiles.time,-1);
+ids_core_profiles_description.vacuum_toroidal_field = vacuum_toroidal_field_desc;
 
 % global_quantities data into local global_quantities.* structure with correct end names and global_quantities_desc.* with description. Use temp.* and temp_desc.* structures for temporary data
 
@@ -86,16 +93,16 @@ global_quantities_desc.energy_diamagnetic = 'w_mhd';
 global_quantities.z_eff_resistive = gdat(params_cores_profiles.shot,'results.conf:z_eff','machine',machine,'fit',1);
 global_quantities_desc.z_eff_resistive = 'results.conf:z_eff';
 
-ids_cores_profiles_description.global_quantities = global_quantities_desc;
+ids_core_profiles_description.global_quantities = global_quantities_desc;
 
 global_quantities_fieldnames = fieldnames(global_quantities);
 special_fields = {''}; % fields needing non-automatic treatments
 for i=1:length(global_quantities_fieldnames)
   if ~any(strcmp(global_quantities_fieldnames{i},special_fields))
-    if ~isstruct(ids_cores_profiles.global_quantities.(global_quantities_fieldnames{i}))
-      ids_cores_profiles.global_quantities.(global_quantities_fieldnames{i}) = ...
+    if ~isstruct(ids_core_profiles.global_quantities.(global_quantities_fieldnames{i}))
+      ids_core_profiles.global_quantities.(global_quantities_fieldnames{i}) = ...
           interpos(global_quantities.(global_quantities_fieldnames{i}).t, ...
-          global_quantities.(global_quantities_fieldnames{i}).data,ids_cores_profiles.time,tens_time);
+          global_quantities.(global_quantities_fieldnames{i}).data,ids_core_profiles.time,tens_time);
     else
       special_fields{end+1} = global_quantities_fieldnames{i};
     end
@@ -108,77 +115,77 @@ end
 %% profiles_1d (cannot use eqdsk since not same radial mesh)
 temp_1d.area = gdat(shot,'area_rho','machine',machine);
 for ir=1:length(temp_1d.area.x)
-  area_cpt(ir,:) = interpos(temp_1d.area.t,temp_1d.area.data(ir,:),ids_cores_profiles.time,tens_time);
+  area_cpt(ir,:) = interpos(temp_1d.area.t,temp_1d.area.data(ir,:),ids_core_profiles.time,tens_time);
 end
 temp_1d.q = gdat(shot,'q_rho','machine',machine);
 for ir=1:length(temp_1d.q.x)
-  q_cpt(ir,:) = interpos(temp_1d.q.t,temp_1d.q.data(ir,:),ids_cores_profiles.time,tens_time);
+  q_cpt(ir,:) = interpos(temp_1d.q.t,temp_1d.q.data(ir,:),ids_core_profiles.time,tens_time);
 end
-it_thom = iround_os(temp_1d.te_rho.t,ids_cores_profiles.time);
-for it=1:length(ids_cores_profiles.time)
-  ids_cores_profiles.profiles_1d{it}.grid.rho_tor_norm = temp_1d.fit.te_rho.grids_1d.rhotornorm(:,it);
-  ids_cores_profiles.profiles_1d{it}.grid.rho_tor = temp_1d.fit.te_rho.grids_1d.rhotornorm(:,it) ...
+it_thom = iround_os(temp_1d.te_rho.t,ids_core_profiles.time);
+for it=1:length(ids_core_profiles.time)
+  ids_core_profiles.profiles_1d{it}.grid.rho_tor_norm = temp_1d.fit.te_rho.grids_1d.rhotornorm(:,it);
+  ids_core_profiles.profiles_1d{it}.grid.rho_tor = temp_1d.fit.te_rho.grids_1d.rhotornorm(:,it) ...
       .* temp_1d.fit.te_rho.grids_1d.rhotor_edge(it);
-  ids_cores_profiles.profiles_1d{it}.grid.psi = temp_1d.fit.te_rho.grids_1d.psi(:,it);
-  ids_cores_profiles.profiles_1d{it}.grid.volume = temp_1d.fit.te_rho.grids_1d.rhovolnorm(:,it).^2 ...
+  ids_core_profiles.profiles_1d{it}.grid.psi = temp_1d.fit.te_rho.grids_1d.psi(:,it);
+  ids_core_profiles.profiles_1d{it}.grid.volume = temp_1d.fit.te_rho.grids_1d.rhovolnorm(:,it).^2 ...
       .* temp_1d.fit.te_rho.grids_1d.volume_edge(it);
-  ids_cores_profiles.profiles_1d{it}.grid.area = interpos(temp_1d.area.x,area_cpt(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ...
+  ids_core_profiles.profiles_1d{it}.grid.area = interpos(temp_1d.area.x,area_cpt(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ...
           tens_rho,[1 2],[0 area_cpt(end,it)]);
-  ids_cores_profiles.profiles_1d{it}.time = ids_cores_profiles.time(it);
-  ids_cores_profiles.profiles_1d{it}.electrons.temperature = temp_1d.fit.te_rho.data(:,it);
-  ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured = temp_1d.te_rho.data(:,it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.time_measurement = temp_1d.te_rho.t(it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.rho_tor_norm = temp_1d.te_rho.grids_1d.rhotornorm(:,it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.source = {'Thomson, interpos fit'};
-  ids_cores_profiles.profiles_1d{it}.electrons.density = temp_1d.fit.ne_rho.data(:,it);
-  ids_cores_profiles.profiles_1d{it}.electrons.density_thermal = ids_cores_profiles.profiles_1d{it}.electrons.density;
-  ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured = temp_1d.ne_rho.data(:,it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.density_fit.time_measurement = temp_1d.ne_rho.t(it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.density_fit.rho_tor_norm = temp_1d.ne_rho.grids_1d.rhotornorm(:,it_thom(it));
-  ids_cores_profiles.profiles_1d{it}.electrons.density_fit.source = {'Thomson, interpos fit'};
-  ids_cores_profiles.profiles_1d{it}.electrons.pressure_thermal = 1.6022e-19.*ids_cores_profiles.profiles_1d{it}.electrons.density_thermal ...
-      .* ids_cores_profiles.profiles_1d{it}.electrons.temperature;
-  ids_cores_profiles.profiles_1d{it}.zeff = global_quantities.z_eff_resistive.data(it) .* ...
-      ones(size(ids_cores_profiles.profiles_1d{it}.electrons.density));
+  ids_core_profiles.profiles_1d{it}.time = ids_core_profiles.time(it);
+  ids_core_profiles.profiles_1d{it}.electrons.temperature = temp_1d.fit.te_rho.data(:,it);
+  ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured = temp_1d.te_rho.data(:,it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.time_measurement = temp_1d.te_rho.t(it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.rho_tor_norm = temp_1d.te_rho.grids_1d.rhotornorm(:,it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.source = {'Thomson, interpos fit'};
+  ids_core_profiles.profiles_1d{it}.electrons.density = temp_1d.fit.ne_rho.data(:,it);
+  ids_core_profiles.profiles_1d{it}.electrons.density_thermal = ids_core_profiles.profiles_1d{it}.electrons.density;
+  ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured = temp_1d.ne_rho.data(:,it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.density_fit.time_measurement = temp_1d.ne_rho.t(it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.density_fit.rho_tor_norm = temp_1d.ne_rho.grids_1d.rhotornorm(:,it_thom(it));
+  ids_core_profiles.profiles_1d{it}.electrons.density_fit.source = {'Thomson, interpos fit'};
+  ids_core_profiles.profiles_1d{it}.electrons.pressure_thermal = 1.6022e-19.*ids_core_profiles.profiles_1d{it}.electrons.density_thermal ...
+      .* ids_core_profiles.profiles_1d{it}.electrons.temperature;
+  ids_core_profiles.profiles_1d{it}.zeff = global_quantities.z_eff_resistive.data(it) .* ...
+      ones(size(ids_core_profiles.profiles_1d{it}.electrons.density));
 end
 
 zeff_error = 0.5;
 switch error_bar
  case 'delta'
-  for it=1:length(ids_cores_profiles.time)
-    ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = temp_1d.ne_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.zeff_error_upper = zeff_error .* ones(size(ids_cores_profiles.profiles_1d{it}.zeff));
+  for it=1:length(ids_core_profiles.time)
+    ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = temp_1d.te_rho.error_bar(:,it_thom(it));
+    ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = temp_1d.ne_rho.error_bar(:,it_thom(it));
+    ids_core_profiles.profiles_1d{it}.zeff_error_upper = zeff_error .* ones(size(ids_core_profiles.profiles_1d{it}.zeff));
   end
  case 'delta_with_lower'
-  for it=1:length(ids_cores_profiles.time)
-    ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_lower = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper;
-    ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = temp_1d.ne_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_lower = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper;
-    ids_cores_profiles.profiles_1d{it}.zeff_error_upper = zeff_error .* ones(size(ids_cores_profiles.profiles_1d{it}.zeff));
-    ids_cores_profiles.profiles_1d{it}.zeff_error_lower = ids_cores_profiles.profiles_1d{it}.zeff_error_upper;
+  for it=1:length(ids_core_profiles.time)
+    ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = temp_1d.te_rho.error_bar(:,it_thom(it));
+    ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_lower = ...
+        ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper;
+    ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = temp_1d.ne_rho.error_bar(:,it_thom(it));
+    ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_lower = ...
+        ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper;
+    ids_core_profiles.profiles_1d{it}.zeff_error_upper = zeff_error .* ones(size(ids_core_profiles.profiles_1d{it}.zeff));
+    ids_core_profiles.profiles_1d{it}.zeff_error_lower = ids_core_profiles.profiles_1d{it}.zeff_error_upper;
   end
  case 'added'
-  for it=1:length(ids_cores_profiles.time)
-    ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured ...
+  for it=1:length(ids_core_profiles.time)
+    ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_upper = ...
+        ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured ...
         + temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_lower = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.temperature_fit.measured ...
+    ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured_error_lower = ...
+        ids_core_profiles.profiles_1d{it}.electrons.temperature_fit.measured ...
         - temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured ...
+    ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_upper = ...
+        ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured ...
         + temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured_error_lower = ...
-        ids_cores_profiles.profiles_1d{it}.electrons.density_fit.measured ...
+    ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured_error_lower = ...
+        ids_core_profiles.profiles_1d{it}.electrons.density_fit.measured ...
         - temp_1d.te_rho.error_bar(:,it_thom(it));
-    ids_cores_profiles.profiles_1d{it}.zeff_error_upper = min(6,ids_cores_profiles.profiles_1d{it}.zeff ...
-        + zeff_error .* ones(size(ids_cores_profiles.profiles_1d{it}.zeff)));
-    ids_cores_profiles.profiles_1d{it}.zeff_error_upper = max(1,ids_cores_profiles.profiles_1d{it}.zeff ...
-        - zeff_error .* ones(size(ids_cores_profiles.profiles_1d{it}.zeff)));
+    ids_core_profiles.profiles_1d{it}.zeff_error_upper = min(6,ids_core_profiles.profiles_1d{it}.zeff ...
+        + zeff_error .* ones(size(ids_core_profiles.profiles_1d{it}.zeff)));
+    ids_core_profiles.profiles_1d{it}.zeff_error_upper = max(1,ids_core_profiles.profiles_1d{it}.zeff ...
+        - zeff_error .* ones(size(ids_core_profiles.profiles_1d{it}.zeff)));
   end
  otherwise
   error(['tcv_ids_bpol_loop: error_bar option not known: ' error_bar])
@@ -202,81 +209,86 @@ temp_1d.ti.fit = temp_1d.ti_conf_rho;
 temp_1d.ti.fit =get_grids_1d(temp_1d.ti.fit,1,1);
 temp_1d.ni.fit = temp_1d.ni_conf_rho;
 temp_1d.ni.fit =get_grids_1d(temp_1d.ni.fit,1,1);
-it_ti = iround_os(temp_1d.ti.fit.t,ids_cores_profiles.time);
+it_ti = iround_os(temp_1d.ti.fit.t,ids_core_profiles.time);
 % assumed 1 impurity with Zp=6
 Zp = 6.;
-for it=1:length(ids_cores_profiles.time)
-  ids_cores_profiles.profiles_1d{it}.ion{1}.element{1}.a = 2.;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.element{1}.z_n = 1;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.element{1}.atoms_n = 1;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.element{1}.z_ion = 1;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.element{1}.label = 'D+';
-  ids_cores_profiles.profiles_1d{it}.ion{1}.multiple_states_flag = 0;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.temperature = temp_1d.ti.fit.data(:,it_ti(it));
-  ids_cores_profiles.profiles_1d{it}.ion{1}.density = (temp_1d.ni.fit.data(:,it_ti(it)).*Zp-ids_cores_profiles.profiles_1d{it}.electrons.density)./(Zp-1.);
-  ids_cores_profiles.profiles_1d{it}.ion{1}.density_thermal = ids_cores_profiles.profiles_1d{it}.ion{1}.density;
-  ids_cores_profiles.profiles_1d{it}.ion{1}.pressure_thermal = 1.6022e-19.*ids_cores_profiles.profiles_1d{it}.ion{1}.density_thermal ...
-      .* ids_cores_profiles.profiles_1d{it}.ion{1}.temperature;
+for it=1:length(ids_core_profiles.time)
+  ids_core_profiles.profiles_1d{it}.ion{1}.element{1}.a = 2.;
+  ids_core_profiles.profiles_1d{it}.ion{1}.element{1}.z_n = 1;
+  ids_core_profiles.profiles_1d{it}.ion{1}.element{1}.atoms_n = 1;
+  ids_core_profiles.profiles_1d{it}.ion{1}.element{1}.z_ion = 1;
+  ids_core_profiles.profiles_1d{it}.ion{1}.element{1}.label = 'D+';
+  ids_core_profiles.profiles_1d{it}.ion{1}.multiple_states_flag = 0;
+  ids_core_profiles.profiles_1d{it}.ion{1}.temperature = temp_1d.ti.fit.data(:,it_ti(it));
+  ids_core_profiles.profiles_1d{it}.ion{1}.density = (temp_1d.ni.fit.data(:,it_ti(it)).*Zp-ids_core_profiles.profiles_1d{it}.electrons.density)./(Zp-1.);
+  ids_core_profiles.profiles_1d{it}.ion{1}.density_thermal = ids_core_profiles.profiles_1d{it}.ion{1}.density;
+  ids_core_profiles.profiles_1d{it}.ion{1}.pressure_thermal = 1.6022e-19.*ids_core_profiles.profiles_1d{it}.ion{1}.density_thermal ...
+      .* ids_core_profiles.profiles_1d{it}.ion{1}.temperature;
   %
-  ids_cores_profiles.profiles_1d{it}.t_i_average = ids_cores_profiles.profiles_1d{it}.ion{1}.temperature;
-  ids_cores_profiles.profiles_1d{it}.n_i_thermal_total = ids_cores_profiles.profiles_1d{it}.ion{1}.density_thermal;
-  ids_cores_profiles.profiles_1d{it}.pressure_ion_total = 1.6022e-19 .* ids_cores_profiles.profiles_1d{it}.n_i_thermal_total ...
-      .* ids_cores_profiles.profiles_1d{it}.t_i_average;
-  ids_cores_profiles.profiles_1d{it}.pressure_thermal = ids_cores_profiles.profiles_1d{it}.pressure_ion_total ...
-      + ids_cores_profiles.profiles_1d{it}.electrons.pressure_thermal;
+  ids_core_profiles.profiles_1d{it}.t_i_average = ids_core_profiles.profiles_1d{it}.ion{1}.temperature;
+  ids_core_profiles.profiles_1d{it}.n_i_thermal_total = ids_core_profiles.profiles_1d{it}.ion{1}.density_thermal;
+  ids_core_profiles.profiles_1d{it}.pressure_ion_total = 1.6022e-19 .* ids_core_profiles.profiles_1d{it}.n_i_thermal_total ...
+      .* ids_core_profiles.profiles_1d{it}.t_i_average;
+  ids_core_profiles.profiles_1d{it}.pressure_thermal = ids_core_profiles.profiles_1d{it}.pressure_ion_total ...
+      + ids_core_profiles.profiles_1d{it}.electrons.pressure_thermal;
   %
   % C from zeff and above Ti at this stage, should take from cxrs if available but then add something for Zeff matching above
   %
-  ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.a = 12.;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.z_n = 6.;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.atoms_n = 1.;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.z_ion = 6.;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.label = 'C6+';
-  ids_cores_profiles.profiles_1d{it}.ion{2}.multiple_states_flag = 0;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.temperature = ids_cores_profiles.profiles_1d{it}.ion{1}.temperature;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.density = (ids_cores_profiles.profiles_1d{it}.electrons.density - ids_cores_profiles.profiles_1d{it}.ion{1}.density) ./ ids_cores_profiles.profiles_1d{it}.ion{2}.element{1}.z_ion;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.density_thermal = ids_cores_profiles.profiles_1d{it}.ion{2}.density;
-  ids_cores_profiles.profiles_1d{it}.ion{2}.pressure_thermal = 1.6022e-19.*ids_cores_profiles.profiles_1d{it}.ion{2}.density_thermal ...
-      .* ids_cores_profiles.profiles_1d{it}.ion{2}.temperature;
+  ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.a = 12.;
+  ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.z_n = 6.;
+  ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.atoms_n = 1.;
+  ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.z_ion = 6.;
+  ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.label = 'C6+';
+  ids_core_profiles.profiles_1d{it}.ion{2}.multiple_states_flag = 0;
+  ids_core_profiles.profiles_1d{it}.ion{2}.temperature = ids_core_profiles.profiles_1d{it}.ion{1}.temperature;
+  ids_core_profiles.profiles_1d{it}.ion{2}.density = (ids_core_profiles.profiles_1d{it}.electrons.density - ids_core_profiles.profiles_1d{it}.ion{1}.density) ./ ids_core_profiles.profiles_1d{it}.ion{2}.element{1}.z_ion;
+  ids_core_profiles.profiles_1d{it}.ion{2}.density_thermal = ids_core_profiles.profiles_1d{it}.ion{2}.density;
+  ids_core_profiles.profiles_1d{it}.ion{2}.pressure_thermal = 1.6022e-19.*ids_core_profiles.profiles_1d{it}.ion{2}.density_thermal ...
+      .* ids_core_profiles.profiles_1d{it}.ion{2}.temperature;
   % average/sums
-  ids_cores_profiles.profiles_1d{it}.t_i_average = ids_cores_profiles.profiles_1d{it}.ion{1}.temperature;
-  ids_cores_profiles.profiles_1d{it}.n_i_thermal_total = ids_cores_profiles.profiles_1d{it}.ion{1}.density_thermal + ...
-      ids_cores_profiles.profiles_1d{it}.ion{2}.density_thermal;
-  ids_cores_profiles.profiles_1d{it}.pressure_ion_total = 1.6022e-19 .* ids_cores_profiles.profiles_1d{it}.n_i_thermal_total ...
-      .* ids_cores_profiles.profiles_1d{it}.t_i_average;
-  ids_cores_profiles.profiles_1d{it}.pressure_thermal = ids_cores_profiles.profiles_1d{it}.pressure_ion_total ...
-      + ids_cores_profiles.profiles_1d{it}.electrons.pressure_thermal;  
+  ids_core_profiles.profiles_1d{it}.t_i_average = ids_core_profiles.profiles_1d{it}.ion{1}.temperature;
+  ids_core_profiles.profiles_1d{it}.n_i_thermal_total = ids_core_profiles.profiles_1d{it}.ion{1}.density_thermal + ...
+      ids_core_profiles.profiles_1d{it}.ion{2}.density_thermal;
+  ids_core_profiles.profiles_1d{it}.pressure_ion_total = 1.6022e-19 .* ids_core_profiles.profiles_1d{it}.n_i_thermal_total ...
+      .* ids_core_profiles.profiles_1d{it}.t_i_average;
+  ids_core_profiles.profiles_1d{it}.pressure_thermal = ids_core_profiles.profiles_1d{it}.pressure_ion_total ...
+      + ids_core_profiles.profiles_1d{it}.electrons.pressure_thermal;  
 end
 if ~isempty(temp_1d.cxrs_rho.ti.fit.data)
-  it_raw = iround_os(temp_1d.ti.raw.t,ids_cores_profiles.time);
-  for it=1:length(ids_cores_profiles.time)
-    % ids_cores_profiles.profiles_1d{it}.ion{1}.temperature_fit = temp_1d.ti.fit(:,it_ti(it));
-    ids_cores_profiles.profiles_1d{it}.ion{1}.density_fit.source = {'from Zeff and ne profile'};
-    ids_cores_profiles.profiles_1d{it}.t_i_average_fit.measured = temp_1d.ti.raw.data(:,it_raw(it));
-    ids_cores_profiles.profiles_1d{it}.t_i_average_fit.source = {'from CXRS on C usually'};
+  it_raw = iround_os(temp_1d.ti.raw.t,ids_core_profiles.time);
+  for it=1:length(ids_core_profiles.time)
+    % ids_core_profiles.profiles_1d{it}.ion{1}.temperature_fit = temp_1d.ti.fit(:,it_ti(it));
+    ids_core_profiles.profiles_1d{it}.ion{1}.density_fit.source = {'from Zeff and ne profile'};
+    ids_core_profiles.profiles_1d{it}.t_i_average_fit.measured = temp_1d.ti.raw.data(:,it_raw(it));
+    ids_core_profiles.profiles_1d{it}.t_i_average_fit.source = {'from CXRS on C usually'};
   end
 end
 
 temp_1d.q = gdat(shot,'q_rho','machine',machine);
 for ir=1:length(temp_1d.q.x)
-  q_cpt(ir,:) = interpos(temp_1d.q.t,temp_1d.q.data(ir,:),ids_cores_profiles.time,tens_time);
+  q_cpt(ir,:) = interpos(temp_1d.q.t,temp_1d.q.data(ir,:),ids_core_profiles.time,tens_time);
 end
-for it=1:length(ids_cores_profiles.time)
-  [ids_cores_profiles.profiles_1d{it}.q] = interpos(temp_1d.q.x,q_cpt(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ...
+for it=1:length(ids_core_profiles.time)
+  [ids_core_profiles.profiles_1d{it}.q] = interpos(temp_1d.q.x,q_cpt(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ...
           tens_rho,[1 0],[0 0]);
-  [qfit,dqdrhotor] = interpos(ids_cores_profiles.profiles_1d{it}.grid.rho_tor,ids_cores_profiles.profiles_1d{it}.q,tens_rho,[1 0],[0 0]);
-  ids_cores_profiles.profiles_1d{it}.shear = ids_cores_profiles.profiles_1d{it}.grid.rho_tor./ids_cores_profiles.profiles_1d{it}.q ...
+  [qfit,dqdrhotor] = interpos(ids_core_profiles.profiles_1d{it}.grid.rho_tor,ids_core_profiles.profiles_1d{it}.q,tens_rho,[1 0],[0 0]);
+  ids_core_profiles.profiles_1d{it}.magnetic_shear = ids_core_profiles.profiles_1d{it}.grid.rho_tor./ids_core_profiles.profiles_1d{it}.q ...
       .* dqdrhotor;
 end
 
 if nargin <= 2
-  ids_cores_profiles.code.name = ['tcv_get_ids_core_profiles, within gdat, with shot= ' num2str(shot) ];
+  ids_core_profiles.code.name = ['tcv_get_ids_core_profiles, within gdat, with shot= ' num2str(shot) ];
 else
-  ids_cores_profiles.code.name = ['tcv_get_ids_core_profiles, within gdat, with shot= ' num2str(shot) '; varargin: ' varargin{:}];
+  ids_core_profiles.code.name = ['tcv_get_ids_core_profiles, within gdat, with shot= ' num2str(shot) '; varargin: ' varargin{:}];
 end
-ids_cores_profiles.code.output_flag = zeros(size(ids_cores_profiles.time));
+ids_core_profiles.code.output_flag = zeros(size(ids_core_profiles.time));
 
 % make arrays not filled in empty:
-for it=1:length(ids_cores_profiles.time)
-  ids_cores_profiles.profiles_1d{it}.neutral = {};
+for it=1:length(ids_core_profiles.time)
+  ids_core_profiles.profiles_1d{it}.neutral = {};
 end
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_core_profiles,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_core_profiles,'core_profiles',cocos_in,cocos_out);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m
index d7ace2cdcf8e0255a645cb8209ae453574145331..a9fde774e11d3586e0b0c054e99af1f42dda89f9 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m
@@ -74,3 +74,8 @@ for iant=1:nb_antennas
     end
   end
 end
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_ec_antennas,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_ec_antennas,'ec_antennas',cocos_in,cocos_out);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m
index c864b2d54e725b483fc12989471f642a3fe34060..1a129def4147d91a79db7fd928d5ad79e3fd5ee7 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m
@@ -372,3 +372,8 @@ for it=1:numel(ids_equilibrium.time_slice)
   ids_equilibrium.time_slice{it}.constraints.q = {};
   ids_equilibrium.time_slice{it}.constraints.x_point = {};
 end
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_equilibrium,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_equilibrium,'equilibrium',cocos_in,cocos_out);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
index 86449e0e1efb992e144eb4334efa5124179a9f25..202b3540b1cfcf4590ead8968c6d5f4d8e8e1bf9 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m
@@ -13,3 +13,7 @@ function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magne
 
 % make arrays not filled in empty: not the case for magnetics
 
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_magnetics,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_magnetics,'magnetics',cocos_in,cocos_out);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_nbi.m b/matlab/TCV_IMAS/tcv_get_ids_nbi.m
index 4c627bd1396f4dfdd43a58f28ea6c70d4e1e284f..efbd0c7f17b8478f2566b86bd34e3857f2338f27 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_nbi.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_nbi.m
@@ -114,3 +114,10 @@ for iunit=1:nb_units
   % M. Vallar thinks it is useless now
 
 end
+
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_nbi2,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_nbi,'nbi',cocos_in,cocos_out);
+
diff --git a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
index 045275b21f994de06def353ea089fb05013e85c1..1d3fa00d8c50dd505360c1449ed2f9c75e3b83c3 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m
@@ -14,3 +14,7 @@ function [ids_pf_active,ids_pf_active_description,varargout] = tcv_get_ids_pf_ac
 % make arrays not filled in empty: not the case for magnetics
 ids_pf_active.vertical_force = {};
 
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_pf_active,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_pf_active,'pf_active',cocos_in,cocos_out);
diff --git a/matlab/TCV_IMAS/tcv_get_ids_tf.m b/matlab/TCV_IMAS/tcv_get_ids_tf.m
index d0985503b3c8d59f7155274230b3d9775e143e32..9f281b6e0e17dae8578700be653489d98a94b4af 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_tf.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_tf.m
@@ -28,3 +28,9 @@ end
 % make arrays not filled in empty: not the case for magnetics
 ids_tf_out.coil = {};
 ids_tf_out.field_map = {};
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+[ids_tf_out,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_tf_out,'tf',cocos_in,cocos_out);
+
diff --git a/matlab/TCV_IMAS/tcv_get_ids_wall.m b/matlab/TCV_IMAS/tcv_get_ids_wall.m
index ee21b9b5b09d5cf8558f894ba5f825677ef22751..069dbf02065f9c6ddd0cae2f2e3ca9005e300227 100644
--- a/matlab/TCV_IMAS/tcv_get_ids_wall.m
+++ b/matlab/TCV_IMAS/tcv_get_ids_wall.m
@@ -18,3 +18,9 @@ ids_wall.description_2d{1}.mobile.unit = {};
 
 %% TODO 
 ids_description = [];
+
+% cocos automatic transform
+cocos_in=17;
+cocos_out=11;
+% normally nothing to do
+[ids_wall,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_wall,'wall',cocos_in,cocos_out);