From 59fa66532c426ae9d50c98f5bdeb84e49d362d88 Mon Sep 17 00:00:00 2001
From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch>
Date: Mon, 17 May 2021 16:08:54 +0200
Subject: [PATCH] Added ZF initialization option

---
 matlab/write_fort90.m   |  3 +--
 src/inital.F90          | 12 ++++++++++++
 src/initial_par_mod.F90 | 10 ++++++----
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/matlab/write_fort90.m b/matlab/write_fort90.m
index aef016f7..88e496c8 100644
--- a/matlab/write_fort90.m
+++ b/matlab/write_fort90.m
@@ -46,7 +46,6 @@ fprintf(fid,['  CO      = ', num2str(MODEL.CO),'\n']);
 fprintf(fid,['  CLOS    = ', num2str(MODEL.CLOS),'\n']);
 fprintf(fid,['  NL_CLOS = ', num2str(MODEL.NL_CLOS),'\n']);
 fprintf(fid,['  NON_LIN = ', MODEL.NON_LIN,'\n']);
-fprintf(fid,['  ZF_DAMP = ', MODEL.ZF_DAMP,'\n']);
 fprintf(fid,['  mu      = ', num2str(MODEL.mu),'\n']);
 fprintf(fid,['  mu_p    = ', num2str(MODEL.mu_p),'\n']);
 fprintf(fid,['  mu_j    = ', num2str(MODEL.mu_j),'\n']);
@@ -65,7 +64,7 @@ fprintf(fid,'/\n');
 
 fprintf(fid,'&INITIAL_CON\n');
 fprintf(fid,['  INIT_NOISY_PHI    =', INITIAL.init_noisy_phi,'\n']);
-fprintf(fid,['  INIT_ZF_PHI       =', INITIAL.init_noisy_phi,'\n']);
+fprintf(fid,['  INIT_ZF_PHI       =', INITIAL.INIT_ZF_PHI,'\n']);
 fprintf(fid,['  init_background  =', num2str(INITIAL.init_background),'\n']);
 fprintf(fid,['  init_noiselvl =', num2str(INITIAL.init_noiselvl),'\n']);
 fprintf(fid,['  iseed             =', num2str(INITIAL.iseed),'\n']);
diff --git a/src/inital.F90 b/src/inital.F90
index 680f4f81..f6a7f2f8 100644
--- a/src/inital.F90
+++ b/src/inital.F90
@@ -211,6 +211,18 @@ SUBROUTINE init_phi
         ENDDO
       ENDDO
 
+    ELSEIF(INIT_ZF_PHI .GT. 0)
+
+      !**** Zonal Flow initialization *******************************************
+      ! Every mode is zero
+      DO ikr=ikrs,ikre
+        DO ikz=ikzs,ikze
+          phi(ikr,ikz) = 0._dp
+        END DO
+      END DO
+      ! 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
+      
     ELSE ! we compute phi from noisy moments and poisson
 
       CALL poisson
diff --git a/src/initial_par_mod.F90 b/src/initial_par_mod.F90
index 56fa6a25..f9a937c6 100644
--- a/src/initial_par_mod.F90
+++ b/src/initial_par_mod.F90
@@ -5,13 +5,13 @@ MODULE initial_par
   IMPLICIT NONE
   PRIVATE
 
-  ! Initial background level
-  REAL(dp), PUBLIC, PROTECTED :: init_background=0._dp
   ! Initialization through a noisy phi
   LOGICAL,  PUBLIC, PROTECTED :: INIT_NOISY_PHI = .false.
   ! Initialization through a zonal flow phi
-  LOGICAL,  PUBLIC, PROTECTED :: INIT_ZF_PHI    = .false.
-  ! Initial background noise amplitude
+  INTEGER,  PUBLIC, PROTECTED :: INIT_ZF_PHI    = 0
+  ! Initial background level
+  REAL(dp), PUBLIC, PROTECTED :: init_background=0._dp
+  ! Initial noise amplitude
   REAL(dp), PUBLIC, PROTECTED :: init_noiselvl=1E-6_dp
   ! Initialization for random number generator
   INTEGER,  PUBLIC, PROTECTED :: iseed=42
@@ -64,6 +64,8 @@ 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_background", init_background)
 
     CALL attach(fidres, TRIM(str), "init_noiselvl", init_noiselvl)
-- 
GitLab