diff --git a/src/inital.F90 b/src/inital.F90 index 3909e64cbaae590424a318f5044fcb77dce6a7dc..dec1ff5cc229e9b481ce380481e374ca0e83bbd0 100644 --- a/src/inital.F90 +++ b/src/inital.F90 @@ -59,6 +59,7 @@ SUBROUTINE init_moments USE prec_const USE utility, ONLY: checkfield USE initial_par + USE model, ONLY : NON_LIN IMPLICIT NONE REAL(dp) :: noise @@ -76,7 +77,7 @@ SUBROUTINE init_moments DO ikr=ikrs,ikre DO ikz=ikzs,ikze CALL RANDOM_NUMBER(noise) - moments_e( ip,ij, ikr, ikz, :) = (initback_moments + initnoise_moments*(noise-0.5_dp))*AA_r(ikr)*AA_z(ikz) + moments_e( ip,ij, ikr, ikz, :) = (initback_moments + initnoise_moments*(noise-0.5_dp)) END DO END DO @@ -95,7 +96,7 @@ SUBROUTINE init_moments DO ikr=ikrs,ikre DO ikz=ikzs,ikze CALL RANDOM_NUMBER(noise) - moments_i( ip,ij,ikr,ikz, :) = (initback_moments + initnoise_moments*(noise-0.5_dp))*AA_r(ikr)*AA_z(ikz) + moments_i( ip,ij,ikr,ikz, :) = (initback_moments + initnoise_moments*(noise-0.5_dp)) END DO END DO @@ -108,7 +109,28 @@ SUBROUTINE init_moments END DO END DO - ! ENDIF + ! Putting to zero modes that are not in the 2/3 Orszag rule + IF (NON_LIN) THEN + DO ip=ips_e,ipe_e + DO ij=ijs_e,ije_e + DO ikr=ikrs,ikre + DO ikz=ikzs,ikze + moments_e( ip,ij,ikr,ikz, :) = moments_e( ip,ij,ikr,ikz, :)*AA_r(ikr)*AA_z(ikz) + ENDDO + ENDDO + ENDDO + ENDDO + DO ip=ips_i,ipe_i + DO ij=ijs_i,ije_i + DO ikr=ikrs,ikre + DO ikz=ikzs,ikze + moments_i( ip,ij,ikr,ikz, :) = moments_i( ip,ij,ikr,ikz, :)*AA_r(ikr)*AA_z(ikz) + ENDDO + ENDDO + ENDDO + ENDDO + ENDIF + END SUBROUTINE init_moments !******************************************************************************! @@ -238,9 +260,10 @@ SUBROUTINE evaluate_kernels 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**(ij)/factj * exp(-be_2) + kernel_e(ij, ikr, ikz) = be_2**j_int * exp(-be_2)/factj ENDDO ENDDO @@ -248,6 +271,7 @@ SUBROUTINE evaluate_kernels !!!!! 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 = ijs_i, ije_i j_int = jarray_e(ij) @@ -264,9 +288,10 @@ 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**(ij)/factj * exp(-bi_2) + kernel_i(ij, ikr, ikz) = bi_2**j_int * exp(-bi_2)/factj ENDDO ENDDO diff --git a/src/memory.F90 b/src/memory.F90 index 58b8b395811f931e83a600a9598b2263de8b88f6..e5509d1acd7853fa80d3c373f186a35a13b55c4b 100644 --- a/src/memory.F90 +++ b/src/memory.F90 @@ -20,6 +20,11 @@ SUBROUTINE memory ! Electrostatic potential CALL allocate_array(phi, ikrs,ikre, ikzs,ikze) + ! Electron kernel evaluation + CALL allocate_array(Kernel_e, ijs_e,ije_e, ikrs,ikre, ikzs,ikze) + ! Ion kernel evaluation + CALL allocate_array(Kernel_i, ijs_i,ije_i, ikrs,ikre, ikzs,ikze) + ! Collision matrix IF (CO .EQ. -1) THEN CALL allocate_array( Ceepj, 1,(pmaxe+1)*(jmaxe+1), 1,(pmaxe+1)*(jmaxe+1)) @@ -32,7 +37,7 @@ SUBROUTINE memory ENDIF ! Non linear terms and dnjs table - IF ( NON_LIN ) THEN + IF ( .true. ) THEN CALL allocate_array( Sepj, ips_e,ipe_e, ijs_e,ije_e, ikrs,ikre, ikzs,ikze ) CALL allocate_array( Sipj, ips_i,ipe_i, ijs_i,ije_i, ikrs,ikre, ikzs,ikze ) CALL allocate_array( dnjs, 1,maxj+1, 1,maxj+1, 1,maxj+1)