From 355bb4bf67dcb970d67d59686023b5a4f9a13019 Mon Sep 17 00:00:00 2001
From: Antoine Cyril David Hoffmann <ahoffman@spcpc606.epfl.ch>
Date: Tue, 15 Dec 2020 18:00:20 +0100
Subject: [PATCH] saving data is disabled by negative nsave now

---
 src/diagnose.F90     | 102 ++++++++++++++++++-------------------------
 wk/marconi_scaling.m |  26 +++++------
 wk/setup.m           |   2 +-
 3 files changed, 56 insertions(+), 74 deletions(-)

diff --git a/src/diagnose.F90 b/src/diagnose.F90
index 2bf554d4..fcc362cb 100644
--- a/src/diagnose.F90
+++ b/src/diagnose.F90
@@ -38,16 +38,19 @@ SUBROUTINE diagnose(kstep)
      IF (my_id .EQ. 0) WRITE(*,'(3x,a,a)') TRIM(resfile), ' created'
 
      ! Checkpoint file creation
-     WRITE(rstfile,'(a,a1,i2.2,a3)') TRIM(rstfile0),'_',jobnum,'.h5'
-     CALL creatf(rstfile, fidrst, real_prec='d', mpicomm=MPI_COMM_WORLD)
-     CALL creatg(fidrst, '/Basic', 'Basic data')
-     CALL creatg(fidrst, '/Basic/moments_e', 'electron moments')
-     CALL creatg(fidrst, '/Basic/moments_i', 'ion moments')
-     CALL creatg(fidrst, '/Basic/phi', 'ES potential')
-
-     IF (my_id .EQ. 0) WRITE(*,'(3x,a,a)') TRIM(rstfile), ' created'
-     CALL flush(6)
-
+     IF (nsave_cp .GT. 0) THEN
+       WRITE(rstfile,'(a,a1,i2.2,a3)') TRIM(rstfile0),'_',jobnum,'.h5'
+       CALL creatf(rstfile, fidrst, real_prec='d', mpicomm=MPI_COMM_WORLD)
+       CALL creatg(fidrst, '/Basic', 'Basic data')
+       CALL creatg(fidrst, '/Basic/moments_e', 'electron moments')
+       CALL creatg(fidrst, '/Basic/moments_i', 'ion moments')
+       CALL creatg(fidrst, '/Basic/phi', 'ES potential')
+
+       IF (my_id .EQ. 0) WRITE(*,'(3x,a,a)') TRIM(rstfile), ' created'
+       CALL flush(6)
+     ELSE
+       IF (my_id .EQ. 0) WRITE(*,'(3x,a,a)') 'No checkpoint'
+     ENDIF
 
      !  Data group
      CALL creatg(fidres, "/data", "data")
@@ -85,79 +88,56 @@ SUBROUTINE diagnose(kstep)
      CALL creatd(fidres, rank, dims,  "/data/var2d/time",     "Time t*c_s/R")
      CALL creatd(fidres, rank, dims, "/data/var2d/cstep", "iteration number")
 
-     IF (nsave_2d .NE. 0) THEN
+     IF (nsave_2d .GT. 0) THEN
        CALL creatg(fidres, "/data/var2d/Ne00", "Ne00")
