Beginning of open source history
[MNH-git_open_source-lfs.git] / src / SURFEX / prep_grid_conf_proj.F90
1 !     #########
2       SUBROUTINE PREP_GRID_CONF_PROJ(HFILETYPE,HINTERP_TYPE,KNI)
3 !     ##########################################################################
4 !
5 !!****  *PREP_GRID_CONF_PROJ* - reads EXTERNALIZED Surface grid.
6 !!
7 !!    PURPOSE
8 !!    -------
9 !!
10 !!**  METHOD
11 !!    ------
12 !!
13 !!    EXTERNAL
14 !!    --------
15 !!
16 !!    IMPLICIT ARGUMENTS
17 !!    ------------------
18 !!
19 !!
20 !!    REFERENCE
21 !!    ---------
22 !!
23 !!
24 !!    AUTHOR
25 !!    ------
26 !!
27 !!      V. Masson
28 !!
29 !!    MODIFICATIONS
30 !!    -------------
31 !!      Original   06/2003
32 !-------------------------------------------------------------------------------
33 !
34 !*      0. DECLARATIONS
35 !          ------------
36 !
37 USE MODI_READ_SURF
38 !
39 USE MODD_GRID_CONF_PROJ, ONLY : XX, XY, NX, NY, XLAT0, XLON0, XLATORI, &
40                                   XLONORI, XRPK, XBETA  
41 !
42 !
43 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
44 USE PARKIND1  ,ONLY : JPRB
45 !
46 IMPLICIT NONE
47 !
48 !* 0.1. Declaration of arguments
49 !       ------------------------
50 !
51  CHARACTER(LEN=6),  INTENT(IN)    :: HFILETYPE    ! file type
52  CHARACTER(LEN=6),  INTENT(OUT)   :: HINTERP_TYPE ! Grid type
53 INTEGER,           INTENT(OUT)   :: KNI          ! number of points
54 !
55 !* 0.2 Declaration of local variables
56 !      ------------------------------
57 !
58  CHARACTER(LEN=12) :: YRECFM    ! Name of the article to be read
59 INTEGER           :: IRESP
60 !
61 !
62 INTEGER           :: JL        ! loop counter
63 REAL, DIMENSION(:), ALLOCATABLE :: ZW ! work array
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 !
66 !-----------------------------------------------------------------------
67 !
68 !*   1 Projection
69 !      ----------
70 !
71 IF (LHOOK) CALL DR_HOOK('PREP_GRID_CONF_PROJ',0,ZHOOK_HANDLE)
72 YRECFM = 'LAT0'
73  CALL READ_SURF(HFILETYPE,YRECFM,XLAT0,IRESP)
74 YRECFM = 'LON0'
75  CALL READ_SURF(HFILETYPE,YRECFM,XLON0,IRESP)
76 YRECFM = 'RPK'
77  CALL READ_SURF(HFILETYPE,YRECFM,XRPK,IRESP)
78 YRECFM = 'BETA'
79  CALL READ_SURF(HFILETYPE,YRECFM,XBETA,IRESP)
80 !
81 !-----------------------------------------------------------------------
82 !
83 !*   2 Grid
84 !      ----
85 !
86 YRECFM = 'LATORI'
87  CALL READ_SURF(HFILETYPE,YRECFM,XLATORI,IRESP)
88 YRECFM = 'LONORI'
89  CALL READ_SURF(HFILETYPE,YRECFM,XLONORI,IRESP)
90 !
91 YRECFM = 'IMAX'
92  CALL READ_SURF(HFILETYPE,YRECFM,NX,IRESP)
93 YRECFM = 'JMAX'
94  CALL READ_SURF(HFILETYPE,YRECFM,NY,IRESP)
95 !
96 KNI = NX * NY
97 !
98 ALLOCATE(ZW(KNI))
99 !
100 IF (ALLOCATED(XX)) DEALLOCATE(XX)
101 ALLOCATE(XX(NX))
102 YRECFM = 'XX'
103  CALL READ_SURF(HFILETYPE,YRECFM,ZW,IRESP,HDIR='A')
104 XX = ZW(1:NX)
105
106
107 IF (ALLOCATED(XY)) DEALLOCATE(XY)
108 ALLOCATE(XY(NY))
109 YRECFM = 'YY'
110  CALL READ_SURF(HFILETYPE,YRECFM,ZW,IRESP,HDIR='A')
111 DO JL=1,KNI
112   IF (MOD(JL,NX)==0) XY(JL/NX) = ZW(JL)
113 END DO
114 DEALLOCATE(ZW)
115 !
116 !-----------------------------------------------------------------------
117 HINTERP_TYPE = 'BILIN '
118 IF (LHOOK) CALL DR_HOOK('PREP_GRID_CONF_PROJ',1,ZHOOK_HANDLE)
119 !-----------------------------------------------------------------------
120 !
121 END SUBROUTINE PREP_GRID_CONF_PROJ