Skip to content
Snippets Groups Projects
Commit 95d2f04d authored by Olivier Sauter's avatar Olivier Sauter
Browse files

add generic cocos transformations

parent 15dab419
No related branches found
No related tags found
1 merge request!17add generic cocos transformations
Pipeline #19246 failed
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);
......@@ -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);
......@@ -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);
......@@ -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);
......@@ -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);
......@@ -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);
......@@ -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);
......@@ -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);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment