From 337ae322de61f5a360306633d3b03b0849423ee6 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 28 Jun 2021 10:10:37 +0200
Subject: [PATCH] Philippe 28/06/2021: use newunit for file openings

---
 src/MNH/eol_kine_alm.f90   |  19 ++---
 src/MNH/eol_printer.f90    |   4 +-
 src/MNH/eol_reader.f90     | 139 +++++++++++++++++--------------------
 src/MNH/ibm_prep_ls.f90    |   6 +-
 src/MNH/ini_eol_adnr.f90   |   4 +-
 src/MNH/ini_eol_alm.f90    |   8 +--
 src/MNH/ini_stationn.f90   |   3 +-
 src/MNH/station_reader.f90 |  37 +++++-----
 8 files changed, 100 insertions(+), 120 deletions(-)

diff --git a/src/MNH/eol_kine_alm.f90 b/src/MNH/eol_kine_alm.f90
index e40757785..e3232fac5 100644
--- a/src/MNH/eol_kine_alm.f90
+++ b/src/MNH/eol_kine_alm.f90
@@ -92,6 +92,7 @@ REAL                             :: ZTIME                              ! TIME
 INTEGER                          :: JROT, JBLA, JTELT, JNELT, JBELT    ! Loop control
 INTEGER                          :: INB_WT, INB_B, INB_BELT            ! Total numbers
 INTEGER                          :: INB_TELT, INB_NELT                 ! Total numbers
+INTEGER                          :: ITECOUT                            ! Unit number for Tecplot file
 !
 !
 !---------------------------------------------------------------
@@ -111,7 +112,7 @@ ZTIME = TDTCUR%xtime+(KTSUBCOUNT)*PTSUBSTEP
 !
 !*       1.3 Tecplotfile : opening + headers
 IF (LTECOUTPTS) THEN
- CALL OPEN_TECOUT(45, KTCOUNT, KTSUBCOUNT)
+ CALL OPEN_TECOUT(ITECOUT, KTCOUNT, KTSUBCOUNT)
 END IF
 !
 !
@@ -153,7 +154,7 @@ DO JROT=1, INB_WT
 !* T.4 Print in tecplot file
  IF (LTECOUTPTS) THEN
   DO JTELT=1, INB_TELT
-   CALL PRINT_TECOUT(45, XPOS_TELT_RG(JROT,JTELT,:))
+   CALL PRINT_TECOUT(ITECOUT, XPOS_TELT_RG(JROT,JTELT,:))
   END DO
  END IF
 !
@@ -193,7 +194,7 @@ DO JROT=1, INB_WT
 !* N.4 Print in tecplot file
  IF (LTECOUTPTS) THEN
   DO JNELT=1, INB_NELT
-   CALL PRINT_TECOUT(45, XPOS_NELT_RG(JROT,JNELT,:))
+   CALL PRINT_TECOUT(ITECOUT, XPOS_NELT_RG(JROT,JNELT,:))
   END DO
  END IF
 !
@@ -223,7 +224,7 @@ DO JROT=1, INB_WT
 !
 !* H.4 Print in tecplot file
  IF (LTECOUTPTS) THEN
-  CALL PRINT_TECOUT(45, XPOS_HUB_RG(JROT,:))
+  CALL PRINT_TECOUT(ITECOUT, XPOS_HUB_RG(JROT,:))
  END IF
 !
 !
@@ -253,7 +254,7 @@ DO JROT=1, INB_WT
 !
 !* B.4 Print in tecplot file
   IF (LTECOUTPTS) THEN
-   CALL PRINT_TECOUT(45, XPOS_BLA_RG(JROT,JBLA,:))
+   CALL PRINT_TECOUT(ITECOUT, XPOS_BLA_RG(JROT,JBLA,:))
   END IF
 !
 !
@@ -295,7 +296,7 @@ DO JROT=1, INB_WT
 !
 !* E.4 Print in tecplot file
    IF (LTECOUTPTS) THEN
-    CALL PRINT_TECOUT(45, XPOS_ELT_RG(JROT,JBLA,JBELT,:))
+    CALL PRINT_TECOUT(ITECOUT, XPOS_ELT_RG(JROT,JBLA,JBELT,:))
    END IF
 !
 ! ---- Leading Edge and Trailing Edge ----
@@ -318,8 +319,8 @@ DO JROT=1, INB_WT
                        ZPOS_ELTTE_RE(:))
                                 
 !* LE.2 Print in tecplot file
-    CALL PRINT_TECOUT(45, ZPOS_ELTLE_RG(:))
-    CALL PRINT_TECOUT(45, ZPOS_ELTTE_RG(:))
+    CALL PRINT_TECOUT(ITECOUT, ZPOS_ELTLE_RG(:))
+    CALL PRINT_TECOUT(ITECOUT, ZPOS_ELTTE_RG(:))
    END IF
 !
 !
