diff --git a/crpptbx/IMAS/get_ids_equilibrium_fixed_boundary.m b/crpptbx/IMAS/get_ids_equilibrium_fixed_boundary.m index 70f2e29d6ea90be9b32aa8c7c8c1bfd65ec3e01b..60ca92c45b08b24afdc29eb551b8c791f412c46c 100644 --- a/crpptbx/IMAS/get_ids_equilibrium_fixed_boundary.m +++ b/crpptbx/IMAS/get_ids_equilibrium_fixed_boundary.m @@ -1,4 +1,71 @@ -[ids_equilibrium,ids_equilibrium_description,varargout] = get_ids_equilibrium_fixed_boundary(shot,varargin); +function [ids_equilibrium,ids_equilibrium_description,varargout] = get_ids_equilibrium_fixed_boundary(shot,varargin); % % [ids_equilibrium,ids_equilibrium_description,varargout] = get_ids_equilibrium_fixed_boundary(shot,varargin); % +% + +ids_equilibrium = struct([]); +ids_equilibrium_description = struct([]); + +% initialize input parser +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) isempty(x) || (isnumeric(x) && isscalar(x) && (x == round(x)))); % integer +p.addOptional('empty_struct', -1, @(x) isstruct(x)); +p.addOptional('comment', 'default comment', @(x) isempty(x) || ischar(x)); % char + +p.parse; +defaults_equilibrium = p.Results; % to keep track of defaults + +if nargin==1 + p.parse(shot); + params = p.Results; +elseif nargin>=2 + p.parse(shot,varargin{:}); + params = p.Results; +else + p.parse; + if nargout>=3; varargout{1} = rmfield(p.Results,'shot'); end + return +end +% replace empty inputs with defaults +names = fieldnames(params); +mask = structfun(@isempty,params); +if any(mask), + params = rmfield(params,unique([names(mask); p.UsingDefaults.'])); + if ~isfield(params, 'shot') || isnan(params.shot) + warning('No shot entered'); + return + end + p.parse(params.shot,rmfield(params,'shot')); + params = p.Results; +end +if nargout>=3; varargout{1} = rmfield(p.Results,'shot'); end + +params_equilibrium = params; + +ids_equilibrium = params_equilibrium.empty_struct; + +% +% ids_properties +% +ids_properties.comment = params_equilibrium.comment; +ids_properties.homogeneous_time = 1; +ids_properties.source = ['TCV mds for shot = ' num2str(params_equilibrium.shot)]; +ids_properties.provider = 'get_ids_equilibrium_fixed_boundary'; +ids_properties.creation_date = date; + +ids_equilibrium.ids_properties = ids_properties; + +% +% vacuum_toroidal_field and time, using homogeneous +% +b0=gdat(params_equilibrium.shot,'b0','source','liuqe'); % to get on liuqe time array +vacuum_toroidal_field.r0 = b0.r0; +vacuum_toroidal_field.b0 = b0.data; + +ids_equilibrium.vacuum_toroidal_field = vacuum_toroidal_field; +ids_equilibrium.time = b0.t; + +time_slice(1:length(ids_equilibrium.time)) = ids_equilibrium.time_slice(1); diff --git a/crpptbx/gdatpaths.m b/crpptbx/gdatpaths.m index d7c25339adda297a75598f22801b2e768ab1ec5a..7c93c1836f02abb026f979b58d5db4e8b72fada0 100644 --- a/crpptbx/gdatpaths.m +++ b/crpptbx/gdatpaths.m @@ -14,7 +14,7 @@ a = fileparts(a); % machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'}]; % machines=[{'JET'} {'TCV'} {'AUG'} {'KSTAR'}]; -machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'} {'KSTAR'}]; +machines=[{'JET'} {'TCV'} {'AUG'} {'D3D'} {'KSTAR'} {'IMAS'}]; add_paths = cell(1,length(machines)); for i=1:length(machines)