SURFEX v8.1
General documentation of Surfex
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(hprogram,yrecfm,iversion,iresp)
110 !
111 ALLOCATE(u%LCOVER(jpcover))
112  CALL read_lcover(hprogram,u%LCOVER)
113 !
114 !
115 ALLOCATE(u%XCOVER(u%NSIZE_FULL,count(u%LCOVER)))
116  CALL read_surf_cov(hprogram,'COVER',u%XCOVER(:,:),u%LCOVER,iresp)
117 !
118 !* 2.1 Fractions :
119 ! ---------
120 !
121 ALLOCATE(u%XSEA (u%NSIZE_FULL))
122 ALLOCATE(u%XNATURE(u%NSIZE_FULL))
123 ALLOCATE(u%XWATER (u%NSIZE_FULL))
124 ALLOCATE(u%XTOWN (u%NSIZE_FULL))
125 !
126 IF (iversion>=7) THEN
127  !
128  CALL read_surf(hprogram,'FRAC_SEA ',u%XSEA, iresp)
129  CALL read_surf(hprogram,'FRAC_NATURE',u%XNATURE,iresp)
130  CALL read_surf(hprogram,'FRAC_WATER ',u%XWATER, iresp)
131  CALL read_surf(hprogram,'FRAC_TOWN ',u%XTOWN, iresp)
132  !
133 ELSE
134  CALL convert_cover_frac(dtco,u%XCOVER,u%LCOVER,u%XSEA,u%XNATURE,u%XTOWN,u%XWATER)
135 ENDIF
136 !
137 !* 2.2 Orography :
138 ! ---------
139 !
140 !
141 ALLOCATE(u%XZS(u%NSIZE_FULL))
142 yrecfm='ZS'
143  CALL read_surf(hprogram,yrecfm,u%XZS(:),iresp)
144 !
145 IF (lassim) lread_all = gread_all
146 !
147 IF (lhook) CALL dr_hook('READ_COVER_N',1,zhook_handle)
148 !
149 !
150 !-------------------------------------------------------------------------------
151 !
152 END SUBROUTINE read_cover_n
subroutine read_cover_n(DTCO, U, HPROGRAM)
Definition: read_covern.F90:8
subroutine read_surf_cov(HPROGRAM, HREC, PFIELD, OFLAG, KRESP, HCOMMENT, HDIR)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine read_lcover(HPROGRAM, OCOVER)
Definition: read_lcover.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine convert_cover_frac(DTCO, PCOVER, OCOVER, PSEA, PNATURE, PTOWN, PWATER)
static int count
Definition: memory_hook.c:21