diff --git a/src/MNH/condensation.f90 b/src/MNH/condensation.f90
index 0afa5265f161fd4c479ee1c3e0b77bbdf04089a2..3e1e76a5c3770f9434173603bc3f4abb9f48b093 100644
--- a/src/MNH/condensation.f90
+++ b/src/MNH/condensation.f90
@@ -143,7 +143,7 @@ USE MODE_MPPDB
 use mode_msg
 !
 USE MODI_COMPUTE_FRAC_ICE
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
 !
@@ -505,7 +505,7 @@ END DO
 DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
       ! latent heats
       ! saturated water vapor mixing ratio over liquid water
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZPVP(JI,JJ,JK)    = MIN(EXP( XALPW - XBETAW / PT(JI,JJ,JK) - XGAMW * LOG( PT(JI,JJ,JK) ) ), .99*PPABS(JI,JJ,JK))
 #else
       ZPVP(JI,JJ,JK)    = MIN(BR_EXP( XALPW - XBETAW / PT(JI,JJ,JK) - XGAMW * BR_LOG( PT(JI,JJ,JK) ) ), .99*PPABS(JI,JJ,JK))
@@ -513,7 +513,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
       ZQSLP(JI,JJ,JK)   = XRD / XRV * ZPVP(JI,JJ,JK) / ( PPABS(JI,JJ,JK) - ZPVP(JI,JJ,JK) )
 
       ! saturated water vapor mixing ratio over ice
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZPIVP(JI,JJ,JK)   = MIN(EXP( XALPI - XBETAI / PT(JI,JJ,JK) - XGAMI * LOG( PT(JI,JJ,JK) ) ), .99*PPABS(JI,JJ,JK))
 #else
       ZPIVP(JI,JJ,JK)   = MIN(BR_EXP( XALPI - XBETAI / PT(JI,JJ,JK) - XGAMI * BR_LOG( PT(JI,JJ,JK) ) ), .99*PPABS(JI,JJ,JK))
@@ -526,7 +526,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
              & ZFRAC(JI,JJ,JK)      * ZLS(JI,JJ,JK)
 
       ! coefficients a and b
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZAHP(JI,JJ,JK)  = ZLVSP(JI,JJ,JK) * ZQSLP(JI,JJ,JK) / ( XRV * PT(JI,JJ,JK)**2 ) * (XRV * ZQSLP(JI,JJ,JK) / XRD + 1.)
 #else
       ZAHP(JI,JJ,JK)  = ZLVSP(JI,JJ,JK) * ZQSLP(JI,JJ,JK) / ( XRV * BR_P2(PT(JI,JJ,JK)) ) * (XRV * ZQSLP(JI,JJ,JK) / XRD + 1.)
@@ -541,7 +541,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
       ! or that of Meso-NH turbulence scheme
       IF ( OSIGMAS ) THEN
         IF (PSIGQSAT/=0.) THEN
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
           ZSIGMAP(JI,JJ,JK) = SQRT((2*PSIGS(JI,JJ,JK))**2 + (PSIGQSAT*ZQSLP(JI,JJ,JK)*ZAP(JI,JJ,JK))**2)
 #else
           ZSIGMAP(JI,JJ,JK) = BR_POW(BR_P2(2*PSIGS(JI,JJ,JK)) + BR_P2(PSIGQSAT*ZQSLP(JI,JJ,JK)*ZAP(JI,JJ,JK)) , 0.5)
@@ -630,7 +630,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
 
       ELSEIF(HCONDENS == 'CB02')THEN
         !Cloud fraction
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
         PCLDFR(JI,JJ,JK) = MAX( 0., MIN(1.,0.5+0.36*ATAN(1.55*ZQ1P(JI,JJ,JK))) )
 #else
         PCLDFR(JI,JJ,JK) = MAX( 0., MIN(1.,0.5+0.36*BR_ATAN(1.55*ZQ1P(JI,JJ,JK))) )