@@ -329,7 +330,7 @@ END DO ! Rotor loop
 !
 ! Closing tec file
 IF (LTECOUTPTS) THEN
- CLOSE(45)
+ CLOSE(ITECOUT)
 END IF
 !
 END SUBROUTINE EOL_KINE_ALM
diff --git a/src/MNH/eol_printer.f90 b/src/MNH/eol_printer.f90
index 16de8363c..b4fe72816 100644
--- a/src/MNH/eol_printer.f90
+++ b/src/MNH/eol_printer.f90
@@ -283,7 +283,7 @@ USE MODD_EOL_ALM, ONLY:TFARM,TTURBINE,TBLADE
 !
 IMPLICIT NONE
 !
-INTEGER, INTENT(IN)   :: KFILE      ! File index
+INTEGER, INTENT(OUT)  :: KFILE      ! File index
 INTEGER, INTENT(IN)   :: KTCOUNT    ! Time step index
 INTEGER, INTENT(IN)   :: KTSUBCOUNT ! Subtime step index
 !
@@ -304,7 +304,7 @@ ITOTELT = INB_WT*(INB_TELT+INB_NELT+INB_B*(1+INB_BELT*3))
 !
 ! File name and opening
 WRITE(HFILE, "(A18,I4.4,I2.2,A3)") "Tecplot2.0_Output_", KTCOUNT, KTSUBCOUNT,".tp"
-OPEN( KFILE, file=HFILE, form="FORMATTED")
+OPEN( NEWUNIT=KFILE, file=HFILE, form="FORMATTED")
 !
 ! Tecplot Header
 WRITE(KFILE,*) 'TITLE="Wind Turbines Points"'
diff --git a/src/MNH/eol_reader.f90 b/src/MNH/eol_reader.f90
index 78018d64f..829a1db63 100644
--- a/src/MNH/eol_reader.f90
+++ b/src/MNH/eol_reader.f90
@@ -11,47 +11,41 @@ INTERFACE
 !
 ! ADNR
 ! 
-SUBROUTINE READ_CSVDATA_FARM_ADNR(KLUNAM,HFILE,TPFARM)
+SUBROUTINE READ_CSVDATA_FARM_ADNR(HFILE,TPFARM)
         USE MODD_EOL_ADNR, ONLY: FARM
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(FARM),         INTENT(OUT) :: TPFARM       ! stored farm data
 END SUBROUTINE READ_CSVDATA_FARM_ADNR
 !
-SUBROUTINE READ_CSVDATA_TURBINE_ADNR(KLUNAM,HFILE,TPTURBINE)
+SUBROUTINE READ_CSVDATA_TURBINE_ADNR(HFILE,TPTURBINE)
         USE MODD_EOL_ADNR, ONLY : TURBINE
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(TURBINE),      INTENT(OUT) :: TPTURBINE    ! stored turbine data
 END SUBROUTINE READ_CSVDATA_TURBINE_ADNR
 !
 ! ALM
 !
-SUBROUTINE READ_CSVDATA_FARM_ALM(KLUNAM,HFILE,TPFARM)
+SUBROUTINE READ_CSVDATA_FARM_ALM(HFILE,TPFARM)
         USE MODD_EOL_ALM, ONLY: FARM
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(FARM),         INTENT(OUT) :: TPFARM       ! stored farm data
 END SUBROUTINE READ_CSVDATA_FARM_ALM
 !
-SUBROUTINE READ_CSVDATA_TURBINE_ALM(KLUNAM,HFILE,TPTURBINE)
+SUBROUTINE READ_CSVDATA_TURBINE_ALM(HFILE,TPTURBINE)
         USE MODD_EOL_ALM, ONLY : TURBINE
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(TURBINE),      INTENT(OUT) :: TPTURBINE    ! stored turbine data
 END SUBROUTINE READ_CSVDATA_TURBINE_ALM
 
-SUBROUTINE READ_CSVDATA_BLADE_ALM(KLUNAM,HFILE,TPTURBINE,TPBLADE)
+SUBROUTINE READ_CSVDATA_BLADE_ALM(HFILE,TPTURBINE,TPBLADE)
         USE MODD_EOL_ALM, ONLY : TURBINE, BLADE
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(TURBINE),      INTENT(IN)  :: TPTURBINE    ! stored turbine data
         TYPE(BLADE),        INTENT(OUT) :: TPBLADE      ! stored blade data
 END SUBROUTINE READ_CSVDATA_BLADE_ALM
 !
-SUBROUTINE READ_CSVDATA_AIRFOIL_ALM(KLUNAM,HFILE,TPBLADE,TPAIRFOIL)
+SUBROUTINE READ_CSVDATA_AIRFOIL_ALM(HFILE,TPBLADE,TPAIRFOIL)
         USE MODD_EOL_ALM, ONLY : BLADE, AIRFOIL
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(BLADE),        INTENT(IN)  :: TPBLADE      ! stored blade data (to select airfoils)
         TYPE(AIRFOIL), DIMENSION(:), ALLOCATABLE, INTENT(OUT) :: TPAIRFOIL  ! stored airfoil data
