From a9e31134c78229a259e119bd74e6f893f9f92c6d Mon Sep 17 00:00:00 2001 From: Aliki Chatzilouka <chatzilouka.aliki@epfl.ch> Date: Tue, 26 Mar 2024 13:38:02 +0100 Subject: [PATCH] only filling in source structures for active launchers --- matlab/TCV_IMAS/tcv_get_ids_core_sources.m | 119 ++++++++++++--------- 1 file changed, 67 insertions(+), 52 deletions(-) diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m index ebc536bc..c0289a71 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m +++ b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m @@ -92,11 +92,19 @@ ec_gdat = gdat(shot,'ec_data'); ec_data = ec_gdat.ec.ec_data; ec_time = ec_data.p_dens.t; n_ec_time = numel(ec_time); ec_t_grid = powers_gdat.ec.t; ec_n_t = numel(ec_t_grid); +[status,time,pgyro,pgyro_ecrh,gyro2launcher,freq2launcher] = write_pgyro(shot); nb_launchers = size(ec_gdat.ec.ec_data.rho_max_pow_dens.data,1); -id_ec.description = 'Sources from electron cyclotron heating and current drive'; +active_launchers = []; +for i_lau = 1:numel(gyro2launcher) + if gyro2launcher(i_lau) ~= 0 + active_launchers(end+1) = i_lau; + end +n_active_launchers = numel(active_launchers); +end +id_ec.description = 'L1/G1 Sources from electron cyclotron heating and current drive'; id_ec.index = 3; id_ec.name = 'ec'; -for i_lau = 1:nb_launchers +for i_lau = active_launchers ids_core_sources.source{last_index+i_lau} = source_template; ids_core_sources.source{last_index+i_lau}.identifier = id_ec; ids_core_sources.source{last_index+i_lau}.profiles_1d(1:ec_n_t) = {profiles_template}; @@ -108,7 +116,7 @@ ec_total_pow(isnan(ec_total_pow)) = 0; ec_total_cur = ec_data.cd_tot.data(nb_launchers+1,:); ec_total_cur(isnan(ec_total_cur)) = 0; -for i_lau = 1:nb_launchers +for i_lau = active_launchers for ii = 1:ec_n_t ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.time = ec_t_grid(ii); % profiles time ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.time = ec_t_grid(ii); % globals time @@ -132,20 +140,20 @@ 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 rho_grid = size(p_dens, 1); % calculate normalised profiles on ec_time grid -norm_p_dens = zeros(rho_grid, nb_launchers+1, n_ec_time); -norm_p_integrated = zeros(rho_grid, nb_launchers+1, n_ec_time); -norm_cd_dens = zeros(rho_grid, nb_launchers+1, n_ec_time); -norm_cd_integrated = zeros(rho_grid, nb_launchers+1, n_ec_time); +norm_p_dens = zeros(rho_grid, n_active_launchers, n_ec_time); +norm_p_integrated = zeros(rho_grid, n_active_launchers, n_ec_time); +norm_cd_dens = zeros(rho_grid, n_active_launchers, n_ec_time); +norm_cd_integrated = zeros(rho_grid, n_active_launchers, n_ec_time); for t = 1:n_ec_time - norm_p_dens_temp = zeros(rho_grid, nb_launchers+1); - norm_p_integrated_temp = zeros(rho_grid, nb_launchers+1); - norm_cd_dens_temp = zeros(rho_grid, nb_launchers+1); - norm_cd_integrated_temp = zeros(rho_grid, nb_launchers+1); - for launcher = 1:nb_launchers+1 - 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); + norm_p_dens_temp = zeros(rho_grid, n_active_launchers); + norm_p_integrated_temp = zeros(rho_grid, n_active_launchers); + norm_cd_dens_temp = zeros(rho_grid, n_active_launchers); + norm_cd_integrated_temp = zeros(rho_grid, n_active_launchers); + for i_lau = n_active_launchers + norm_p_dens_temp(:, i_lau) = p_dens(:, active_launchers(i_lau), t) ./ sparse_p_ec_injected(t, active_launchers(i_lau)); + norm_p_integrated_temp(:, i_lau) = p_integrated(:, active_launchers(i_lau)) ./ sparse_p_ec_injected(t, active_launchers(i_lau)); + norm_cd_dens_temp(:, i_lau) = cd_dens(:, active_launchers(i_lau), t) ./ sparse_p_ec_injected(t, i_lau); + norm_cd_integrated_temp(:, i_lau) = cd_integrated(:, active_launchers(i_lau), t) ./ sparse_p_ec_injected(t, active_launchers(i_lau)); end norm_p_dens(:,:,t) = norm_p_dens_temp; norm_p_integrated(:,:,t) = norm_p_integrated_temp; @@ -154,42 +162,42 @@ for t = 1:n_ec_time end % interpolate normalised p_dens profiles on ec_t_grid -interp_norm_p_dens = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_norm_p_integrated = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_norm_cd_dens = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_norm_cd_integrated = zeros(rho_grid, nb_launchers+1, ec_n_t); +interp_norm_p_dens = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_norm_p_integrated = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_norm_cd_dens = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_norm_cd_integrated = zeros(rho_grid, n_active_launchers, ec_n_t); for rho = 1:rho_grid - for launcher = 1:nb_launchers+1 - 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, :)); + for i_lau = 1:n_active_launchers + profile_p_dens = squeeze(norm_p_dens(rho, i_lau, :)); + profile_p_integrated = squeeze(norm_p_integrated(rho, i_lau, :)); + profile_cd_dens = squeeze(norm_cd_dens(rho, i_lau, :)); + profile_cd_integrated = squeeze(norm_cd_integrated(rho, i_lau, :)); 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; + interp_norm_p_dens(rho, i_lau, :) = interp_profile_p_dens; + interp_norm_p_integrated(rho, i_lau, :) = interp_profile_p_integrated; + interp_norm_cd_dens(rho, i_lau, :) = interp_profile_cd_dens; + interp_norm_cd_integrated(rho, i_lau, :) = interp_profile_cd_integrated; end end % normalised & interpolated profiles * p_ec_injected on ec_t_grid -interp_p_dens = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_p_integrated = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_cd_dens = zeros(rho_grid, nb_launchers+1, ec_n_t); -interp_cd_integrated = zeros(rho_grid, nb_launchers+1, ec_n_t); +interp_p_dens = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_p_integrated = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_cd_dens = zeros(rho_grid, n_active_launchers, ec_n_t); +interp_cd_integrated = zeros(rho_grid, n_active_launchers, ec_n_t); for t = 1:numel(ec_t_grid) - unnormalised_p_dens = zeros(rho_grid, nb_launchers+1); - unnormalised_p_integrated = zeros(rho_grid, nb_launchers+1); - unnormalised_cd_dens = zeros(rho_grid, nb_launchers+1); - unnormalised_cd_integrated = zeros(rho_grid, nb_launchers+1); - for launcher = 1:nb_launchers+1 - 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); + unnormalised_p_dens = zeros(rho_grid, n_active_launchers); + unnormalised_p_integrated = zeros(rho_grid, n_active_launchers); + unnormalised_cd_dens = zeros(rho_grid, n_active_launchers); + unnormalised_cd_integrated = zeros(rho_grid, n_active_launchers); + for i_lau = 1:n_active_launchers + unnormalised_p_dens(:,i_lau) = interp_norm_p_dens(:,i_lau,t).* p_ec_injected(t, active_launchers(i_lau)); + unnormalised_p_integrated(:,i_lau) = interp_norm_p_integrated(:,i_lau,t).* p_ec_injected(t, active_launchers(i_lau)); + unnormalised_cd_dens(:,i_lau) = interp_norm_cd_dens(:,i_lau,t).* p_ec_injected(t, active_launchers(i_lau)); + unnormalised_cd_integrated(:,i_lau) = interp_norm_cd_integrated(:,i_lau,t).* p_ec_injected(t, active_launchers(i_lau)); end interp_p_dens(:,:,t) = unnormalised_p_dens; interp_p_integrated(:,:,t) = unnormalised_p_integrated; @@ -198,22 +206,29 @@ for t = 1:numel(ec_t_grid) end for ii = 1:ec_n_t - for i = 1:nb_launchers - ids_core_sources.source{last_index+i}.profiles_1d{ii}.grid.rho_tor_norm = ... + for i_lau = active_launchers + launcher_index = find(active_launchers == i_lau); + ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.grid.rho_tor_norm = ... 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); + ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.energy = ... + interp_p_dens(:,launcher_index,ii); + ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.electrons.power_inside = ... + interp_p_integrated(:,launcher_index,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); + ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.j_parallel = ... + interp_cd_dens(:,launcher_index,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); + ids_core_sources.source{last_index+i_lau}.profiles_1d{ii}.current_parallel_inside = ... + interp_cd_integrated(:,launcher_index,ii); end end + +%add empty sources for rest of unsused launchers +if numel(ids_core_sources.source)-last_index ~= nb_launchers + ids_core_sources.source{last_index+nb_launchers} = []; +end + last_index = last_index+nb_launchers; %% nbi -- GitLab