diff --git a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m index 87a8c431d4376bb4d0648c81dc242c998c6141f5..ebc536bc947a764e2d5d31d8e175fbacec6d3851 100644 --- a/matlab/TCV_IMAS/tcv_get_ids_core_sources.m +++ b/matlab/TCV_IMAS/tcv_get_ids_core_sources.m @@ -40,7 +40,7 @@ powers_gdat = gdat(shot,'powers'); last_index = 0; %% initialize source from template % ohm -ohm_t_grid = powers_gdat.ohm.t; ohm_n_t = numel(ohm_t_grid); t_spacing = mean(diff(ohm_t_grid)); +ohm_t_grid = powers_gdat.ohm.t; ohm_n_t = numel(ohm_t_grid); id_ohm.description = 'Source from ohmic heating'; id_ohm.index = 7; id_ohm.name = 'ohmic'; @@ -66,18 +66,20 @@ end last_index = last_index+1; % add if statement to only increment if ohmic source has been added %% bs +bs_gdat = gdat(shot,'bs_data'); bs_data = bs_gdat.bs.bs_data; +bs_t_grid = bs_gdat.bs.t; bs_n_t = numel(bs_t_grid); + id_bs.description = 'Bootstrap current'; id_bs.index = 13; id_bs.name = 'bootstrap_current'; ids_core_sources.source{last_index+1} = source_template; ids_core_sources.source{last_index+1}.identifier = id_bs; ids_core_sources.source{last_index+1}.profiles_1d(1:ohm_n_t) = {profiles_template}; ids_core_sources.source{last_index+1}.global_quantities(1:ohm_n_t) = {globals_template}; -% load data -bs_gdat = gdat(shot,'bs_data'); bs_data = bs_gdat.bs.bs_data; + % fill profiles for times n t_grid -for ii = 1:ohm_n_t - ids_core_sources.source{last_index+1}.profiles_1d{ii}.time = ohm_t_grid(ii); +for ii = 1:bs_n_t + ids_core_sources.source{last_index+1}.profiles_1d{ii}.time = bs_t_grid(ii); ids_core_sources.source{last_index+1}.profiles_1d{ii}.j_parallel = ... bs_data.cd_dens.data(:,ii)'; end @@ -88,16 +90,17 @@ last_index = last_index+1; % add if statement to only increment if bs source ha % load data ec_gdat = gdat(shot,'ec_data'); ec_data = ec_gdat.ec.ec_data; ec_time = ec_data.p_dens.t; -ec_t_grid = powers_gdat.ec.t; ec_n_t = numel(ec_t_grid); t_spacing = mean(diff(ec_t_grid)); +n_ec_time = numel(ec_time); +ec_t_grid = powers_gdat.ec.t; ec_n_t = numel(ec_t_grid); 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'; id_ec.index = 3; id_ec.name = 'ec'; -for i = 1:nb_launchers - ids_core_sources.source{last_index+i} = source_template; - ids_core_sources.source{last_index+i}.identifier = id_ec; - ids_core_sources.source{last_index+i}.profiles_1d(1:ec_n_t) = {profiles_template}; - ids_core_sources.source{last_index+i}.global_quantities(1:ec_n_t) = {globals_template}; +for i_lau = 1:nb_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}; + ids_core_sources.source{last_index+i_lau}.global_quantities(1:ec_n_t) = {globals_template}; end ec_total_pow = transpose(powers_gdat.ec.data(:,nb_launchers+1)); %use power from powers_gdat(injected ec power) instead of ec_data power @@ -105,15 +108,15 @@ 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 = 1:nb_launchers +for i_lau = 1:nb_launchers for ii = 1:ec_n_t - 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 + 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 % 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); + ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.time = ec_t_grid(ii); + ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.power = ec_total_pow(ii); + ids_core_sources.source{last_index+i_lau}.global_quantities{ii}.current_parallel = ec_total_cur(ii); end end @@ -127,17 +130,17 @@ 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 - +rho_grid = size(p_dens, 1); % 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) - 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); +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); +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); @@ -151,12 +154,12 @@ for t = 1:length(ec_time) 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) +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); +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, :)); @@ -173,15 +176,15 @@ for rho = 1:size(norm_p_dens, 1) end % 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_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); +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); +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); @@ -233,7 +236,7 @@ id_total.index = 1; id_total.name = 'total'; %% add descriptions for profiles_1d -desc.source = 'available by now, 1:total, 3:ec, 7:ohm, 13:bootstrap'; +desc.source = 'available by now: ohm [id=7], bootstrap [id=13], ec [id=3] (if present in shot)'; desc.profiles_1d.j_parallel = 'parallel current density'; desc.profiles_1d.current_parallel_inside = 'integrated parallel current density'; desc.globals.power = 'total power coupled to the plasma';