From faea4734d906df3aff8d8e1427a9c5b531ed1f4a Mon Sep 17 00:00:00 2001 From: Antoine Hoffmann <antoine.hoffmann@epfl.ch> Date: Fri, 26 May 2023 15:35:18 +0200 Subject: [PATCH] surprise --- src/inital.F90 | 88 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/src/inital.F90 b/src/inital.F90 index 6a1eca0e..3dd50a2a 100644 --- a/src/inital.F90 +++ b/src/inital.F90 @@ -66,7 +66,13 @@ SUBROUTINE inital CALL update_ghosts_moments CALL solve_EM_fields CALL update_ghosts_EM - END SELECT + CASE('ricci') + CALL speak('Init Ricci') + CALL init_ricci ! init only gyrocenter density + CALL update_ghosts_moments + CALL solve_EM_fields + CALL update_ghosts_EM + END SELECT ENDIF ! closure of j>J, p>P and j<0, p<0 moments CALL speak('Apply closure') @@ -448,3 +454,83 @@ SUBROUTINE init_ppj ENDDO END SUBROUTINE init_ppj !******************************************************************************! + +!******************************************************************************! +!!!!!!! Initialize Ricci density +!******************************************************************************! +SUBROUTINE init_ricci + USE grid, ONLY: local_na, local_np, local_nj, total_nkx, local_nky, local_nz,& + local_nkx_offset, local_nky_offset,& + ngp, ngj, ngz, iky0, parray, jarray, contains_ky0, AA_x, AA_y + USE fields, ONLY: moments + USE prec_const, ONLY: xp, imagu + USE initial_par,ONLY: iseed, init_noiselvl, init_background + USE model, ONLY: LINEARITY + USE parallel, ONLY: my_id + IMPLICIT NONE + + COMPLEX(xp), DIMENSION(186,52) :: ricci_mat_real, ricci_mat_imag, ricci_face + REAL(xp) :: tmp_real, tmp_imag + COMPLEX(xp) :: scaling + INTEGER :: ia,ip,ij,ikx,iky,iz + ! open data file + ricci_mat_real = 0; ricci_mat_imag = 0 + open(unit = 1 , file = "/home/ahoffman/gyacomo/Gallery/fourier_ricci_real.txt") + read(1,*) ricci_mat_real + close(1) + open(unit = 2 , file = "/home/ahoffman/gyacomo/Gallery/fourier_ricci_imag.txt") + read(2,*) ricci_mat_imag + close(2) + scaling = 0.000002 + moments = 0._xp + !**** Broad noise initialization ******************************************* + DO ia=1,local_na + DO ikx=1,total_nkx + DO iky=1,local_nky + DO ip=1+ngp/2,local_np+ngp/2 + DO ij=1+ngj/2,local_nj+ngj/2 + DO iz=1+ngz/2,local_nz+ngz/2 + IF((ikx+local_nkx_offset .LE. 186) .AND. (iky+local_nky_offset .LE. 52)) THEN + IF ( (parray(ip) .EQ. 0) .AND. (jarray(ij) .EQ. 0) ) THEN + moments(ia,ip,ij,iky,ikx,iz,:) = scaling*(ricci_mat_real(ikx+local_nkx_offset,iky+local_nky_offset)& + + imagu*ricci_mat_imag(ikx+local_nkx_offset,iky+local_nky_offset)) + ELSE + moments(ia,ip,ij,iky,ikx,iz,:) = 0._xp + ENDIF + ELSE + moments(ia,ip,ij,iky,ikx,iz,:) = 0._xp + ENDIF + END DO + END DO + END DO + END DO + END DO + print*, sum(moments) + IF ( contains_ky0 ) THEN + DO ip=1+ngp/2,local_np+ngp/2 + DO ij=1+ngj/2,local_nj+ngj/2 + DO iz=1+ngz/2,local_nz+ngz/2 + DO ikx=2,total_nkx/2 !symmetry at ky = 0 for all z + moments(ia, ip,ij,iky0,ikx,:,:) = moments(ia, ip,ij,iky0,total_nkx+2-ikx,:,:) + END DO + END DO + END DO + END DO + ENDIF + ! Putting to zero modes that are not in the 2/3 Orszag rule + IF (LINEARITY .NE. 'linear') THEN + DO ikx=1,total_nkx + DO iky=1,local_nky + DO iz=1,local_nz+ngz + DO ip=1,local_np+ngp + DO ij=1,local_nj+ngj + moments(ia, ip,ij,iky,ikx,iz, :) = moments(ia, ip,ij,iky,ikx,iz, :)*AA_x(ikx)*AA_y(iky) + ENDDO + ENDDO + ENDDO + ENDDO + ENDDO + ENDIF + ENDDO +END SUBROUTINE init_ricci +!******************************************************************************! \ No newline at end of file -- GitLab