-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
new_CBC_convergence_GENE_GYAC_comparison.m 6.79 KiB
figure
hold on
TRTW = [0.5 1];
ERRBAR = 1;
%%%%%%%%%%%%%%%%%%%%%%%%
%% GYAC Marconi standard res
resdirs = {...
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-3/3x2x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-3/5x3x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/save/kT_scan_1e-3/7x4x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-3/9x5x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/save/kT_scan_1e-3/11x6x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-3/17x9x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-3/31x16x128x64x24/kT_7.0/'
};
QvsPJ = zeros(numel(resdirs),4);
N = numel(resdirs);
for i = 1:N
data = {};
data = compile_results_low_mem(data,resdirs{i},00,10);
% fast heat flux analysis
T = data.Ts0D;
Qx = data.HFLUX_X;
Trange = T(end)*TRTW;
[~,it0] = min(abs(Trange(1)-T));
[~,it1] = min(abs(Trange(2)-T));
Qavg = mean(Qx(it0:it1));
Qstd = std(Qx(it0:it1));
disp(['$Q_{avg}=',sprintf('%2.2f',Qavg),'\pm',sprintf('%2.2f',Qstd),'$']);
QvsPJ(i,1) = data.grids.Np;
QvsPJ(i,2) = data.grids.Nj;
QvsPJ(i,3) = Qavg;
QvsPJ(i,4) = Qstd;
end
if ERRBAR
errorbar(QvsPJ(:,1).*QvsPJ(:,2),QvsPJ(:,3),QvsPJ(:,4),'LineStyle','-',...
'DisplayName','GM, $\nu_{DGDK}=0.001$','Marker','o',...
'MarkerSize',7,'LineWidth',2);
else
plot((QvsPJ(:,1).*QvsPJ(:,2)),QvsPJ(:,3),'-o','DisplayName','GM, $\nu_{DGDK}=0.001$')
end
%% GYAC Marconi nu = 0.01
resdirs = {...
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-2/5x3x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-2/7x4x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-2/9x5x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-2/11x6x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_1e-2/13x7x128x64x24/kT_7.0/'
};
QvsPJ = zeros(numel(resdirs),4);
N = numel(resdirs);
for i = 1:N
data = {};
data = compile_results_low_mem(data,resdirs{i},00,10);
% fast heat flux analysis
T = data.Ts0D;
Qx = data.HFLUX_X;
Trange = T(end)*TRTW;
[~,it0] = min(abs(Trange(1)-T));
[~,it1] = min(abs(Trange(2)-T));
Qavg = mean(Qx(it0:it1));
Qstd = std(Qx(it0:it1));
disp(['$Q_{avg}=',sprintf('%2.2f',Qavg),'\pm',sprintf('%2.2f',Qstd),'$']);
QvsPJ(i,1) = data.grids.Np;
QvsPJ(i,2) = data.grids.Nj;
QvsPJ(i,3) = Qavg;
QvsPJ(i,4) = Qstd;
end
if ERRBAR
errorbar(QvsPJ(:,1).*QvsPJ(:,2),QvsPJ(:,3),QvsPJ(:,4),'LineStyle','none',...
'DisplayName','GM, $\nu_{DGDK}=0.01$','Marker','o',...
'MarkerSize',7,'LineWidth',2);
else
plot((QvsPJ(:,1).*QvsPJ(:,2)),QvsPJ(:,3),'-o','DisplayName','GM, $\nu_{DGDK}=0.01$')
end
%% GYAC Marconi nu = 0.05
resdirs = {...
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/3x2x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/5x3x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/7x4x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/9x5x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/11x6x128x64x24/kT_7.0/';
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/13x7x128x64x24/kT_7.0/'
'/misc/gyacomo23_outputs/paper_2_GYAC23/kT_scan_nu_5e-2/15x8x128x64x24/kT_7.0/'
};
QvsPJ = zeros(numel(resdirs),4);
N = numel(resdirs);
for i = 1:N
data = {};
data = compile_results_low_mem(data,resdirs{i},00,10);
% fast heat flux analysis
T = data.Ts0D;
Qx = data.HFLUX_X;
Trange = T(end)*TRTW;
[~,it0] = min(abs(Trange(1)-T));
[~,it1] = min(abs(Trange(2)-T));
Qavg = mean(Qx(it0:it1));
Qstd = std(Qx(it0:it1));
disp(['$Q_{avg}=',sprintf('%2.2f',Qavg),'\pm',sprintf('%2.2f',Qstd),'$']);
QvsPJ(i,1) = data.grids.Np;
QvsPJ(i,2) = data.grids.Nj;
QvsPJ(i,3) = Qavg;
QvsPJ(i,4) = Qstd;
end
if ERRBAR
errorbar(QvsPJ(:,1).*QvsPJ(:,2),QvsPJ(:,3),QvsPJ(:,4),'LineStyle','none',...
'DisplayName','GM, $\nu_{DGDK}=0.05$','Marker','o',...
'MarkerSize',7,'LineWidth',2);
else
plot((QvsPJ(:,1).*QvsPJ(:,2)),QvsPJ(:,3),'-o','DisplayName','GM, $\nu_{DGDK}=0.05$')
end
%% GENE normal box
resdirs = {...
'/misc/gene_results/kT_scan_nu0/8x4x128x64x24/kT_7.0/';
'/misc/gene_results/kT_scan_nu0/16x8x128x64x24/kT_7.0/';
'/misc/gene_results/kT_scan_nu0/30x16x128x64x24/kT_7.0/';
'/misc/gene_results/kT_scan_nu0/42x24x128x64x24/kT_7.0/'
};
QvsNv = zeros(numel(resdirs),4);
N = numel(resdirs);
for i = 1:N
% fast heat flux analysis
nrgfile = 'nrg.dat.h5';
% nrgfile = 'nrg_1.h5';
T = h5read([resdirs{i},nrgfile],'/nrgions/time');
Qx = h5read([resdirs{i},nrgfile],'/nrgions/Q_es');
Trange = T(end)*TRTW;
[~,it0] = min(abs(Trange(1)-T));
[~,it1] = min(abs(Trange(2)-T));
Qavg = mean(Qx(it0:end));
Qstd = std(Qx(it0:end));
disp(['$Q_{avg}=',sprintf('%2.2f',Qavg),'\pm',sprintf('%2.2f',Qstd),'$']);
namelist = read_namelist([resdirs{i},'parameters']);
QvsNv(i,1) = namelist.box.nv0;
QvsNv(i,2) = namelist.box.nw0;
QvsNv(i,3) = Qavg;
QvsNv(i,4) = Qstd;
end
if ERRBAR
errorbar((QvsNv(:,1).*QvsNv(:,2)),QvsNv(:,3),QvsNv(:,4),'k','LineStyle','-',...
'DisplayName','GENE','Marker','s',...
'MarkerSize',10,'LineWidth',2);
else
plot((QvsNv(:,1).*QvsNv(:,2)),QvsNv(:,3),'sk','DisplayName','GENE')
end
%% GENE half vbox
resdirs = {...
'/misc/gene_results/kT_scan_nu0/8x4x128x64x24_half_vbox/kT_7.0/';
'/misc/gene_results/kT_scan_nu0/16x8x128x64x24_half_vbox/kT_7.0/';
};
QvsNv = zeros(numel(resdirs),4);
N = numel(resdirs);
for i = 1:N
% fast heat flux analysis
nrgfile = 'nrg.dat.h5';
% nrgfile = 'nrg_1.h5';
T = h5read([resdirs{i},nrgfile],'/nrgions/time');
Qx = h5read([resdirs{i},nrgfile],'/nrgions/Q_es');
[~,it0] = min(abs(0.25*T(end)-T));
Qavg = mean(Qx(it0:end));
Qstd = std(Qx(it0:end));
disp(['$Q_{avg}=',sprintf('%2.2f',Qavg),'\pm',sprintf('%2.2f',Qstd),'$']);
namelist = read_namelist([resdirs{i},'parameters']);
QvsNv(i,1) = namelist.box.nv0;
QvsNv(i,2) = namelist.box.nw0;
QvsNv(i,3) = Qavg;
QvsNv(i,4) = Qstd;
end
if ERRBAR
errorbar((QvsNv(:,1).*QvsNv(:,2)),QvsNv(:,3),QvsNv(:,4),'k','LineStyle','none',...
'DisplayName','GENE, $L_{v_\parallel}/2,L_\mu/2$','Marker','x',...
'MarkerSize',7,'LineWidth',2);
else
plot((QvsNv(:,1).*QvsNv(:,2)),QvsNv(:,3),'xk','DisplayName','GENE, $L_{v_\parallel}/2,L_\mu/2$')
end
%% plot formatting
set(gca,'xscale','log');
xlabel('$N_{v\parallel}\times N_{\mu}$'); ylabel('$Q_x$');
grid on