diff --git a/matlab/TCV/gdat_tcv.m b/matlab/TCV/gdat_tcv.m index 4c3b17373d3f3a890c2611167ae9b9904d6ebe00..76332c00187d360270dd05db09ebfb17716b57a6 100644 --- a/matlab/TCV/gdat_tcv.m +++ b/matlab/TCV/gdat_tcv.m @@ -1152,6 +1152,32 @@ elseif strcmp(mapping_for_tcv.method,'switchcase') if ~isfield(gdat_data.gdat_params,'error_bar') || isempty(gdat_data.gdat_params.error_bar) gdat_data.gdat_params.error_bar = 'delta'; end + if ~isfield(gdat_data.gdat_params,'cocos_in') || isempty(gdat_data.gdat_params.cocos_in) + gdat_data.gdat_params.cocos_in = 17; + end + if ~isfield(gdat_data.gdat_params,'cocos_out') || isempty(gdat_data.gdat_params.cocos_out) + gdat_data.gdat_params.cocos_out = 11; + end + if ~isfield(gdat_data.gdat_params,'ipsign_out') || isempty(gdat_data.gdat_params.ipsign_out) + gdat_data.gdat_params.ipsign_out = 0; + end + if ~isfield(gdat_data.gdat_params,'b0sign_out') || isempty(gdat_data.gdat_params.b0sign_out) + gdat_data.gdat_params.b0sign_out = 0; + end + if ~isfield(gdat_data.gdat_params,'ipsign_in') || isempty(gdat_data.gdat_params.ipsign_in) + if gdat_data.gdat_params.ipsign_out~=0 + gdat_data.gdat_params.ipsign_in = mdsvalue('\pcs::data:iohfb'); + else + gdat_data.gdat_params.ipsign_in = 0; + end + end + if ~isfield(gdat_data.gdat_params,'b0sign_in') || isempty(gdat_data.gdat_params.b0sign_in) + if gdat_data.gdat_params.b0sign_out~=0 + gdat_data.gdat_params.b0sign_in = mdsvalue('\pcs::data:if36fb'); + else + gdat_data.gdat_params.b0sign_in = 0; + end + end try if ~isempty(shot) [ids_top,ids_top_description] = feval(['tcv_get_ids_' ids_top_name],shot,ids_empty,gdat_data.gdat_params); diff --git a/matlab/TCV_IMAS/tcv2ids.m b/matlab/TCV_IMAS/tcv2ids.m index 9c0577ad47155c7d8624e570b92385ac2936e2d6..94557c92b0e379f423c578d3b58131952503a401 100644 --- a/matlab/TCV_IMAS/tcv2ids.m +++ b/matlab/TCV_IMAS/tcv2ids.m @@ -12,10 +12,13 @@ function [ids_from_tcv,varargout] = tcv2ids(shot,varargin); % % varargin: 'ids_names': cell, idss to load, by default all defined so far (if empty or empty string or not given) % {'equilibrium', 'magnetics', 'pf_active','wall','core_profiles','ec_antennas','nbi'} or a subset -% varargin{2}: 'error_bar': type (string) +% 'error_bar': type (string) % empty or 'delta' (default): meaning difference in upper is set (standard error_bar % 'added': errorbar is added: upper=data+delta and lower=data-delta % 'delta_with_lower': as 'delta' but lower also set +% 'cocos_out': (default 11) cocos to transform ids from TCV cocos_in=17 to cocos_out +% 'ipsign_out': if a specific sign fo Ip is desired in output within the cocos_out system (default 0=no specific sign) +% 'b0sign_out': if a specific sign fo B0 is desired in output within the cocos_out system (default 0=no specific sign) % % Outputs % varargout{1}: return also the ids in array of structure with the names, to allow easy use of plotallids @@ -26,8 +29,12 @@ p = inputParser; % no required inputs here so one can call with empty args and get defaults parameters % effectively required inputs should have defaults as empty p.addOptional('shot', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer -p.addOptional('ids_names', {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_antennas','nbi'}, @(x) isempty(x) | iscell(x) ); % char or cell array -p.addOptional('error_bar', 'delta', @(x) isempty(x) | ischar(x) ); % char or cell array +p.addOptional('ids_names', {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_antennas','nbi'}, @(x) isempty(x) || iscell(x) ); % char or cell array +p.addOptional('error_bar', 'delta', @(x) isempty(x) || ischar(x) ); % char or cell array +p.addOptional('cocos_out', 11, @(x) isempty(x) || isnumeric(x) ); % char +p.addOptional('ipsign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char +p.addOptional('b0sign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char + p.parse; defaults_tcv2ids = p.Results; % to keep track of defaults @@ -81,10 +88,10 @@ if isempty(params_tcv2ids.ids_names) disp('no ids names available') return end - for i=1:length(params_tcv2ids.ids_names) ids_to_get = params_tcv2ids.ids_names{i}; - tmp = gdat(shot,'ids','source',ids_to_get,'machine','tcv','error_bar',params_tcv2ids.error_bar); + tmp = gdat(shot,'ids','source',ids_to_get,'machine','tcv','error_bar',params_tcv2ids.error_bar,'cocos_out',params_tcv2ids.cocos_out, ... + 'b0sign_out',params_tcv2ids.b0sign_out,'ipsign_out',params_tcv2ids.ipsign_out); ids_from_tcv.(ids_to_get) = tmp.(ids_to_get); ids_from_tcv.([ids_to_get '_description']) = tmp.([ids_to_get '_description']); end diff --git a/matlab/TCV_IMAS/tcv2ids2database.m b/matlab/TCV_IMAS/tcv2ids2database.m index 3cc584a79457f8a5bdf0cc66545017f7a4803b41..6bd2d3c363dabeec079b6209078b5fcf33a4b7c4 100644 --- a/matlab/TCV_IMAS/tcv2ids2database.m +++ b/matlab/TCV_IMAS/tcv2ids2database.m @@ -17,6 +17,9 @@ function [ids_from_tcv,varargout] = tcv2ids2database(shot,run_out,varargin); % 'tree_user': getenv('USER') by default, user for database (could be 'public') % 'tree_tokamak': tokamak name, default ('tcv') % 'tree_majorversion': default '4' +% 'cocos_out': (default 11) cocos to transform ids from TCV cocos_in=17 to cocos_out +% 'ipsign_out': if a specific sign fo Ip is desired in output within the cocos_out system (default 0=no specific sign) +% 'b0sign_out': if a specific sign fo B0 is desired in output within the cocos_out system (default 0=no specific sign) % % example: % ids_from_tcv = tcv2ids2database(62745,9999,'ids_names',{'pf_active'},'error_bar','added'); % to test only one ids @@ -41,12 +44,15 @@ p = inputParser; % effectively required inputs should have defaults as empty p.addOptional('shot', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer p.addOptional('run_out', [], @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer -p.addOptional('occurence', 0, @(x) (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer -p.addOptional('ids_names', {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_antennas','nbi'}, @(x) isempty(x) | iscell(x)); % char or cell array -p.addOptional('error_bar', 'delta', @(x) isempty(x) | ischar(x) ); % char or cell array -p.addOptional('tree_user', getenv('USER'), @(x) isempty(x) | ischar(x) ); % char -p.addOptional('tree_tokamak', 'tcv', @(x) isempty(x) | ischar(x) ); % char -p.addOptional('tree_majorversion', '4', @(x) isempty(x) | ischar(x) ); % char +p.addOptional('occurence', 0, @(x) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer +p.addOptional('ids_names', {'equilibrium', 'magnetics', 'pf_active','wall', 'tf','core_profiles','ec_antennas','nbi'}, @(x) isempty(x) || iscell(x)); % char or cell array +p.addOptional('error_bar', 'delta', @(x) isempty(x) || ischar(x) ); % char or cell array +p.addOptional('tree_user', getenv('USER'), @(x) isempty(x) || ischar(x) ); % char +p.addOptional('tree_tokamak', 'tcv', @(x) isempty(x) || ischar(x) ); % char +p.addOptional('tree_majorversion', '4', @(x) isempty(x) || ischar(x) ); % char +p.addOptional('cocos_out', 11, @(x) isempty(x) || isnumeric(x) ); % char +p.addOptional('ipsign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char +p.addOptional('b0sign_out', 0, @(x) isempty(x) || (x==0 | x==-1 | x==+1) ); % char p.parse; defaults_tcv2ids2database = p.Results; % to keep track of defaults diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m index 9a324913e84de31b99a282741473ae1316ad3ff6..fab451e78777c16dd266f126a5a415624667d7e8 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m +++ b/matlab/TCV_IMAS/tcv_get_ids_core_profiles.m @@ -290,7 +290,6 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - 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); + [ids_core_profiles,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_core_profiles,'core_profiles',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m index 47b0e575e02369c09c38f22164ee1cf94a36021d..4aadc7dd6a94de3247e6179158e80990b26517fb 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m +++ b/matlab/TCV_IMAS/tcv_get_ids_ec_antennas.m @@ -85,7 +85,6 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - 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); + [ids_ec_antennas,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_ec_antennas,'ec_antennas',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m index 4f7dba055907de824522b73f399d868dca35da7a..001d44a0ab6ea5f572c11b7c43dc666287a0e373 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m +++ b/matlab/TCV_IMAS/tcv_get_ids_equilibrium.m @@ -3,7 +3,7 @@ function [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_e % [ids_equilibrium,ids_equilibrium_description,varargout] = tcv_get_ids_equilibrium(shot,ids_equil_empty,varargin); % % -% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar options +% gdat_params: gdat_data.gdat_params to get all params passed from original call, in particular error_bar and cocos_out options % [ids_equilibrium, params_equilibrium] = tcv_ids_headpart(shot,ids_equil_empty,'equilibrium',varargin{:}); @@ -375,7 +375,6 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - cocos_in=17; - cocos_out=11; - [ids_equilibrium,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_equilibrium,'equilibrium',cocos_in,cocos_out); + [ids_equilibrium,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_equilibrium,'equilibrium',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m index c4ce146915ab719099691f7cdb3aeccc905759d0..7af8b1c624706540ed2991359f78ae92af769e3d 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_magnetics.m +++ b/matlab/TCV_IMAS/tcv_get_ids_magnetics.m @@ -15,7 +15,6 @@ function [ids_magnetics,ids_magnetics_description,varargout] = tcv_get_ids_magne % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - cocos_in=17; - cocos_out=11; - [ids_magnetics,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_magnetics,'magnetics',cocos_in,cocos_out); + [ids_magnetics,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_magnetics,'magnetics',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_nbi.m b/matlab/TCV_IMAS/tcv_get_ids_nbi.m index 25aa68cbfde0acf6b73250ae653a0e17b7b630ac..9d788474db144bd417db1409f0394b777454d7d6 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_nbi.m +++ b/matlab/TCV_IMAS/tcv_get_ids_nbi.m @@ -118,7 +118,6 @@ end % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - cocos_in=17; - cocos_out=11; - [ids_nbi,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_nbi,'nbi',cocos_in,cocos_out); + [ids_nbi,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_nbi,'nbi',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m index 35f6bcc06d4474a4388296e6ed4c55dafa4a8de4..13c95b450a779010163beedb7254d8d23d07381e 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_pf_active.m +++ b/matlab/TCV_IMAS/tcv_get_ids_pf_active.m @@ -16,7 +16,6 @@ ids_pf_active.vertical_force = {}; % cocos automatic transform if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - 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); + [ids_pf_active,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_pf_active,'pf_active',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_get_ids_wall.m b/matlab/TCV_IMAS/tcv_get_ids_wall.m index 27407ded9fec63ffad95b7aa80a7665092ac223f..e78ced53cc404ae34b089c05791650249612d34c 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_wall.m +++ b/matlab/TCV_IMAS/tcv_get_ids_wall.m @@ -19,10 +19,8 @@ ids_wall.description_2d{1}.mobile.unit = {}; %% TODO ids_description = []; -% cocos automatic transform +% cocos automatic transform (should have nothing to do for wall) if exist('ids_generic_cocos_nodes_transformation_symbolic') == 2 - 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); + [ids_wall,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_wall,'wall',gdat_params.cocos_in, ... + gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in); end diff --git a/matlab/TCV_IMAS/tcv_ids_coil.m b/matlab/TCV_IMAS/tcv_ids_coil.m index 151614c8c069653f3e9c6a64e19f04e95e570ce3..bdb6007fb3bf76cce849c7ebf9981f43ec463f17 100644 --- a/matlab/TCV_IMAS/tcv_ids_coil.m +++ b/matlab/TCV_IMAS/tcv_ids_coil.m @@ -81,8 +81,8 @@ for ii=1:ncircuits2ids else tmpdata = tdi(mds_paths2ids{ii}); end - ids_struct_out{ind_coil_ids}.current.data = tmpdata.data; - ids_struct_out_description{ind_coil_ids}.current.data = ['from ' mds_paths2ids{ii}]; + ids_struct_out{ind_coil_ids}.current.data = pf_def.coil_current_signs{ii}(jj) .* tmpdata.data; + ids_struct_out_description{ind_coil_ids}.current.data = ['from ' num2str(pf_def.coil_current_signs{ii}(jj)) ' * ' mds_paths2ids{ii}]; ids_struct_out{ind_coil_ids}.current.time = tmpdata.dim{1};