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

ids_core_profiles ready to be tested

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11790 d63d8f72-b253-0410-a779-e742ad2e26cf
parent 6f3f31d3
No related branches found
No related tags found
No related merge requests found
...@@ -92,7 +92,11 @@ end ...@@ -92,7 +92,11 @@ end
%% profiles_1d (cannot use eqdsk since not same radial mesh) %% profiles_1d (cannot use eqdsk since not same radial mesh)
temp_1d.area = gdat(shot,'area_rho','machine',machine); temp_1d.area = gdat(shot,'area_rho','machine',machine);
for ir=1:length(temp_1d.area.x) for ir=1:length(temp_1d.area.x)
aa(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_cores_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);
end end
it_thom = iround_os(temp_1d.te_rho.t,ids_cores_profiles.time); it_thom = iround_os(temp_1d.te_rho.t,ids_cores_profiles.time);
for it=1:length(ids_cores_profiles.time) for it=1:length(ids_cores_profiles.time)
...@@ -102,8 +106,8 @@ for it=1:length(ids_cores_profiles.time) ...@@ -102,8 +106,8 @@ for it=1:length(ids_cores_profiles.time)
ids_cores_profiles.profiles_1d{it}.grid.psi = temp_1d.fit.te_rho.grids_1d.psi(:,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_cores_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); .* temp_1d.fit.te_rho.grids_1d.volume_edge(it);
ids_cores_profiles.profiles_1d{it}.grid.area = interpos(temp_1d.area.x,aa(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ... ids_cores_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 aa(end,it)]); 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}.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 = 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.measured = temp_1d.te_rho.data(:,it_thom(it));
...@@ -170,130 +174,22 @@ if ~isempty(temp_1d.cxrs_rho.ti.fit.data) ...@@ -170,130 +174,22 @@ if ~isempty(temp_1d.cxrs_rho.ti.fit.data)
end end
end end
keyboard 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);
profiles_1d.dpressure_dpsi = gdat(params_cores_profiles.shot,'pprime','machine',machine);
% dpsi_drho_tor = gdat(params_cores_profiles.shot,'dpsi_drho_tor','machine',machine);
% dvolume_dpsi = gdat(params_cores_profiles.shot,'dvolume_dpsi','machine',machine);
% dvolume_drho_tor = gdat(params_cores_profiles.shot,'dvolume_drho_tor','machine',machine);
% elongation = gdat(params_cores_profiles.shot,'elongation','machine',machine);
profiles_1d.f_df_dpsi = gdat(params_cores_profiles.shot,'ttprime','machine',machine);
profiles_1d.f = gdat(params_cores_profiles.shot,'rbphi_rho','machine',machine);
% geometric_axis = gdat(params_cores_profiles.shot,'geometric_axis','machine',machine);
% gm1 = gdat(params_cores_profiles.shot,'gm1','machine',machine);
% gm2 = gdat(params_cores_profiles.shot,'gm2','machine',machine);
% gm3 = gdat(params_cores_profiles.shot,'gm3','machine',machine);
% gm4 = gdat(params_cores_profiles.shot,'gm4','machine',machine);
% gm5 = gdat(params_cores_profiles.shot,'gm5','machine',machine);
% gm6 = gdat(params_cores_profiles.shot,'gm6','machine',machine);
% gm7 = gdat(params_cores_profiles.shot,'gm7','machine',machine);
% gm8 = gdat(params_cores_profiles.shot,'gm8','machine',machine);
% gm9 = gdat(params_cores_profiles.shot,'gm9','machine',machine);
% j_parallel = gdat(params_cores_profiles.shot,'j_parallel','machine',machine);
% j_tor = gdat(params_cores_profiles.shot,'j_tor','machine',machine);
% magnetic_shear = gdat(params_cores_profiles.shot,'magnetic_shear','machine',machine);
% mass_density = gdat(params_cores_profiles.shot,'mass_density','machine',machine);
profiles_1d.phi = gdat(params_cores_profiles.shot,'phi_tor','machine',machine);
profiles_1d.pressure = gdat(params_cores_profiles.shot,'pressure','machine',machine);
% psi = gdat(params_cores_profiles.shot,'psi_rho','machine',machine); % (could take from .x of any like rhotor and psi_axis, psi_edge from global_quantities)
profiles_1d.q = gdat(params_cores_profiles.shot,'q_rho','machine',machine);
profiles_1d.rho_tor = gdat(params_cores_profiles.shot,'rhotor','machine',machine);
%rho_tor_norm = gdat(params_cores_profiles.shot,'rhotor_norm','machine',machine); % from rho_tor
profiles_1d.rho_volume_norm = gdat(params_cores_profiles.shot,'rhovol','machine',machine);
% r_inboard = gdat(params_cores_profiles.shot,'r_inboard','machine',machine);
% r_outboard = gdat(params_cores_profiles.shot,'r_outboard','machine',machine);
% squareness_lower_inner = gdat(params_cores_profiles.shot,'squareness_lower_inner','machine',machine);
% squareness_lower_outer = gdat(params_cores_profiles.shot,'squareness_lower_outer','machine',machine);
% squareness_upper_inner = gdat(params_cores_profiles.shot,'squareness_upper_inner','machine',machine);
% squareness_upper_outer = gdat(params_cores_profiles.shot,'squareness_upper_outer','machine',machine);
% surface = gdat(params_cores_profiles.shot,'surface','machine',machine);
% trapped_fraction = gdat(params_cores_profiles.shot,'trapped_fraction','machine',machine);
% triangularity_lower = gdat(params_cores_profiles.shot,'triangularity_lower','machine',machine);
% triangularity_upper = gdat(params_cores_profiles.shot,'triangularity_upper','machine',machine);
profiles_1d.volume = gdat(params_cores_profiles.shot,'volume_rho','machine',machine);
profiles_1d_fieldnames = fieldnames(profiles_1d);
special_fields = {'geometric_axis', 'rho_tor_norm', 'psi'}; % fields needing non-automatic treatments
for it=1:length(ids_cores_profiles.time)
for i=1:length(profiles_1d_fieldnames)
if ~any(strcmp(profiles_1d_fieldnames{i},special_fields))
if ~isstruct(ids_cores_profiles.time_slice{it}.profiles_1d.(profiles_1d_fieldnames{i}))
if ~ischar(profiles_1d.(profiles_1d_fieldnames{i}).data) && ~isempty(profiles_1d.(profiles_1d_fieldnames{i}).data) ...
&& size(profiles_1d.(profiles_1d_fieldnames{i}).data,2)>=it
ids_cores_profiles.time_slice{it}.profiles_1d.(profiles_1d_fieldnames{i}) = ...
profiles_1d.(profiles_1d_fieldnames{i}).data(:,it);
end
else
special_fields{end+1} = profiles_1d_fieldnames{i};
end
end
end
end
% special cases
nrho = length(profiles_1d.rho_tor.x);
ntime = length(temp.psi_axis.data);
for it=1:length(ids_cores_profiles.time)
ids_cores_profiles.time_slice{it}.profiles_1d.rho_tor_norm = ids_cores_profiles.time_slice{it}.profiles_1d.rho_tor./ ...
ids_cores_profiles.time_slice{it}.profiles_1d.rho_tor(end);
ids_cores_profiles.time_slice{it}.profiles_1d.psi = temp.psi_axis.data(it) + ...
profiles_1d.rho_tor.x.^2.*(global_quantities.psi_boundary.data(it)-temp.psi_axis.data(it));
end
%
%% profiles_2d{1} ala eqdsk, only this one thus grid_type=1
%
% b_field_r = gdat(params_cores_profiles.shot,'b_field_r','machine',machine);
% b_field_tor = gdat(params_cores_profiles.shot,'b_field_tor','machine',machine);
% b_field_z = gdat(params_cores_profiles.shot,'b_field_z','machine',machine);
% b_r = gdat(params_cores_profiles.shot,'b_r','machine',machine);
% b_tor = gdat(params_cores_profiles.shot,'b_tor','machine',machine);
% b_z = gdat(params_cores_profiles.shot,'b_z','machine',machine);
% grid = gdat(params_cores_profiles.shot,'grid','machine',machine); % special
profiles_2d.grid_type.name = 'rectangular';
profiles_2d.grid_type.index = 1;
profiles_2d.grid_type.description = 'Cylindrical R,Z ala eqdsk';
% j_parallel = gdat(params_cores_profiles.shot,'j_parallel','machine',machine);
% j_tor = gdat(params_cores_profiles.shot,'j_tor','machine',machine);
% phi = gdat(params_cores_profiles.shot,'phi','machine',machine);
profiles_2d.psi = gdat(params_cores_profiles.shot,'psi','machine',machine); % add psi_bound in a second step in special cases
% r = gdat(params_cores_profiles.shot,'r','machine',machine); % not to be filled since in grid.dim1
% theta = gdat(params_cores_profiles.shot,'theta','machine',machine);
% z = gdat(params_cores_profiles.shot,'z','machine',machine); % not to be filled since in grid.dim2
profiles_2d_fieldnames = fieldnames(profiles_2d);
special_fields = {'grid', 'grid_type'}; % fields needing non-automatic treatments
for it=1:length(ids_cores_profiles.time)
for i=1:length(profiles_2d_fieldnames)
if ~any(strcmp(profiles_2d_fieldnames{i},special_fields))
if ~isstruct(ids_cores_profiles.time_slice{it}.profiles_2d{1}.(profiles_2d_fieldnames{i}))
if ~ischar(profiles_2d.(profiles_2d_fieldnames{i}).data) && ~isempty(profiles_2d.(profiles_2d_fieldnames{i}).data) ...
&& size(profiles_2d.(profiles_2d_fieldnames{i}).data,3)>=it
ids_cores_profiles.time_slice{it}.profiles_2d{1}.(profiles_2d_fieldnames{i}) = ...
profiles_2d.(profiles_2d_fieldnames{i}).data(:,:,it);
end
else
special_fields{end+1} = profiles_2d_fieldnames{i};
end
end
end
end end
% special cases
for it=1:length(ids_cores_profiles.time) for it=1:length(ids_cores_profiles.time)
ids_cores_profiles.time_slice{it}.profiles_2d{1}.grid_type.name = profiles_2d.grid_type.name; [ids_cores_profiles.profiles_1d{it}.q] = interpos(temp_1d.q.x,q_cpt(:,it),temp_1d.fit.te_rho.grids_1d.rhopolnorm, ...
ids_cores_profiles.time_slice{it}.profiles_2d{1}.grid_type.index = profiles_2d.grid_type.index; tens_rho,[1 0],[0 0]);
ids_cores_profiles.time_slice{it}.profiles_2d{1}.grid_type.description = profiles_2d.grid_type.description; [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.time_slice{it}.profiles_2d{1}.grid.dim1 = profiles_2d.psi.dim{1}; ids_cores_profiles.profiles_1d{it}.shear = ids_cores_profiles.profiles_1d{it}.grid.rho_tor./ids_cores_profiles.profiles_1d{it}.q ...
ids_cores_profiles.time_slice{it}.profiles_2d{1}.grid.dim2 = profiles_2d.psi.dim{2}; .* dqdrhotor;
ids_cores_profiles.time_slice{it}.profiles_2d{1}.psi(:,:) = ids_cores_profiles.time_slice{it}.profiles_2d{1}.psi(:,:) + ...
global_quantities.psi_boundary.data(it);
end end
ids_cores_profiles.code.name = ['tcv_get_ids_core_profiles, within gdat, with shot= ' num2str(shot) '; varargin' varargin{:}];
ids_cores_profiles.code.output_flag = zeros(size(ids_cores_profiles.time));
% make arrays not filled in empty: % make arrays not filled in empty:
ids_cores_profiles.grids_ggd = {}; for it=1:length(ids_cores_profiles.time)
for it=1:length(ids_cores_profiles.time_slice) ids_cores_profiles.profiles_1d{it}.neutral = {};
ids_cores_profiles.time_slice{it}.ggd = {};
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment