Skip to content
Snippets Groups Projects
Commit c6090644 authored by Antoine Merle's avatar Antoine Merle
Browse files

Fix bug for filling x_point Aos.

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@11914 d63d8f72-b253-0410-a779-e742ad2e26cf
parent 8ce1d74a
No related branches found
No related tags found
No related merge requests found
...@@ -26,14 +26,14 @@ ids_equilibrium_description.vacuum_toroidal_field = vacuum_toroidal_field_desc; ...@@ -26,14 +26,14 @@ ids_equilibrium_description.vacuum_toroidal_field = vacuum_toroidal_field_desc;
ids_equilibrium.time = vacuum_toroidal_field.b0.t; ids_equilibrium.time = vacuum_toroidal_field.b0.t;
ids_equilibrium_description.time = '.t subfield from: [''b0'',''source'',''liuqe'']'; ids_equilibrium_description.time = '.t subfield from: [''b0'',''source'',''liuqe'']';
ids_equilibrium.time_slice(1:length(ids_equilibrium.time)) = ids_equilibrium.time_slice(1); ids_equilibrium.time_slice(1:numel(ids_equilibrium.time)) = ids_equilibrium.time_slice(1);
% load time array data to copy to time_slices % load time array data to copy to time_slices
% 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 % 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
% brute force solution load all eqdsks % brute force solution load all eqdsks
% $$$ for it=1:length(ids_equilibrium.time) % $$$ for it=1:numel(ids_equilibrium.time)
% $$$ ids_equilibrium.time(it) % $$$ ids_equilibrium.time(it)
% $$$ temp.eqdsks{it}=gdat(params_equilibrium.shot,'eqdsk','time',ids_equilibrium.time(it),'write',0,'machine',machine); % $$$ temp.eqdsks{it}=gdat(params_equilibrium.shot,'eqdsk','time',ids_equilibrium.time(it),'write',0,'machine',machine);
% $$$ end % $$$ end
...@@ -76,8 +76,8 @@ global_quantities_desc.w_mhd = 'w_mhd'; ...@@ -76,8 +76,8 @@ global_quantities_desc.w_mhd = 'w_mhd';
global_quantities_fieldnames = fieldnames(global_quantities); global_quantities_fieldnames = fieldnames(global_quantities);
special_fields = {'magnetic_axis', 'psi_axis', 'q_min'}; % fields needing non-automatic treatments special_fields = {'magnetic_axis', 'psi_axis', 'q_min'}; % fields needing non-automatic treatments
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
for i=1:length(global_quantities_fieldnames) for i=1:numel(global_quantities_fieldnames)
if ~any(strcmp(global_quantities_fieldnames{i},special_fields)) if ~any(strcmp(global_quantities_fieldnames{i},special_fields))
if ~isstruct(ids_equilibrium.time_slice{it}.global_quantities.(global_quantities_fieldnames{i})) if ~isstruct(ids_equilibrium.time_slice{it}.global_quantities.(global_quantities_fieldnames{i}))
ids_equilibrium.time_slice{it}.global_quantities.(global_quantities_fieldnames{i}) = ... ids_equilibrium.time_slice{it}.global_quantities.(global_quantities_fieldnames{i}) = ...
...@@ -90,7 +90,7 @@ for it=1:length(ids_equilibrium.time) ...@@ -90,7 +90,7 @@ for it=1:length(ids_equilibrium.time)
end end
% special case % special case
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
ids_equilibrium.time_slice{it}.global_quantities.magnetic_axis.r = temp.r_magnetic_axis.data(it); ids_equilibrium.time_slice{it}.global_quantities.magnetic_axis.r = temp.r_magnetic_axis.data(it);
ids_equilibrium.time_slice{it}.global_quantities.magnetic_axis.z = temp.z_magnetic_axis.data(it); ids_equilibrium.time_slice{it}.global_quantities.magnetic_axis.z = temp.z_magnetic_axis.data(it);
ids_equilibrium.time_slice{it}.global_quantities.psi_axis = temp.psi_axis.data(it) + ... ids_equilibrium.time_slice{it}.global_quantities.psi_axis = temp.psi_axis.data(it) + ...
...@@ -136,8 +136,8 @@ temp_desc.z_lcfs = 'z_contour_edge'; ...@@ -136,8 +136,8 @@ temp_desc.z_lcfs = 'z_contour_edge';
boundary_fieldnames = fieldnames(boundary); boundary_fieldnames = fieldnames(boundary);
special_fields = {'lcfs', 'geometric_axis', 'x_point'}; % fields needing non-automatic treatments special_fields = {'lcfs', 'geometric_axis', 'x_point'}; % fields needing non-automatic treatments
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
for i=1:length(boundary_fieldnames) for i=1:numel(boundary_fieldnames)
if ~any(strcmp(boundary_fieldnames{i},special_fields)) if ~any(strcmp(boundary_fieldnames{i},special_fields))
if ~isstruct(ids_equilibrium.time_slice{it}.boundary.(boundary_fieldnames{i})) if ~isstruct(ids_equilibrium.time_slice{it}.boundary.(boundary_fieldnames{i}))
ids_equilibrium.time_slice{it}.boundary.(boundary_fieldnames{i}) = ... ids_equilibrium.time_slice{it}.boundary.(boundary_fieldnames{i}) = ...
...@@ -150,7 +150,7 @@ for it=1:length(ids_equilibrium.time) ...@@ -150,7 +150,7 @@ for it=1:length(ids_equilibrium.time)
end end
% special cases % special cases
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
ids_equilibrium.time_slice{it}.boundary.outline.r = temp.r_lcfs.data(:,it); ids_equilibrium.time_slice{it}.boundary.outline.r = temp.r_lcfs.data(:,it);
ids_equilibrium.time_slice{it}.boundary.outline.z = temp.z_lcfs.data(:,it); ids_equilibrium.time_slice{it}.boundary.outline.z = temp.z_lcfs.data(:,it);
ids_equilibrium.time_slice{it}.boundary.lcfs.r = ids_equilibrium.time_slice{it}.boundary.outline.r; ids_equilibrium.time_slice{it}.boundary.lcfs.r = ids_equilibrium.time_slice{it}.boundary.outline.r;
...@@ -159,10 +159,12 @@ for it=1:length(ids_equilibrium.time) ...@@ -159,10 +159,12 @@ for it=1:length(ids_equilibrium.time)
ids_equilibrium.time_slice{it}.boundary.geometric_axis.z = temp.zgeom.data(it); ids_equilibrium.time_slice{it}.boundary.geometric_axis.z = temp.zgeom.data(it);
if temp.n_x_point.data(it) > 0 if temp.n_x_point.data(it) > 0
ids_equilibrium.time_slice{it}.boundary.x_point(1:temp.n_x_point.data(it)) = ids_equilibrium.time_slice{it}.boundary.x_point(1); ids_equilibrium.time_slice{it}.boundary.x_point(1:temp.n_x_point.data(it)) = ids_equilibrium.time_slice{it}.boundary.x_point(1);
for i=1:length(temp.n_x_point.data(it)) for i=1:temp.n_x_point.data(it)
ids_equilibrium.time_slice{it}.boundary.x_point{i}.r = temp.r_x_point.data(i,it); ids_equilibrium.time_slice{it}.boundary.x_point{i}.r = temp.r_x_point.data(i,it);
ids_equilibrium.time_slice{it}.boundary.x_point{i}.z = temp.z_x_point.data(i,it); ids_equilibrium.time_slice{it}.boundary.x_point{i}.z = temp.z_x_point.data(i,it);
end end
else
ids_equilibrium.time_slice{it}.boundary.x_point = {};
end end
end end
...@@ -221,8 +223,8 @@ profiles_1d.volume = gdat(params_equilibrium.shot,'volume_rho','machine',machine ...@@ -221,8 +223,8 @@ profiles_1d.volume = gdat(params_equilibrium.shot,'volume_rho','machine',machine
profiles_1d_fieldnames = fieldnames(profiles_1d); profiles_1d_fieldnames = fieldnames(profiles_1d);
special_fields = {'geometric_axis', 'rho_tor_norm', 'psi'}; % fields needing non-automatic treatments special_fields = {'geometric_axis', 'rho_tor_norm', 'psi'}; % fields needing non-automatic treatments
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
for i=1:length(profiles_1d_fieldnames) for i=1:numel(profiles_1d_fieldnames)
if ~any(strcmp(profiles_1d_fieldnames{i},special_fields)) if ~any(strcmp(profiles_1d_fieldnames{i},special_fields))
if ~isstruct(ids_equilibrium.time_slice{it}.profiles_1d.(profiles_1d_fieldnames{i})) if ~isstruct(ids_equilibrium.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) ... if ~ischar(profiles_1d.(profiles_1d_fieldnames{i}).data) && ~isempty(profiles_1d.(profiles_1d_fieldnames{i}).data) ...
...@@ -238,9 +240,9 @@ for it=1:length(ids_equilibrium.time) ...@@ -238,9 +240,9 @@ for it=1:length(ids_equilibrium.time)
end end
% special cases % special cases
nrho = length(profiles_1d.rho_tor.x); nrho = numel(profiles_1d.rho_tor.x);
ntime = length(temp.psi_axis.data); ntime = numel(temp.psi_axis.data);
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
ids_equilibrium.time_slice{it}.profiles_1d.rho_tor_norm = ids_equilibrium.time_slice{it}.profiles_1d.rho_tor./ ... ids_equilibrium.time_slice{it}.profiles_1d.rho_tor_norm = ids_equilibrium.time_slice{it}.profiles_1d.rho_tor./ ...
ids_equilibrium.time_slice{it}.profiles_1d.rho_tor(end); ids_equilibrium.time_slice{it}.profiles_1d.rho_tor(end);
ids_equilibrium.time_slice{it}.profiles_1d.psi = temp.psi_axis.data(it) + ... ids_equilibrium.time_slice{it}.profiles_1d.psi = temp.psi_axis.data(it) + ...
...@@ -270,8 +272,8 @@ profiles_2d.psi = gdat(params_equilibrium.shot,'psi','machine',machine); % add p ...@@ -270,8 +272,8 @@ profiles_2d.psi = gdat(params_equilibrium.shot,'psi','machine',machine); % add p
profiles_2d_fieldnames = fieldnames(profiles_2d); profiles_2d_fieldnames = fieldnames(profiles_2d);
special_fields = {'grid', 'grid_type'}; % fields needing non-automatic treatments special_fields = {'grid', 'grid_type'}; % fields needing non-automatic treatments
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
for i=1:length(profiles_2d_fieldnames) for i=1:numel(profiles_2d_fieldnames)
if ~any(strcmp(profiles_2d_fieldnames{i},special_fields)) if ~any(strcmp(profiles_2d_fieldnames{i},special_fields))
if ~isstruct(ids_equilibrium.time_slice{it}.profiles_2d{1}.(profiles_2d_fieldnames{i})) if ~isstruct(ids_equilibrium.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) ... if ~ischar(profiles_2d.(profiles_2d_fieldnames{i}).data) && ~isempty(profiles_2d.(profiles_2d_fieldnames{i}).data) ...
...@@ -287,7 +289,7 @@ for it=1:length(ids_equilibrium.time) ...@@ -287,7 +289,7 @@ for it=1:length(ids_equilibrium.time)
end end
% special cases % special cases
for it=1:length(ids_equilibrium.time) for it=1:numel(ids_equilibrium.time)
ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.name = profiles_2d.grid_type.name; ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.name = profiles_2d.grid_type.name;
ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.index = profiles_2d.grid_type.index; ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.index = profiles_2d.grid_type.index;
ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.description = profiles_2d.grid_type.description; ids_equilibrium.time_slice{it}.profiles_2d{1}.grid_type.description = profiles_2d.grid_type.description;
...@@ -300,6 +302,6 @@ end ...@@ -300,6 +302,6 @@ end
% make arrays not filled in empty: % make arrays not filled in empty:
ids_equilibrium.grids_ggd = {}; ids_equilibrium.grids_ggd = {};
for it=1:length(ids_equilibrium.time_slice) for it=1:numel(ids_equilibrium.time_slice)
ids_equilibrium.time_slice{it}.ggd = {}; ids_equilibrium.time_slice{it}.ggd = {};
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment