diff --git a/src/fourier_mod.F90 b/src/fourier_mod.F90 index 97d1b846eb93693e74dcd1d942e7fd1e8d7b51ef..3c0484d7031013bf0c510ba1ed7f9b04634f62c8 100644 --- a/src/fourier_mod.F90 +++ b/src/fourier_mod.F90 @@ -76,10 +76,11 @@ MODULE fourier !!! Compute the poisson bracket of [F,G] to real space ! - Compute the convolution using the convolution theorem - SUBROUTINE poisson_bracket_and_sum( F_, G_) + SUBROUTINE poisson_bracket_and_sum( F_, G_, sum_real_) IMPLICIT NONE COMPLEX(C_DOUBLE_COMPLEX), DIMENSION(ikys:ikye,ikxs:ikxe),& - INTENT(IN) :: F_, G_ ! input fields + INTENT(IN) :: F_, G_ ! input fields + real(C_DOUBLE), pointer, INTENT(INOUT) :: sum_real_(:,:) ! First term df/dx x dg/dy DO ikx = ikxs, ikxe DO iky = ikys, ikye @@ -91,7 +92,7 @@ MODULE fourier ENDDO call fftw_mpi_execute_dft_c2r(planb, cmpx_data_f, real_data_f) call fftw_mpi_execute_dft_c2r(planb, cmpx_data_g, real_data_g) - bracket_sum_r = bracket_sum_r + real_data_f * real_data_g*inv_Ny*inv_Nx + sum_real_ = sum_real_ + real_data_f * real_data_g*inv_Ny*inv_Nx ! Second term -df/dy x dg/dx DO ikx = ikxs, ikxe DO iky = ikys, ikye @@ -103,7 +104,7 @@ MODULE fourier ENDDO call fftw_mpi_execute_dft_c2r(planb, cmpx_data_f, real_data_f) call fftw_mpi_execute_dft_c2r(planb, cmpx_data_g, real_data_g) - bracket_sum_r = bracket_sum_r - real_data_f * real_data_g*inv_Ny*inv_Nx + sum_real_ = sum_real_ - real_data_f * real_data_g*inv_Ny*inv_Nx END SUBROUTINE poisson_bracket_and_sum !!! Compute the poisson bracket of [F,G] to real space diff --git a/src/nonlinear_mod.F90 b/src/nonlinear_mod.F90 index 9cb094133123ead7ef8264b864dcee90e6e04ccd..7b6cf0cc76920bc22a58920c3322d81657071f53 100644 --- a/src/nonlinear_mod.F90 +++ b/src/nonlinear_mod.F90 @@ -98,8 +98,8 @@ SUBROUTINE compute_nonlinear G_cmpx(ikys:ikye,ikxs:ikxe) = G_cmpx(ikys:ikye,ikxs:ikxe) + & dnjs(in,ij,is) * moments_e(ip,is,ikys:ikye,ikxs:ikxe,iz,updatetlevel) ENDDO - !/!\ this function add its result to bracket_sum_r (hard to read sorry) /!\ - CALL poisson_bracket_and_sum(F_cmpx,G_cmpx) + !/!\ this function add its result to bracket_sum_r /!\ + CALL poisson_bracket_and_sum(F_cmpx,G_cmpx,bracket_sum_r) !-----------!! ELECTROMAGNETIC CONTRIBUTION -sqrt(tau)/sigma*{Sum_s dnjs [sqrt(p+1)Nap+1s + sqrt(p)Nap-1s], Kernel psi} IF(EM) THEN @@ -114,7 +114,7 @@ SUBROUTINE compute_nonlinear +sqrt_p *moments_e(ip-1,is,ikys:ikye,ikxs:ikxe,iz,updatetlevel)) ENDDO !/!\ this function add its result to bracket_sum_r (hard to read sorry) /!\ - CALL poisson_bracket_and_sum(F_cmpx,G_cmpx) + CALL poisson_bracket_and_sum(F_cmpx,G_cmpx,bracket_sum_r) ENDIF ENDDO nloope @@ -162,7 +162,7 @@ ENDIF dnjs(in,ij,is) * moments_i(ip,is,ikys:ikye,ikxs:ikxe,iz,updatetlevel) ENDDO !/!\ this function add its result to bracket_sum_r (hard to read sorry) /!\ - CALL poisson_bracket_and_sum(F_cmpx,G_cmpx) + CALL poisson_bracket_and_sum(F_cmpx,G_cmpx,bracket_sum_r) !-----------!! ELECTROMAGNETIC CONTRIBUTION -sqrt(tau)/sigma*{Sum_s dnjs [sqrt(p+1)Nap+1s + sqrt(p)Nap-1s], Kernel psi} IF(EM) THEN ! First convolution terms @@ -176,7 +176,7 @@ ENDIF +sqrt_p *moments_i(ip-1,is,ikys:ikye,ikxs:ikxe,iz,updatetlevel)) ENDDO !/!\ this function add its result to bracket_sum_r (hard to read sorry) /!\ - CALL poisson_bracket_and_sum(F_cmpx,G_cmpx) + CALL poisson_bracket_and_sum(F_cmpx,G_cmpx,bracket_sum_r) ENDIF ENDDO nloopi ! Put the real nonlinear product into k-space