From a2fcdbf917447b99b87fcd03451981c76b2369c0 Mon Sep 17 00:00:00 2001
From: Antonia Frank <antonia.frank@epfl.ch>
Date: Thu, 19 Oct 2023 17:51:43 +0200
Subject: [PATCH] Add core transport ids

---
 matlab/TCV_IMAS/tcv_get_ids_core_transport.m | 86 ++++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 matlab/TCV_IMAS/tcv_get_ids_core_transport.m

diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_transport.m b/matlab/TCV_IMAS/tcv_get_ids_core_transport.m
new file mode 100644
index 00000000..7466f476
--- /dev/null
+++ b/matlab/TCV_IMAS/tcv_get_ids_core_transport.m
@@ -0,0 +1,86 @@
+function [ids_core_transport,ids_core_transport_description,varargout] = ...
+  tcv_get_ids_core_transport(shot,ids_equil_empty,gdat_params,varargin)
+%
+% [ids_core_profiles,ids_core_profiles_description,varargout] = ...
+%     tcv_get_ids_core_profiles(shot,ids_equil_empty,gdat_params,varargin);
+%
+%
+% gdat_params: gdat_data.gdat_params to get all params passed from original call
+%
+
+machine = 'tcv';
+tens_time = -1;
+tens_rho = -0.1;
+
+if exist('gdat_params','var')
+  [ids_core_transport, params_core_transport] = ...
+    tcv_ids_headpart(shot,ids_equil_empty,'cores_profiles','gdat_params',gdat_params,varargin{:});
+else
+  [ids_core_transport, params_core_transport] = ...
+    tcv_ids_headpart(shot,ids_equil_empty,'cores_profiles',varargin{:});
+  aa=gdat_tcv;
+  gdat_params = aa.gdat_params; % to get default params
+end
+params_eff_ref = gdat_params; params_eff_ref.doplot=0;
+try params_eff_ref=rmfield(params_eff_ref,'source');catch;end % make sure no source (from ids def)
+
+% initialize description
+ids_core_transport_description = [];
+
+%%
+
+% setup empty model structs (up to 3 for now)
+ids_core_transport.model(1:3) = ids_core_transport.model(1);
+
+% fill model(3) [name: transport solver, desc: output from transport solver]
+% setup model and profiles_1d
+comment = 'Output from a transport solver';
+ids_core_transport.model{3}.comment = comment;
+ids_core_transport.model{3}.name = comment;
+ids_core_transport.model{3}.identifier.index = 2;
+ids_core_transport.model{3}.name = 'transport_solver';
+
+% read data and setup time 
+params_eff.data_request='\results::conf:chie';
+temp_1d.chie = gdat(params_core_transport.shot,params_eff.data_request);
+temp_1d_desc.chie = params_eff.data_request;
+
+if isempty(temp_1d.chie.t)
+  warning('no data in chie node, might need to rerun anaprofs')
+  return
+end
+
+ids_core_transport.time = temp_1d.chie.t;
+ids_core_transport_description.time = ['from node' params_eff.data_request];
+
+ct.cids_core_transport.model{3}.profiles_1d(1:length(ids_core_transport.time)) = ...
+  ids_core_transport.model{3}.profiles_1d(1);
+
+%% fill profiles_1d
+
+for it=1:length(ids_core_transport.time)
+  ids_core_transport.model{3}.profiles_1d{it}.time = ids_core_transport.time(it);
+  ids_core_transport.model{3}.profiles_1d{it}.conductivity_parallel = temp_1d.chie.data(:,it);
+  temp_1d_desc.conductivity_parallel = temp_1d.chie.label;
+end
+
+%% add descriptions for profiles_1d
+ids_core_transport_description.profiles_1d = temp_1d_desc;
+
+%%
+if nargin <= 2
+  ids_core_transport.code.name = ['tcv_get_ids_core_transport, within gdat, with shot= ' num2str(params_core_transport.shot) ];
+else
+  ids_core_transport.code.name = ['tcv_get_ids_core_transport, within gdat, with shot= ' num2str(params_core_transport.shot) '; varargin: ' varargin{:}];
+end
+ids_core_transport_description.code.name = ids_core_transport.code.name;
+
+ids_core_transport.code.output_flag = zeros(size(ids_core_transport.time));
+
+% cocos automatic transform
+if ~isempty(which('ids_generic_cocos_nodes_transformation_symbolic'))
+  [ids_core_transport,cocoscoeff]=ids_generic_cocos_nodes_transformation_symbolic(ids_core_transport,'core_transport',gdat_params.cocos_in, ...
+          gdat_params.cocos_out,gdat_params.ipsign_out,gdat_params.b0sign_out,gdat_params.ipsign_in,gdat_params.b0sign_in, ...
+          gdat_params.error_bar,gdat_params.nverbose);
+
+end
\ No newline at end of file
-- 
GitLab