diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m index d30dd1a65774e20f8da837a6f58b406c358b23a6..87a8c431d4376bb4d0648c81dc242c998c6141f5 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m +++ b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m @@ -107,66 +107,91 @@ ec_total_cur(isnan(ec_total_cur)) = 0; for i = 1:nb_launchers for ii = 1:ec_n_t - % ec, need to find matching time index - ids_core_sources.source{last_index+i}.profiles_1d{ii}.time = ec_t_grid(ii); % profiles time - ids_core_sources.source{last_index+i}.global_quantities{ii}.time = ec_t_grid(ii); % globals time - [~, ec_idx] = min(abs(ec_time-ec_t_grid(ii))); - if ec_time(ec_idx) == ec_t_grid(ii) % same grid - % current density (to adapt to <J.B>/B0) - ids_core_sources.source{last_index+i}.profiles_1d{ii}.j_parallel = ... - ec_data.cd_dens.data(:,end,ec_idx)'; - % integrated current density (to adapt to INTEGRAL(<J.B>/B0)*ds_phi) - ids_core_sources.source{last_index+i}.profiles_1d{ii}.current_parallel_inside = ... - ec_data.cd_integrated.data(:,ii)'; + ids_core_sources.source{last_index+i}.profiles_1d{ii}.time = ec_t_grid(ii); % profiles time + ids_core_sources.source{last_index+i}.global_quantities{ii}.time = ec_t_grid(ii); % globals time - else - ids_core_sources.source{last_index+i}.profiles_1d{ii}.j_parallel = ... - zeros(1,numel(ec_data.cd_dens.x(1,:)))'; - %ids_core_sources.source{last_index+i}.profiles_1d{ii}.current_parallel_inside = ... - % zeros(1,numel(ec_data.cd_integrated.x(1,:)))'; - end - % globals - ids_core_sources.source{last_index+i}.global_quantities{ii}.time = ec_t_grid(ii); - ids_core_sources.source{last_index+i}.global_quantities{ii}.power = ec_total_pow(ii); - ids_core_sources.source{last_index+i}.global_quantities{ii}.current_parallel = ec_total_cur(ii); + % globals + ids_core_sources.source{last_index+i}.global_quantities{ii}.time = ec_t_grid(ii); + ids_core_sources.source{last_index+i}.global_quantities{ii}.power = ec_total_pow(ii); + ids_core_sources.source{last_index+i}.global_quantities{ii}.current_parallel = ec_total_cur(ii); end end % interpoating p_dens profiles from 'ec_time' grid (toray time nodes) to 'ec_t_grid' (injected power time) p_dens = ec_data.p_dens.data; +p_integrated = ec_data.p_integrated.data; +cd_dens = ec_data.cd_dens.data; +cd_integrated = ec_data.cd_integrated.data; + p_ec_injected = powers_gdat.ec.data; it = iround_os(ec_t_grid,ec_time); sparse_p_ec_injected = p_ec_injected(it,:); % injected ec power vals corresponding to ec_time grid % calculate normalised profiles on ec_time grid norm_p_dens = zeros(size(p_dens, 1), nb_launchers+1, length(ec_time)); +norm_p_integrated = zeros(size(p_integrated, 1), nb_launchers+1, length(ec_time)); +norm_cd_dens = zeros(size(cd_dens, 1), nb_launchers+1, length(ec_time)); +norm_cd_integrated = zeros(size(cd_integrated, 1), nb_launchers+1, length(ec_time)); for t = 1:length(ec_time) - normalised = zeros(size(p_dens, 1), nb_launchers+1); + norm_p_dens_temp = zeros(size(p_dens, 1), nb_launchers+1); + norm_p_integrated_temp = zeros(size(p_integrated, 1), nb_launchers+1); + norm_cd_dens_temp = zeros(size(cd_dens, 1), nb_launchers+1); + norm_cd_integrated_temp = zeros(size(cd_integrated, 1), nb_launchers+1); for launcher = 1:nb_launchers+1 - normalised(:, launcher) = p_dens(:, launcher, t) ./ sparse_p_ec_injected(t, launcher); + norm_p_dens_temp(:, launcher) = p_dens(:, launcher, t) ./ sparse_p_ec_injected(t, launcher); + norm_p_integrated_temp(:, launcher) = p_integrated(:, launcher, t) ./ sparse_p_ec_injected(t, launcher); + norm_cd_dens_temp(:, launcher) = cd_dens(:, launcher, t) ./ sparse_p_ec_injected(t, launcher); + norm_cd_integrated_temp(:, launcher) = cd_integrated(:, launcher, t) ./ sparse_p_ec_injected(t, launcher); end - norm_p_dens(:,:,t) = normalised; + norm_p_dens(:,:,t) = norm_p_dens_temp; + norm_p_integrated(:,:,t) = norm_p_integrated_temp; + norm_cd_dens(:,:,t) = norm_cd_dens_temp; + norm_cd_integrated(:,:,t) = norm_cd_integrated_temp; end % interpolate normalised p_dens profiles on ec_t_grid interp_norm_p_dens = zeros(size(norm_p_dens, 1), size(norm_p_dens, 2), ec_n_t); +interp_norm_p_integrated = zeros(size(norm_p_integrated, 1), size(norm_p_integrated, 2), ec_n_t); +interp_norm_cd_dens = zeros(size(norm_cd_dens, 1), size(norm_cd_dens, 2), ec_n_t); +interp_norm_cd_integrated = zeros(size(norm_cd_integrated, 1), size(norm_cd_integrated, 2), ec_n_t); for rho = 1:size(norm_p_dens, 1) for launcher = 1:size(norm_p_dens, 2) - profile = squeeze(norm_p_dens(rho, launcher, :)); - interp_profile = interp1(ec_time, profile, ec_t_grid); - interp_norm_p_dens(rho, launcher, :) = interp_profile; + profile_p_dens = squeeze(norm_p_dens(rho, launcher, :)); + profile_p_integrated = squeeze(norm_p_integrated(rho, launcher, :)); + profile_cd_dens = squeeze(norm_cd_dens(rho, launcher, :)); + profile_cd_integrated = squeeze(norm_cd_integrated(rho, launcher, :)); + interp_profile_p_dens = interp1(ec_time, profile_p_dens, ec_t_grid); + interp_profile_p_integrated = interp1(ec_time, profile_p_integrated, ec_t_grid); + interp_profile_cd_dens = interp1(ec_time, profile_cd_dens, ec_t_grid); + interp_profile_cd_integrated = interp1(ec_time, profile_cd_integrated, ec_t_grid); + interp_norm_p_dens(rho, launcher, :) = interp_profile_p_dens; + interp_norm_p_integrated(rho, launcher, :) = interp_profile_p_integrated; + interp_norm_cd_dens(rho, launcher, :) = interp_profile_cd_dens; + interp_norm_cd_integrated(rho, launcher, :) = interp_profile_cd_integrated; end end -% normalised & interpolated p_dens profiles * p_ec_injected on ec_t_grid +% normalised & interpolated profiles * p_ec_injected on ec_t_grid interp_p_dens = zeros(size(interp_norm_p_dens, 1), size(interp_norm_p_dens, 2), ec_n_t); +interp_p_integrated = zeros(size(interp_norm_p_integrated, 1), size(interp_norm_p_integrated, 2), ec_n_t); +interp_cd_dens = zeros(size(interp_norm_cd_dens, 1), size(interp_norm_cd_dens, 2), ec_n_t); +interp_cd_integrated = zeros(size(interp_norm_cd_integrated, 1), size(interp_norm_cd_integrated, 2), ec_n_t); for t = 1:length(ec_t_grid) - unnormalised = zeros(size(p_dens, 1), nb_launchers+1); + unnormalised_p_dens = zeros(size(p_dens, 1), nb_launchers+1); + unnormalised_p_integrated = zeros(size(p_integrated, 1), nb_launchers+1); + unnormalised_cd_dens = zeros(size(cd_dens, 1), nb_launchers+1); + unnormalised_cd_integrated = zeros(size(cd_integrated, 1), nb_launchers+1); for launcher = 1:nb_launchers+1 - unnormalised(:,launcher) = interp_norm_p_dens(:,launcher,t).* p_ec_injected(t, launcher); + unnormalised_p_dens(:,launcher) = interp_norm_p_dens(:,launcher,t).* p_ec_injected(t, launcher); + unnormalised_p_integrated(:,launcher) = interp_norm_p_integrated(:,launcher,t).* p_ec_injected(t, launcher); + unnormalised_cd_dens(:,launcher) = interp_norm_cd_dens(:,launcher,t).* p_ec_injected(t, launcher); + unnormalised_cd_integrated(:,launcher) = interp_norm_cd_integrated(:,launcher,t).* p_ec_injected(t, launcher); end - interp_p_dens(:,:,t) = unnormalised; + interp_p_dens(:,:,t) = unnormalised_p_dens; + interp_p_integrated(:,:,t) = unnormalised_p_integrated; + interp_cd_dens(:,:,t) = unnormalised_cd_dens; + interp_cd_integrated(:,:,t) = unnormalised_cd_integrated; end for ii = 1:ec_n_t @@ -175,6 +200,15 @@ for ii = 1:ec_n_t ec_data.p_dens.rhotor_norm(1,:); ids_core_sources.source{last_index+i}.profiles_1d{ii}.electrons.energy = ... interp_p_dens(:,i,ii); + ids_core_sources.source{last_index+i}.profiles_1d{ii}.electrons.power_inside = ... + interp_p_integrated(:,i,ii); + % current density (to adapt to <J.B>/B0) + ids_core_sources.source{last_index+i}.profiles_1d{ii}.j_parallel = ... + interp_cd_dens(:,i,ii); + % integrated current density (to adapt to INTEGRAL(<J.B>/B0)*ds_phi) + ids_core_sources.source{last_index+i}.profiles_1d{ii}.current_parallel_inside = ... + interp_cd_integrated(:,i,ii); + end end last_index = last_index+nb_launchers;