diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m index 84a865aded99e6209e7ded8aeb0b0744011bbeda..f521f6fda1a608e3912cdff14b6b84245f801754 100644 --- a/crpptbx/TCV/gdat_tcv.m +++ b/crpptbx/TCV/gdat_tcv.m @@ -56,6 +56,8 @@ function [gdat_data,gdat_params,error_status,varargout] = gdat_tcv(shot,data_req % a5=gdat(48836,'ip'); % standard call % a6=gdat(48836,'ip','Opt1',123,'Doplot',1,'opt2','Abc'); % standard call with a few options (note all lowercase in output) % a7 = gdat(48836,'static("r_m")[$1]'',''001'); % note first and last quote of tdi argument added by gdat +% a7 = gdat(48836,'tcv_eq(''''psi'''',''''liuqe.m'''')'); % do not use double quote char so 'liuqe',11 will work +% % % Comments for local developer: diff --git a/crpptbx/TCV/tcv_requests_mapping.m b/crpptbx/TCV/tcv_requests_mapping.m index b9b54e9c9eaed4809c1ce82cca177b191033c515..821097a4d053cc8c844393c9f36de4563bab2085 100644 --- a/crpptbx/TCV/tcv_requests_mapping.m +++ b/crpptbx/TCV/tcv_requests_mapping.m @@ -232,6 +232,11 @@ switch lower(data_request) % node not filled in and in any case need special case for mapping.label = 'toroidal_flux'; mapping.method = 'switchcase'; + case 'psi' + mapping.timedim = 1; + mapping.label = 'psi(R,Z)'; + mapping.method = 'tdiliuqe'; + mapping.expression = 'tcv_eq(''''psi'''',''''LIUQE.M'''')'; case 'powers' mapping.timedim = 1; mapping.label = 'various powers'; diff --git a/crpptbx/TCV_IMAS/get_ids_equilibrium_fixed_boundary.m b/crpptbx/TCV_IMAS/get_ids_equilibrium_fixed_boundary.m index 2f10dbc8bb18603c5e95b859a1ad9fc04560aed7..98473a895e5849763bb54225c3910ddba4b6faa3 100644 --- a/crpptbx/TCV_IMAS/get_ids_equilibrium_fixed_boundary.m +++ b/crpptbx/TCV_IMAS/get_ids_equilibrium_fixed_boundary.m @@ -294,3 +294,50 @@ for it=1:length(ids_equilibrium.time) global_quantities.psi_boundary.data(it); end +% +%% profiles_2d{1} ala eqdsk, only this one thus grid_type=1 +% +% b_field_r = gdat(params_equilibrium.shot,'b_field_r'); +% b_field_tor = gdat(params_equilibrium.shot,'b_field_tor'); +% b_field_z = gdat(params_equilibrium.shot,'b_field_z'); +% b_r = gdat(params_equilibrium.shot,'b_r'); +% b_tor = gdat(params_equilibrium.shot,'b_tor'); +% b_z = gdat(params_equilibrium.shot,'b_z'); +% grid = gdat(params_equilibrium.shot,'grid'); % 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_equilibrium.shot,'j_parallel'); +% j_tor = gdat(params_equilibrium.shot,'j_tor'); +% phi = gdat(params_equilibrium.shot,'phi'); +profiles_2d.psi = gdat(params_equilibrium.shot,'psi'); +% r = gdat(params_equilibrium.shot,'r'); % not to be filled since in grid.dim1 +% theta = gdat(params_equilibrium.shot,'theta'); +% z = gdat(params_equilibrium.shot,'z'); % 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_equilibrium.time) + for i=1:length(profiles_2d_fieldnames) + if ~any(strcmp(profiles_2d_fieldnames{i},special_fields)) + 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) ... + && size(profiles_2d.(profiles_2d_fieldnames{i}).data,2)>=it + ids_equilibrium.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 + +% special cases +for it=1:length(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.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.dim1 = profiles_2d.psi.dim{1}; + ids_equilibrium.time_slice{it}.profiles_2d{1}.grid.dim2 = profiles_2d.psi.dim{2}; +end