diff --git a/src/MNH/eol_maths.f90 b/src/MNH/eol_maths.f90
index add257889074a24047254725c99e1b17bba151c6..13348a46ddcb2f674b716da29cfeecd5e2776a83 100644
--- a/src/MNH/eol_maths.f90
+++ b/src/MNH/eol_maths.f90
@@ -26,6 +26,8 @@
        MODULE MODI_EOL_MATHS
 !     #######################
 !
+IMPLICIT NONE
+
 INTERFACE
 !
 FUNCTION CROSS(PA, PB)
@@ -99,6 +101,8 @@ END MODULE MODI_EOL_MATHS
 !#########################################################
 FUNCTION CROSS(PA, PB)
 ! Vectorial product 3D : PA * PB
+!
+        IMPLICIT NONE
 !
         REAL, DIMENSION(3) :: CROSS
         REAL, DIMENSION(3), INTENT(IN) :: PA, PB
@@ -113,6 +117,8 @@ END FUNCTION CROSS
 !#########################################################
 FUNCTION NORM(PA)
 ! Eulerian norm of 3D vector : 
+!
+        IMPLICIT NONE
 !
         REAL                           :: NORM
         REAL, DIMENSION(3), INTENT(IN) :: PA
@@ -125,6 +131,8 @@ END FUNCTION NORM
 !#########################################################
 SUBROUTINE GET_ORI_MAT_X(PTHETA, PORI_MAT_X)
 ! Rotation matrix of PTHETA angle around X
+!
+        IMPLICIT NONE
 !
         REAL, INTENT(IN)                   :: PTHETA      ! Angle
         REAL, DIMENSION(3,3), INTENT(OUT)  :: PORI_MAT_X  ! Matrix
@@ -145,6 +153,8 @@ END SUBROUTINE GET_ORI_MAT_X
 !#########################################################
 SUBROUTINE GET_ORI_MAT_Y(PTHETA, PORI_MAT_Y)
 ! Rotation matrix of PTHETA angle around Y
+!
+        IMPLICIT NONE
 !
         REAL, INTENT(IN)                   :: PTHETA      ! Angle
         REAL, DIMENSION(3,3), INTENT(OUT)  :: PORI_MAT_Y  ! Matrix
@@ -165,6 +175,8 @@ END SUBROUTINE GET_ORI_MAT_Y
 !#########################################################
 SUBROUTINE GET_ORI_MAT_Z(PTHETA, PORI_MAT_Z)
 ! Rotation matrix of PTHETA angle around Z
+!
+        IMPLICIT NONE
 !
         REAL, INTENT(IN)                   :: PTHETA      ! Angle
         REAL, DIMENSION(3,3), INTENT(OUT)  :: PORI_MAT_Z  ! Matrix
@@ -185,6 +197,8 @@ END SUBROUTINE GET_ORI_MAT_Z
 !#########################################################
 FUNCTION GET_VEC_CYL(VEC_CART)
 ! Obtain cylindrical coordinates from a cartesian vector
+!
+        IMPLICIT NONE
 !
         REAL, DIMENSION(3), INTENT(IN)     :: VEC_CART    ! cartesian vector
         REAL, DIMENSION(3)                 :: GET_VEC_CYL     ! cylindrical vector
@@ -199,6 +213,8 @@ END FUNCTION GET_VEC_CYL
 !#########################################################
 FUNCTION GET_VEC_CART(VEC_CYL)
 ! Obtain cylindrical coordinates from a cartesian vector
+!
+        IMPLICIT NONE
 !
         REAL, DIMENSION(3), INTENT(IN)     :: VEC_CYL    ! cartesian vector
         REAL, DIMENSION(3)                 :: GET_VEC_CART     ! cylindrical vector
@@ -339,6 +355,8 @@ FUNCTION INTERP_LIN8NB(PPOS, KI, KJ, KK, PVAR, PZH)
 !
 USE MODD_GRID_n, ONLY: XDXHAT, XXHATM, XDYHAT, XYHATM
 !
+IMPLICIT NONE
+!
 REAL                               :: INTERP_LIN8NB  ! Return
 REAL, DIMENSION(3),     INTENT(IN) :: PPOS           ! Position where we want to evaluate
 INTEGER,                INTENT(IN) :: KI, KJ, KK     ! Meso-NH cell index
