SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_covern.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE read_cover_n (DTCO, U, &
7  hprogram)
8 ! ################################
9 !
10 !!**** *READ_COVER_n* - routine to read a file for
11 !! physiographic data file of model _n
12 !!
13 !! PURPOSE
14 !! -------
15 !! The purpose of this routine is to initialise the
16 !! physiographic data file.
17 !!
18 !!
19 !!** METHOD
20 !! ------
21 !! The data are read in the initial surface file :
22 !! - 2D physiographic data fields
23 !!
24 !! It does not read the grid definition. This should have been
25 !! read already.
26 !!
27 !! EXTERNAL
28 !! --------
29 !!
30 !!
31 !!
32 !! IMPLICIT ARGUMENTS
33 !! ------------------
34 !!
35 !! REFERENCE
36 !! ---------
37 !!
38 !!
39 !! AUTHOR
40 !! ------
41 !! V. Masson *Meteo France*
42 !!
43 !! MODIFICATIONS
44 !! -------------
45 !! Original 01/2003
46 !-------------------------------------------------------------------------------
47 !
48 !* 0. DECLARATIONS
49 ! ------------
50 !
51 !
53 USE modd_surf_atm_n, ONLY : surf_atm_t
54 !
55 USE modd_assim, ONLY : lassim, lread_all
56 !
57 USE modd_data_cover_par, ONLY : nbare_soil, jpcover
58 !
60 !
61 USE modi_read_lcover
63 USE modi_convert_cover_frac
64 !
65 USE yomhook ,ONLY : lhook, dr_hook
66 USE parkind1 ,ONLY : jprb
67 !
68 IMPLICIT NONE
69 !
70 !* 0.1 Declarations of arguments
71 ! -------------------------
72 !
73 !
74 TYPE(data_cover_t), INTENT(INOUT) :: dtco
75 TYPE(surf_atm_t), INTENT(INOUT) :: u
76 !
77  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! calling program
78 !
79 !* 0.2 Declarations of local variables
80 ! -------------------------------
81 !
82 
83 INTEGER :: iresp ! Error code after redding
84 !
85 INTEGER :: iversion ! surface version
86 !
87 LOGICAL :: gread_all
88 !
89  CHARACTER(LEN=12) :: yrecfm ! Name of the article to be read
90 REAL(KIND=JPRB) :: zhook_handle
91 !
92 !-------------------------------------------------------------------------------
93 !
94 !
95 !* 2. Physiographic data fields:
96 ! -------------------------
97 !
98 !* 2.1 Cover classes :
99 ! -------------
100 !
101 IF (lhook) CALL dr_hook('READ_COVER_N',0,zhook_handle)
102 !
103 IF (lassim) THEN
104  gread_all = lread_all
105  lread_all = .true.
106 ENDIF
107 !
108 yrecfm='VERSION'
109  CALL read_surf(&
110  hprogram,yrecfm,iversion,iresp)
111 !
112 ALLOCATE(u%LCOVER(jpcover))
113  CALL read_lcover(&
114  hprogram,u%LCOVER)
115 !
116 !
117 ALLOCATE(u%XCOVER(u%NSIZE_FULL,count(u%LCOVER)))
118  CALL read_surf_cov(&
119  hprogram,'COVER',u%XCOVER(:,:),u%LCOVER,iresp)
120 !
121 !* 2.1 Fractions :
122 ! ---------
123 !
124 ALLOCATE(u%XSEA (u%NSIZE_FULL))
125 ALLOCATE(u%XNATURE(u%NSIZE_FULL))
126 ALLOCATE(u%XWATER (u%NSIZE_FULL))
127 ALLOCATE(u%XTOWN (u%NSIZE_FULL))
128 !
129 IF (iversion>=7) THEN
130  !
131  CALL read_surf(&
132  hprogram,'FRAC_SEA ',u%XSEA, iresp)
133  CALL read_surf(&
134  hprogram,'FRAC_NATURE',u%XNATURE,iresp)
135  CALL read_surf(&
136  hprogram,'FRAC_WATER ',u%XWATER, iresp)
137  CALL read_surf(&
138  hprogram,'FRAC_TOWN ',u%XTOWN, iresp)
139  !
140 ELSE
141  CALL convert_cover_frac(dtco, &
142  u%XCOVER,u%LCOVER,u%XSEA,u%XNATURE,u%XTOWN,u%XWATER)
143 ENDIF
144 !
145 !* 2.2 Orography :
146 ! ---------
147 !
148 !
149 ALLOCATE(u%XZS(u%NSIZE_FULL))
150 yrecfm='ZS'
151  CALL read_surf(&
152  hprogram,yrecfm,u%XZS(:),iresp)
153 !
154 IF (lassim) lread_all = gread_all
155 !
156 IF (lhook) CALL dr_hook('READ_COVER_N',1,zhook_handle)
157 !
158 !
159 !-------------------------------------------------------------------------------
160 !
161 END SUBROUTINE read_cover_n
subroutine, public read_surf_cov(HPROGRAM, HREC, PFIELD, OFLAG, KRESP, HCOMMENT, HDIR)
subroutine read_cover_n(DTCO, U, HPROGRAM)
Definition: read_covern.F90:6
subroutine read_lcover(HPROGRAM, OCOVER)
Definition: read_lcover.F90:6
subroutine convert_cover_frac(DTCO, PCOVER, OCOVER, PSEA, PNATURE, PTOWN, PWATER)