@@ -97,19 +91,19 @@ END MODULE MODI_EOL_READER
 !!---------------------------------------------------------------
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_FARM_ADNR(KLUNAM,HFILE,TPFARM)
+SUBROUTINE READ_CSVDATA_FARM_ADNR(HFILE,TPFARM)
 !        
 USE MODD_EOL_ADNR,  ONLY: FARM
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 !
 IMPLICIT NONE
 !
-INTEGER,            INTENT(IN)    :: KLUNAM     ! logical unit of the file
-CHARACTER(LEN=*),   INTENT(IN)    :: HFILE      ! file to read    
+CHARACTER(LEN=*),   INTENT(IN)    :: HFILE      ! file to read
 TYPE(FARM),         INTENT(OUT)   :: TPFARM     ! dummy stored data blade
 !
 LOGICAL                           :: GEXIST     ! Existence of file
 !
+INTEGER                           :: ILU        ! logical unit of the file
 INTEGER                           :: INBLINE    ! Nb of line in csv file
 !
 CHARACTER(LEN=400)                :: YSTRING   
@@ -126,12 +120,12 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Opening the file 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 ! Counting number of line  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
  IF (LEN_TRIM(YSTRING) > 0) THEN
   INBLINE = INBLINE + 1
  END IF
@@ -140,7 +134,6 @@ END DO
 101 CONTINUE
 IF (INBLINE < 2) THEN
  CALL EOL_CSVEMPTY_ERROR(HFILE,INBLINE)
- STOP
 ELSE
  ! Saving number of wind turbine 
  TPFARM%NNB_TURBINES = INBLINE - 1 
@@ -150,18 +143,18 @@ ELSE
  ALLOCATE(TPFARM%XCT_INF(TPFARM%NNB_TURBINES))
  !
  ! New read 
- REWIND(KLUNAM)
- READ(KLUNAM,FMT='(A400)') YSTRING ! Header reading 
+ REWIND(ILU)
+ READ(ILU,FMT='(A400)') YSTRING ! Header reading
  !
  ! Saving data 
  DO INBLINE=1, TPFARM%NNB_TURBINES
-  READ(KLUNAM,FMT='(A400)') YSTRING
+  READ(ILU,FMT='(A400)') YSTRING
   READ(YSTRING,*) ZPOS_X, ZPOS_Y, ZCT_INF
   TPFARM%XPOS_X(INBLINE)  = ZPOS_X
   TPFARM%XPOS_Y(INBLINE)  = ZPOS_Y
   TPFARM%XCT_INF(INBLINE) = ZCT_INF
  END DO
- CLOSE(KLUNAM)
+ CLOSE(ILU)
  RETURN
 END IF
 !
@@ -169,19 +162,19 @@ END SUBROUTINE READ_CSVDATA_FARM_ADNR
 !#########################################################
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_TURBINE_ADNR(KLUNAM,HFILE,TPTURBINE)
+SUBROUTINE READ_CSVDATA_TURBINE_ADNR(HFILE,TPTURBINE)
 !        
 USE MODD_EOL_ADNR,  ONLY: TURBINE
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 !
 IMPLICIT NONE
 !
-INTEGER,            INTENT(IN)  :: KLUNAM     ! logical unit of the file
-CHARACTER(LEN=*),   INTENT(IN)  :: HFILE      ! file to read    
+CHARACTER(LEN=*),   INTENT(IN)  :: HFILE      ! file to read
 TYPE(TURBINE),      INTENT(OUT) :: TPTURBINE  ! dummy stored data turbine
 !
 LOGICAL                         :: GEXIST     ! Existence of file
 !
+INTEGER                         :: ILU        ! logical unit of the file
 INTEGER                         :: INBLINE    ! Nb of line in csv file
 !
 CHARACTER(LEN=400)              :: YSTRING   
@@ -197,13 +190,13 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Opening 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 !
 ! Counting number of line  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
  IF (LEN_TRIM(YSTRING) > 0) THEN
   INBLINE = INBLINE + 1
  END IF
@@ -212,38 +205,37 @@ END DO
 101 CONTINUE
 IF (INBLINE /= 2) THEN
  CALL EOL_CSVEMPTY_ERROR(HFILE,INBLINE)
- STOP
 ELSE 