@@ -638,7 +638,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
 
         !Total condensate
         IF (ZQ1P(JI,JJ,JK) > 0. .AND. ZQ1P(JI,JJ,JK) <= 2 ) THEN
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
           ZCONDP(JI,JJ,JK) = MIN(EXP(-1.)+.66*ZQ1P(JI,JJ,JK)+.086*ZQ1P(JI,JJ,JK)**2, 2.) ! We use the MIN function for continuity
 #else
           ZCONDP(JI,JJ,JK) = MIN(BR_EXP(-1.)+.66*ZQ1P(JI,JJ,JK)+.086*BR_P2(ZQ1P(JI,JJ,JK)), 2.) ! We use the MIN function for continuity
@@ -646,7 +646,7 @@ DO CONCURRENT (JI=KIB:KIE,JJ=KJB:KJE,JK=IKTB:IKTE)
         ELSE IF (ZQ1P(JI,JJ,JK) > 2.) THEN
           ZCONDP(JI,JJ,JK) = ZQ1P(JI,JJ,JK)
         ELSE
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
           ZCONDP(JI,JJ,JK) = EXP( 1.2*ZQ1P(JI,JJ,JK)-1. )
 #else
           ZCONDP(JI,JJ,JK) = BR_EXP( 1.2*ZQ1P(JI,JJ,JK)-1. )
diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90
index dd8f5ccb6823c8d0024f7e35af8f4827b2057568..dcb3637c48910695940d1662c782cff603626661 100644
--- a/src/MNH/rain_ice.f90
+++ b/src/MNH/rain_ice.f90
@@ -250,7 +250,7 @@ use mode_tools,                        only: Countjv_device
 #endif
 use mode_tools_ll,                     only: GET_INDICE_ll
 
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
 USE MODI_ICE4_RAINFR_VERT
@@ -768,7 +768,7 @@ IF( IMICRO >= 0 ) THEN
      ZLVFACT(JL) = (XLVTT+(XCPV-XCL)*(ZZT(JL)-XTT))/ZZW(JL) ! L_v/(Pi_ref*C_ph)
   END DO
   
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   !$acc loop independent
   DO CONCURRENT ( JL=1:IMICRO )
      ZZW(JL) = EXP( XALPI - XBETAI/ZZT(JL) - XGAMI*LOG(ZZT(JL) ) )
@@ -1037,7 +1037,7 @@ IF( IMICRO >= 0 ) THEN
 !
 !$acc kernels
   !ZLBDAR will be used when we consider rain diluted over the grid box
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)  
 !$acc loop independent
   DO CONCURRENT ( JL=1:IMICRO )
     IF ( ZRRT(JL)>0.0 ) THEN
diff --git a/src/MNH/rain_ice_nucleation.f90 b/src/MNH/rain_ice_nucleation.f90
index 9b411edbfb81f6b2377f6549ac2ccc2e5744ffe8..c44d51d60bdbf4eb4c34e1abbc66346917140739 100644
--- a/src/MNH/rain_ice_nucleation.f90
+++ b/src/MNH/rain_ice_nucleation.f90
@@ -41,7 +41,7 @@ use mode_tools,           only: Countjv
 use mode_tools,           only: Countjv_device
 #endif
 
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 use modi_bitrep
 #endif
 
