From 657e60ec8a69e60cca9c8260861882501045519f Mon Sep 17 00:00:00 2001
From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch>
Date: Tue, 18 May 2021 17:23:16 +0200
Subject: [PATCH] Added option to intialize a sin profile as initial state

---
 src/inital.F90          | 39 ++++++++++++++-------------------------
 src/initial_par_mod.F90 |  6 +++---
 2 files changed, 17 insertions(+), 28 deletions(-)

diff --git a/src/inital.F90 b/src/inital.F90
index 19690e50..73bc3cb5 100644
--- a/src/inital.F90
+++ b/src/inital.F90
@@ -34,6 +34,9 @@ SUBROUTINE inital
     IF (INIT_NOISY_PHI) THEN
       IF (my_id .EQ. 0) WRITE(*,*) 'Init noisy phi'
       CALL init_phi ! init noisy phi_0, N_0 = 0
+    ELSEIF (INIT_ZF .GT. 0) THEN
+      IF (my_id .EQ. 0) WRITE(*,*) 'Init ZF phi'
+      CALL init_phi ! init ZF
     ELSE
       IF (my_id .EQ. 0) WRITE(*,*) 'Init noisy moments and ghosts'
       CALL init_moments ! init noisy N_0
@@ -192,36 +195,22 @@ SUBROUTINE init_phi
       ENDIF
 
       !**** Cancel previous moments initialization
-      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, :) = 0._dp
-            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, :) = 0._dp
-            ENDDO
-          ENDDO
-        ENDDO
-      ENDDO
+      moments_e = 0._dp; moments_i = 0._dp
 
-    ELSEIF(INIT_ZF_PHI .GT. 0) THEN
+    ELSEIF(INIT_ZF .GT. 0) THEN
 
       !**** Zonal Flow initialization *******************************************
       ! Every mode is zero
-      DO ikr=ikrs,ikre
-        DO ikz=ikzs,ikze
-          phi(ikr,ikz) = 0._dp
-        END DO
-      END DO
+      phi       = 0._dp
+      moments_e = 0._dp
+      moments_i = 0._dp
       ! Except at ikr = mode number + 1, symmetry is already included since kr>=0
-      phi(INIT_ZF_PHI+1,ikz_0) = -init_background * imagu/2._dp
+      IF( (INIT_ZF+1 .GT. ikrs) .AND. (INIT_ZF+1 .LT. ikre) ) THEN
+        phi(INIT_ZF+1,ikz_0) = (2._dp*PI)**2*init_background/deltakr/deltakz/2._dp
+      ENDIF
+      !**** Init ZF in density
+      moments_e(1,1,INIT_ZF+1,ikz_0,:) = -(2._dp*PI)**2*init_background/deltakr/deltakz * imagu/2._dp
+      moments_i(1,1,INIT_ZF+1,ikz_0,:) = -(2._dp*PI)**2*init_background/deltakr/deltakz * imagu/2._dp
 
     ELSE ! we compute phi from noisy moments and poisson
 
diff --git a/src/initial_par_mod.F90 b/src/initial_par_mod.F90
index f9a937c6..5dffc24f 100644
--- a/src/initial_par_mod.F90
+++ b/src/initial_par_mod.F90
@@ -8,7 +8,7 @@ MODULE initial_par
   ! Initialization through a noisy phi
   LOGICAL,  PUBLIC, PROTECTED :: INIT_NOISY_PHI = .false.
   ! Initialization through a zonal flow phi
-  INTEGER,  PUBLIC, PROTECTED :: INIT_ZF_PHI    = 0
+  INTEGER,  PUBLIC, PROTECTED :: INIT_ZF    = 0
   ! Initial background level
   REAL(dp), PUBLIC, PROTECTED :: init_background=0._dp
   ! Initial noise amplitude
@@ -39,7 +39,7 @@ CONTAINS
     IMPLICIT NONE
 
     NAMELIST /INITIAL_CON/ INIT_NOISY_PHI
-    NAMELIST /INITIAL_CON/ INIT_ZF_PHI
+    NAMELIST /INITIAL_CON/ INIT_ZF
     NAMELIST /INITIAL_CON/ init_background
     NAMELIST /INITIAL_CON/ init_noiselvl
     NAMELIST /INITIAL_CON/ iseed
@@ -64,7 +64,7 @@ CONTAINS
 
     CALL attach(fidres, TRIM(str), "INIT_NOISY_PHI", INIT_NOISY_PHI)
 
-    CALL attach(fidres, TRIM(str), "INIT_ZF_PHI", INIT_ZF_PHI)
+    CALL attach(fidres, TRIM(str), "INIT_ZF", INIT_ZF)
 
     CALL attach(fidres, TRIM(str), "init_background", init_background)
 
-- 
GitLab