@@ -354,6 +372,8 @@ REAL     :: ZHXNN, ZHXNP, ZHXPP, ZHXPN    ! Interpotaled variables (VAR) in X pl
 !
 REAL     :: ZUXN, ZUXP                    ! Interpolated variables (VAR) in Y plance (VAR = A*POS + B)
 !
+REAL     :: ZHXN, ZHXP                    ! Interpolated variables (VAR) in Y plance (VAR = A*POS + B)
+!
 !
 REAL     :: ZALPHAX, ZALPHAY, ZALPHAZ     ! Interpolated variables (VAR) in Z plane (VAR = A*POS + B)
 
diff --git a/src/MNH/mnh_oasis_grid.F90 b/src/MNH/mnh_oasis_grid.F90
index 440ac2e7a3093ad88f084c9a46061d786cc9b3bc..f155f069450e85254c70abf4a208d831e17124bf 100644
--- a/src/MNH/mnh_oasis_grid.F90
+++ b/src/MNH/mnh_oasis_grid.F90
@@ -79,6 +79,8 @@ USE MODI_GET_FRAC_N
 USE MODE_GATHER_ll
 USE MODE_ll
 !
+IMPLICIT NONE
+!
 !*      0.1   Declarations of argument
 ! ------------------------------------------------
 LOGICAL, INTENT(IN) :: OD_MASTER                  ! MASTER process or not
@@ -96,6 +98,7 @@ CHARACTER(LEN=4),  PARAMETER  :: YSFX_SEA  = 'ssea'
 !*      0.2  Declaration of local variables
 ! ------------------------------------------------
 INTEGER :: JI, JJ ! loop index
+INTEGER :: IIB, IIE, IJB, IJE
 INTEGER :: IIU, IJU, ILU
 INTEGER :: IIU_ll, IJU_ll
 INTEGER :: IERROR
diff --git a/src/MNH/mode_tmat.f90 b/src/MNH/mode_tmat.f90
index 2196eefd4dd609d9067140fde2e272db9e4a262f..c9e2803a445db7700ea850502033d6155d527fef 100644
--- a/src/MNH/mode_tmat.f90
+++ b/src/MNH/mode_tmat.f90
@@ -3,18 +3,18 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-------------------------------------------------------------------------------
-!     algorithme initial cr�� par Michael Mishchenko (2000)
+!     algorithme initial cree par Michael Mishchenko (2000)
 !
-!     algorithme modifi� par Corinne Burlaud (2000) puis Olivier Brunau (2002)
-!     calcul des param�tres radar en fonction de la forme des gouttes, du taux
-!     de pluies, de l'�l�vation du radar, de l'oscillation des gouttes, 
-!     de la longueur d'onde �mise, pour une distribution de taille
-!     de goutte r�elle ou th�orique.
-!     l'essentiel des param�tres modifiables sont demand�s � l'utilisateur
+!     algorithme modifie par Corinne Burlaud (2000) puis Olivier Brunau (2002)
+!     calcul des parametres radar en fonction de la forme des gouttes, du taux
+!     de pluies, de l'elevation du radar, de l'oscillation des gouttes,
+!     de la longueur d'onde emise, pour une distribution de taille
+!     de goutte reelle ou theorique.
+!     l'essentiel des parametres modifiables sont demandes a l'utilisateur
 !     pendant l'execution du programme.
 !
-!     Modif par Olivier Caumont (04/2008) pour interfa�age avec diagnostic 
-!     radar de M�so-NH.
+!     Modif par Olivier Caumont (04/2008) pour interfacage avec diagnostic
+!     radar de Meso-NH.
 !  P. Wautelet 22/01/2019: replace double precision declarations by real(kind(0.0d0)) (to allow compilation by NAG compiler)
 !  P. Wautelet 22/02/2019: add kind parameter for CMPLX intrinsics (if not it default to single precision)
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
@@ -299,6 +299,7 @@
       use mode_msg
 
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
 
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1, NPN2=2*NPN1,&
 !!          NPN4=NPN1, NPN6=NPN4+1)
@@ -372,7 +373,7 @@
       P=ACOS(-1D0)             !calcul de pi!
       
 !****  Lecture du fichier de DSD**************************************       
-!*********************spectre th�orique**********************
+!*********************spectre theorique**********************
 !*     constante en m-3.mm-1
 !c      N0=8000D0
 !      
@@ -404,7 +405,7 @@
 !      
 !c      do echant=1,AB
 !c     Rmmh(echant)=0
