Merge branch 'LIBTOOLS-master' into MNH-52X
[MNH-git_open_source-lfs.git] / src / SURFEX / read_lcover.F90
1 !SURFEX_LIC Copyright 1994-2014 Meteo-France 
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 !     #########
6       SUBROUTINE READ_LCOVER(HPROGRAM,OCOVER)
7 !     ################################
8 !
9 !!****  *READ_LCOVER* - routine to read a file for
10 !!                         physiographic data file of model _n 
11 !!
12 !!    PURPOSE
13 !!    -------
14 !!       The purpose of this routine is to initialise the list of covers
15 !!
16 !!
17 !!**  METHOD
18 !!    ------
19 !!
20 !!    EXTERNAL
21 !!    --------
22 !!      
23 !!
24 !!
25 !!    IMPLICIT ARGUMENTS
26 !!    ------------------
27 !!
28 !!    REFERENCE
29 !!    ---------
30 !!
31 !!
32 !!    AUTHOR
33 !!    ------
34 !!      V. Masson   *Meteo France*      
35 !!
36 !!    MODIFICATIONS
37 !!    -------------
38 !!      Original    10/2008
39 !!      M. Moge     02/2015 parallelization
40 !-------------------------------------------------------------------------------
41 !
42 !*       0.    DECLARATIONS
43 !              ------------
44 !
45 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
46 !
47 USE MODI_READ_SURF
48 USE MODI_OLD_NAME
49 !
50 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
51 USE PARKIND1  ,ONLY : JPRB
52 !
53 IMPLICIT NONE
54 !
55 #ifndef NOMPI
56 INCLUDE "mpif.h"
57 #endif
58 !
59 !*       0.1   Declarations of arguments
60 !              -------------------------
61 !
62  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! calling program
63 LOGICAL, DIMENSION(JPCOVER)    :: OCOVER   ! list of covers
64 !
65 !*       0.2   Declarations of local variables
66 !              -------------------------------
67 !
68 INTEGER           :: IRESP          ! Error code after redding
69  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
70 INTEGER           :: IVERSION       ! version of surfex file being read
71 LOGICAL, DIMENSION(:), ALLOCATABLE :: GCOVER ! cover list in the file
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
73 INTEGER   :: IINFO
74 !-------------------------------------------------------------------------------
75 !
76 !
77 !* ascendant compatibility
78 IF (LHOOK) CALL DR_HOOK('READ_LCOVER',0,ZHOOK_HANDLE)
79 YRECFM='VERSION'
80  CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
81 IF (IVERSION<=3) THEN
82   ALLOCATE(GCOVER(255))
83 ELSE
84   ALLOCATE(GCOVER(JPCOVER))
85 END IF
86  CALL OLD_NAME(HPROGRAM,'COVER_LIST      ',YRECFM)
87  CALL READ_SURF(HPROGRAM,YRECFM,GCOVER(:),IRESP,HDIR='-')
88 !
89 #ifndef NOMPI
90 CALL MPI_ALLREDUCE(GCOVER, OCOVER, SIZE(GCOVER),MPI_LOGICAL, MPI_LOR, MPI_COMM_WORLD, IINFO)
91 #endif
92 DEALLOCATE(GCOVER)
93 !
94 IF (LHOOK) CALL DR_HOOK('READ_LCOVER',1,ZHOOK_HANDLE)
95 !
96 !-------------------------------------------------------------------------------
97 !
98 END SUBROUTINE READ_LCOVER