From a46752ed663cc65f2a0cd1bf07a1df9b1696e177 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 26 Apr 2019 13:18:26 +0200
Subject: [PATCH] Philippe 26/04/2019: add MNHLOG and
 MNHLOG_MPI/MNHLOG32_MPI/MNHLOG64_MPI

---
 src/MNH/modd_precision.f90 | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/MNH/modd_precision.f90 b/src/MNH/modd_precision.f90
index e302e46b9..b7cec6c0e 100644
--- a/src/MNH/modd_precision.f90
+++ b/src/MNH/modd_precision.f90
@@ -8,6 +8,7 @@
 ! Modifications:
 !  P. Wautelet 22/03/2019: add MNHINT/REAL32/64_MPI, MNH2REAL32/64_MPI + more public parameters
 !  P. Wautelet 27/03/2019: add MNHTIME and MNHTIME_MPI
+!  P. Wautelet 26/04/2019: add MNHLOG and MNHLOG_MPI/MNHLOG32_MPI/MNHLOG64_MPI
 !-----------------------------------------------------------------
 module modd_precision
 
@@ -24,11 +25,12 @@ private
 public :: MNHINT32, MNHINT64, MNHREAL32, MNHREAL64, MNHREAL128
 
 public :: MNHINT32_MPI,   MNHINT64_MPI
+public :: MNHLOG32_MPI,   MNHLOG64_MPI
 public :: MNHREAL32_MPI,  MNHREAL64_MPI
 public :: MNH2REAL32_MPI, MNH2REAL64_MPI
 
-public :: MNHINT, MNHREAL
-public :: MNHINT_MPI, MNHREAL_MPI, MNH2REAL_MPI
+public :: MNHINT, MNHLOG, MNHREAL
+public :: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNH2REAL_MPI
 public :: MNHTIME, MNHTIME_MPI
 
 public :: LFIINT
@@ -37,10 +39,13 @@ public :: LFIINT
 public :: CDFINT, MNHINT_NF90, MNHREAL_NF90
 #endif
 
-
 integer, parameter :: MNHINT32 = selected_int_kind( r = 9 )
 integer, parameter :: MNHINT64 = selected_int_kind( r = 18 )
 
+! There is no standard way to define a 32 or 64-bit logical
+! Therefore, we define only the default MNHLOG type
+integer, parameter :: MNHLOG = kind( .true. )
+
 integer, parameter :: MNHREAL32  = selected_real_kind( p = 6,  r = 37 )
 integer, parameter :: MNHREAL64  = selected_real_kind( p = 15, r = 307 )
 integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 )
@@ -48,6 +53,9 @@ integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 )
 integer, parameter :: MNHINT32_MPI  = MPI_INTEGER4
 integer, parameter :: MNHINT64_MPI  = MPI_INTEGER8
 
+integer, parameter :: MNHLOG32_MPI  = MPI_LOGICAL4
+integer, parameter :: MNHLOG64_MPI  = MPI_LOGICAL8
+
 integer, parameter :: MNHREAL32_MPI  = MPI_REAL4
 integer, parameter :: MNHREAL64_MPI  = MPI_REAL8
 
@@ -56,12 +64,16 @@ integer, parameter :: MNH2REAL64_MPI  = MPI_2DOUBLE_PRECISION
 
 
 ! Kinds for MesoNH
+
+!For logicals, all compilers seem to set the same default size for INTEGER and LOGICAL
 #if ( MNH_INT == 4 )
 integer, parameter :: MNHINT     = MNHINT32
 integer, parameter :: MNHINT_MPI = MNHINT32_MPI
+integer, parameter :: MNHLOG_MPI = MNHLOG32_MPI
 #elif ( MNH_INT == 8 )
 integer, parameter :: MNHINT     = MNHINT64
 integer, parameter :: MNHINT_MPI = MNHINT64_MPI
+integer, parameter :: MNHLOG_MPI = MNHLOG64_MPI
 #else
 #error "Invalid MNH_INT"
 #endif
-- 
GitLab