-       IF (num_procs .EQ. 1) THEN
-         CALL putarr(fidres, "/data/var2d/Ne00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
-       ELSE
-         CALL putarr(fidres, "/data/var2d/Ne00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
-       ENDIF
-       CALL putarr(fidres, "/data/var2d/Ne00/coordkz", kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
-
        CALL creatg(fidres, "/data/var2d/Ni00", "Ni00")
-       IF (num_procs .EQ. 1) THEN
-         CALL putarr(fidres, "/data/var2d/Ni00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
-       ELSE
-         CALL putarr(fidres, "/data/var2d/Ni00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
-       ENDIF
-       CALL putarr(fidres, "/data/var2d/Ni00/coordkz", kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
-     END IF
-
-     IF (nsave_2d .NE. 0) THEN
        CALL creatg(fidres, "/data/var2d/phi", "phi")
        IF (num_procs .EQ. 1) THEN
+         CALL putarr(fidres, "/data/var2d/Ne00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
+         CALL putarr(fidres, "/data/var2d/Ni00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
          CALL putarr(fidres, "/data/var2d/phi/coordkr", krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
        ELSE
+         CALL putarr(fidres, "/data/var2d/Ne00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
+         CALL putarr(fidres, "/data/var2d/Ni00/coordkr", krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
          CALL putarr(fidres, "/data/var2d/phi/coordkr", krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
        ENDIF
-       CALL putarr(fidres, "/data/var2d/phi/coordkz", kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
+       CALL putarr(fidres, "/data/var2d/Ne00/coordkz", kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
+       CALL putarr(fidres, "/data/var2d/Ni00/coordkz", kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
+       CALL putarr(fidres, "/data/var2d/phi/coordkz",  kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
      END IF
 
      !  var5d group (moments)
      rank = 0
      CALL creatd(fidres, rank, dims,  "/data/var5d/time",     "Time t*c_s/R")
      CALL creatd(fidres, rank, dims, "/data/var5d/cstep", "iteration number")
-     IF (nsave_5d .NE. 0) THEN
+     IF (nsave_5d .GT. 0) THEN
        CALL creatg(fidres, "/data/var5d/moments_e", "moments_e")
+       CALL creatg(fidres, "/data/var5d/moments_i", "moments_i")
+       CALL creatg(fidres, "/data/var5d/Sepj", "Sepj")
+       CALL creatg(fidres, "/data/var5d/Sipj", "Sipj")
+
        CALL putarr(fidres,  "/data/var5d/moments_e/coordp", parray_e(ips_e:ipe_e),       "p_e", ionode=0)
        CALL putarr(fidres,  "/data/var5d/moments_e/coordj", jarray_e(ijs_e:ije_e),       "j_e", ionode=0)
-       IF (num_procs .EQ. 1) THEN
-         CALL putarr(fidres, "/data/var5d/moments_e/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
-       ELSE
-         CALL putarr(fidres, "/data/var5d/moments_e/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
-       ENDIF
-       CALL putarr(fidres, "/data/var5d/moments_e/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
-
-       CALL creatg(fidres, "/data/var5d/moments_i", "moments_i")
        CALL putarr(fidres,  "/data/var5d/moments_i/coordp", parray_i(ips_i:ipe_i),       "p_i", ionode=0)
        CALL putarr(fidres,  "/data/var5d/moments_i/coordj", jarray_i(ijs_i:ije_i),       "j_i", ionode=0)
-       IF (num_procs .EQ. 1) THEN
-         CALL putarr(fidres, "/data/var5d/moments_i/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
-       ELSE
-         CALL putarr(fidres, "/data/var5d/moments_i/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
-       ENDIF
-       CALL putarr(fidres, "/data/var5d/moments_i/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
-     END IF
-
-     IF (nsave_5d .NE. 0) THEN
-       CALL creatg(fidres, "/data/var5d/Sepj", "Sepj")
        CALL putarr(fidres,  "/data/var5d/Sepj/coordp", parray_e(ips_e:ipe_e),       "p_e", ionode=0)
        CALL putarr(fidres,  "/data/var5d/Sepj/coordj", jarray_e(ijs_e:ije_e),       "j_e", ionode=0)
-       IF (num_procs .EQ. 1) THEN
-         CALL putarr(fidres, "/data/var5d/Sepj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
-       ELSE
-         CALL putarr(fidres, "/data/var5d/Sepj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
-       ENDIF
-       CALL putarr(fidres, "/data/var5d/Sepj/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
-
-       CALL creatg(fidres, "/data/var5d/Sipj", "Sipj")
        CALL putarr(fidres,  "/data/var5d/Sipj/coordp", parray_i(ips_i:ipe_i),       "p_i", ionode=0)
        CALL putarr(fidres,  "/data/var5d/Sipj/coordj", jarray_i(ijs_i:ije_i),       "j_i", ionode=0)
        IF (num_procs .EQ. 1) THEN
+         CALL putarr(fidres, "/data/var5d/moments_e/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
+         CALL putarr(fidres, "/data/var5d/moments_i/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
+         CALL putarr(fidres, "/data/var5d/Sepj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
          CALL putarr(fidres, "/data/var5d/Sipj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", ionode=0)
        ELSE
+         CALL putarr(fidres, "/data/var5d/moments_e/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
+         CALL putarr(fidres, "/data/var5d/moments_i/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
+         CALL putarr(fidres, "/data/var5d/Sepj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
          CALL putarr(fidres, "/data/var5d/Sipj/coordkr",    krarray(ikrs:ikre), "kr*rho_s0", pardim=1)
        ENDIF
+       CALL putarr(fidres, "/data/var5d/moments_e/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
+       CALL putarr(fidres, "/data/var5d/moments_i/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
+       CALL putarr(fidres, "/data/var5d/Sepj/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
        CALL putarr(fidres, "/data/var5d/Sipj/coordkz",    kzarray(ikzs:ikze), "kz*rho_s0", ionode=0)
      END IF
 
@@ -232,7 +212,7 @@ SUBROUTINE diagnose(kstep)
     ENDIF
 
      !                       2.1   0d history arrays
-     IF (nsave_0d .NE. 0) THEN
+     IF (nsave_0d .GT. 0) THEN
         IF ( MOD(cstep, nsave_0d) == 0 ) THEN
            CALL diagnose_0d
         END IF
@@ -242,21 +222,21 @@ SUBROUTINE diagnose(kstep)
      ! empty in our case
 
      !                       2.3   2d profiles
-     IF (nsave_2d .NE. 0) THEN
+     IF (nsave_2d .GT. 0) THEN
         IF (MOD(cstep, nsave_2d) == 0) THEN
            CALL diagnose_2d
         END IF
      END IF
 
      !                       2.4   3d profiles
-     IF (nsave_5d .NE. 0) THEN
+     IF (nsave_5d .GT. 0) THEN
         IF (MOD(cstep, nsave_5d) == 0) THEN
            CALL diagnose_5d
         END IF
      END IF
 
      !                       2.5   Backups
-     IF (nsave_cp .NE. 0) THEN
+     IF (nsave_cp .GT. 0) THEN
        IF (MOD(cstep, nsave_cp) == 0) THEN
          CALL checkpoint_save(cp_counter)
          cp_counter = cp_counter + 1
@@ -274,7 +254,9 @@ SUBROUTINE diagnose(kstep)
 
      !   Close all diagnostic files
      CALL closef(fidres)
-     CALL closef(fidrst)
+     IF (nsave_cp .GT. 0) THEN
+       CALL closef(fidrst)
+     ENDIF
 
   END IF
 
diff --git a/wk/marconi_scaling.m b/wk/marconi_scaling.m
index ec5aa148..a65e6378 100644
--- a/wk/marconi_scaling.m
+++ b/wk/marconi_scaling.m
@@ -7,8 +7,8 @@ addpath(genpath('../matlab')) % ... add
 CLUSTER.TIME  = '01:00:00'; % allocation time hh:mm:ss
 CLUSTER.NODES = '01';       % MPI process
 CLUSTER.CPUPT = '01';       % CPU per task
-CLUSTER.NTPN  = '01';       % N tasks per node (openMP)
-CLUSTER.PART  = 'dbg';      % dbg or prod
+CLUSTER.NTPN  = '24';       % N tasks per node (openMP)
+CLUSTER.PART  = 'prod';      % dbg or prod
 CLUSTER.MEM   = '16GB';     % Memory
 %% PHYSICAL PARAMETERS
 NU      = 1e-1;   % Collision frequency
@@ -19,23 +19,23 @@ ETAT    = 0.0;    % Temperature gradient
 MU      = 0e-4;   % Hyper diffusivity coefficient
 NOISE0  = 1.0e-5;
 %% GRID PARAMETERS
-N       = 512;     % Frequency gridpoints (Nkr = N/2)
-L       = 100;     % Size of the squared frequency domain
-PMAXE   = 2;     % Highest electron Hermite polynomial degree
-JMAXE   = 1;     % Highest ''       Laguerre ''
-PMAXI   = 2;     % Highest ion      Hermite polynomial degree
-JMAXI   = 1;     % Highest ''       Laguerre ''
+N       = 128;     % Frequency gridpoints (Nkr = N/2)
+L       = 10;     % Size of the squared frequency domain
+PMAXE   = 6;     % Highest electron Hermite polynomial degree
+JMAXE   = 4;     % Highest ''       Laguerre ''
+PMAXI   = 6;     % Highest ion      Hermite polynomial degree
+JMAXI   = 4;     % Highest ''       Laguerre ''
 %% TIME PARAMETERS
-TMAX    = 5;  % Maximal time unit
+TMAX    = 2;  % Maximal time unit
 DT      = 5e-2;   % Time step
 SPS0D   = 1/DT;    % Sampling per time unit for profiler
-SPS2D   = 0;      % Sampling per time unit for 2D arrays
-SPS5D   = 0;      % Sampling per time unit for 5D arrays
-SPSCP   = 0;      % Sampling per time unit for checkpoints
+SPS2D   = -1;      % Sampling per time unit for 2D arrays
+SPS5D   = -1;      % Sampling per time unit for 5D arrays
+SPSCP   = -1;      % Sampling per time unit for checkpoints
 RESTART = 0;      % To restart from last checkpoint
 JOB2LOAD= 0;
 %% OPTIONS
-SIMID   = ['Scaling__np',num2str(CLUSTER.NTPN)];  % Name of the simulation
+SIMID   = ['Scaling_np',num2str(CLUSTER.NTPN)];  % Name of the simulation
 CO      = -2;  % Collision operator (0 : L.Bernstein, -1 : Full Coulomb, -2 : Dougherty)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/wk/setup.m b/wk/setup.m
index b376b7a4..a01bd4dd 100644
--- a/wk/setup.m
+++ b/wk/setup.m
@@ -77,7 +77,7 @@ BASIC.maxruntime = str2num(CLUSTER.TIME(1:2))*3600 ...
 % Outputs parameters
 if RESTART; BASIC.RESTART = '.true.'; else; BASIC.RESTART = '.false.';end;
 OUTPUTS.nsave_0d = floor(1.0/SPS0D/DT);
-OUTPUTS.nsave_1d = 0;
+OUTPUTS.nsave_1d = -1;
 OUTPUTS.nsave_2d = floor(1.0/SPS2D/DT);
 OUTPUTS.nsave_5d = floor(1.0/SPS5D/DT);
 OUTPUTS.nsave_cp = floor(1.0/SPSCP/DT);
-- 
GitLab