From 062c21db79677b2b6b09324cf32841603d8066f4 Mon Sep 17 00:00:00 2001 From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch> Date: Wed, 28 Jul 2021 13:46:40 +0200 Subject: [PATCH] kernel truncation has been corrected --- src/inital.F90 | 118 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 11 deletions(-) diff --git a/src/inital.F90 b/src/inital.F90 index 91f05c86..dcb31a69 100644 --- a/src/inital.F90 +++ b/src/inital.F90 @@ -249,7 +249,6 @@ SUBROUTINE build_dnjs_table ENDDO END SUBROUTINE build_dnjs_table !******************************************************************************! - !******************************************************************************! !!!!!!! Evaluate the kernels once for all !******************************************************************************! @@ -257,18 +256,15 @@ SUBROUTINE evaluate_kernels USE basic USE array, Only : kernel_e, kernel_i USE grid - use model, ONLY : tau_e, tau_i, sigma_e, sigma_i, q_e, q_i, lambdaD, CLOS + use model, ONLY : tau_e, tau_i, sigma_e, sigma_i, q_e, q_i, lambdaD, CLOS, sigmae2_taue_o2, sigmai2_taui_o2 IMPLICIT NONE REAL(dp) :: factj, j_dp, j_int - REAL(dp) :: sigmae2_taue_o2, sigmai2_taui_o2 REAL(dp) :: be_2, bi_2, alphaD REAL(dp) :: kr, kz, kperp2 !!!!! Electron kernels !!!!! !Precompute species dependant factors - sigmae2_taue_o2 = sigma_e**2 * tau_e/2._dp ! factor of the Kernel argument - factj = 1.0 ! Start of the recursive factorial DO ij = 1, jmaxe+1 j_int = jarray_e(ij) @@ -299,13 +295,18 @@ SUBROUTINE evaluate_kernels DO ikz = ikzs,ikze kz = kzarray(ikz) be_2 = (kr**2 + kz**2) * sigmae2_taue_o2 - kernel_e(ijeg_e,ikr,ikz) = be_2/(real(ijeg_e,dp))*kernel_e(ije_e,ikr,ikz) + ! Kernel ghost + 1 with Kj+1 = y/(j+1) Kj (/!\ ij = j+1) + kernel_e(ijeg_e,ikr,ikz) = be_2/(real(ijeg_e-1,dp))*kernel_e(ije_e,ikr,ikz) + ! Kernel ghost - 1 with Kj-1 = j/y Kj(careful about the kperp=0) + IF ( be_2 .NE. 0 ) THEN + kernel_e(ijsg_e,ikr,ikz) = (real(ijsg_e,dp))/be_2*kernel_e(ijs_e,ikr,ikz) + ELSE + kernel_e(ijsg_e,ikr,ikz) = 0._dp + ENDIF ENDDO ENDDO !!!!! Ion kernels !!!!! - sigmai2_taui_o2 = sigma_i**2 * tau_i/2._dp ! (b_a/2)^2 = (kperp sqrt(2 tau_a) sigma_a/2)^2 - factj = 1.0 ! Start of the recursive factorial DO ij = 1, jmaxi+1 j_int = jarray_e(ij) @@ -322,9 +323,7 @@ SUBROUTINE evaluate_kernels kr = krarray(ikr) DO ikz = ikzs,ikze kz = kzarray(ikz) - bi_2 = (kr**2 + kz**2) * sigmai2_taui_o2 - kernel_i(ij, ikr, ikz) = bi_2**j_int * exp(-bi_2)/factj ENDDO @@ -336,8 +335,105 @@ SUBROUTINE evaluate_kernels DO ikz = ikzs,ikze kz = kzarray(ikz) bi_2 = (kr**2 + kz**2) * sigmai2_taui_o2 - kernel_i(ijeg_i,ikr,ikz) = bi_2/(real(ijeg_i,dp))*kernel_e(ije_i,ikr,ikz) + ! Kernel ghost + 1 with Kj+1 = y/(j+1) Kj + kernel_i(ijeg_i,ikr,ikz) = bi_2/(real(ijeg_i-1,dp))*kernel_i(ije_i,ikr,ikz) + ! Kernel ghost - 1 with Kj-1 = j/y Kj(careful about the kperp=0) + IF ( bi_2 .NE. 0 ) THEN + kernel_i(ijsg_i,ikr,ikz) = (real(ijsg_i,dp))/bi_2*kernel_i(ijs_i,ikr,ikz) + ELSE + kernel_i(ijsg_i,ikr,ikz) = 0._dp + ENDIF ENDDO ENDDO END SUBROUTINE evaluate_kernels +! !******************************************************************************! +! !!!!!!! Evaluate the kernels once for all +! !******************************************************************************! +! SUBROUTINE evaluate_kernels +! USE basic +! USE array, Only : kernel_e, kernel_i +! USE grid +! use model, ONLY : tau_e, tau_i, sigma_e, sigma_i, q_e, q_i, lambdaD, CLOS +! IMPLICIT NONE +! +! REAL(dp) :: factj, j_dp, j_int +! REAL(dp) :: sigmae2_taue_o2, sigmai2_taui_o2 +! REAL(dp) :: be_2, bi_2, alphaD +! REAL(dp) :: kr, kz, kperp2 +! +! !!!!! Electron kernels !!!!! +! !Precompute species dependant factors +! sigmae2_taue_o2 = sigma_e**2 * tau_e/2._dp ! factor of the Kernel argument +! +! factj = 1.0 ! Start of the recursive factorial +! DO ij = 1, jmaxe+1 +! j_int = jarray_e(ij) +! j_dp = REAL(j_int,dp) ! REAL of degree +! +! ! Recursive factorial +! IF (j_dp .GT. 0) THEN +! factj = factj * j_dp +! ELSE +! factj = 1._dp +! ENDIF +! +! DO ikr = ikrs,ikre +! kr = krarray(ikr) +! DO ikz = ikzs,ikze +! kz = kzarray(ikz) +! +! be_2 = (kr**2 + kz**2) * sigmae2_taue_o2 +! +! kernel_e(ij, ikr, ikz) = be_2**j_int * exp(-be_2)/factj +! +! ENDDO +! ENDDO +! ENDDO +! ! Kernels closure +! DO ikr = ikrs,ikre +! kr = krarray(ikr) +! DO ikz = ikzs,ikze +! kz = kzarray(ikz) +! be_2 = (kr**2 + kz**2) * sigmae2_taue_o2 +! kernel_e(ijeg_e,ikr,ikz) = be_2/(real(ijeg_e,dp))*kernel_e(ije_e,ikr,ikz) +! ENDDO +! ENDDO +! +! !!!!! Ion kernels !!!!! +! sigmai2_taui_o2 = sigma_i**2 * tau_i/2._dp ! (b_a/2)^2 = (kperp sqrt(2 tau_a) sigma_a/2)^2 +! +! factj = 1.0 ! Start of the recursive factorial +! DO ij = 1, jmaxi+1 +! j_int = jarray_e(ij) +! j_dp = REAL(j_int,dp) ! REAL of degree +! +! ! Recursive factorial +! IF (j_dp .GT. 0) THEN +! factj = factj * j_dp +! ELSE +! factj = 1._dp +! ENDIF +! +! DO ikr = ikrs,ikre +! kr = krarray(ikr) +! DO ikz = ikzs,ikze +! kz = kzarray(ikz) +! +! bi_2 = (kr**2 + kz**2) * sigmai2_taui_o2 +! +! kernel_i(ij, ikr, ikz) = bi_2**j_int * exp(-bi_2)/factj +! +! ENDDO +! ENDDO +! ENDDO +! ! Kernels closure +! DO ikr = ikrs,ikre +! kr = krarray(ikr) +! DO ikz = ikzs,ikze +! kz = kzarray(ikz) +! bi_2 = (kr**2 + kz**2) * sigmai2_taui_o2 +! kernel_i(ijeg_i,ikr,ikz) = bi_2/(real(ijeg_i,dp))*kernel_e(ije_i,ikr,ikz) +! ENDDO +! ENDDO +! END SUBROUTINE evaluate_kernels !******************************************************************************! -- GitLab