@@ -162,7 +162,7 @@ if ( lbudget_ri ) call Budget_store_init( tbudgets(NBUDGET_RI), 'HENU', pris(:,
 !  compute the temperature and the pressure
 !
 !$acc kernels
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
 PT(:,:,:) = PTHT(:,:,:) * ( PPABST(:,:,:) / XP00 ) ** ( XRD / XCPD )
 #else
 #ifdef MNH_COMPILER_NVHPC
@@ -216,7 +216,7 @@ IF( INEGT >= 1 ) THEN
     ZZT(JL)   = PT    (I1(JL),I2(JL),I3(JL))
     ZPRES(JL) = PPABST(I1(JL),I2(JL),I3(JL))
   ENDDO
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   !$acc loop independent
   DO CONCURRENT ( JL=1:INEGT )
     ZZW(JL) = EXP( XALPI - XBETAI/ZZT(JL) - XGAMI*LOG(ZZT(JL) ) )      ! es_i
@@ -233,7 +233,7 @@ IF( INEGT >= 1 ) THEN
     ZSSI(JL) = ZRVT(JL)*( ZPRES(JL)-ZZW(JL) ) / ( (XMV/XMD) * ZZW(JL) ) - 1.0
                          ! Supersaturation over ice
   END DO
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   !$acc loop independent
   DO CONCURRENT ( JL=1:INEGT )
     ZUSW(JL) = EXP( XALPW - XBETAW/ZZT(JL) - XGAMW*LOG(ZZT(JL) ) )     ! es_w
@@ -260,14 +260,14 @@ DO CONCURRENT ( JL=1:INEGT )
   ZZW(JL) = 0.0
   ZSSI(JL) = MIN( ZSSI(JL), ZUSW(JL) ) ! limitation of SSi according to SSw=0
   IF ( (ZZT(JL)<XTT-5.0) .AND. (ZSSI(JL)>0.0) ) THEN
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
     ZZW(JL) = XNU20 * EXP( XALPHA2*ZSSI(JL)-XBETA2 )
 #else
     ZZW(JL) = XNU20 * BR_EXP( XALPHA2*ZSSI(JL)-XBETA2 )
 #endif
  END IF
 END DO
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
  !$acc loop independent
  DO CONCURRENT ( JL=1:INEGT )
     IF ( (ZZT(JL)<=XTT-2.0) .AND. (ZZT(JL)>=XTT-5.0) .AND. (ZSSI(JL)>0.0) ) THEN
diff --git a/src/MNH/rain_ice_sedimentation_split.f90 b/src/MNH/rain_ice_sedimentation_split.f90
index 9e9f29c71a43446517645a4bdd0e6b175c6dc69a..b5171424242035e8f71a0b0abfbda98933ebd4df 100644
--- a/src/MNH/rain_ice_sedimentation_split.f90
+++ b/src/MNH/rain_ice_sedimentation_split.f90
@@ -47,7 +47,7 @@ use mode_tools,           only: Countjv
 use mode_tools,           only: Countjv_device
 #endif
 
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
 
@@ -492,20 +492,20 @@ DO JN = 1 , KSPLITR
 ! #else
 !          ZWLBDC = BR_POW(ZWLBDC,XLBEXC)
 ! #endif
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
         ZWLBDC = (ZWLBDC * ZCONC / (ZRHODREFLOC * ZRTLOC))**XLBEXC
 #else
         ZWLBDC = BR_POW(ZWLBDC * ZCONC / (ZRHODREFLOC * ZRTLOC),XLBEXC)
 #endif
         ZRAY1D = ZRAY1D / ZWLBDC !! ZRAY : mean diameter=M(1)/2
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
         ZZT    = ZZT * (ZPRES/XP00)**(XRD/XCPD)
 #else
         ZZT    = ZZT * BR_POW(ZPRES/XP00,XRD/XCPD)
 #endif
         ZWLBDA = 6.6E-8*(101325./ZPRES)*(ZZT/293.15)
         ZCC    = XCC*(1.+1.26*ZWLBDA/ZRAY1D) !! XCC modified for cloud
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
         ZWSED (IC1(JL),IC2(JL),IC3(JL)) = ZRHODREFLOC**(-XCEXVT +1 )           &
                                           * ZWLBDC**(-XDC)*ZCC*ZFSEDC1D * ZRSLOC
 #else
@@ -538,7 +538,7 @@ DO JN = 1 , KSPLITR
     IF( ZRSLOC > ZRTMIN(3) ) THEN
       ZRHODREFLOC =  PRHODREF(IR1(JL),IR2(JL),IR3(JL))
 
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZWSED (IR1(JL),IR2(JL),IR3(JL))= XFSEDR  * ZRSLOC**XEXSEDR *   &
                                        ZRHODREFLOC**(XEXSEDR-XCEXVT)
 #else
@@ -570,7 +570,7 @@ DO JN = 1 , KSPLITR
     ZRSLOC = PRIS(II1(JL),II2(JL),II3(JL))
     IF( ZRSLOC >  MAX(ZRTMIN(4),1.0E-7 )) THEN ! limitation of the McF&H formula
       ZRHODREFLOC =  PRHODREF(II1(JL),II2(JL),II3(JL))
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZWSED (II1(JL),II2(JL),II3(JL)) = XFSEDI * ZRSLOC *                  &
                                         ZRHODREFLOC**(1.0-XCEXVT) *        & !    McF&H
                                         MAX( 0.05E6,-0.15319E6-0.021454E6* &
@@ -604,7 +604,7 @@ DO JN = 1 , KSPLITR
     ZRSLOC = PRSS(IS1(JL),IS2(JL),IS3(JL))
     IF( ZRSLOC > ZRTMIN(5) ) THEN
       ZRHODREFLOC =  PRHODREF(IS1(JL),IS2(JL),IS3(JL))
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZWSED (IS1(JL),IS2(JL),IS3(JL)) = XFSEDS * ZRSLOC**XEXSEDS *  &
                                         ZRHODREFLOC**(XEXSEDS-XCEXVT)
 #else
@@ -635,7 +635,7 @@ DO JN = 1 , KSPLITR
     ZRSLOC = PRGS(IG1(JL),IG2(JL),IG3(JL))
     IF( ZRSLOC > ZRTMIN(6) ) THEN
       ZRHODREFLOC =  PRHODREF(IG1(JL),IG2(JL),IG3(JL))
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
       ZWSED (IG1(JL),IG2(JL),IG3(JL)) = XFSEDG  * ZRSLOC**XEXSEDG *   &
                                         ZRHODREFLOC**(XEXSEDG-XCEXVT)
 #else
@@ -667,7 +667,7 @@ DO JN = 1 , KSPLITR
       ZRSLOC = PRHS(IH1(JL),IH2(JL),IH3(JL))
       IF( ZRSLOC > ZRTMIN(7) ) THEN
         ZRHODREFLOC =  PRHODREF(IH1(JL),IH2(JL),IH3(JL))
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
         ZWSED (IH1(JL),IH2(JL),IH3(JL)) = XFSEDH  * ZRSLOC**XEXSEDH *   &
                                          ZRHODREFLOC**(XEXSEDH-XCEXVT)
 #else
diff --git a/src/MNH/rain_ice_slow.f90 b/src/MNH/rain_ice_slow.f90
index 64fc0840ebade6840d108fd92d91b01961131aa3..22818930dc457e29007062f431f16f1dd62c456b 100644
--- a/src/MNH/rain_ice_slow.f90
+++ b/src/MNH/rain_ice_slow.f90
@@ -39,8 +39,7 @@ use mode_budget,         only: Budget_store_add
 USE MODE_MNH_ZWORK,      ONLY: MNH_MEM_GET, MNH_MEM_POSITION_PIN, MNH_MEM_RELEASE
 #endif
 use mode_mppdb
-
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
 
@@ -156,17 +155,19 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
 
   ZZW(:) = 0.0
   GWORK(:) = PZT(:)<XTT-35.0 .AND. PRCT(:)>XRTMIN(2) .AND. PRCS(:)>0.
-  WHERE( GWORK(:) )
-    ZZW(:) = MIN( PRCS(:),XHON*PRHODREF(:)*PRCT(:)       &
-#ifndef MNH_BITREP
-                                 *EXP( MIN(XMNH_HUGE_12_LOG,XALPHA3*(PZT(:)-XTT)-XBETA3) ) )
+  DO CONCURRENT ( JL=1:JLU )
+  IF ( GWORK(JL) ) THEN
+    ZZW(JL) = MIN( PRCS(JL),XHON*PRHODREF(JL)*PRCT(JL)       &
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
+                                 *EXP( MIN(XMNH_HUGE_12_LOG,XALPHA3*(PZT(JL)-XTT)-XBETA3) ) )
 #else
-                                 *BR_EXP(MIN(XMNH_HUGE_12_LOG, XALPHA3*(PZT(:)-XTT)-XBETA3) ) )
+                                 *BR_EXP(MIN(XMNH_HUGE_12_LOG, XALPHA3*(PZT(JL)-XTT)-XBETA3) ) )
 #endif
-    PRIS(:) = PRIS(:) + ZZW(:)
-    PRCS(:) = PRCS(:) - ZZW(:)
-    PTHS(:) = PTHS(:) + ZZW(:) * zz_diff(:) ! f(L_f*(RCHONI))
-  ENDWHERE
+    PRIS(JL) = PRIS(JL) + ZZW(JL)
+    PRCS(JL) = PRCS(JL) - ZZW(JL)
+    PTHS(JL) = PTHS(JL) + ZZW(JL) * zz_diff(JL) ! f(L_f*(RCHONI))
+  END IF
+ENDDO
 !$acc end kernels
 
   if ( lbudget_th ) call Budget_store_add( tbudgets(NBUDGET_TH), 'HON', &
@@ -200,26 +201,29 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
 !
 !$acc kernels
   PKA(:) = 2.38E-2 + 0.0071E-2 * ( PZT(:) - XTT )          ! k_a
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   PDV(:) = 0.211E-4 * (PZT(:)/XTT)**1.94 * (XP00/PPRES(:)) ! D_v
 #else
-  PDV(:) = 0.211E-4 * BR_POW(PZT(:)/XTT,1.94) * (XP00/PPRES(:)) ! D_v
+DO CONCURRENT ( JL=1:JLU )
+   PDV(JL) = 0.211E-4 * BR_POW(PZT(JL)/XTT,1.94) * (XP00/PPRES(JL)) ! D_v
+END DO   
 #endif
 !
 !*       3.4.1  compute the thermodynamical function A_i(T,P)
 !*              and the c^prime_j (in the ventilation factor)
 !
-
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   PAI(:) = EXP( XALPI - XBETAI/PZT(:) - XGAMI*ALOG(PZT(:) ) ) ! es_i
   PAI(:) = ( XLSTT + (XCPV-XCI)*(PZT(:)-XTT) )**2 / (PKA(:)*XRV*PZT(:)**2) &
                                  + ( XRV*PZT(:) ) / (PDV(:)*PAI(:))
   PCJ(:) = XSCFAC * PRHODREF(:)**0.3 / SQRT( 1.718E-5+0.0049E-5*(PZT(:)-XTT) )
 #else
-  PAI(:) = BR_EXP( XALPI - XBETAI/PZT(:) - XGAMI*BR_LOG(PZT(:) ) ) ! es_i
-  PAI(:) = BR_P2( XLSTT + (XCPV-XCI)*(PZT(:)-XTT) ) / (PKA(:)*XRV*BR_P2(PZT(:))) &
-                                 + ( XRV*PZT(:) ) / (PDV(:)*PAI(:))
-  PCJ(:) = XSCFAC * BR_POW(PRHODREF(:),0.3) / BR_POW( 1.718E-5+0.0049E-5*(PZT(:)-XTT) , 0.5)
+DO CONCURRENT ( JL=1:JLU )
+  PAI(JL) = BR_EXP( XALPI - XBETAI/PZT(JL) - XGAMI*BR_LOG(PZT(JL) ) ) ! es_i
+  PAI(JL) = BR_P2( XLSTT + (XCPV-XCI)*(PZT(JL)-XTT) ) / (PKA(JL)*XRV*BR_P2(PZT(JL))) &
+                                 + ( XRV*PZT(JL) ) / (PDV(JL)*PAI(JL))
+  PCJ(JL) = XSCFAC * BR_POW(PRHODREF(JL),0.3) / BR_POW( 1.718E-5+0.0049E-5*(PZT(JL)-XTT) , 0.5)
+END DO
 #endif
 !
 !*       3.4.2  compute the riming-conversion of r_c for r_i production: RCAUTI
@@ -240,7 +244,7 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
   DO CONCURRENT ( JL=1:JLU )
     IF ( GWORK(JL) ) THEN
       PLBDAS(JL)  = MIN( XLBDAS_MAX,                                           &
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
                          XLBS*( PRHODREF(JL)*MAX( PRST(JL),XRTMIN(5) ) )**XLBEXS )
 #else
                          XLBS*BR_POW( PRHODREF(JL)*MAX( PRST(JL),XRTMIN(5) ),XLBEXS ) )
@@ -255,7 +259,7 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
  DO CONCURRENT ( JL=1:JLU )
     IF ( GWORK(JL) ) THEN
        ZZW(JL) = ( PSSI(JL)/(PRHODREF(JL)*PAI(JL)) ) *                               &
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
             ( X0DEPS*PLBDAS(JL)**XEX0DEPS + X1DEPS*PCJ(JL)*PLBDAS(JL)**XEX1DEPS )
 #else
             ( X0DEPS*BR_POW(PLBDAS(JL),XEX0DEPS) + X1DEPS*PCJ(JL)*BR_POW(PLBDAS(JL),XEX1DEPS) )
@@ -284,7 +288,7 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
   !$acc loop independent
   DO CONCURRENT ( JL=1:JLU )
     IF ( GWORK(JL) ) THEN
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)  
       ZZW(JL) = MIN( PRIS(JL),XFIAGGS * EXP( XCOLEXIS*(PZT(JL)-XTT) ) &
                                       * PRIT(JL)                      &
                                       * PLBDAS(JL)**XEXIAGGS          &
@@ -309,24 +313,29 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
 !*       3.4.5  compute the autoconversion of r_i for r_s production: RIAUTS
 !
 !$acc kernels
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
   ZCRIAUTI(:)=MIN(XCRIAUTI,10**(XACRIAUTI*(PZT(:)-XTT)+XBCRIAUTI))
 #else
-  ZCRIAUTI(:)=MIN(XCRIAUTI, BR_POW(10.,XACRIAUTI*(PZT(:)-XTT)+XBCRIAUTI) )
+DO CONCURRENT ( JL=1:JLU )
+  ZCRIAUTI(JL)=MIN(XCRIAUTI, BR_POW(10.,XACRIAUTI*(PZT(JL)-XTT)+XBCRIAUTI) )
+END DO
 #endif
   ZZW(:) = 0.0
   GWORK(:) = PRIT(:)>XRTMIN(4) .AND. PRIS(:)>0.0
-  WHERE ( GWORK(:) )
-#ifndef MNH_BITREP
-    ZZW(:) = MIN( PRIS(:),XTIMAUTI * EXP( XTEXAUTI*(PZT(:)-XTT) ) &
-                            * MAX( PRIT(:)-ZCRIAUTI(:),0.0 ) )
+DO CONCURRENT ( JL=1:JLU )
+  IF ( GWORK(JL) ) THEN
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
+    ZZW(JL) = MIN( PRIS(JL),XTIMAUTI * EXP( XTEXAUTI*(PZT(JL)-XTT) ) &
+                            * MAX( PRIT(JL)-ZCRIAUTI(JL),0.0 ) )
 #else
-    ZZW(:) = MIN( PRIS(:),XTIMAUTI * BR_EXP( XTEXAUTI*(PZT(:)-XTT) ) &
-                            * MAX( PRIT(:)-ZCRIAUTI(:),0.0 ) )
+    ZZW(JL) = MIN( PRIS(JL),XTIMAUTI * BR_EXP( XTEXAUTI*(PZT(JL)-XTT) ) &
+                            * MAX( PRIT(JL)-ZCRIAUTI(JL),0.0 ) )
 #endif
-    PRSS(:)  = PRSS(:)  + ZZW(:)
-    PRIS(:)  = PRIS(:)  - ZZW(:)
-  END WHERE
+    PRSS(JL)  = PRSS(JL)  + ZZW(JL)
+    PRIS(JL)  = PRIS(JL)  - ZZW(JL)
+  !!END WHERE
+  END IF
+END DO
 !$acc end kernels
 
   if ( lbudget_ri ) call Budget_store_add( tbudgets(NBUDGET_RI), 'AUTS', &
@@ -342,7 +351,7 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
   !$acc loop independent
   DO CONCURRENT ( JL=1:JLU )
     IF ( GWORK(JL) ) THEN
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)  
       PLBDAG(JL)  = XLBG*( PRHODREF(JL)*MAX( PRGT(JL),XRTMIN(6) ) )**XLBEXG
 #else
       PLBDAG(JL)  = XLBG*BR_POW( PRHODREF(JL)*MAX( PRGT(JL),XRTMIN(6) ), XLBEXG)
@@ -357,7 +366,7 @@ CALL MNH_MEM_GET( zz_diff,  SIZE(PLSFACT) )
   DO CONCURRENT ( JL=1:JLU )
     IF ( GWORK(JL) ) THEN
       ZZW(JL) = ( PSSI(JL)/(PRHODREF(JL)*PAI(JL)) ) *                               &
-#ifndef MNH_BITREP  
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
                 ( X0DEPG*PLBDAG(JL)**XEX0DEPG + X1DEPG*PCJ(JL)*PLBDAG(JL)**XEX1DEPG )
 #else
                 ( X0DEPG*BR_POW(PLBDAG(JL),XEX0DEPG) + X1DEPG*PCJ(JL)*BR_POW(PLBDAG(JL),XEX1DEPG) )
diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90
index 0012f0876dad025ead30e4b3f7b258e85c71b554..d97d37e34e96bd120540e036f94b25a615217375 100644
--- a/src/MNH/resolved_cloud.f90
+++ b/src/MNH/resolved_cloud.f90
@@ -314,7 +314,7 @@ USE MODE_MSG
 use mode_sources_neg_correct, only: Sources_neg_correct
 use mode_sum_ll,         only: MIN_ll, SUM3D_ll
 !
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 USE MODI_BITREP
 #endif
 !
@@ -922,10 +922,12 @@ CALL PRINT_MSG(NVERB_FATAL,'GEN','RESOLVED_CLOUD','C2R2//KHKO not yet implemente
 !               -----------------------------------------------------
 !
 !$acc kernels
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
 #else
-    ZEXN(:,:,:)= BR_POW( PPABST(:,:,:)/XP00, XRD/XCPD )
+DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU )
+    ZEXN(JI,JJ,JK)= BR_POW( PPABST(JI,JJ,JK)/XP00, XRD/XCPD )
+ENDDO
 #endif
 !$acc end kernels
 !
@@ -1041,10 +1043,12 @@ CALL PRINT_MSG(NVERB_FATAL,'GEN','RESOLVED_CLOUD','ICE4 not yet implemented')
 !               -----------------------------------------------------
 !
 !$acc kernels
-#ifndef MNH_BITREP
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
     ZEXN(:,:,:)= (PPABST(:,:,:)/XP00)**(XRD/XCPD)
 #else
-    ZEXN(:,:,:)= BR_POW( PPABST(:,:,:)/XP00, XRD/XCPD )
+ DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU )
+    ZEXN(JI,JJ,JK)= BR_POW( PPABST(JI,JJ,JK)/XP00, XRD/XCPD )
+ ENDDO
 #endif
 !$acc end kernels
 !