- REWIND(KLUNAM)
- READ(KLUNAM,FMT='(A400)') YSTRING                    ! Header reading 
- READ(KLUNAM,FMT='(A400)') YSTRING                    ! Reading next line
+ REWIND(ILU)
+ READ(ILU,FMT='(A400)') YSTRING                    ! Header reading
+ READ(ILU,FMT='(A400)') YSTRING                    ! Reading next line
  ! Read data 
  READ(YSTRING,*) YWT_NAME, ZH_HEIGHT, ZR_MAX          ! reading data
  TPTURBINE%CNAME      = YWT_NAME                      ! Saving them
  TPTURBINE%XH_HEIGHT  = ZH_HEIGHT
  TPTURBINE%XR_MAX     = ZR_MAX
- REWIND(KLUNAM)                                        ! Rembobinage, plutôt 2 fois qu'1 !
+ REWIND(ILU)                                        ! Rembobinage, plutôt 2 fois qu'1 !
  RETURN
- CLOSE(KLUNAM)
+ CLOSE(ILU)
 END IF
 !
 END SUBROUTINE READ_CSVDATA_TURBINE_ADNR
 !#########################################################
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_FARM_ALM(KLUNAM,HFILE,TPFARM)
+SUBROUTINE READ_CSVDATA_FARM_ALM(HFILE,TPFARM)
 !        
 USE MODD_EOL_ALM,   ONLY: FARM
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 !
 IMPLICIT NONE
 !
-INTEGER,            INTENT(IN)    :: KLUNAM     ! logical unit of the file
 CHARACTER(LEN=*),   INTENT(IN)    :: HFILE      ! file to read    
 TYPE(FARM),         INTENT(OUT)   :: TPFARM     ! dummy stored data blade
 !
 LOGICAL                           :: GEXIST     ! Existence of file
 !
+INTEGER                           :: ILU        ! logical unit of the file
 INTEGER                           :: INBLINE    ! Nb of line in csv file
 !
 CHARACTER(LEN=400)                :: YSTRING   
@@ -262,12 +254,12 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Opening the file 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 ! Counting number of line  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
  IF (LEN_TRIM(YSTRING) > 0) THEN
   INBLINE = INBLINE + 1
  END IF
@@ -276,7 +268,6 @@ END DO
 101 CONTINUE
 IF (INBLINE < 2) THEN
  CALL EOL_CSVEMPTY_ERROR(HFILE,INBLINE)
- STOP
 ELSE
  ! Saving number of wind turbine 
  TPFARM%NNB_TURBINES = INBLINE - 1 
@@ -288,12 +279,12 @@ ELSE
  ALLOCATE(TPFARM%XBLA_PITCH(TPFARM%NNB_TURBINES))
  !
  ! New read 
- REWIND(KLUNAM)
- READ(KLUNAM,FMT='(A400)') YSTRING ! Header reading 
+ REWIND(ILU)
+ READ(ILU,FMT='(A400)') YSTRING ! Header reading
  !
  ! Saving data 
  DO INBLINE=1, TPFARM%NNB_TURBINES
-  READ(KLUNAM,FMT='(A400)') YSTRING
+  READ(ILU,FMT='(A400)') YSTRING
   READ(YSTRING,*) ZPOS_X, ZPOS_Y, ZOMEGA, ZYAW, ZPITCH
   TPFARM%XPOS_X(INBLINE)     = ZPOS_X
   TPFARM%XPOS_Y(INBLINE)     = ZPOS_Y
@@ -301,7 +292,7 @@ ELSE
   TPFARM%XNAC_YAW(INBLINE)   = ZYAW
   TPFARM%XBLA_PITCH(INBLINE) = ZPITCH
  END DO
- CLOSE(KLUNAM)
+ CLOSE(ILU)
  RETURN
 END IF
 !
@@ -309,19 +300,19 @@ END SUBROUTINE READ_CSVDATA_FARM_ALM
 !#########################################################
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_TURBINE_ALM(KLUNAM,HFILE,TPTURBINE)
+SUBROUTINE READ_CSVDATA_TURBINE_ALM(HFILE,TPTURBINE)
 !        
 USE MODD_EOL_ALM,   ONLY: TURBINE
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 !
 IMPLICIT NONE
 !
-INTEGER,            INTENT(IN)  :: KLUNAM     ! logical unit of the file
 CHARACTER(LEN=*),   INTENT(IN)  :: HFILE      ! file to read    
 TYPE(TURBINE),      INTENT(OUT) :: TPTURBINE  ! dummy stored data turbine
 !
 LOGICAL                         :: GEXIST     ! Existence of file
 !
+INTEGER                         :: ILU        ! logical unit of the file
 INTEGER                         :: INBLINE    ! Nb of line in csv file
 !
 CHARACTER(LEN=400)              :: YSTRING   
@@ -341,13 +332,13 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Opening 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 !
 ! Counting number of line  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
  IF (LEN_TRIM(YSTRING) > 0) THEN
   INBLINE = INBLINE + 1
  END IF
@@ -356,11 +347,10 @@ END DO
 101 CONTINUE
 IF (INBLINE /= 2) THEN
  CALL EOL_CSVEMPTY_ERROR(HFILE,INBLINE)