-!*     initial diameter:Deq=0.1 millim�tre
+!*     initial diameter:Deq=0.1 millimetre
 !*     initial radius:AXI=Deq/2
 !         
 !c         AXI=0.05D0
@@ -412,7 +413,7 @@
 !c         NDeq(echant,1)=1
 !c         Deq_lu(echant,1)=Deq
 !c     print*,Deq_lu(echant,1)
-!c     calcul de zth�orique
+!c     calcul de ztheorique
 !c         Deq_lu2(echant,1)=Deq_lu(echant,1)**6
 !c         somm(echant)=somm(echant)+
 !c     &        (NDeq(echant,1)*Deq_lu2(echant,1))
@@ -437,7 +438,7 @@
 !      
 !
 !*****************************************************************
-!*****************d�but du fichier de sortie**********************
+!*****************debut du fichier de sortie**********************
           
       THET0=90D0-Elev
       do param=1,2
@@ -468,16 +469,16 @@
 !c???????
 !         
 !****************************************
-!*********debut de la boucle pour chaque diam�tre de goutte mesur�
-!*********32 diam�tres par echantillon r�el, 64 pour echantillon th�orique
+!*********debut de la boucle pour chaque diametre de goutte mesure
+!*********32 diametres par echantillon reel, 64 pour echantillon theorique
 !         
-!C     Diametre equivolumetrique en m�tre           
+!C     Diametre equivolumetrique en metre
 !c         Deq=Deq_lu(echant,1)*1D-3
 !            
 !         AXI=Deq/2
 !         
 !c         IF(PARF.EQ."PB70") THEN
-!c     d�termination de la forme de la goutte (Pruppacher & Beard, 1970)
+!c     determination de la forme de la goutte (Pruppacher & Beard, 1970)
 !c            if (gtte.EQ.2.AND.Deq.GE.5D-4) then               
 !c     oblate case
 !c               EPS=1./(1.03-62.*Deq)       
@@ -486,7 +487,7 @@
 !c               EPS=1.
 !c            ENDIF               
 !c         ELSE
-!c     d�termination de la forme de la goutte (Andsager et al., 1999)
+!c     determination de la forme de la goutte (Andsager et al., 1999)
 !c            if (gtte.EQ.2) then               
 !c     oblate case
 !c               if(Deq.ge.1.1E-3.and.Deq.le.4.4E-3) THEN
@@ -791,7 +792,7 @@
 !c     NDeq(echant,I)=NDeq(echant,I)*1D3
       
       if (param.EQ.1) then
-!c     calcul param�tres de propagation
+!c     calcul parametres de propagation
          
 !C     PHI0 restera toujours fixe
          PHI0=0D0
@@ -902,7 +903,7 @@
 !*************************************************
 
       elseif(param.EQ.2) then
-!c     calcul param�tres de retrodiffusion
+!c     calcul parametres de retrodiffusion
          
 !C     PHI0 restera toujours fixe
          PHI0=0D0
@@ -1174,6 +1175,7 @@
 !c      INCLUDE 'ampld.par.f'
 !!      Parameter (NPN1=200,NPN4=NPN1, NPN6=NPN4+1)
       IMPLICIT REAL(kind(0.0d0)) (A-B,D-H,O-Z), COMPLEX(kind(0.0d0)) (C)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) AL(3,2),AL1(3,2),AP(2,3),AP1(2,3),B(3,3),&
             R(2,2),R1(2,2),C(3,2),CA,CB,CT,CP,CTP,CPP,CT1,CP1,&
             CTP1,CPP1
@@ -1480,6 +1482,7 @@
       USE MODD_TMAT,   ONLY: NPN1,NPN4,NPN6
 !!      Parameter (NPN1=200,NPN4=NPN1, NPN6=NPN4+1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) DV1(NPN6), DV2(NPN6)
 
       DO N=1,NMAX
@@ -1553,6 +1556,7 @@
 
       USE MODD_TMAT,   ONLY: NPN1,NPNG1,NPNG2
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1)
       REAL(kind(0.0d0)) X(NPNG2),W(NPNG2),&
              S(NPNG2),SS(NPNG2),&
@@ -1595,6 +1599,7 @@
               
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0))  X(NPNG2),R(NPNG2),DR(NPNG2),MRR,MRI,LAM,&
              Z(NPNG2),ZR(NPNG2),ZI(NPNG2),&
              DDR(NPNG2),DRR(NPNG2),DRI(NPNG2)
