From adb9a6f439b493540295b110234098c853c06b05 Mon Sep 17 00:00:00 2001 From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch> Date: Wed, 28 Jul 2021 13:46:26 +0200 Subject: [PATCH] module for 3D --- src/lin_coeff_and_geometry.F90 | 99 ++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/lin_coeff_and_geometry.F90 diff --git a/src/lin_coeff_and_geometry.F90 b/src/lin_coeff_and_geometry.F90 new file mode 100644 index 00000000..110208ab --- /dev/null +++ b/src/lin_coeff_and_geometry.F90 @@ -0,0 +1,99 @@ +SUBROUTINE lin_coeff_and_geometry + USE array, ONLY: xnepj, xnepp1j, xnepm1j, xnepp2j, xnepm2j, xnepjp1, xnepjm1, & + xnipj, xnipp1j, xnipm1j, xnipp2j, xnipm2j, xnipjp1, xnipjm1, & + xphij, xphijp1, xphijm1, Ckxky + USE model, ONLY: taue_qe, taui_qi, sqrtTaue_qe, sqrtTaui_qi, eta_T, eta_n + USE prec_const + USE grid, ONLY: parray_e, parray_i, jarray_e, jarray_i, & + ip,ij, ips_e,ip_e, ips_i,ipe_i, ijs_e,ije_e, ijs_i,ije_i,& + kxarray, kyarray, zarray, & + ikx,iky,iz, ikxs,ikxe, ikys,ikye, izs,ize + IMPLICIT NONE + INTEGER :: p_int, j_int ! polynom. degrees + REAL(dp) :: p_dp, j_dp + REAL(dp) :: kx, ky, z + + !! Electrons linear coefficients for moment RHS !!!!!!!!!! + DO ip = ips_e, ipe_e + p_int= parray_e(ip) ! Hermite degree + p_dp = REAL(p_int,dp) ! REAL of Hermite degree + DO ij = ijs_e, ije_e + j_int= jarray_e(ij) ! Laguerre degree + j_dp = REAL(j_int,dp) ! REAL of Laguerre degree + xnepj(ip,ij) = taue_qe * 2._dp * (p_dp + j_dp + 1._dp) + ENDDO + ENDDO + DO ip = ips_e, ipe_e + p_int= parray_e(ip) ! Hermite degree + p_dp = REAL(p_int,dp) ! REAL of Hermite degree + xnepp1j(ip) = sqrtTaue_qe * SQRT(p_dp + 1_dp) + xnepm1j(ip) = sqrtTaue_qe * SQRT(p_dp) + xnepp2j(ip) = taue_qe * SQRT((p_dp + 1._dp) * (p_dp + 2._dp)) + xnepm2j(ip) = taue_qe * SQRT(p_dp * (p_dp - 1._dp)) + ENDDO + DO ij = ijs_e, ije_e + j_int= jarray_e(ij) ! Laguerre degree + j_dp = REAL(j_int,dp) ! REAL of Laguerre degree + xnepjp1(ij) = -taui_qi * (j_dp + 1._dp) + xnepjm1(ij) = -taui_qi * j_dp + ENDDO + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! Ions linear coefficients for moment RHS !!!!!!!!!! + DO ip = ips_i, ipe_i + p_int= parray_i(ip) ! Hermite degree + p_dp = REAL(p_int,dp) ! REAL of Hermite degree + DO ij = ijs_i, ije_i + j_int= jarray_i(ij) ! Laguerre degree + j_dp = REAL(j_int,dp) ! REAL of Laguerre degree + xnipj(ip,ij) = taui_qi * 2._dp * (p_dp + j_dp + 1._dp) + ENDDO + ENDDO + DO ip = ips_i, ipe_i + p_int= parray_i(ip) ! Hermite degree + p_dp = REAL(p_int,dp) ! REAL of Hermite degree + xnipp1j(ip) = sqrtTaui_qi * SQRT(p_dp + 1._dp) + xnipm1j(ip) = sqrtTaui_qi * SQRT(p_dp) + xnipp2j(ip) = taui_qi * SQRT((p_dp + 1._dp) * (p_dp + 2._dp)) + xnipm2j(ip) = taui_qi * SQRT(p_dp * (p_dp - 1._dp)) + ENDDO + DO ij = ijs_i, ije_i + j_int= jarray_i(ij) ! Laguerre degree + j_dp = REAL(j_int,dp) ! REAL of Laguerre degree + xnipjp1(ij) = -taui_qi * (j_dp + 1._dp) + xnipjm1(ij) = -taui_qi * j_dp + ENDDO + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! ES linear coefficients for moment RHS !!!!!!!!!! + DO ip = ips_i, ipe_i + p_int= parray_i(ip) ! Hermite degree + DO ij = ijs_i, ije_i + j_int= jarray_i(ij) ! REALof Laguerre degree + j_dp = REAL(j_int,dp) ! REALof Laguerre degree + !! Electrostatic potential pj terms + IF (p_int .EQ. 0) THEN ! kronecker p0 + xphij(ip,ij) = eta_n + 2.*j_dp*eta_T + xphijp1(ip,ij) = eta_T*(j_dp+1._dp) + xphijm1(ip,ij) = eta_T* j_dp + ELSE IF (p_int .EQ. 2) THEN ! kronecker p2 + xphij(ip,ij) =-eta_T/SQRT2 + xphijp1(ip,ij) = 0._dp; xphijm1(ip,ij) = 0._dp; + ELSE + xphij(ip,ij) = 0._dp; xphijp1(ip,ij) = 0._dp + xphijm1(ip,ij) = 0._dp; + ENDIF + ENDDO + ENDDO + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! Curvature and geometric coefficients !!!!!!!!!! + DO iz = izs,ize + z = zarray(iz) + DO ikx = ikxs,ikxe + kx = kxarray(ikx) ! Poloidal wavevector + DO iky = ikys,ikye + ky = kyarray(iky) ! Toroidal wavevector + Ckxky(ikx,iky,iz) = SIN(z)*imagu*kx +COS(z)*imagu*ky + ENDDO + ENDDO + ENDDO + +END SUBROUTINE lin_coeff_and_geometry -- GitLab