From a4cfb827a85290fc3fead0e718ea986750f49e51 Mon Sep 17 00:00:00 2001 From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch> Date: Wed, 8 Jul 2020 10:07:11 +0200 Subject: [PATCH] refresh --- wk/benchmark_kperp_scan.m | 14 ++--- wk/benchmark_time_solver.m | 105 +++++++++++++++++-------------------- wk/fort.90 | 24 ++++----- 3 files changed, 67 insertions(+), 76 deletions(-) diff --git a/wk/benchmark_kperp_scan.m b/wk/benchmark_kperp_scan.m index e14e54eb..b5432bf4 100644 --- a/wk/benchmark_kperp_scan.m +++ b/wk/benchmark_kperp_scan.m @@ -12,18 +12,18 @@ OUTPUTS.write_phi = '.true.'; OUTPUTS.write_doubleprecision = '.true.'; OUTPUTS.resfile0 = '''results'''; %% Grid parameters -GRID.pmaxe = 12; -GRID.jmaxe = 7; -GRID.pmaxi = 12; -GRID.jmaxi = 7; +GRID.pmaxe = 15; +GRID.jmaxe = 6; +GRID.pmaxi = 15; +GRID.jmaxi = 6; GRID.nkr = 1; GRID.krmin = 0.; GRID.krmax = 0.; GRID.nkz = 20; GRID.kzmin = 0.1; -GRID.kzmax = 2.0; +GRID.kzmax = 1.5; %% Model parameters -MODEL.CO = -2; % Collision operator (0 : L.Bernstein, -1 : Full Coulomb, -2 : Dougherty) +MODEL.CO = -1; % Collision operator (0 : L.Bernstein, -1 : Full Coulomb, -2 : Dougherty) MODEL.nu = 0.01; % collisionality nu*L_perp/Cs0 % temperature ratio T_a/T_e MODEL.tau_e = 1.0; @@ -44,7 +44,7 @@ MODEL.lambdaD = 0.0; TIME_INTEGRATION.numerical_scheme = '''RK4'''; BASIC.nrun = 100000; BASIC.dt = 0.05; -BASIC.tmax = 100.0; +BASIC.tmax = 50.0; INITIAL.initback_moments = 0.01; INITIAL.initnoise_moments = 0.; INITIAL.iseed = 42; diff --git a/wk/benchmark_time_solver.m b/wk/benchmark_time_solver.m index 2eaaaa26..641f0f0c 100644 --- a/wk/benchmark_time_solver.m +++ b/wk/benchmark_time_solver.m @@ -1,6 +1,6 @@ clear all; close all; -SIMID = 'benchmark_time_solver'; % Name of the simulations -addpath(genpath('../matlab')) % ... add +SIMID = 'test_full_coulomb'; % Name of the simulations +addpath(genpath('../matlab')) % ... add %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% outputs options OUTPUTS.nsave_0d = 0; @@ -13,19 +13,19 @@ OUTPUTS.write_phi = '.true.'; OUTPUTS.write_doubleprecision = '.true.'; OUTPUTS.resfile0 = '''results'''; %% Grid parameters -GRID.pmaxe = 6; +GRID.pmaxe = 15; GRID.jmaxe = 6; -GRID.pmaxi = 6; +GRID.pmaxi = 15; GRID.jmaxi = 6; GRID.nkr = 1; GRID.krmin = 0.; GRID.krmax = 0.; GRID.nkz = 1; -GRID.kzmin = 0.67; -GRID.kzmax = 0.67; +GRID.kzmin = 1.0; +GRID.kzmax = 1.0; %% Model parameters -MODEL.CO = -2; % Collision operator (0 : L.Bernstein, -1 : Full Coulomb, -2 : Dougherty) -MODEL.nu = 0.01; % collisionality nu*L_perp/Cs0 +MODEL.CO = -1; % Collision operator (0 : L.Bernstein, -1 : Full Coulomb, -2 : Dougherty) +MODEL.nu = 1.0; % collisionality nu*L_perp/Cs0 % temperature ratio T_a/T_e MODEL.tau_e = 1.0; MODEL.tau_i = 1.0; @@ -36,16 +36,16 @@ MODEL.sigma_i = 1.0; MODEL.q_e =-1.0; MODEL.q_i = 1.0; % gradients L_perp/L_x -MODEL.eta_n = 1.0; % Density +MODEL.eta_n = 0.0; % Density MODEL.eta_T = 0.0; % Temperature -MODEL.eta_B = 0.5; % Magnetic +MODEL.eta_B = 0.0; % Magnetic % Debye length MODEL.lambdaD = 0.0; %% Time integration and intialization parameters TIME_INTEGRATION.numerical_scheme = '''RK4'''; BASIC.nrun = 100000; BASIC.dt = 0.05; -BASIC.tmax = 100.0; +BASIC.tmax = 10.0; INITIAL.initback_moments = 0.01; INITIAL.initnoise_moments = 0.; INITIAL.iseed = 42; @@ -86,63 +86,54 @@ default_plots_options SAVEFIG = 1; filename = 'results_00.h5'; default_plots_options -TITLE = [', $k_z=',num2str(GRID.kzmin)]; +TITLE = [TITLE,', $k_z=',num2str(GRID.kzmin),'$']; -%% Nipj +bare = @(p_,j_) (GRID.jmaxe+1)*p_ + j_ + 1; +bari = @(p_,j_) bare(GRID.pmaxe, GRID.jmaxe) + (GRID.jmaxi+1)*p_ + j_ + 1; +%% Load moments -% load HeLaZ data -moment = 'Ni00'; - -kr = h5read(filename,['/data/var2d/' moment '/coordkr']); -kz = h5read(filename,['/data/var2d/' moment '/coordkz']); -timeNi = squeeze(h5read(filename,'/data/var2d/time')); -Ni00 = zeros(numel(kr),numel(kz),numel(timeNi)); +moment = 'moments_i'; -for it = 1:numel(timeNi) - tmp = h5read(filename,['/data/var2d/', moment,'/', num2str(it,'%06d')]); - Ni00(:,:,it) = tmp.real + 1i * tmp.imaginary; +kr = h5read(filename,['/data/var5d/' moment '/coordkr']); +kz = h5read(filename,['/data/var5d/' moment '/coordkz']); +time = h5read(filename,'/data/var5d/time'); +Nipj = zeros(GRID.pmaxi+1, GRID.jmaxi+1,numel(kr),numel(kz),numel(time)); +for it = 1:numel(time) + tmp = h5read(filename,['/data/var5d/', moment,'/', num2str(it,'%06d')]); + Nipj(:,:,:,:,it) = tmp.real + 1i * tmp.imaginary; end -moment = 'moments_i'; +moment = 'moments_e'; -kr = h5read(filename,['/data/var5d/' moment '/coordkr']); -kz = h5read(filename,['/data/var5d/' moment '/coordkz']); +kr = h5read(filename,['/data/var5d/' moment '/coordkr']); +kz = h5read(filename,['/data/var5d/' moment '/coordkz']); time = h5read(filename,'/data/var5d/time'); -Nipj = zeros(GRID.pmaxi+1, GRID.jmaxi+1,numel(kr),numel(kz),numel(time)); +Nepj = zeros(GRID.pmaxe+1, GRID.jmaxe+1,numel(kr),numel(kz),numel(time)); for it = 1:numel(time) tmp = h5read(filename,['/data/var5d/', moment,'/', num2str(it,'%06d')]); - Nipj(:,:,:,:,it) = tmp.real + 1i * tmp.imaginary; + Nepj(:,:,:,:,it) = tmp.real + 1i * tmp.imaginary; end -err_ = mean(abs(squeeze(Nipj(1,1,1,1,:))-squeeze((Ni00(1,1,:))))); -disp(['2D 5D error :',num2str(err_)]) -% growth rate : -gammaHeLaZ = LinearFit_s(squeeze(time),... - squeeze(abs(Nipj(1,1,1,1,:)))) ; -gammaMOLI = LinearFit(results.Napj,results.time,params,options); -disp(['Growth rate HeLaZ : ',num2str(gammaHeLaZ)]) -disp(['Growth rate MOLI : ',num2str( gammaMOLI)]) -disp(['Error : ',num2str( abs(gammaMOLI-gammaHeLaZ))]) -% Plot moments +%% Plot moments fig = figure; x1 = time; x2 = results.time; ic = 1; -% Real part +% Electrons subplot(321) for ip = 0:1 for ij = 0:1 - y1 = squeeze(real(Nipj(ip+1,ij+1,1,1,:))); + y1 = squeeze(real(Nepj(ip+1,ij+1,1,1,:))); plot(x1,y1,'-','DisplayName',... - ['HeLaZ $N_i^{',num2str(ip),num2str(ij),'}$'],... + ['HeLaZ $N_e^{',num2str(ip),num2str(ij),'}$'],... 'color', line_colors(ic,:)) hold on - y2 = squeeze(real(results.Napj(:,bari(ip,ij)))); + y2 = squeeze(real(results.Napj(:,bare(ip,ij)))); plot(x2,y2,'--','DisplayName',... - ['MOLI $N_i^{',num2str(ip),num2str(ij),'}$'],... + ['MOLI $N_e^{',num2str(ip),num2str(ij),'}$'],... 'color', line_colors(ic,:)) hold on ic = ic + 1; @@ -150,19 +141,19 @@ for ip = 0:1 end grid on xlabel('$t$') -ylabel(['Re$(N_i^{pj})$']) +ylabel(['Re$(N_e^{pj})$']) -% Im part +% Ions ic = 1; subplot(322) for ip = 0:1 for ij = 0:1 - y1 = squeeze(imag(Nipj(ip+1,ij+1,1,1,:))); + y1 = squeeze(real(Nipj(ip+1,ij+1,1,1,:))); plot(x1,y1,'-','DisplayName',... ['HeLaZ $N_i^{',num2str(ip),num2str(ij),'}$'],... 'color', line_colors(ic,:)) hold on - y2 = squeeze(imag(results.Napj(:,bari(ip,ij)))); + y2 = squeeze(real(results.Napj(:,bari(ip,ij)))); plot(x2,y2,'--','DisplayName',... ['MOLI $N_i^{',num2str(ip),num2str(ij),'}$'],... 'color', line_colors(ic,:)) @@ -172,11 +163,11 @@ for ip = 0:1 end grid on xlabel('$t$') -ylabel(['Im$(N_i^{pj})$']) +ylabel(['Re$(N_i^{pj})$']) %suptitle(TITLE); %if SAVEFIG; FIGNAME = ['Nipj_kz_',num2str(GRID.kzmin)]; save_figure; end; -%% phi +% phi timephi = h5read(filename,'/data/var2d/time'); kr = h5read(filename,'/data/var2d/phi/coordkr'); kz = h5read(filename,'/data/var2d/phi/coordkz'); @@ -227,14 +218,14 @@ for it = 1:numel(timephiMOLI) phiMOLI(it) = get_phi(results.Napj(it,:),params,options); end -ERR1 = abs(real(phiMOLI - phiHeLaZ)); -ERR2 = abs(imag(phiMOLI - phiHeLaZ)); +ERR1 = abs(real(phiMOLI(1:numel(timephi)) - phiHeLaZ)); +ERR2 = abs(imag(phiMOLI(1:numel(timephi)) - phiHeLaZ)); %fig = figure; subplot(325); -plot(timephiMOLI,ERR1,'-','DisplayName','Real') +plot(timephi,ERR1,'-','DisplayName','Real') hold on -plot(timephiMOLI,ERR2,'--','DisplayName','Imag') +plot(timephi,ERR2,'--','DisplayName','Imag') %title(TITLE); grid on xlabel('$t$') @@ -242,12 +233,12 @@ ylabel('$e(\phi)$') legend('show') %if SAVEFIG; FIGNAME = ['err_phi_kz_',num2str(GRID.kzmin)]; save_figure; end; -%% Growth rate fit quantity (Ni00) +% Growth rate fit quantity (Ni00) subplot(326); y1 = squeeze(abs(Nipj(1,1,1,1,:))); % HeLaZ y2 = squeeze(abs(results.Napj(:,bari(0,0)))); -ERR3 = abs(y2-y1); +ERR3 = abs(y2(1:numel(timephi))-y1); yyaxis left semilogy(x1,y1,'-','DisplayName','HeLaZ',... @@ -265,7 +256,7 @@ grid on xlabel('$t$') ylabel('$e(N_i^{00})$') -%% Finish and save +% Finish and save suptitle(TITLE); if SAVEFIG; FIGNAME = ['kz_',num2str(GRID.kzmin)]; save_figure; end; -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/wk/fort.90 b/wk/fort.90 index 2017fc90..449f4371 100644 --- a/wk/fort.90 +++ b/wk/fort.90 @@ -1,19 +1,19 @@ &BASIC nrun=100000 - dt=0.05 - tmax=100 ! time normalized to 1/omega_pe + dt=0.01 + tmax=10 ! time normalized to 1/omega_pe / &GRID - pmaxe =12 ! Electron Hermite moments - jmaxe = 7 ! Electron Laguerre moments - pmaxi = 12 ! Ion Hermite moments - jmaxi = 7 ! Ion Laguerre moments + pmaxe =15 ! Electron Hermite moments + jmaxe = 6 ! Electron Laguerre moments + pmaxi = 15 ! Ion Hermite moments + jmaxi = 6 ! Ion Laguerre moments nkr = 1 krmin = 0 krmax = 0 nkz = 20 - kzmin = 0.1 - kzmax = 2 + kzmin = 1.5 + kzmax = 2.5 / &OUTPUT_PAR nsave_0d = 0 @@ -28,7 +28,7 @@ / &MODEL_PAR ! Collisionality - CO = -2 ! Collision operator (-1:Full Coulomb, 0: Dougherty) + CO = -1 ! Collision operator (-1:Full Coulomb, 0: Dougherty) nu = 0.01 ! Normalized collision frequency normalized to plasma frequency tau_e = 1 ! T_e/T_e tau_i = 1 ! T_i/T_e temperature ratio @@ -47,9 +47,9 @@ ! Noise amplitude initnoise_moments=0 iseed=42 - selfmat_file='../iCa/self_Coll_GKE_0_GKI_0_ESELF_1_ISELF_1_Pmaxe_12_Jmaxe_7_Pmaxi_12_Jmaxi_7_pamaxx_10.h5' - eimat_file='../iCa/ei_Coll_GKE_0_GKI_0_ETEST_1_EBACK_1_Pmaxe_12_Jmaxe_7_Pmaxi_12_Jmaxi_7_pamaxx_10_tau_1.0000_mu_0.0233.h5' - iemat_file='../iCa/ie_Coll_GKE_0_GKI_0_ITEST_1_IBACK_1_Pmaxe_12_Jmaxe_7_Pmaxi_12_Jmaxi_7_pamaxx_10_tau_1.0000_mu_0.0233.h5' + selfmat_file='../iCa/self_Coll_GKE_0_GKI_0_ESELF_1_ISELF_1_Pmaxe_15_Jmaxe_6_Pmaxi_15_Jmaxi_6_pamaxx_10.h5' + eimat_file='../iCa/ei_Coll_GKE_0_GKI_0_ETEST_1_EBACK_1_Pmaxe_15_Jmaxe_6_Pmaxi_15_Jmaxi_6_pamaxx_10_tau_1.0000_mu_0.0233.h5' + iemat_file='../iCa/ie_Coll_GKE_0_GKI_0_ITEST_1_IBACK_1_Pmaxe_15_Jmaxe_6_Pmaxi_15_Jmaxi_6_pamaxx_10_tau_1.0000_mu_0.0233.h5' / &TIME_INTEGRATION_PAR numerical_scheme='RK4' -- GitLab