@@ -1651,6 +1656,7 @@
  
       SUBROUTINE RSP1(X,NG,NGAUSS,REV,EPS,R,DR)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) X(NG),R(NG),DR(NG)
 
       A=REV*EPS**(1D0/3D0)
@@ -1681,6 +1687,7 @@
       USE MODD_TMAT,ONLY : XJ,XY,XJR,XJI,XDJ,XDY,XDJR,XDJI,NPN1,NPNG1,NPNG2
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) X(NG),XR(NG),XI(NG),&
 !!             J(NPNG2,NPN1),Y(NPNG2,NPN1),JR(NPNG2,NPN1),&
 !!             JI(NPNG2,NPN1),DJ(NPNG2,NPN1),DY(NPNG2,NPN1),&
@@ -1720,6 +1727,7 @@
  
       SUBROUTINE RJB(X,Y,U,NMAX,NNMAX)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) Y(NMAX),U(NMAX),Z(800)
 
       L=NMAX+NNMAX
@@ -1752,6 +1760,7 @@
  
       SUBROUTINE RYB(X,Y,V,NMAX)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) Y(NMAX),V(NMAX)
 
       C=COS(X)
@@ -1790,6 +1799,7 @@
       USE MODD_TMAT,ONLY:NPN1
 !!      Parameter (NPN1=200)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) YR(NMAX),YI(NMAX),UR(NMAX),UI(NMAX)
       REAL(kind(0.0d0)) CYR(NPN1),CYI(NPN1),CZR(1200),CZI(1200)
 
@@ -1872,6 +1882,7 @@
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1, NPN2=2*NPN1,&   
 !!          NPN4=NPN1,NPN6=NPN4+1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0))  X(NPNG2),W(NPNG2),AN(NPN1),&
              R(NPNG2),DR(NPNG2),SIG(NPN2),&
 !!             J(NPNG2,NPN1),Y(NPNG2,NPN1),&
@@ -2132,6 +2143,7 @@ DEALLOCATE(IG22)
 !!      Parameter (NPN1=200, NPNG1=600, NPNG2=2*NPNG1, NPN2=2*NPN1, & 
 !!           NPN4=NPN1, NPN6=NPN4+1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0))  X(NPNG2),W(NPNG2),AN(NPN1),S(NPNG2),SS(NPNG2),&
              R(NPNG2),DR(NPNG2),SIG(NPN2),&
 !!             J(NPNG2,NPN1),Y(NPNG2,NPN1),&
@@ -2461,6 +2473,7 @@ DEALLOCATE(IG22)
       USE MODD_TMAT, ONLY:NPN1
 !!      Parameter (NPN1=200)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) DV1(NPN1),DV2(NPN1)
  
       A=1D0
@@ -2526,6 +2539,7 @@ DEALLOCATE(IG22)
 
 !!      Parameter (NPN1=200, NPN2=2*NPN1)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) F(NPN2,NPN2),&
 !!            QR(NPN2,NPN2),QI(NPN2,NPN2),&
 !!            RGQR(NPN2,NPN2),RGQI(NPN2,NPN2),&
@@ -2610,6 +2624,7 @@ DEALLOCATE(IG22)
 
       USE MODD_TMAT,ONLY : NPN1,NPN2
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
 !!      Parameter (NPN1=200, NPN2=2*NPN1)
       REAL(kind(0.0d0))  A(NPN2,NPN2),F(NPN2,NPN2),B(NPN1),&
              WORK(NPN1),Q1(NPN1,NPN1),Q2(NPN1,NPN1),&
@@ -2666,6 +2681,7 @@ DEALLOCATE(IG22)
  
       SUBROUTINE INVERT(NDIM,N,A,X,COND,IPVT,WORK,B)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) A(NDIM,N),X(NDIM,N),WORK(N),B(N)
       INTEGER IPVT(N)
 
@@ -2696,6 +2712,7 @@ DEALLOCATE(IG22)
  
       SUBROUTINE DECOMP (NDIM,N,A,COND,IPVT,WORK)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) A(NDIM,N),COND,WORK(N)
       INTEGER IPVT(N)
 
@@ -2807,6 +2824,7 @@ DEALLOCATE(IG22)
  
       SUBROUTINE SOLVE (NDIM,N,A,B,IPVT)
       IMPLICIT REAL(kind(0.0d0)) (A-H,O-Z)
+      IMPLICIT INTEGER (I-N)
       REAL(kind(0.0d0)) A(NDIM,N),B(N)
       INTEGER IPVT(N)