d8a6fe6c290e96a3b01deed2a0893f7e29870207
[MNH-git_open_source-lfs.git] / src / SURFEX / pgd_seaflux.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 PGD_SEAFLUX(HPROGRAM)
7 !     ##############################################################
8 !
9 !!**** *PGD_SEAFLUX* monitor for averaging and interpolations of SEAFLUX physiographic fields
10 !!
11 !!    PURPOSE
12 !!    -------
13 !!
14 !!    METHOD
15 !!    ------
16 !!   
17 !
18 !!    EXTERNAL
19 !!    --------
20 !!
21 !!    IMPLICIT ARGUMENTS
22 !!    ------------------
23 !!
24 !!    REFERENCE
25 !!    ---------
26 !!
27 !!    AUTHOR
28 !!    ------
29 !!
30 !!    V. Masson        Meteo-France
31 !!
32 !!    MODIFICATION
33 !!    ------------
34 !!
35 !!    Original    03/2004
36 !!    Lebeaupin-B C. 01/2008 : include bathymetry
37 !!
38 !----------------------------------------------------------------------------
39 !
40 !*    0.     DECLARATION
41 !            -----------
42 !
43 USE MODD_PGD_GRID,       ONLY : NL
44 USE MODD_DATA_COVER_PAR,  ONLY : JPCOVER
45 USE MODD_SEAFLUX_n,       ONLY : XCOVER, LCOVER, XZS
46 USE MODD_SEAFLUX_GRID_n,  ONLY : CGRID, XGRID_PAR, XLAT, XLON, XMESH_SIZE, NDIM
47 USE MODD_DATA_SEAFLUX_n,  ONLY : LSST_DATA
48 !
49 USE MODI_READ_NAM_PGD_SEABATHY
50 USE MODI_PGD_BATHYFIELD
51 !
52 USE MODI_GET_SURF_SIZE_n
53 USE MODI_PACK_PGD
54 USE MODI_PACK_PGD_SEAFLUX
55 USE MODI_PGD_SEAFLUX_PAR
56 !
57 !
58 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
59 USE PARKIND1  ,ONLY : JPRB
60 !
61 IMPLICIT NONE
62 !
63 !*    0.1    Declaration of arguments
64 !            ------------------------
65 !
66  CHARACTER(LEN=6),    INTENT(IN)    :: HPROGRAM     ! Type of program
67 !
68 !
69 !*    0.2    Declaration of local variables
70 !            ------------------------------
71 !
72 REAL, DIMENSION(NL)               :: ZSEABATHY ! bathymetry on all surface points
73 !
74 !*    0.3    Declaration of namelists
75 !            ------------------------
76 !
77  CHARACTER(LEN=28)        :: YSEABATHY         ! file name for bathymetrie
78  CHARACTER(LEN=6)         :: YSEABATHYFILETYPE ! bathymetry data file type
79  CHARACTER(LEN=28)        :: YNCVARNAME        ! variable to read in netcdf
80                                               ! file
81 REAL                     :: XUNIF_SEABATHY    ! uniform value of bathymetry
82 REAL(KIND=JPRB) :: ZHOOK_HANDLE
83 !
84 !
85 !-------------------------------------------------------------------------------
86 !
87 !*    1.      Initializations of defaults
88 !             ---------------------------
89 !
90 !-------------------------------------------------------------------------------
91 !
92 !*    2.      Reading of namelist
93 !             -------------------
94 !
95 IF (LHOOK) CALL DR_HOOK('PGD_SEAFLUX',0,ZHOOK_HANDLE)
96  CALL READ_NAM_PGD_SEABATHY(HPROGRAM,YSEABATHY,YSEABATHYFILETYPE,YNCVARNAME,&
97        XUNIF_SEABATHY)  
98 !
99 !-------------------------------------------------------------------------------
100 !
101 !*    3.      Coherence of options
102 !             --------------------
103 !
104 !-------------------------------------------------------------------------------
105 !
106 !*    4.      Bathymetry
107 !             ----------
108 !
109  CALL PGD_BATHYFIELD(HPROGRAM,'bathymetry','SEA',YSEABATHY,YSEABATHYFILETYPE,&
110        YNCVARNAME,XUNIF_SEABATHY,ZSEABATHY(:))  
111 !-------------------------------------------------------------------------------
112 !
113 !*    5.      Number of points and packing
114 !             ----------------------------
115 !
116  CALL GET_SURF_SIZE_n('SEA   ',NDIM)
117 !
118 ALLOCATE(LCOVER     (JPCOVER))
119 ALLOCATE(XCOVER     (NDIM,JPCOVER))
120 ALLOCATE(XZS        (NDIM))
121 ALLOCATE(XLAT       (NDIM))
122 ALLOCATE(XLON       (NDIM))
123 ALLOCATE(XMESH_SIZE (NDIM))
124 !
125  CALL PACK_PGD(HPROGRAM, 'SEA   ',                    &
126                 CGRID,  XGRID_PAR,                     &
127                 LCOVER, XCOVER, XZS,                   &
128                 XLAT, XLON, XMESH_SIZE                 )  
129 !
130  CALL PACK_PGD_SEAFLUX(HPROGRAM, ZSEABATHY)
131 !
132  CALL PGD_SEAFLUX_PAR(HPROGRAM,LSST_DATA)
133 IF (LHOOK) CALL DR_HOOK('PGD_SEAFLUX',1,ZHOOK_HANDLE)
134 !-------------------------------------------------------------------------------
135 !
136 END SUBROUTINE PGD_SEAFLUX