7c9ef523c5b394da14af425ee18df204c7a6e9dd
[MNH-git_open_source-lfs.git] / src / SURFEX / read_pgd_seafluxn.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_PGD_SEAFLUX_n(HPROGRAM)
7 !     #########################################
8 !
9 !!****  *READ_PGD_SEAFLUX_n* - routine to read SEAFLUX physiographic fields
10 !!
11 !!
12 !!    PURPOSE
13 !!    -------
14 !!
15 !!**  METHOD
16 !!    ------
17 !!
18 !!    EXTERNAL
19 !!    --------
20 !!
21 !!
22 !!    IMPLICIT ARGUMENTS
23 !!    ------------------
24 !!
25 !!    REFERENCE
26 !!    ---------
27 !!
28 !!
29 !!    AUTHOR
30 !!    ------
31 !!      V. Masson   *Meteo France*      
32 !!
33 !!    MODIFICATIONS
34 !!    -------------
35 !!      Original    01/2003 
36 !-------------------------------------------------------------------------------
37 !
38 !*       0.    DECLARATIONS
39 !              ------------
40 !
41 USE MODD_TYPE_DATE_SURF
42 !
43 USE MODD_DATA_COVER_PAR, ONLY : JPCOVER
44 USE MODD_SEAFLUX_n,      ONLY : XCOVER, XZS, XSEABATHY, TTIME, LCOVER
45 USE MODD_SEAFLUX_GRID_n, ONLY : XLAT, XLON, XMESH_SIZE, CGRID, XGRID_PAR, NDIM
46 USE MODD_DATA_SEAFLUX_n, ONLY : LSST_DATA
47 !
48 !
49 USE MODI_READ_SURF
50 USE MODI_READ_GRID
51 USE MODI_READ_LCOVER
52 USE MODI_READ_PGD_SEAFLUX_PAR_n
53 !
54 !
55 !
56 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
57 USE PARKIND1  ,ONLY : JPRB
58 !
59 USE MODI_GET_TYPE_DIM_n
60 !
61 IMPLICIT NONE
62 !
63 !*       0.1   Declarations of arguments
64 !              -------------------------
65 !
66  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! calling program
67 !
68 !*       0.2   Declarations of local variables
69 !              -------------------------------
70 !
71 INTEGER           :: IRESP          ! Error code after redding
72 !
73  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
74 !
75 INTEGER           :: IVERSION   ! surface version
76 REAL(KIND=JPRB) :: ZHOOK_HANDLE
77 !
78 !-------------------------------------------------------------------------------
79 !
80 !* 1D physical dimension
81 !
82 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_N',0,ZHOOK_HANDLE)
83 YRECFM='SIZE_SEA'
84  CALL GET_TYPE_DIM_n('SEA   ',NDIM)
85 !
86 !
87 !*       2.     Physiographic data fields:
88 !               -------------------------
89 !
90 !* cover classes
91 !
92 ALLOCATE(LCOVER(JPCOVER))
93  CALL READ_LCOVER(HPROGRAM,LCOVER)
94 !
95 ALLOCATE(XCOVER(NDIM,JPCOVER))
96  CALL READ_SURF(HPROGRAM,'COVER',XCOVER(:,:),LCOVER,IRESP)
97 !
98 !* orography
99 !
100 ALLOCATE(XZS(NDIM))
101 XZS(:) = 0.
102 !
103 YRECFM='VERSION'
104  CALL READ_SURF(HPROGRAM,YRECFM,IVERSION,IRESP)
105 !
106 !* bathymetry
107 !
108 ALLOCATE(XSEABATHY(NDIM))
109 IF (IVERSION<=3) THEN
110   XSEABATHY(:) = 300.
111 ELSE
112   YRECFM='BATHY'
113   CALL READ_SURF(HPROGRAM,YRECFM,XSEABATHY(:),IRESP)
114 END IF
115 !
116 !* latitude, longitude 
117 !
118 ALLOCATE(XLAT      (NDIM))
119 ALLOCATE(XLON      (NDIM))
120 ALLOCATE(XMESH_SIZE(NDIM))
121  CALL READ_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP)
122 !
123 !
124 !* sst
125 !
126 !
127 IF (IVERSION<3) THEN
128   LSST_DATA = .FALSE.
129 ELSE
130   YRECFM='SST_DATA'
131   CALL READ_SURF(HPROGRAM,YRECFM,LSST_DATA,IRESP)
132 END IF
133 !
134 IF (LSST_DATA) CALL READ_PGD_SEAFLUX_PAR_n(HPROGRAM,NDIM)
135 IF (LHOOK) CALL DR_HOOK('READ_PGD_SEAFLUX_N',1,ZHOOK_HANDLE)
136 !
137 !------------------------------------------------------------------------------!
138 END SUBROUTINE READ_PGD_SEAFLUX_n