- STOP
 ELSE 
- REWIND(KLUNAM)
- READ(KLUNAM,FMT='(A400)') YSTRING                    ! Header reading 
- READ(KLUNAM,FMT='(A400)') YSTRING                    ! Reading next line
+ REWIND(ILU)
+ READ(ILU,FMT='(A400)') YSTRING                    ! Header reading
+ READ(ILU,FMT='(A400)') YSTRING                    ! Reading next line
  ! Read data 
  READ(YSTRING,*) YWT_NAME, INB_BLADE, ZH_HEIGHT,&     ! reading data
                  ZR_MIN, ZR_MAX, ZNAC_TILT,     &
@@ -372,28 +362,28 @@ ELSE
  TPTURBINE%XR_MAX      = ZR_MAX
  TPTURBINE%XNAC_TILT   = ZNAC_TILT
  TPTURBINE%XH_DEPORT   = ZHUB_DEPORT
- REWIND(KLUNAM)                                       
+ REWIND(ILU)
  RETURN
- CLOSE(KLUNAM)
+ CLOSE(ILU)
 END IF
 !
 END SUBROUTINE READ_CSVDATA_TURBINE_ALM
 !#########################################################
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_BLADE_ALM(KLUNAM,HFILE,TPTURBINE,TPBLADE)
+SUBROUTINE READ_CSVDATA_BLADE_ALM(HFILE,TPTURBINE,TPBLADE)
 !       
 USE MODD_EOL_ALM,   ONLY: TURBINE, BLADE, NNB_BLAELT
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 USE MODI_EOL_ERROR, ONLY: EOL_BLADEDATA_ERROR
 !
-INTEGER,            INTENT(IN)  :: KLUNAM     ! logical unit of the file
 CHARACTER(LEN=*),   INTENT(IN)  :: HFILE      ! file to read    
 TYPE(TURBINE),      INTENT(IN)  :: TPTURBINE  ! stored turbine data
 TYPE(BLADE),        INTENT(OUT) :: TPBLADE    ! dummy stored data blade
 !
 LOGICAL                         :: GEXIST     ! Existence of file
 !
+INTEGER                         :: ILU        ! logical unit of the file
 INTEGER                         :: INBLINE    ! Nb of line in csv file
 INTEGER                         :: INBDATA    ! Nb of data (line/section) of blade
 !
@@ -411,12 +401,12 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Ouverture 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 ! Counting number of line  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
  IF (LEN_TRIM(YSTRING) > 0) THEN
   INBLINE = INBLINE + 1
  END IF
@@ -425,7 +415,6 @@ END DO
 101 CONTINUE
 IF (INBLINE < 2) THEN
  CALL EOL_CSVEMPTY_ERROR(HFILE,INBLINE)
- STOP
 ELSE
  TPBLADE%NNB_BLAELT = NNB_BLAELT 
  ! Saving number of data 
@@ -436,12 +425,12 @@ ELSE
  ALLOCATE(TPBLADE%CAIRFOIL(TPBLADE%NNB_BLADAT))
  !
  ! New read
- REWIND(KLUNAM)
- READ(KLUNAM,FMT='(A400)') YSTRING                    ! Header reading 
+ REWIND(ILU)
+ READ(ILU,FMT='(A400)') YSTRING                    ! Header reading
  !
  ! Saving data
  DO INBLINE=1, TPBLADE%NNB_BLADAT
-  READ(KLUNAM,FMT='(A400)') YSTRING
+  READ(ILU,FMT='(A400)') YSTRING
   READ(YSTRING,*) ZCENTER, ZCHORD, ZTWIST, YAIRFOIL  ! Reading data
   IF ((ZCENTER<=0.0) .OR. (ZCENTER>= 1.0)) THEN
    ! Checking data
@@ -455,7 +444,7 @@ ELSE
    TPBLADE%CAIRFOIL(INBLINE) = YAIRFOIL
   END IF
  END DO
- CLOSE(KLUNAM)
+ CLOSE(ILU)
  RETURN
 END IF
 !
@@ -463,19 +452,19 @@ END SUBROUTINE READ_CSVDATA_BLADE_ALM
 !#########################################################
 !
 !#########################################################
-SUBROUTINE READ_CSVDATA_AIRFOIL_ALM(KLUNAM,HFILE,TPBLADE,TPAIRFOIL)
+SUBROUTINE READ_CSVDATA_AIRFOIL_ALM(HFILE,TPBLADE,TPAIRFOIL)
 !        
 USE MODD_EOL_ALM,   ONLY: BLADE, AIRFOIL
 USE MODI_EOL_ERROR, ONLY: EOL_CSVNOTFOUND_ERROR, EOL_CSVEMPTY_ERROR
 USE MODI_EOL_ERROR, ONLY: EOL_AIRFOILNOTFOUND_ERROR 
 !