diff --git a/src/MNH/sources_neg_correct.f90 b/src/MNH/sources_neg_correct.f90
index 5602b75ccf615817e299c332cf382beb9053c7f6..d27079dd00da2092e883ce0ba6d696d80beec495 100644
--- a/src/MNH/sources_neg_correct.f90
+++ b/src/MNH/sources_neg_correct.f90
@@ -38,7 +38,7 @@ use mode_mnh_zwork,  only: Mnh_mem_get, Mnh_mem_position_pin, Mnh_mem_release
 use mode_mppdb
 use mode_msg
 
-#ifdef MNH_BITREP
+#if defined(MNH_BITREP) || defined(MNH_BITREP_OMP)
 use modi_bitrep
 #endif
 
@@ -242,13 +242,19 @@ end if
 
 
 !$acc data present( zt, zexn, zlv, zcph, zls, zcor )
-
+#if !defined(MNH_BITREP) && !defined(MNH_BITREP_OMP)
 !$acc kernels present_cr(zexn,zt,zlv)
-#ifndef MNH_BITREP
 zexn(:, :, :) = ( ppabst(:, :, :) / xp00 ) ** (xrd / xcpd )
+!$acc end kernels
 #else
-zexn(:, :, :) = Br_pow( ppabst(:, :, :) / xp00,  xrd / xcpd )
+!$acc kernels
+!$acc_nv loop collapse(3)
+DO CONCURRENT(ji=1:jiu, jj=1:jju, jk=1:jku )
+zexn(ji,jj,jk) = Br_pow( ppabst(ji,jj,jk) / xp00,  xrd / xcpd )
+ENDDO
+!$acc end kernels
 #endif
+!$acc kernels present_cr(zexn,zt,zlv)
 zt  (:, :, :) = ptht(:, :, :) * zexn(:, :, :)
 zlv (:, :, :) = xlvtt + ( xcpv - xcl ) * ( zt(:, :, :) - xtt )
 !$acc end kernels