diff --git a/scripts/matlab_utilities/analysis.m b/scripts/matlab_utilities/analysis.m new file mode 100644 index 0000000000000000000000000000000000000000..171b188910b441d92fe95bd240a37d24f1970626 --- /dev/null +++ b/scripts/matlab_utilities/analysis.m @@ -0,0 +1,140 @@ +%% This is a example of matlab analysis script +gyacomodir = '/Users/ahoffmann/gyacomo/'; % get code directory +addpath(genpath([gyacomodir,'matlab'])) % ... add +addpath(genpath([gyacomodir,'matlab/plot'])) % ... add +addpath(genpath([gyacomodir,'matlab/compute'])) % ... add +addpath(genpath([gyacomodir,'matlab/load'])) % ... add +default_plots_options + +% Directory where the data sits ------------------------------- +DATADIR = '/Users/ahoffmann/gyacomo/simulations/problem_01/'; + +% Jobs to load (from outputs_J0.h5 to outputs_J1.h5 if exists) +J0 = 00; J1 = 10; + +% main structure that will contain all the loaded data +data = {}; + +% Load basic info (grids and time traces) +data = compile_results_low_mem(data,DATADIR,J0,J1); + +% load EM fields ------------------------------- +% Electrostatic potential +[data.PHI, data.Ts3D] = compile_results_3D(DATADIR,J0,J1,'phi'); +% Electromagnetic potential (if beta non zero) +if data.inputs.BETA > 0 + [data.PSI, data.Ts3D] = compile_results_3D(DATADIR,J0,J1,'psi'); +end + +% load moments ------------------------------- +% temperature +[TEMP, data.Ts3D] = compile_results_3Da(data.folder,J0,J1,'temp'); +% parallel velocity +[UPAR, data.Ts3D] = compile_results_3Da(data.folder,J0,J1,'upar'); +% perpendicular velocity +[UPER, data.Ts3D] = compile_results_3Da(data.folder,J0,J1,'uper'); +% density +[DENS, data.Ts3D] = compile_results_3Da(data.folder,J0,J1,'dens'); +% gyrocenter density (first GM) +[Na00, data.Ts3D] = compile_results_3Da(DATADIR,J0,J1,'Na00'); +% asign them to species +% first index is ions +data.TEMP_I = reshape(TEMP(1,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +data.UPAR_I = reshape(UPAR(1,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +data.UPER_I = reshape(UPER(1,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +data.DENS_I = reshape(DENS(1,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +data.Ni00 = reshape(Na00(1,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +% if we have a second species we store in electrons +if data.inputs.Na > 1 + data.TEMP_E = reshape(data.TEMP(2,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); + data.DENS_E = reshape(data.DENS(2,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); + data.Ne00 = reshape(data.Na00(2,:,:,:,:),data.grids.Nky,data.grids.Nkx,data.grids.Nz,numel(data.Ts3D)); +end +clear TEMP UPAR UPER DENS Na00; + +%% Plot transport and phi radial profile +options.TAVG_0 = 25; % averaging start time for the flux +options.TAVG_1 = 50; % end time +options.NCUT = 5; % Number of cuts for averaging and error estimation +options.NMVA = 1; % Moving average for time traces +options.ST_FIELD = '\phi'; % chose your field to plot in spacetime diag (e.g \phi,v_x,G_x,upar,N_i^{00} etc.) +options.INTERP = 0; % interp the pcolor plot or not +plot_radial_transport_and_spacetime(data,options); + +%% 2D field snapshots +% Options +options.INTERP = 1; +options.AXISEQUAL = 1; +options.NORMALIZE = 0; +options.LOGSCALE = 0; +% chose the name (available : n_i,upar_i,T_i,Q_{xi},v_{Ey},w_{Ez},\phi,\psi +options.NAME = 'n_i'; +options.PLAN = 'xy'; options.COMP =floor(data.grids.Nz/2)+1; +% options.PLAN = 'xz'; options.COMP ='avg'; +% options.PLAN = '3D'; +options.XYZ =[-11 20 -2]; +options.TIME = [50]; options.TAVG = 0; +% options.TIME = [50:500]; options.TAVG = 1; +options.RESOLUTION = 256; +fig = photomaton(data,options); +colormap(bluewhitered) +colorbar +% set(gca,'ColorScale','log') +% save_figure(data,fig) + + +if 0 +%% Mode evolution +options.NORMALIZED = 0; +options.TIME = data.Ts3D; +options.KX_TW = [0.5 1]*data.Ts3D(end); %kx Growth rate time window +options.KY_TW = [0.5 1]*data.Ts3D(end); %ky Growth rate time window +options.NMA = 1; +options.NMODES = 64; +options.iz = 'avg'; % avg or index +options.ik = 1; % sum, max or index +options.fftz.flag = 0; +options.FIELD = 'Ni00'; +options.GOK2 = 0; +options.SHOWFIG = 1; +[fig, wkykx, ekykx] = mode_growth_meter(data,options); +end + +if 0 +%% Hermite-Laguerre spectrum +[data.Napjz, data.Ts3D] = compile_results_3Da(DATADIR,J0,J1,'Napjz'); +options.ST = 1; +options.NORMALIZED = 0; +options.LOGSCALE = 1; +options.FILTER = 0; %filter the 50% time-average of the spectrum from +options.TAVG_2D = 0; %Show a 2D plot of the modes, 50% time averaged +options.TAVG_2D_CTR= 0; %make it contour plot +options.TWINDOW = [20 20]; +fig = show_moments_spectrum(data,options); +end + +if 0 +%% MOVIES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +options.INTERP = 1; +options.POLARPLOT = 0; +options.BWR = 0; % bluewhitered plot or gray +options.CLIMAUTO = 1; % adjust the colormap auto +options.NAME = '\phi'; +% options.NAME = 'w_{Ez}'; +% options.NAME = '\psi'; +% options.NAME = 'T_i'; +% options.NAME = '\phi^{NZ}'; +% options.NAME = ['N_i^{00}']; +% options.NAME = ['N_e^{00}']; +options.PLAN = 'xy'; options.COMP =floor(data.grids.Nz/2)+1; +% options.PLAN = 'xz'; options.COMP ='avg'; +% options.PLAN = '3D'; +options.XYZ =[-21 20 0]; +options.TIME = data.Ts3D(1:1:end); +data.EPS = 0.1; +data.a = data.EPS * 2000; +options.RESOLUTION = 256; +options.FPS = 12; +options.RMAXIS = 0; +create_film(data,options,'.gif'); +end