-INTEGER,            INTENT(IN)  :: KLUNAM     ! logical unit of the file
 CHARACTER(LEN=*),   INTENT(IN)  :: HFILE      ! file to read    
 TYPE(BLADE),        INTENT(IN)  :: TPBLADE    ! stored blade data (to select airfoils)
 TYPE(AIRFOIL), DIMENSION(:), ALLOCATABLE, INTENT(OUT) :: TPAIRFOIL  ! dummy stored data blade
 !
 LOGICAL                         :: GEXIST     ! Existence of file
 !
+INTEGER                         :: ILU        ! logical unit of the file
 INTEGER                         :: INBDATA    ! Nb of data (line/section) per airfoil
 INTEGER                         :: INBLINE    ! Nb of line in csv file
 LOGICAL                         :: GAIRFLAG   ! Flag for airfoil counting
@@ -501,7 +490,7 @@ IF (.NOT.GEXIST) THEN
 END IF
 !
 ! Ouverture 
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted', STATUS='OLD')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted', STATUS='OLD')
 !
 ! 1. Counting number of differents airfoils along the blade and selection :
 !
@@ -530,17 +519,17 @@ ALLOCATE(TPAIRFOIL(INBAIRFOIL))
 !
 DO IA = 1, INBAIRFOIL
  ! Array allocation
- CALL HOW_MANY_LINES_OF(KLUNAM,HFILE,YAIRFOIL(IA),INBDATA)
+ CALL HOW_MANY_LINES_OF(ILU,HFILE,YAIRFOIL(IA),INBDATA)
  ALLOCATE(TPAIRFOIL(IA)%XAA(INBDATA))
  ALLOCATE(TPAIRFOIL(IA)%XRE(INBDATA))
  ALLOCATE(TPAIRFOIL(IA)%XCL(INBDATA))
  ALLOCATE(TPAIRFOIL(IA)%XCD(INBDATA))
  ALLOCATE(TPAIRFOIL(IA)%XCM(INBDATA))
  !
- REWIND(KLUNAM)
+ REWIND(ILU)
  INBLINE = 0
  DO
-  READ(KLUNAM,END=101,FMT='(A400)') YSTRING        ! Header
+  READ(ILU,END=101,FMT='(A400)') YSTRING        ! Header
   !* reads the string
   IF (LEN_TRIM(YSTRING)>0) THEN
    READ(YSTRING,FMT=*) YREAD_NAME
@@ -557,7 +546,7 @@ DO IA = 1, INBAIRFOIL
     TPAIRFOIL(IA)%XCM(INBLINE)     = ZCM
    ELSE                     ! The name doesnt appear during a new read..
     IF (INBLINE > 0) THEN   ! .. but it has already been found, ..
-     REWIND(KLUNAM)         ! .. so it is the end of the data ..
+     REWIND(ILU)         ! .. so it is the end of the data ..
      EXIT                   ! .. and we can exit :)
     END IF
    END IF
@@ -565,11 +554,10 @@ DO IA = 1, INBAIRFOIL
  END DO
 END DO
 !
-CLOSE(KLUNAM)
+CLOSE(ILU)
 101 CONTINUE
  IF (INBLINE == 0) THEN
   CALL EOL_AIRFOILNOTFOUND_ERROR(HFILE,YAIRFOIL(IA))
-  STOP
  END IF
 END SUBROUTINE READ_CSVDATA_AIRFOIL_ALM
 !#########################################################
@@ -610,7 +598,6 @@ END DO
 101 CONTINUE
  IF (KLINE == 0) THEN
   CALL EOL_AIRFOILNOTFOUND_ERROR(HFILE,HNAME)
-  STOP
  END IF
 END SUBROUTINE HOW_MANY_LINES_OF
 !#########################################################
diff --git a/src/MNH/ibm_prep_ls.f90 b/src/MNH/ibm_prep_ls.f90
index 6041198f3..bb3ae049b 100644
--- a/src/MNH/ibm_prep_ls.f90
+++ b/src/MNH/ibm_prep_ls.f90
@@ -156,8 +156,6 @@ SUBROUTINE IBM_PREP_LS(OIBM,HIBM_TYPE,PPHI)
   !------------------------------------------------------------------------------
   !
   !       0.3  Allocation
-  ILUIBMGENE = 42
-  ILUIBMIDEA = 43
   HFILEGENE = "ibm_gene.obj"
   HFILEIDEA = "ibm_idea.nam"
   !
@@ -207,7 +205,7 @@ SUBROUTINE IBM_PREP_LS(OIBM,HIBM_TYPE,PPHI)
      ALLOCATE(ZV2(3150000,3))
      ALLOCATE(ZV3(3150000,3))
      !
