From 7e6cccbcc49d49e6d4d26cd631b4839540a397be Mon Sep 17 00:00:00 2001 From: Antoine Hoffmann <antoine.hoffmann@epfl.ch> Date: Fri, 4 Nov 2022 15:45:52 +0100 Subject: [PATCH] Scripts save --- .../compute/compute_3D_zpinch_growth_rate.m | 12 +- matlab/extract_fig_data.m | 4 +- matlab/plot/real_plot_1D.m | 2 +- matlab/plot/statistical_transport_averaging.m | 2 +- matlab/setup.m | 4 +- scripts/scan_kN_pipeline.sh | 59 ++++++ testcases/zpinch_example/fort.90 | 18 +- wk/CBC_nu_CO_scan.m | 172 ++++++++++------ wk/Zpinch_coll_scan_kN_1.7.m | 127 +++++++++++- wk/analysis_gene.m | 37 ++-- wk/analysis_gyacomo.m | 51 ++--- wk/header_2DZP_results.m | 24 ++- wk/lin_3D_Zpinch.m | 194 ++++++++++++++++++ wk/{lin_EPY.m => lin_ETPY.m} | 32 +-- wk/lin_ITG.m | 13 +- 15 files changed, 598 insertions(+), 153 deletions(-) create mode 100644 scripts/scan_kN_pipeline.sh create mode 100644 wk/lin_3D_Zpinch.m rename wk/{lin_EPY.m => lin_ETPY.m} (87%) diff --git a/matlab/compute/compute_3D_zpinch_growth_rate.m b/matlab/compute/compute_3D_zpinch_growth_rate.m index 3a053fa6..ce129abd 100644 --- a/matlab/compute/compute_3D_zpinch_growth_rate.m +++ b/matlab/compute/compute_3D_zpinch_growth_rate.m @@ -13,6 +13,8 @@ else end ikynz = abs(DATA.PHI(:,1,1,1)) > 0; +ikynz(1) = 1; ikxnz(1) = 1; %put k=0 in the analysis + phi = fft(DATA.PHI(ikynz,ikxnz,:,:),[],3); omega = zeros(nky,nkx,nkz); @@ -41,16 +43,16 @@ nplots = OPTIONS.kxky + OPTIONS.kzkx + OPTIONS.kzky; iplot = 1; if OPTIONS.kxky -[X_XY,Y_XY] = meshgrid(ky(posky),kx(poskx)); +[Y_XY,X_XY] = meshgrid(ky(posky),kx(poskx)); subplot(1,nplots,iplot) if ~OPTIONS.keq0 toplot = squeeze(max(real(omega(:,:,:)),[],3)); - pclr= pcolor(X_XY,Y_XY,toplot); set(pclr,'EdgeColor','none'); + pclr= pcolor(X_XY,Y_XY,toplot'); set(pclr,'EdgeColor','none'); xlabel('$k_x$'); ylabel('$k_y$'); title('$\max(\gamma)_{kz}$'); else toplot = squeeze(real(omega(:,:,kzeq0))); - pclr= pcolor(X_XY,Y_XY,toplot); set(pclr,'EdgeColor','none'); + pclr= pcolor(X_XY,Y_XY,toplot'); set(pclr,'EdgeColor','none'); xlabel('$k_x$'); ylabel('$k_y$'); title('$\gamma(k_z=0)$'); end @@ -65,7 +67,7 @@ subplot(1,nplots,iplot) xlabel('$k_x$'); ylabel('$k_y$'); title('$\max(\gamma)_{kx}$'); else - toplot = squeeze(real(omega(kxeq0,:,:))); + toplot = squeeze(real(omega(:,kxeq0,:))); pclr= pcolor(Z_ZY,Y_ZY,toplot'); set(pclr,'EdgeColor','none'); xlabel('$k_z$'); ylabel('$k_y$'); title('$\gamma(k_x=0)$'); @@ -81,7 +83,7 @@ subplot(1,nplots,iplot) xlabel('$k_z$'); ylabel('$k_x$'); title('$\max(\gamma)_{ky}$'); else - toplot = squeeze(real(omega(:,kyeq0,:))); + toplot = squeeze(real(omega(kyeq0,:,:))); pclr= pcolor(Z_ZY,Y_ZY,toplot'); set(pclr,'EdgeColor','none'); xlabel('$k_z$'); ylabel('$k_x$'); title('$\gamma(k_y=0)$'); diff --git a/matlab/extract_fig_data.m b/matlab/extract_fig_data.m index a036d184..3680bd89 100644 --- a/matlab/extract_fig_data.m +++ b/matlab/extract_fig_data.m @@ -4,7 +4,7 @@ % tw = [3000 4000]; % tw = [4000 4500]; % tw = [4500 5000]; -tw = [00 5000]; +tw = [00 1.3]; fig = gcf; axObjs = fig.Children; @@ -22,7 +22,7 @@ end mvm = @(x) movmean(x,1); shift = 0;%X_(n0); % shift = 0; -skip = 50; +skip = 1; figure; plot(mvm(X_(n0:skip:n1)-shift),mvm(Y_(n0:skip:n1))); hold on; diff --git a/matlab/plot/real_plot_1D.m b/matlab/plot/real_plot_1D.m index d0e93cd5..8bdc5464 100644 --- a/matlab/plot/real_plot_1D.m +++ b/matlab/plot/real_plot_1D.m @@ -154,7 +154,7 @@ subplot(1,nplots,3) legend('show') otherwise for it = 1:numel(toplot.FRAMES) - Y = compx(toplot.FIELD(:,:,toplot.FRAMES(it))); + Y = compx(toplot.FIELD(:,:,it)); Y = squeeze(Y); if options.NORM Y = Y./max(abs(Y)); diff --git a/matlab/plot/statistical_transport_averaging.m b/matlab/plot/statistical_transport_averaging.m index 3a7cc924..ffc0395e 100644 --- a/matlab/plot/statistical_transport_averaging.m +++ b/matlab/plot/statistical_transport_averaging.m @@ -1,5 +1,5 @@ -function [ fig ] = statistical_transport_averaging( data, options ) +function [ fig, Gx_infty_avg, Gx_infty_std ] = statistical_transport_averaging( data, options ) scale = data.scale; Trange = options.T; [~,it0] = min(abs(Trange(1)-data.Ts0D)); diff --git a/matlab/setup.m b/matlab/setup.m index 3b8be6c7..cf9e1f15 100644 --- a/matlab/setup.m +++ b/matlab/setup.m @@ -66,10 +66,10 @@ switch CO case 'LR' COLL.mat_file = '''../../../iCa/gk_pitchangle_8_P_20_J_10_N_150_kpm_8.0.h5'''; case 'LD' -% COLL.mat_file = '''../../../iCa/gk_coulomb_NFLR_12_P_4_J_2_N_50_kpm_4.0.h5'''; + COLL.mat_file = '''../../../iCa/gk_coulomb_NFLR_12_P_4_J_2_N_50_kpm_4.0.h5'''; % COLL.mat_file = '''../../../iCa/LDGKii_P10_J5_dk_5e-2_km_5_NFLR_12_k2trunc.h5'''; % COLL.mat_file = '''../../../iCa/LDGKii_P10_J5_dk_5e-2_km_5_NFLR_30.h5'''; - COLL.mat_file = '''../../../iCa/LDGK_P6_J3_dk_5e-2_km_2.5_NFLR_20.h5'''; +% COLL.mat_file = '''../../../iCa/LDGK_P6_J3_dk_5e-2_km_2.5_NFLR_20.h5'''; end COLL.coll_kcut = COLL_KCUT; % Time integration and intialization parameters diff --git a/scripts/scan_kN_pipeline.sh b/scripts/scan_kN_pipeline.sh new file mode 100644 index 00000000..8b9cef7e --- /dev/null +++ b/scripts/scan_kN_pipeline.sh @@ -0,0 +1,59 @@ +#! /bin/bash +# lastjid=$(sbatch submit_00.cmd) + +nu_=0.01 +dnu=0.0 +kn_=1.7 +dkn=0.2 +kt_=0.425 +dkt=0.05 +Lx_=150 +dLx=030 + +Tm_=4000 +dTm=1000 + +# First submit +istart=0 +lastji=$(sbatch submit_0$istart.cmd) +lastjid=${lastji##* } +echo $lastji + +for i in {1..5}; do + # Setup indices of job id (current and previous one) + im1=$(awk "BEGIN {print $i-1}") + idm1=$(printf '%02d' $im1) + id=$(printf '%02d' $i) + + # Create new submit file from older one + awk -v "ID=$id" '{ + if (NR == 8) print "#SBATCH --error=err_"ID".txt"; + else if (NR == 9) print "#SBATCH --output=out_"ID".txt"; + else if (NR == 12) print "srun --cpu-bind=cores ./gyacomo 2 24 1 "ID; + else print $0}' submit_$idm1.cmd > submit_$id.cmd + + # Create new fort file from older one + awk -v "NU=$nu_" -v "TM=$Tm_" -v "J2L=$im1" -v "KN=$kn_" -v "KT=$kt_" -v "LX=$Lx_" '{ + if (NR == 04) print " tmax = "TM; + else if (NR == 40) print " job2load = "J2L; + else if (NR == 13) print " Lx = "LX; + else if (NR == 54) print " nu = "NU; + else if (NR == 61) print " K_Ne = "KN; + else if (NR == 62) print " K_Ni = "KN; + else if (NR == 63) print " K_Te = "KT; + else if (NR == 64) print " K_Ti = "KT; + else print $0}' fort_$idm1.90 > fort_$id.90 + + # Retrieve last jobid and launch next job with dep + lastji=$(sbatch --dependency=afterok:$lastjid submit_$id.cmd) + lastjid=${lastji##* } + echo $lastjid + + # Increment variables + Lx_=$(awk "BEGIN {print $Lx_+$dLx}") + nu_=$(awk "BEGIN {print $nu_+$dnu}") + kn_=$(awk "BEGIN {print $kn_+$dkn}") + kt_=$(awk "BEGIN {print $kt_+$dkt}") + Tm_=$(awk "BEGIN {print $Tm_+$dTm}") +done + diff --git a/testcases/zpinch_example/fort.90 b/testcases/zpinch_example/fort.90 index f769f6b8..53a1a749 100644 --- a/testcases/zpinch_example/fort.90 +++ b/testcases/zpinch_example/fort.90 @@ -1,7 +1,7 @@ &BASIC nrun = 100000000 - dt = 0.005 - tmax = 100 + dt = 0.01 + tmax = 200 maxruntime = 356400 / &GRID @@ -58,20 +58,20 @@ sigma_i = 1 q_e = -1 q_i = 1 - K_Ne = 2.22 - K_Te = 6.96 - K_Ni = 2.22 - K_Ti = 6.96 + K_Ne = 2.0 + K_Te = 0.4 + K_Ni = 2.0 + K_Ti = 0.4 GradB = 1 CurvB = 1 lambdaD = 0 - beta = 1e-4 + beta = 0 / &COLLISION_PAR - collision_model = 'SG' !DG/SG/PA/LD (dougherty, sugama, pitch angle, landau) + collision_model = 'DG' !DG/SG/PA/LD (dougherty, sugama, pitch angle, landau) gyrokin_CO = .false. interspecies = .true. - mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5' + !mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5' / &INITIAL_CON INIT_OPT = 'phi' diff --git a/wk/CBC_nu_CO_scan.m b/wk/CBC_nu_CO_scan.m index d14d69ba..7f69c607 100644 --- a/wk/CBC_nu_CO_scan.m +++ b/wk/CBC_nu_CO_scan.m @@ -1,47 +1,61 @@ -% NU_a = [0.05 0.15 0.25 0.35 0.45]; -NU_a = [0:0.1:0.5]; -g_max= NU_a*0; -g_avg= NU_a*0; -g_std= NU_a*0; -k_max= NU_a*0; -CO = 'DG'; - -K_T = 7; -DT = 5e-3; -TMAX = 20; -ky_ = 0.3; -SIMID = 'linear_CBC_nu_scan_kT_7_ky_0.3_DGGK'; % Name of the simulation +gyacomodir = '/home/ahoffman/gyacomo/'; +% EXECNAME = 'gyacomo_1.0'; +% EXECNAME = 'gyacomo_dbg'; +EXECNAME = 'gyacomo'; +%% +NU_a = [0.005 0.01:0.01:0.1]; +% P_a = [2 4 6 8 10 12 16]; +% NU_a = 0.05; +P_a = [10]; + + +CO = 'SG'; +COLL_KCUT = 1.75; + +K_Ti = 6.96; +DT = 1e-2; +TMAX = 100; +kymin = 0.05; +Ny = 40; +SIMID = 'linear_CBC_nu+PJ_scan_kT_6.96_SGGK'; % Name of the simulation % SIMID = 'linear_CBC_nu_scan_kT_11_ky_0.3_DGGK'; % Name of the simulation RUN = 1; -figure -for P = [6 8 10] +g_ky = zeros(numel(NU_a),numel(P_a),Ny/2); +g_avg= g_ky*0; +g_std= g_ky*0; + +j = 1; +for P = P_a -i=1; +i = 1; for NU = NU_a - -%Set Up parameters -for j = 1 + %Set Up parameters CLUSTER.TIME = '99:00:00'; % allocation time hh:mm:ss TAU = 1.0; % e/i temperature ratio - K_N = 2.22; K_Ne = K_N; - K_Te = K_T; % Temperature ''' + K_Ni = 2.22; K_Ne = K_Ni; + K_Te = K_Ti; % Temperature ''' SIGMA_E = 0.0233380; % mass ratio sqrt(m_a/m_i) (correct = 0.0233380) KIN_E = 0; % 1: kinetic electrons, 2: adiabatic electrons BETA = 0e-1; % electron plasma beta J = P/2; +% J = 2; PMAXE = P; JMAXE = J; PMAXI = P; JMAXI = J; - NX = 12; % real space x-gridpoints - NY = 2; % '' y-gridpoints + NX = 2; % real space x-gridpoints + NY = Ny; % '' y-gridpoints LX = 2*pi/0.1; % Size of the squared frequency domain - LY = 2*pi/ky_; + LY = 2*pi/kymin; NZ = 16; % number of perpendicular planes (parallel grid) - NPOL = 1; SG = 0; + NPOL = 2; SG = 0; GEOMETRY= 's-alpha'; Q0 = 1.4; % safety factor - SHEAR = 0.8; % magnetic shear (Not implemented yet) - EPS = 0.18; % inverse aspect ratio + SHEAR = 0.8; % magnetic shear + KAPPA = 0.0; % elongation + DELTA = 0.0; % triangularity + ZETA = 0.0; % squareness + NEXC = 1; % To extend Lx if needed (Lx = Nexc/(kymin*shear)) + EPS = 0.18; % inverse aspect ratio SPS0D = 1; SPS2D = 0; SPS3D = 1;SPS5D= 1/5; SPSCP = 0; JOB2LOAD= -1; LINEARITY = 'linear'; % activate non-linearity (is cancelled if KXEQ0 = 1) @@ -62,56 +76,84 @@ for j = 1 INIT_BLOB = 0; WIPE_TURB = 0; ACT_ON_MODES = 0; MU_X = MU; % MU_Y = MU; N_HD = 4; - MU_Z = 2.0; MU_P = 0.0; % + MU_Z = 0.2; MU_P = 0.0; % MU_J = 0.0; LAMBDAD = 0.0; - NOISE0 = 0.0e-5; % Init noise amplitude - BCKGD0 = 1.0; % Init background -GRADB = 1.0;CURVB = 1.0; -end -%%------------------------------------------------------------------------- -% RUN -setup -if RUN - system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 2 1 3 0; cd ../../../wk']) -end + NOISE0 = 1.0e-5; % Init noise amplitude + BCKGD0 = 0.0; % Init background + GRADB = 1.0;CURVB = 1.0; + %%------------------------------------------------------------------------- + % RUN + setup + if RUN + system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',gyacomodir,'bin/',EXECNAME,' 2 3 1 0; cd ../../../wk']) + end + + % Load results + filename = [SIMID,'/',PARAMS,'/']; + LOCALDIR = [gyacomodir,'results/',filename,'/']; + data = compile_results(LOCALDIR,0,0); %Compile the results from first output found to JOBNUMMAX if existing + + % linear growth rate (adapted for 2D zpinch and fluxtube) + options.TRANGE = [0.5 1]*data.Ts3D(end); + options.NPLOTS = 0; % 1 for only growth rate and error, 2 for omega local evolution, 3 for plot according to z + options.GOK = 0; %plot 0: gamma 1: gamma/k 2: gamma^2/k^3 + lg = compute_fluxtube_growth_rate(data,options); + [gmax, kmax] = max(lg.g_ky(:,end)); + [gmaxok, kmaxok] = max(lg.g_ky(:,end)./lg.ky); + msg = sprintf('gmax = %2.2f, kmax = %2.2f',gmax,lg.ky(kmax)); disp(msg); + msg = sprintf('gmax/k = %2.2f, kmax/k = %2.2f',gmaxok,lg.ky(kmaxok)); disp(msg); -% Load results -filename = [SIMID,'/',PARAMS,'/']; -LOCALDIR = [HELAZDIR,'results/',filename,'/']; -data = compile_results(LOCALDIR,0,0); %Compile the results from first output found to JOBNUMMAX if existing - -%linear growth rate (adapted for 2D zpinch and fluxtube) -trange = [0.5 1]*data.Ts3D(end); -nplots = 0; -lg = compute_fluxtube_growth_rate(data,trange,nplots); -[gmax, kmax] = max(lg.g_ky(:,end)); -[gmaxok, kmaxok] = max(lg.g_ky(:,end)./lg.ky); -msg = sprintf('gmax = %2.2f, kmax = %2.2f',gmax,lg.ky(kmax)); disp(msg); -msg = sprintf('gmax/k = %2.2f, kmax/k = %2.2f',gmaxok,lg.ky(kmaxok)); disp(msg); - - g_max(i) = gmax; - k_max(i) = kmax; + g_ky(i,j,:) = lg.avg_g; - g_avg(i) = lg.avg_g; - g_std(i) = lg.std_g; + g_avg(i,j,:) = lg.avg_g; + g_std(i,j,:) = lg.std_g; i = i + 1; end -%% +j = j + 1; +end + +if 1 +%% Study of the peak growth rate +figure -% plot(KT_a,max(g_max,0)); y_ = g_avg; e_ = g_std; +% filter to noisy data y_ = y_.*(y_-e_>0); e_ = e_ .* (y_>0); -errorbar(NU_a,y_,e_,... - 'LineWidth',1.2,... - 'DisplayName',['(',num2str(P),',',num2str(P/2),')']); -hold on; -title(['$\kappa_T=$',num2str(K_T),' $k_y=$',num2str(ky_),' (CLOS = 0)']); -legend('show'); xlabel('$\nu_{DGGK}$'); ylabel('$\gamma$'); -drawnow + +[y_,idx_] = max(g_avg,[],3); +for i = 1:numel(idx_) + e_ = g_std(:,:,idx_(i)); +end + +subplot(121) +for i = 1:numel(NU_a) + errorbar(P_a,y_(i,:),e_(i,:),... + 'LineWidth',1.2,... + 'DisplayName',['$\nu=$',num2str(NU_a(i))]); + hold on; +end +title(['$\kappa_T=$',num2str(K_Ti),' $k_y=k_y^{max}$']); +legend('show'); xlabel('$P$, $J=P/2$'); ylabel('$\gamma$'); + +subplot(122) +for j = 1:numel(P_a) + errorbar(NU_a,y_(:,j),e_(:,j),... + 'LineWidth',1.2,... + 'DisplayName',['(',num2str(P_a(j)),',',num2str(P_a(j)/2),')']); + hold on; +end +title(['$\kappa_T=$',num2str(K_Ti),' $k_y=$',num2str(data.ky(idx_))]); +legend('show'); xlabel(['$\nu_{',CO,'}$']); ylabel('$\gamma$'); end +if 0 +%% Pcolor of the peak +figure; +[XX_,YY_] = meshgrid(NU_a,P_a); +pclr=pcolor(XX_,YY_,y_'); set(pclr,'EdgeColor','none'); +end \ No newline at end of file diff --git a/wk/Zpinch_coll_scan_kN_1.7.m b/wk/Zpinch_coll_scan_kN_1.7.m index ad00ba14..4f470598 100644 --- a/wk/Zpinch_coll_scan_kN_1.7.m +++ b/wk/Zpinch_coll_scan_kN_1.7.m @@ -59,25 +59,144 @@ xlabel('$\nu R/c_s$'); ylabel('$\Gamma_x^\infty/\kappa_N$'); set(gca,'Yscale','log'); end +%% KN SCAN (4,2) 200x64, muHD = 0.1 to 1.0, NL = -1, DT=1e-2 nu = 0.1 if 0 %% figure nu = 0.1; -% FCGK 4,2 + +% SGGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40]; +Gavg_a = [0.0264 0.7829 3.4742 26.3825 73.3567]; +Gstd_a = [0.0039 0.1203 0.3892 4.9250 11.5890]; +errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Sugama (4,2)'); hold on + +% DGGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40]; +Gavg_a = [0.0080 0.0843 1.6752 28.0470 69.5804]; +Gstd_a = [0.0010 0.1303 0.3329 6.0057 11.4145]; +errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Dougherty (4,2)'); hold on + +% LRGK 4,2 kn_a = [1.60 1.80 2.00 2.20 2.40]; -Gavg_a = [1.11e-1 6.86e-1 3.44e-0 1.12e+1 2.87e+1]; -Gstd_a = [7.98e-3 1.10e-1 4.03e-1 2.03e+0 7.36e+0]; +Gavg_a = [0.8244 2.7805 6.4115 21.1632 62.2215]; +Gstd_a = [0.0621 0.2755 0.6950 3.6594 15.0836]; +errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Lorentz (4,2)'); hold on +% FCGK 4,2 +kn_a = [1.60 1.80 2.00 2.20]; +Gavg_a = [0.5071 3.1178 10.1663 29.3928]; +Gstd_a = [0.0491 0.3237 1.1579 4.0400]; errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Coulomb (4,2)'); hold on +% LDGKii 4,2 +% kn_a = [1.60 1.80 2.00 2.20 2.40]; +% Gavg_a = [1.11e-1 6.86e-1 3.44e-0 1.12e+1 2.87e+1]; +% Gstd_a = [7.98e-3 1.10e-1 4.03e-1 2.03e+0 7.36e+0]; +% errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Landauii (4,2)'); hold on + % % Collisionless % plot([0 1], 0.02343*[1 1],'--k','DisplayName','$\nu=0$'); % +title('Transport w.r.t. gradient level at $\nu = 0.1$'); xlim([1.6 2.5]); legend('show'); -xlabel('$\nu R/c_s$'); ylabel('$\Gamma_x^\infty/\kappa_N$'); +xlabel('$L_n/R$'); ylabel('$\Gamma_x^\infty R/L_n$'); +end +%% KN SCAN (4,2) 200x64, muHD = 0.1 to 1.0, NL = -1, DT=1e-2 nu = 0.01 +if 0 +%% +figure +Mksz = 10; Lnwd = 2.0; + +nu = 0.01; + +pnlty = 1; +% SGGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40 1.70 1.90 2.10 2.30 2.50]; +Gavg_a = [0.0104 0.1735 0.6430 3.8566 37.0602 pnlty*0.0433 pnlty*0.5181 pnlty*1.7723 pnlty*14.5713 pnlty*85.4020]; +Gstd_a = [0.0045 0.0868 0.3587 1.8440 8.6218 pnlty*0.0214 pnlty*0.2620 pnlty*0.9196 pnlty* 4.1692 pnlty*21.5764]; +[~,Idx] = sort(kn_a); +kn_a = kn_a(Idx); Gavg_a = Gavg_a(Idx); Gstd_a = Gstd_a(Idx); +% errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Sugama (4,2)'); hold on +loglog(kn_a, Gavg_a./kn_a,'s','MarkerSize',Mksz,'LineWidth',Lnwd,'DisplayName','Sugama (4,2)'); hold on + +% DGGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40 1.70 1.90 2.10 2.30 2.50]; +Gavg_a = [0.0010 0.1245 0.5219 1.7153 38.6814 pnlty*0.0020 pnlty*0.3208 pnlty*1.0034 pnlty*2.6310 pnlty*79.4978]; +Gstd_a = [0.0002 0.1154 0.5585 0.9062 12.814 pnlty*0.0005 pnlty*0.1853 pnlty*0.5899 pnlty*1.5473 pnlty*20.7551]; +[~,Idx] = sort(kn_a); +kn_a = kn_a(Idx); Gavg_a = Gavg_a(Idx); Gstd_a = Gstd_a(Idx); +% errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Dougherty (4,2)'); hold on +loglog(kn_a, Gavg_a./kn_a,'v','MarkerSize',Mksz,'LineWidth',Lnwd,'DisplayName','Dougherty (4,2)'); hold on + +% LRGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40 1.70 1.90 2.10 2.30 2.50]; +Gavg_a = [0.1422 0.5389 1.2577 4.4465 50.4417 pnlty*0.2009 pnlty*0.6764 pnlty*1.8266 pnlty*9.0066 pnlty*83.4325]; +Gstd_a = [0.0119 0.1684 0.4304 2.8511 4.7634 pnlty*0.0434 pnlty*0.2677 pnlty*0.9563 pnlty*6.9812 pnlty*27.4134]; +[~,Idx] = sort(kn_a); +kn_a = kn_a(Idx); Gavg_a = Gavg_a(Idx); Gstd_a = Gstd_a(Idx); +% errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Lorentz (4,2)'); hold on +loglog(kn_a, Gavg_a./kn_a,'^','MarkerSize',Mksz,'LineWidth',Lnwd,'DisplayName','Lorentz (4,2)'); hold on + +plot(1,1); +% FCGK 4,2 +kn_a = [1.60 1.80 2.00 2.20 2.40 1.70 1.90 2.10 2.30 2.50]; +Gavg_a = [0.1914 0.8660 2.2324 5.3947 44.2023 pnlty*0.3803 pnlty*1.3516 pnlty*3.5982 pnlty*16.6212 pnlty*88.5276]; +Gstd_a = [0.0097 0.1009 0.4804 1.2491 9.8378 pnlty*0.0202 pnlty*0.3688 pnlty*0.8374 pnlty*3.1974 pnlty*19.0415]; +[~,Idx] = sort(kn_a); +kn_a = kn_a(Idx); Gavg_a = Gavg_a(Idx); Gstd_a = Gstd_a(Idx); +% errorbar(kn_a, Gavg_a./kn_a, Gstd_a./kn_a,'DisplayName','Coulomb (4,2)'); hold on +loglog(kn_a, Gavg_a./kn_a,'d','MarkerSize',Mksz,'LineWidth',Lnwd,'DisplayName','Coulomb (4,2)'); hold on + + +% +% title('Transport w.r.t. gradient level at $\nu = 0.01$'); +xlim([1.55 2.55]); +% legend('show'); +xlabel('$\kappa_N$'); ylabel('$\Gamma_x^\infty /\kappa_n$'); +grid on +end + +if 0 + %% Mixing length argument + figure; + nu = 0.0; + % collisionless + kn= [1.6 2.0 2.5 ]; + k = [0.65 0.60 0.50]; + g = [0.19 0.44 0.85]; + y = g.^2./k.^3; + plot(kn,y*(9.6/y(3)),'--k'); hold on; + + nu = 0.01; + % DG + kn= [1.6 2.0 2.5 ]; + k = [0.38 0.60 0.66]; + g = [0.13 0.50 0.90]; + y = g.^2./k.^3; + plot(kn,y*(9.6/y(3)),'--r'); + % SG + kn= [1.6 2.0 2.5 ]; + k = [0.41 0.63 0.69]; + g = [0.16 0.51 0.89]; + y = g.^2./k.^3; + plot(kn,y*(9.6/y(3)),'--b'); + % LR + kn= [1.6 2.0 2.5 ]; + k = [0.41 0.57 0.60]; + g = [0.18 0.50 0.87]; + y = g.^2./k.^3; + plot(kn,y*(9.6/y(3)),'--y'); + % LD + kn= [1.6 2.0 2.5 ]; + k = [0.38 0.53 0.57]; + g = [0.15 0.47 0.85]; + y = g.^2./k.^3; + plot(kn,y*(9.6/y(3)),'--g'); + end \ No newline at end of file diff --git a/wk/analysis_gene.m b/wk/analysis_gene.m index 53f11c4f..a35d30f9 100644 --- a/wk/analysis_gene.m +++ b/wk/analysis_gene.m @@ -1,8 +1,8 @@ -helazdir = '/home/ahoffman/HeLaZ/'; -addpath(genpath([helazdir,'matlab'])) % ... add -addpath(genpath([helazdir,'matlab/plot'])) % ... add -addpath(genpath([helazdir,'matlab/compute'])) % ... add -addpath(genpath([helazdir,'matlab/load'])) % ... add +gyacomodir = '/home/ahoffman/gyacomo/'; +addpath(genpath([gyacomodir,'matlab'])) % ... add +addpath(genpath([gyacomodir,'matlab/plot'])) % ... add +addpath(genpath([gyacomodir,'matlab/compute'])) % ... add +addpath(genpath([gyacomodir,'matlab/load'])) % ... add % folder = '/misc/gene_results/shearless_cyclone/miller_output_1.0/'; % folder = '/misc/gene_results/shearless_cyclone/miller_output_0.8/'; @@ -12,14 +12,17 @@ addpath(genpath([helazdir,'matlab/load'])) % ... add % folder = '/misc/gene_results/shearless_cyclone/s_alpha_output_0.5/'; % folder = '/misc/gene_results/shearless_cyclone/LD_s_alpha_output_1.0/'; % folder = '/misc/gene_results/shearless_cyclone/LD_s_alpha_output_0.8/'; -folder = '/misc/gene_results/Z-pinch/HP_fig_2a_mu_1e-2/'; -% folder = '/misc/gene_results/Z-pinch/HP_fig_2b_mu_5e-2/'; +% folder = '/misc/gene_results/Z-pinch/HP_fig_2a_mu_1e-2/'; +folder = '/misc/gene_results/Z-pinch/HP_fig_2b_mu_5e-2/'; % folder = '/misc/gene_results/Z-pinch/HP_fig_2c_mu_5e-2/'; % folder = '/misc/gene_results/LD_zpinch_1.6/'; % folder = '/misc/gene_results/ZP_HP_kn_1.6_nuv_3.2/'; % folder = '/misc/gene_results/ZP_HP_kn_1.6_nuv_3.2/'; % folder = '/misc/gene_results/Z-pinch/ZP_HP_kn_1.6_HRES/'; % folder = '/misc/gene_results/ZP_kn_2.5_large_box/'; +% folder = '/misc/gene_results/Z-pinch/kN_2.0_HD_transport_spectrum_00/'; +% folder = '/misc/gene_results/Z-pinch/kN_2.5_HD_transport_spectrum_00/'; + % folder = '/misc/gene_results/CBC/128x64x16x24x12/'; % folder = '/misc/gene_results/CBC/196x96x20x32x16_02/'; % folder = '/misc/gene_results/CBC/128x64x16x6x4/'; @@ -39,6 +42,7 @@ options.TAVG_1 = gene_data.Ts3D(end); % Averaging times duration 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, Q_x) options.INTERP = 1; +options.NCUT = 4; % Number of cuts for averaging and error estimation gene_data.FIGDIR = folder; fig = plot_radial_transport_and_spacetime(gene_data,options); save_figure(gene_data,fig,'.png') @@ -57,15 +61,15 @@ options.INTERP = 1; options.POLARPLOT = 0; options.AXISEQUAL = 0; % options.NAME = 'Q_x'; -options.NAME = '\phi'; -% options.NAME = 'n_i'; +% options.NAME = '\phi'; +options.NAME = 'n_i'; % options.NAME = '\Gamma_x'; % options.NAME = 'k^2n_e'; -options.PLAN = 'kxky'; +options.PLAN = 'xy'; % options.NAME ='f_e'; % options.PLAN = 'sx'; options.COMP = 'avg'; -options.TIME = [325 400]; +options.TIME = [1:10]; gene_data.a = data.EPS * 2000; fig = photomaton(gene_data,options); save_figure(gene_data,fig,'.png') @@ -76,12 +80,11 @@ if 0 % Options options.INTERP = 1; options.POLARPLOT = 0; -% options.NAME = '\phi'; +options.NAME = '\phi'; % options.NAME = 'v_y'; -options.NAME = 'n_i'; % options.NAME = '\Gamma_x'; % options.NAME = 'n_i'; -options.PLAN = 'xy'; +options.PLAN = 'kxky'; % options.NAME = 'f_e'; % options.PLAN = 'sx'; options.COMP = 'avg'; @@ -118,7 +121,7 @@ end if 0 %% Show f_i(vpar,mu) -options.times = 250:500; +options.times = 600:5000; options.specie = 'i'; options.PLT_FCT = 'contour'; options.folder = folder; @@ -131,7 +134,7 @@ end if 0 %% Time averaged spectrum -options.TIME = [4000 8000]; +options.TIME = [60 10000]; options.NORM =1; % options.NAME = '\phi'; % options.NAME = 'n_i'; @@ -150,7 +153,7 @@ if 0 %% Mode evolution options.NORMALIZED = 0; options.K2PLOT = 1; -options.TIME = 100:700; +options.TIME = 1:700; options.NMA = 1; options.NMODES = 15; options.iz = 'avg'; diff --git a/wk/analysis_gyacomo.m b/wk/analysis_gyacomo.m index 2a875f63..8d494f0a 100644 --- a/wk/analysis_gyacomo.m +++ b/wk/analysis_gyacomo.m @@ -1,5 +1,5 @@ %% UNCOMMENT FOR TUTORIAL -% gyacomodir = pwd; gyacomodir = gyacomodir(1:end-2); % get code directory +gyacomodir = pwd; gyacomodir = gyacomodir(1:end-2); % get code directory % resdir = '.'; %Name of the directory where the results are located % JOBNUMMIN = 00; JOBNUMMAX = 10; %% @@ -31,7 +31,7 @@ if 1 i_ = 1; disp([num2str(data.TJOB_SE(i_)),' ',num2str(data.TJOB_SE(i_+1))]) disp([num2str(data.NU_EVOL(i_)),' ',num2str(data.NU_EVOL(i_+1))]) -options.TAVG_0 = data.TJOB_SE(i_);%0.4*data.Ts3D(end); +options.TAVG_0 = data.TJOB_SE(i_)+600;%0.4*data.Ts3D(end); options.TAVG_1 = data.TJOB_SE(i_+1);%0.9*data.Ts3D(end); % Averaging times duration options.NCUT = 4; % Number of cuts for averaging and error estimation options.NMVA = 100; % Moving average for time traces @@ -40,46 +40,49 @@ options.ST_FIELD = '\phi'; % chose your field to plot in spacetime diag options.INTERP = 0; options.RESOLUTION = 256; fig = plot_radial_transport_and_spacetime(data,options); -save_figure(data,fig,'.png') +% save_figure(data,fig,'.png') end if 0 %% statistical transport averaging -for i_ = 1:2:21 +gavg =[]; gstd = []; +for i_ = 3:2:numel(data.TJOB_SE) % i_ = 3; disp([num2str(data.TJOB_SE(i_)),' ',num2str(data.TJOB_SE(i_+1))]) disp([num2str(data.NU_EVOL(i_)),' ',num2str(data.NU_EVOL(i_+1))]) options.T = [data.TJOB_SE(i_) data.TJOB_SE(i_+1)]; options.NPLOTS = 0; -fig = statistical_transport_averaging(data,options); +[fig, gavg_, gstd_] = statistical_transport_averaging(data,options); +gavg = [gavg gavg_]; gstd = [gstd gstd_]; end +disp(gavg); disp(gstd); end if 0 %% MOVIES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Options options.INTERP = 1; options.POLARPLOT = 0; -% options.NAME = '\phi'; +options.NAME = '\phi'; % options.NAME = '\omega_z'; % options.NAME = 'N_i^{00}'; -% options.NAME = 'v_y'; +% options.NAME = 'v_x'; % options.NAME = 'n_i^{NZ}'; % options.NAME = '\Gamma_x'; -options.NAME = 'n_i'; -options.PLAN = 'xy'; +% options.NAME = 'n_i'; +options.PLAN = 'kxky'; % options.NAME = 'f_i'; % options.PLAN = 'sx'; options.COMP = 'avg'; % options.TIME = data.Ts5D(end-30:end); % options.TIME = data.Ts3D; -options.TIME = [000:0.1:7000]; +options.TIME = [000:1:8000]; data.EPS = 0.1; data.a = data.EPS * 2000; options.RESOLUTION = 256; create_film(data,options,'.gif') end -if 1 +if 0 %% 2D snapshots % Options options.INTERP = 1; @@ -96,7 +99,7 @@ options.PLAN = 'xy'; % options.NAME 'f_i'; % options.PLAN = 'sx'; options.COMP = 'avg'; -options.TIME = [1000 1800 2500 3000 4000]; +options.TIME = [1000 3000 5000 8000 10000]; data.a = data.EPS * 2e3; fig = photomaton(data,options); @@ -119,16 +122,16 @@ end if 0 %% Kinetic distribution function sqrt(<f_a^2>xy) (GENE vsp) -options.SPAR = linspace(-3,3,32)+(6/127/2); -options.XPERP = linspace( 0,6,32); -% options.SPAR = gene_data.vp'; -% options.XPERP = gene_data.mu'; +% options.SPAR = linspace(-3,3,32)+(6/127/2); +% options.XPERP = linspace( 0,6,32); +options.SPAR = gene_data.vp'; +options.XPERP = gene_data.mu'; options.iz = 'avg'; -options.T = [250 600]; -options.PLT_FCT = 'pcolor'; -options.ONED = 0; +options.T = [1500 5000]; +options.PLT_FCT = 'contour'; +options.ONED = 1; options.non_adiab = 0; -options.SPECIE = 'i'; +options.SPECIE = 'e'; options.RMS = 1; % Root mean square i.e. sqrt(sum_k|f_k|^2) as in Gene fig = plot_fa(data,options); % save_figure(data,fig,'.png') @@ -175,8 +178,8 @@ options.NAME = '\phi'; % options.NAME = 'n_i'; % options.NAME ='\Gamma_x'; % options.NAME ='s_y'; -options.COMPX = 'avg'; -options.COMPY = 'avg'; +options.COMPX = 1; +options.COMPY = 2; options.COMPZ = 1; options.COMPT = 1; options.MOVMT = 1; @@ -220,11 +223,11 @@ end if 0 %% linear growth rate for 3D Zpinch -trange = [5 15]; +trange = [5 20]; options.keq0 = 1; % chose to plot planes at k=0 or max options.kxky = 1; options.kzkx = 0; options.kzky = 1; [lg, fig] = compute_3D_zpinch_growth_rate(data,trange,options); -save_figure(data,fig,'.png') +% save_figure(data,fig,'.png') end diff --git a/wk/header_2DZP_results.m b/wk/header_2DZP_results.m index cdd4074d..11cfa44a 100644 --- a/wk/header_2DZP_results.m +++ b/wk/header_2DZP_results.m @@ -178,7 +178,7 @@ resdir =''; % resdir ='Zpinch_rerun/Kn_2.0_256x64x9x5_Lx_240_Ly_120'; % resdir ='Zpinch_rerun/Kn_1.6_256x128x7x4'; % resdir ='Zpinch_rerun/Kn_1.6_200x64x11x6'; -% resdir ='Zpinch_rerun/Kn_1.6_200x64x11x6_conv'; +resdir ='Zpinch_rerun/Kn_1.6_200x64x11x6_conv'; % resdir ='Zpinch_rerun/Kn_1.6_200x64x11x6_mu_0.5'; % resdir ='Zpinch_rerun/Kn_1.6_256x128x21x11'; @@ -197,16 +197,18 @@ resdir =''; % % resdir = 'Zpinch_rerun/kN_1.7_SGGK_200x32x7x4_nu_scan'; % resdir = 'Zpinch_rerun/kN_2.2_SGGK_200x32x5x3_nu_scan'; % resdir = 'Zpinch_rerun/kN_1.7_SGGK_256x64x5x3_nu_scan'; -%% Convergence cases kN = (1.6 2.2) nu = (0.01 1.0) + +%% Convergence cases kN = (1.6 2.2) nu = (0.01 1.0), SGGK % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x3x2_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x5x3_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x7x4_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x9x5_mu_0.01'; +% resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x11x6_nu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x3x2_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x5x3_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x7x4_mu_0.01'; -resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x9x5_mu_0.01'; +% resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x9x5_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x3x2_nu_0.1'; % resdir = 'Zpinch_rerun/convcoll_Kn_1.6_200x32x5x3_nu_0.1'; @@ -218,6 +220,22 @@ resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x9x5_mu_0.01'; % resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x7x4_nu_0.1'; % resdir = 'Zpinch_rerun/convcoll_Kn_2.2_200x32x9x5_nu_0.1'; +%% kN scans with nu=0.1 and nu=0.01 +% resdir = 'Zpinch_rerun/SGGK_kN_scan_200x64x5x3_nu_0.1'; +% resdir = 'Zpinch_rerun/DGGK_kN_scan_200x64x5x3_nu_0.1'; +% resdir = 'Zpinch_rerun/LRGK_kN_scan_200x64x5x3_nu_0.1'; +% resdir = 'Zpinch_rerun/LDGK_kN_scan_200x64x5x3_nu_0.1'; +% +% resdir = 'Zpinch_rerun/SGGK_kN_scan_200x64x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/DGGK_kN_scan_200x64x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/even_DGGK_kN_scan_200x64x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/LRGK_kN_scan_200x64x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/LDGK_kN_scan_200x64x5x3_nu_0.01'; + +% resdir = 'Zpinch_rerun/DGGK_kN_1.6_200x64x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/DGGK_kN_1.7_200x64x5x3_nu_0.01'; +resdir = 'Zpinch_rerun/LRGK_kN_2.4_300x98x5x3_nu_0.01'; +% resdir = 'Zpinch_rerun/LDGK_kN_1.9_200x64x5x3_nu_0.01'; JOBNUMMIN = 00; JOBNUMMAX = 03; resdir = ['results/',resdir]; diff --git a/wk/lin_3D_Zpinch.m b/wk/lin_3D_Zpinch.m new file mode 100644 index 00000000..a1de410d --- /dev/null +++ b/wk/lin_3D_Zpinch.m @@ -0,0 +1,194 @@ +%% QUICK RUN SCRIPT +% This script create a directory in /results and run a simulation directly +% from matlab framework. It is meant to run only small problems in linear +% for benchmark and debugging purpose since it makes matlab "busy" +% +% SIMID = 'lin_3D_Zpinch'; % Name of the simulation +SIMID = 'NL_3D_zpinch'; % Name of the simulation +% SIMID = 'dbg'; % Name of the simulation +RUN = 1; % To run or just to load +addpath(genpath('../matlab')) % ... add +default_plots_options +PROGDIR = '/home/ahoffman/gyacomo/'; +% EXECNAME = 'gyacomo_1.0'; +EXECNAME = 'gyacomo_dbg'; +% EXECNAME = 'gyacomo'; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Set Up parameters +CLUSTER.TIME = '99:00:00'; % allocation time hh:mm:ss +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PHYSICAL PARAMETERS +NU = 0.05; % Collision frequency +TAU = 1.0; % e/i temperature ratio +K_Ne = 2.0; % ele Density ''' +K_Te = K_Ne/4; % ele Temperature ''' +K_Ni = K_Ne; % ion Density gradient drive +K_Ti = K_Ni/4; % ion Temperature ''' +% SIGMA_E = 0.05196152422706632; % mass ratio sqrt(m_a/m_i) (correct = 0.0233380) +SIGMA_E = 0.0233380; % mass ratio sqrt(m_a/m_i) (correct = 0.0233380) +KIN_E = 1; % 1: kinetic electrons, 2: adiabatic electrons +BETA = 0.005; % electron plasma beta +%% GRID PARAMETERS +P = 2; +J = P/2; +PMAXE = P; % Hermite basis size of electrons +JMAXE = J; % Laguerre " +PMAXI = P; % " ions +JMAXI = J; % " +NX = 128; % real space x-gridpoints +NY = 32; % '' y-gridpoints +LX = 2*pi/0.1; % Size of the squared frequency domain +LY = 2*pi/0.1; % Size of the squared frequency domain +NZ = 20; % number of perpendicular planes (parallel grid) +NPOL = 1; +SG = 0; % Staggered z grids option +%% GEOMETRY +% GEOMETRY= 's-alpha'; +% GEOMETRY= 'miller'; +GEOMETRY= 'Z-pinch'; +Q0 = 1.4; % safety factor +SHEAR = 0.8; % magnetic shear +KAPPA = 0.0; % elongation +DELTA = 0.0; % triangularity +ZETA = 0.0; % squareness +NEXC = 1; % To extend Lx if needed (Lx = Nexc/(kymin*shear)) +EPS = 0.18; % inverse aspect ratio +%% TIME PARMETERS +TMAX = 20; % Maximal time unit +DT = 1e-2; % Time step +SPS0D = 1; % Sampling per time unit for 2D arrays +SPS2D = 0; % Sampling per time unit for 2D arrays +SPS3D = 5; % Sampling per time unit for 2D arrays +SPS5D = 1/5; % Sampling per time unit for 5D arrays +SPSCP = 0; % Sampling per time unit for checkpoints +JOB2LOAD= -1; +%% OPTIONS +LINEARITY = 'linear'; % activate non-linearity (is cancelled if KXEQ0 = 1) +% Collision operator +% (LB:L.Bernstein, DG:Dougherty, SG:Sugama, LR: Lorentz, LD: Landau) +CO = 'DG'; +GKCO = 1; % gyrokinetic operator +ABCO = 1; % interspecies collisions +INIT_ZF = 0; ZF_AMP = 0.0; +CLOS = 0; % Closure model (0: =0 truncation, 1: v^Nmax closure (p+2j<=Pmax))s +NL_CLOS = 0; % nonlinear closure model (-2:nmax=jmax; -1:nmax=jmax-j; >=0:nmax=NL_CLOS) +KERN = 0; % Kernel model (0 : GK) +INIT_OPT= 'mom00'; % Start simulation with a noisy mom00/phi/allmom +%% OUTPUTS +W_DOUBLE = 1; +W_GAMMA = 1; W_HF = 1; +W_PHI = 1; W_NA00 = 1; +W_DENS = 1; W_TEMP = 1; +W_NAPJ = 1; W_SAPJ = 0; +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% unused +HD_CO = 0.0; % Hyper diffusivity cutoff ratio +MU = 0.0; % Hyperdiffusivity coefficient +INIT_BLOB = 0; WIPE_TURB = 0; ACT_ON_MODES = 0; +MU_X = MU; % +MU_Y = MU; % +N_HD = 4; +MU_Z = 2.0; % +MU_P = 0.0; % +MU_J = 0.0; % +LAMBDAD = 0.0; +NOISE0 = 1.0e-5; % Init noise amplitude +BCKGD0 = 0.0; % Init background +GRADB = 1.0; +CURVB = 1.0; +COLL_KCUT = 1000; +%%------------------------------------------------------------------------- +%% RUN +setup +% system(['rm fort*.90']); +% Run linear simulation +if RUN +if NZ > 1 + system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 1 2 3 0; cd ../../../wk']) +else + system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 1 6 1 0; cd ../../../wk']) +end +end + +%% Load results +%% +filename = [SIMID,'/',PARAMS,'/']; +LOCALDIR = [HELAZDIR,'results/',filename,'/']; +% Load outputs from jobnummin up to jobnummax +JOBNUMMIN = 00; JOBNUMMAX = 00; +data = compile_results(LOCALDIR,JOBNUMMIN,JOBNUMMAX); %Compile the results from first output found to JOBNUMMAX if existing + +%% Short analysis +if 1 +%% linear growth rate (adapted for 2D zpinch and fluxtube) +options.TRANGE = [0.5 1]*data.Ts3D(end); +options.NPLOTS = 3; % 1 for only growth rate and error, 2 for omega local evolution, 3 for plot according to z +options.GOK = 0; %plot 0: gamma 1: gamma/k 2: gamma^2/k^3 +lg = compute_fluxtube_growth_rate(data,options); +[gmax, kmax] = max(lg.g_ky(:,end)); +[gmaxok, kmaxok] = max(lg.g_ky(:,end)./lg.ky); +msg = sprintf('gmax = %2.2f, kmax = %2.2f',gmax,lg.ky(kmax)); disp(msg); +msg = sprintf('gmax/k = %2.2f, kmax/k = %2.2f',gmaxok,lg.ky(kmaxok)); disp(msg); +end + +if 1 +%% Ballooning plot +options.time_2_plot = [120]; +options.kymodes = [0.3]; +options.normalized = 1; +% options.field = 'phi'; +fig = plot_ballooning(data,options); +end + +if 0 +%% Hermite-Laguerre spectrum +% options.TIME = 'avg'; +options.P2J = 1; +options.ST = 1; +options.PLOT_TYPE = 'space-time'; +% options.PLOT_TYPE = 'Tavg-1D'; +% options.PLOT_TYPE = 'Tavg-2D'; +options.NORMALIZED = 0; +options.JOBNUM = 0; +options.TIME = [0 50]; +options.specie = 'i'; +options.compz = 'avg'; +fig = show_moments_spectrum(data,options); +% fig = show_napjz(data,options); +save_figure(data,fig) +end + +if 0 +%% linear growth rate for 3D Zpinch (kz fourier transform) +trange = [0.5 1]*data.Ts3D(end); +options.keq0 = 1; % chose to plot planes at k=0 or max +options.kxky = 1; +options.kzkx = 0; +options.kzky = 0; +[lg, fig] = compute_3D_zpinch_growth_rate(data,trange,options); +save_figure(data,fig) +end +if 0 +%% Mode evolution +options.NORMALIZED = 0; +options.K2PLOT = 1; +options.TIME = [0:1000]; +options.NMA = 1; +options.NMODES = 1; +options.iz = 'avg'; +fig = mode_growth_meter(data,options); +save_figure(data,fig,'.png') +end + + +if 1 +%% RH TEST +ikx = 2; iky = 2; t0 = 0; t1 = data.Ts3D(end); +[~, it0] = min(abs(t0-data.Ts3D));[~, it1] = min(abs(t1-data.Ts3D)); +plt = @(x) squeeze(mean(real(x(iky,ikx,:,it0:it1)),3))./squeeze(mean(real(x(iky,ikx,:,it0)),3)); +figure +plot(data.Ts3D(it0:it1), plt(data.PHI)); +xlabel('$t$'); ylabel('$\phi_z(t)/\phi_z(0)$') +title(sprintf('$k_x=$%2.2f, $k_y=$%2.2f',data.kx(ikx),data.ky(iky))) +end diff --git a/wk/lin_EPY.m b/wk/lin_ETPY.m similarity index 87% rename from wk/lin_EPY.m rename to wk/lin_ETPY.m index 2ddd756a..101f81c3 100644 --- a/wk/lin_EPY.m +++ b/wk/lin_ETPY.m @@ -1,9 +1,9 @@ -%% QUICK RUN SCRIPT for linear entropy mode in a Zpinch +%% QUICK RUN SCRIPT for linear entropy mode (ETPY) in a Zpinch % This script create a directory in /results and run a simulation directly % from matlab framework. It is meant to run only small problems in linear % for benchmark and debugging purpose since it makes matlab "busy" % -SIMID = 'lin_EPY'; % Name of the simulation +SIMID = 'lin_ETPY'; % Name of the simulation % SIMID = 'dbg'; % Name of the simulation RUN = 0; % To run or just to load addpath(genpath('../matlab')) % ... add @@ -16,9 +16,9 @@ EXECNAME = 'gyacomo'; CLUSTER.TIME = '99:00:00'; % allocation time hh:mm:ss %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% PHYSICAL PARAMETERS -NU = 0.1; % Collision frequency +NU = 0.01; % Collision frequency TAU = 1.0; % e/i temperature ratio -K_Ne = 1.6; % ele Density ''' +K_Ne = 2.5; % ele Density ''' K_Te = K_Ne/4; % ele Temperature ''' K_Ni = K_Ne; % ion Density gradient drive K_Ti = K_Ni/4; % ion Temperature ''' @@ -26,7 +26,7 @@ SIGMA_E = 0.0233380; % mass ratio sqrt(m_a/m_i) (correct = 0.0233380) KIN_E = 1; % 1: kinetic electrons, 2: adiabatic electrons BETA = 0.0; % electron plasma beta %% GRID PARAMETERS -P = 2; +P = 4; J = P/2; PMAXE = P; % Hermite basis size of electrons JMAXE = J; % Laguerre " @@ -35,7 +35,7 @@ JMAXI = J; % " NX = 2; % real space x-gridpoints NY = 100; % '' y-gridpoints LX = 2*pi/0.8; % Size of the squared frequency domain -LY = 120;%2*pi/0.05; % Size of the squared frequency domain +LY = 200;%2*pi/0.05; % Size of the squared frequency domain NZ = 1; % number of perpendicular planes (parallel grid) NPOL = 1; SG = 0; % Staggered z grids option @@ -43,14 +43,17 @@ SG = 0; % Staggered z grids option GEOMETRY= 'Z-pinch'; % Z-pinch overwrites q0, shear and eps Q0 = 1.4; % safety factor SHEAR = 0.8; % magnetic shear +KAPPA = 0.0; % elongation +DELTA = 0.0; % triangularity +ZETA = 0.0; % squareness NEXC = 1; % To extend Lx if needed (Lx = Nexc/(kymin*shear)) EPS = 0.18; % inverse aspect ratio %% TIME PARMETERS TMAX = 500; % Maximal time unit -DT = 1e-2; % Time step +DT = 5e-2; % Time step SPS0D = 1; % Sampling per time unit for 2D arrays SPS2D = 0; % Sampling per time unit for 2D arrays -SPS3D = 1/5; % Sampling per time unit for 2D arrays +SPS3D = 1; % Sampling per time unit for 2D arrays SPS5D = 1/5; % Sampling per time unit for 5D arrays SPSCP = 0; % Sampling per time unit for checkpoints JOB2LOAD= -1; @@ -58,7 +61,7 @@ JOB2LOAD= -1; LINEARITY = 'linear'; % activate non-linearity (is cancelled if KXEQ0 = 1) % Collision operator % (LB:L.Bernstein, DG:Dougherty, SG:Sugama, LR: Lorentz, LD: Landau) -CO = 'SG'; +CO = 'LD'; GKCO = 1; % gyrokinetic operator ABCO = 1; % interspecies collisions INIT_ZF = 0; ZF_AMP = 0.0; @@ -85,18 +88,19 @@ MU_Z = 2.0; % MU_P = 0.0; % MU_J = 0.0; % LAMBDAD = 0.0; -NOISE0 = 0.0e-5; % Init noise amplitude -BCKGD0 = 1.0; % Init background +NOISE0 = 1.0e-5; % Init noise amplitude +BCKGD0 = 0.0; % Init background GRADB = 1.0; CURVB = 1.0; +COLL_KCUT = 1000; %%------------------------------------------------------------------------- %% RUN setup % system(['rm fort*.90']); % Run linear simulation if RUN -% system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',PROGDIR,'bin/',EXECNAME,' 1 6 1 0; cd ../../../wk']) - system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 1 ',PROGDIR,'bin/',EXECNAME,' 1 1 1 0; cd ../../../wk']) + system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',PROGDIR,'bin/',EXECNAME,' 1 6 1 0; cd ../../../wk']) +% system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 1 ',PROGDIR,'bin/',EXECNAME,' 1 1 1 0; cd ../../../wk']) end %% Load results @@ -157,7 +161,7 @@ options.kzky = 0; [lg, fig] = compute_3D_zpinch_growth_rate(data,trange,options); save_figure(data,fig) end -if 1 +if 0 %% Mode evolution options.NORMALIZED = 0; options.K2PLOT = 10; diff --git a/wk/lin_ITG.m b/wk/lin_ITG.m index 3ebe622d..6f18bee5 100644 --- a/wk/lin_ITG.m +++ b/wk/lin_ITG.m @@ -7,7 +7,7 @@ SIMID = 'lin_ITG'; % Name of the simulation RUN = 0; % To run or just to load addpath(genpath('../matlab')) % ... add default_plots_options -HELAZDIR = '/home/ahoffman/gyacomo/'; +gyacomodir = '/home/ahoffman/gyacomo/'; % EXECNAME = 'gyacomo_1.0'; % EXECNAME = 'gyacomo_dbg'; EXECNAME = 'gyacomo'; @@ -103,14 +103,14 @@ if RUN % system(['cd ../results/',SIMID,'/',PARAMS,'/; time mpirun -np 4 ',HELAZDIR,'bin/',EXECNAME,' 1 4 1 0; cd ../../../wk']) % system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 4 ',HELAZDIR,'bin/',EXECNAME,' 1 4 1 0; cd ../../../wk']) % system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 1 ',HELAZDIR,'bin/',EXECNAME,' 1 1 1 0; cd ../../../wk']) - system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 1 2 3 0; cd ../../../wk']) + system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',gyacomodir,'bin/',EXECNAME,' 1 2 3 0; cd ../../../wk']) % system(['cd ../results/',SIMID,'/',PARAMS,'/; mpirun -np 6 ',HELAZDIR,'bin/',EXECNAME,' 1 6 1 0; cd ../../../wk']) end %% Load results %% filename = [SIMID,'/',PARAMS,'/']; -LOCALDIR = [HELAZDIR,'results/',filename,'/']; +LOCALDIR = [gyacomodir,'results/',filename,'/']; % Load outputs from jobnummin up to jobnummax JOBNUMMIN = 00; JOBNUMMAX = 00; data = compile_results(LOCALDIR,JOBNUMMIN,JOBNUMMAX); %Compile the results from first output found to JOBNUMMAX if existing @@ -118,9 +118,10 @@ data = compile_results(LOCALDIR,JOBNUMMIN,JOBNUMMAX); %Compile the results from %% Short analysis if 1 %% linear growth rate (adapted for 2D zpinch and fluxtube) -trange = [0.5 1]*data.Ts3D(end); -nplots = 3; -lg = compute_fluxtube_growth_rate(data,trange,nplots); +options.TRANGE = [0.5 1]*data.Ts3D(end); +options.NPLOTS = 2; % 1 for only growth rate and error, 2 for omega local evolution, 3 for plot according to z +options.GOK = 0; %plot 0: gamma 1: gamma/k 2: gamma^2/k^3 +lg = compute_fluxtube_growth_rate(data,options); [gmax, kmax] = max(lg.g_ky(:,end)); [gmaxok, kmaxok] = max(lg.g_ky(:,end)./lg.ky); msg = sprintf('gmax = %2.2f, kmax = %2.2f',gmax,lg.ky(kmax)); disp(msg); -- GitLab