From 0b08a4df87fdbd8d1f293bee0d1b3c3328189c6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Riette?= <sebastien.riette@meteo.fr>
Date: Tue, 12 Dec 2023 13:26:35 +0100
Subject: [PATCH] S. Riette 12 Dec 2023: call nucleation from a loop to have
 bit-reproducibility on NEC by changing number of threads

---
 src/common/micro/mode_ice4_tendencies.F90 | 10 ++++++----
 src/common/micro/rain_ice.F90             | 14 +++++++++-----
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/common/micro/mode_ice4_tendencies.F90 b/src/common/micro/mode_ice4_tendencies.F90
index 816170d7f..1c986d392 100644
--- a/src/common/micro/mode_ice4_tendencies.F90
+++ b/src/common/micro/mode_ice4_tendencies.F90
@@ -134,10 +134,12 @@ ELSE
   !
   !*       2.     COMPUTES THE SLOW COLD PROCESS SOURCES
   !               --------------------------------------
-  CALL ICE4_NUCLEATION(CST, PARAMI, ICEP, ICED, LDCOMPUTE(1:KSIZE), &
-                   ZVART(1:KSIZE,ITH), PPRES(1:KSIZE), PRHODREF(1:KSIZE), PEXN(1:KSIZE), PLSFACT(1:KSIZE), ZT(1:KSIZE), &
-                   ZVART(1:KSIZE,IRV), &
-                   PCIT(1:KSIZE), PBU_INST(1:KSIZE, IRVHENI_MR))
+  DO JL=1, KSIZE
+    CALL ICE4_NUCLEATION(CST, PARAMI, ICEP, ICED, LDCOMPUTE(JL), &
+                     ZVART(JL,ITH), PPRES(JL), PRHODREF(JL), PEXN(JL), PLSFACT(JL), ZT(JL), &
+                     ZVART(JL,IRV), &
+                     PCIT(JL), PBU_INST(JL, IRVHENI_MR))
+  ENDDO
   DO JL=1, KSIZE
     ZVART(JL,ITH)=ZVART(JL,ITH) + PBU_INST(JL, IRVHENI_MR)*PLSFACT(JL)
     ZT(JL) = ZVART(JL,ITH) * PEXN(JL)
diff --git a/src/common/micro/rain_ice.F90 b/src/common/micro/rain_ice.F90
index 92a9ed01e..ef288e454 100644
--- a/src/common/micro/rain_ice.F90
+++ b/src/common/micro/rain_ice.F90
@@ -417,11 +417,15 @@ DO JK=IKTB,IKTE
     ENDIF
   ENDDO
 ENDDO
-CALL ICE4_NUCLEATION(CST, PARAMI, ICEP, ICED, LLW3D(:,:), &
-                     PTHT(:, :), PPABST(:, :), PRHODREF(:, :), &                                       
-                     PEXN(:, :), ZW3D(:, :), ZT(:, :), &                                                           
-                     PRVT(:, :), &                                                                                 
-                     PCIT(:, :), ZZ_RVHENI(:, :))
+DO JK=IKTB,IKTE                                                                                                                     
+  DO JIJ=IIJB,IIJE
+    CALL ICE4_NUCLEATION(CST, PARAMI, ICEP, ICED, LLW3D(JIJ, JK), &
+                         PTHT(JIJ, JK), PPABST(JIJ, JK), PRHODREF(JIJ, JK), &                                       
+                         PEXN(JIJ, JK), ZW3D(JIJ, JK), ZT(JIJ, JK), &                                                           
+                         PRVT(JIJ, JK), &                                                                                 
+                         PCIT(JIJ, JK), ZZ_RVHENI(JIJ, JK))
+  ENDDO
+ENDDO
 DO JK = IKTB, IKTE
   DO JIJ=IIJB, IIJE
     ZZ_RVHENI(JIJ,JK) = MIN(PRVS(JIJ,JK), ZZ_RVHENI(JIJ,JK)/PTSTEP)
-- 
GitLab