Skip to content
Snippets Groups Projects
idses_empty_to_mfile.m 2.27 KiB
Newer Older
function [empty_dir_out,ids_empty_structures,okflags] = idses_empty_to_mfile(dirname_for_files,varargin)
%
% [empty_dir_out,ids_empty_structures,okflags] = idses_empty_to_mfile(dirname_for_files,varargin);
%
% dirname_for_files: folder to save files, if not provided or empty, use /tmp/$USER/idses_empty_to_mfile
%
% generate empty ids structures and save them with writestruct_to_mfile as ascii .m files defining the structures
% Add json output when ready
%
% varargin{1}: option for outputs: 1 (default) to mfiles, 2 to mfiles and json files, 3 to json files
%
% The procedure for updating the empty idses available for TCV/lacs is to do:
% [empty_dir_out,ids_empty_structures,okflags] = idses_empty_to_mfile;
% !cp -pr /tmp/$USER/idses_empty_to_mfile/* /.../gdat/matlab/TCV_IMAS/ids_empty
% !ls -alt /.../gdat/matlab/TCV_IMAS/ids_empty
% and rm the old files (not replaced by the cp above, since it means non existent in current version
% add branch to gdat and merge, then deploy
%
% wall = ids_empty_wall; % for example gives the IDS wall structure
% help ids_empty_wall % gives you the IMAS version it used to produce it
%

if nargin < 1 || isempty(dirname_for_files) || ~exist(dirname_for_files,'dir')
  dirname_for_files = sprintf('/tmp/%s/idses_empty_to_mfile',getenv('USER'));
  [dummy1,dummy2]=rmdir(dirname_for_files,'s');
  mkdir(dirname_for_files);
  warning('no folder provided, files will be written to: %s\n',dirname_for_files);
end
empty_dir_out = dirname_for_files;

write_option = 1;
if nargin>=2 && ~isempty(varargin{1})
  write_option = varargin{1};
end

ids_list_to_generate = IDS_list;
imas_version = getenv('IMAS_VERSION');
n_prec = 15; % for 1e40 and -1e9+1
provenance_text = sprintf('writestruct_to_mfile with n=%d, with ids_gen to generate empty IDS within IMAS version %s',n_prec,imas_version);
for i=1:length(ids_list_to_generate)
  ids_empty_structures.(ids_list_to_generate{i}) = ids_gen(ids_list_to_generate{i});
  okflags(i) = writestruct_to_mfile(ids_empty_structures.(ids_list_to_generate{i}), ...
          fullfile(dirname_for_files,['ids_empty_',ids_list_to_generate{i},'.m']),n_prec,provenance_text);
end

okflags(end+1) = writecell(ids_list_to_generate,fullfile(dirname_for_files,'ids_list_all.m'),n_prec,provenance_text);


if any(okflags~=1)
  warning('some flags not ok')
end