-     OPEN(ILUIBMGENE , FILE= HFILEGENE , IOSTAT=IRESPIBMGENE , STATUS='OLD')
+     OPEN(NEWUNIT=ILUIBMGENE , FILE=HFILEGENE , IOSTAT=IRESPIBMGENE , STATUS='OLD')
      !
      JV=1
      JF=0
@@ -358,7 +356,7 @@ SUBROUTINE IBM_PREP_LS(OIBM,HIBM_TYPE,PPHI)
   !----------------------------
   IF (HIBM_TYPE=='IDEA') THEN
      !
-     OPEN(ILUIBMIDEA , FILE= HFILEIDEA , IOSTAT=IRESPIBMIDEA , FORM='FORMATTED' , &
+     OPEN(NEWUNIT=ILUIBMIDEA , FILE= HFILEIDEA , IOSTAT=IRESPIBMIDEA , FORM='FORMATTED' , &
           STATUS='OLD', ACCESS='SEQUENTIAL', ACTION='READ')
      !
      READ(UNIT=ILUIBMIDEA,FMT=*) IIBM_NUMB_NODE_SURF, IIBM_NUMB_TYPE_SURF 
diff --git a/src/MNH/ini_eol_adnr.f90 b/src/MNH/ini_eol_adnr.f90
index fb03dab93..9e069eed9 100644
--- a/src/MNH/ini_eol_adnr.f90
+++ b/src/MNH/ini_eol_adnr.f90
@@ -98,11 +98,11 @@ INTEGER  :: ILUOUT    ! Output listing file
 !
 !*       1.1    Wind farm data
 !
-CALL READ_CSVDATA_FARM_ADNR(40,TRIM(CFARM_CSVDATA),TFARM)
+CALL READ_CSVDATA_FARM_ADNR(TRIM(CFARM_CSVDATA),TFARM)
 !
 !*       1.2    Wind turbine data
 !
-CALL READ_CSVDATA_TURBINE_ADNR(41,TRIM(CTURBINE_CSVDATA),TTURBINE)
+CALL READ_CSVDATA_TURBINE_ADNR(TRIM(CTURBINE_CSVDATA),TTURBINE)
 !
 !
 !-------------------------------------------------------------------
diff --git a/src/MNH/ini_eol_alm.f90 b/src/MNH/ini_eol_alm.f90
index c104e36f5..41938d789 100644
--- a/src/MNH/ini_eol_alm.f90
+++ b/src/MNH/ini_eol_alm.f90
@@ -158,19 +158,19 @@ INTEGER  :: IINFO                   ! code info return
 !
 !*       1.1    Wind farm data
 !
-CALL READ_CSVDATA_FARM_ALM(40,TRIM(CFARM_CSVDATA),TFARM)
+CALL READ_CSVDATA_FARM_ALM(TRIM(CFARM_CSVDATA),TFARM)
 !
 !*       1.2    Wind turbine data
 !
-CALL READ_CSVDATA_TURBINE_ALM(41,TRIM(CTURBINE_CSVDATA),TTURBINE)
+CALL READ_CSVDATA_TURBINE_ALM(TRIM(CTURBINE_CSVDATA),TTURBINE)
 !
 !*       1.3    Blade data
 !
-CALL READ_CSVDATA_BLADE_ALM(42,TRIM(CBLADE_CSVDATA),TTURBINE,TBLADE)
+CALL READ_CSVDATA_BLADE_ALM(TRIM(CBLADE_CSVDATA),TTURBINE,TBLADE)
 !
 !*       1.4    Airfoil data
 !
-CALL READ_CSVDATA_AIRFOIL_ALM(43,TRIM(CAIRFOIL_CSVDATA),TBLADE,TAIRFOIL)
+CALL READ_CSVDATA_AIRFOIL_ALM(TRIM(CAIRFOIL_CSVDATA),TBLADE,TAIRFOIL)
 !
 !
 !-------------------------------------------------------------------
diff --git a/src/MNH/ini_stationn.f90 b/src/MNH/ini_stationn.f90
index 0b3576ead..8bfe8866f 100644
--- a/src/MNH/ini_stationn.f90
+++ b/src/MNH/ini_stationn.f90
@@ -70,7 +70,6 @@ USE MODD_ALLSTATION_n
 USE MODD_CONF,         ONLY: LCARTESIAN
 USE MODD_PARAMETERS
 !
-!USE MODN_STATION_n
 USE MODI_STATION_READER
 !
 !
@@ -137,7 +136,7 @@ ELSE
 !
 !*      2.   CSV DATA 
 !
-  CALL READ_CSV_STATION(90,CFILE_STAT,TSTATION,LCARTESIAN)
+  CALL READ_CSV_STATION(CFILE_STAT,TSTATION,LCARTESIAN)
   TSTATION%STEP = XSTEP_STAT
 END IF 
 
diff --git a/src/MNH/station_reader.f90 b/src/MNH/station_reader.f90
index 3d1186a9e..e6f9647bc 100644
--- a/src/MNH/station_reader.f90
+++ b/src/MNH/station_reader.f90
@@ -9,13 +9,8 @@
 !
 INTERFACE
 !
-SUBROUTINE READ_CSV_STATION(KLUNAM,HFILE,TPSTATION,OCARTESIAN)
-        USE MODD_ALLSTATION_n
+SUBROUTINE READ_CSV_STATION(HFILE,TPSTATION,OCARTESIAN)
         USE MODD_STATION_n
-        USE MODD_PARAMETERS
-        USE MODD_TYPE_STATION
-        USE MODI_INI_SURFSTATION_n
-        INTEGER,            INTENT(IN)  :: KLUNAM       ! logical unit of the file
         CHARACTER(LEN=*),   INTENT(IN)  :: HFILE        ! file to read    
         TYPE(STATION),      INTENT(OUT) :: TPSTATION       ! stored blade data
         LOGICAL,            INTENT(IN)  :: OCARTESIAN
@@ -43,7 +38,7 @@ END MODULE MODI_STATION_READER
 !!---------------------------------------------------------------
 !
 !#########################################################
-SUBROUTINE READ_CSV_STATION(KLUNAM,HFILE,TPSTATION,OCARTESIAN)
+SUBROUTINE READ_CSV_STATION(HFILE,TPSTATION,OCARTESIAN)
 USE MODD_ALLSTATION_n
 USE MODD_STATION_n
 USE MODD_PARAMETERS
@@ -51,24 +46,24 @@ USE MODD_TYPE_STATION
 USE MODI_INI_SURFSTATION_n
 
 !
-INTEGER,            INTENT(IN)    :: KLUNAM     ! logical unit of the file
-CHARACTER(LEN=*),   INTENT(IN)    :: HFILE      ! file to read    
+CHARACTER(LEN=*),   INTENT(IN)    :: HFILE      ! file to read
 TYPE(STATION),      INTENT(INOUT) :: TPSTATION     ! dummy stored
 LOGICAL,            INTENT(IN)    :: OCARTESIAN
 !
 INTEGER                           :: INBLINE      ! Nb of line in csv file
 !
 CHARACTER(LEN=80)                 :: YERROR
-CHARACTER(LEN=400)                :: YSTRING   
+CHARACTER(LEN=400)                :: YSTRING
+INTEGER                           :: ILU     ! logical unit of the file
 !
 
 ! Open file
-OPEN(UNIT=KLUNAM,FILE=HFILE, FORM='formatted')
+OPEN(NEWUNIT=ILU,FILE=HFILE, FORM='formatted')
 ! Count lines  
-REWIND(KLUNAM)
+REWIND(ILU)
 INBLINE=0
 DO
- READ(KLUNAM,END=101,FMT='(A400)') YSTRING
+ READ(ILU,END=101,FMT='(A400)') YSTRING
 !* analyses if the record has been written in French convention 
  CALL FRENCH_TO_ENGLISH(YSTRING)                                         ! analyse de convention fr ou eng
  IF (LEN_TRIM(YSTRING) > 0) THEN
@@ -104,29 +99,29 @@ END DO
   TPSTATION%NAME = "        "
   TPSTATION%TYPE = "        "
   ! Nouvelle lecture 
-  REWIND(KLUNAM)
-  READ(KLUNAM,FMT='(A400)') YSTRING ! Lecture du header 
+  REWIND(ILU)
+  READ(ILU,FMT='(A400)') YSTRING ! Lecture du header
   !
   ! Save the data
   IF (OCARTESIAN) THEN
    INBLINE = 1
    DO INBLINE=1, NUMBSTAT
-    READ(KLUNAM,FMT='(A400)') YSTRING
+    READ(ILU,FMT='(A400)') YSTRING
     READ(YSTRING,*) TPSTATION%NAME(INBLINE),TPSTATION%TYPE(INBLINE),& 
     TPSTATION%X(INBLINE), TPSTATION%Y(INBLINE), TPSTATION%Z(INBLINE)!,&
    END DO
-   REWIND(KLUNAM)
-   CLOSE(KLUNAM)
+   REWIND(ILU)
+   CLOSE(ILU)
    RETURN
   ELSE
    INBLINE = 1
    DO INBLINE=1, NUMBSTAT
-    READ(KLUNAM,FMT='(A400)') YSTRING
+    READ(ILU,FMT='(A400)') YSTRING
     READ(YSTRING,*) TPSTATION%NAME(INBLINE), TPSTATION%TYPE(INBLINE),&
     TPSTATION%LAT(INBLINE), TPSTATION%LON(INBLINE), TPSTATION%Z(INBLINE)!,&
    END DO
-   REWIND(KLUNAM)
-   CLOSE(KLUNAM)
+   REWIND(ILU)
+   CLOSE(ILU)
    RETURN
   END IF
  END IF
-- 
GitLab