SURFEX v8.1
General documentation of Surfex
init_surf_landusen.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 init_surf_landuse_n (DTCO, OREAD_BUDGETC, U, UG, IM, SV, SLT, NDST, &
7  HPROGRAM,HINIT,OLAND_USE, &
8  KI,KSV,KSW, &
9  HSV,PCO2,PRHOA, &
10  PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, &
11  PEMIS,PTSRAD,PTSURF, &
12  KYEAR, KMONTH,KDAY, PTIME, &
13  HATMFILE,HATMFILETYPE, &
14  HTEST )
15 !#############################################################
16 !
17 !!**** *INIT_SURF_LANDUSE_n* - routine to initialize LAND USE
18 !!
19 !! PURPOSE
20 !! -------
21 !!
22 !!** METHOD
23 !! ------
24 !!
25 !! EXTERNAL
26 !! --------
27 !!
28 !!
29 !! IMPLICIT ARGUMENTS
30 !! ------------------
31 !!
32 !! REFERENCE
33 !! ---------
34 !!
35 !!
36 !! AUTHOR
37 !! ------
38 !! S. Faroux *Meteo France*
39 !!
40 !! MODIFICATIONS
41 !! -------------
42 !!
43 !! modified 06-13 B. Decharme : New coupling variable
44 !-------------------------------------------------------------------------------
45 !
46 !* 0. DECLARATIONS
47 ! ------------
48 !
50 USE modd_surf_atm_n, ONLY : surf_atm_t
52 USE modd_surfex_n, ONLY : isba_model_t
53 USE modd_dst_n, ONLY : dst_np_t
54 USE modd_slt_n, ONLY : slt_t
55 USE modd_sv_n, ONLY : sv_t
56 !
57 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm
58 !
59 USE yomhook , ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 USE modd_data_cover_par, ONLY : nvegtype
63 !
65 USE modi_init_io_surf_n
66 USE modi_end_io_surf_n
67 !
68 USE modi_get_type_dim_n
70 USE modi_make_choice_array
71 !
72 USE modi_set_vegtypes_fractions
73 USE modi_compute_isba_parameters
74 USE modi_abor1_sfx
75 !
76 IMPLICIT NONE
77 !
78 #ifdef SFX_MPI
79 include "mpif.h"
80 #endif
81 !
82 !* 0.1 Declarations of arguments
83 ! -------------------------
84 !
85 TYPE(data_cover_t) :: DTCO
86 LOGICAL, INTENT(IN) :: OREAD_BUDGETC
87 TYPE(surf_atm_t) :: U
88 TYPE(surf_atm_grid_t) :: UG
89 TYPE(isba_model_t) :: IM
90 TYPE(sv_t), INTENT(INOUT) :: SV
91 TYPE(dst_np_t), INTENT(INOUT) :: NDST
92 TYPE(slt_t), INTENT(INOUT) :: SLT
93 !
94  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes
95  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize
96 LOGICAL, INTENT(IN) :: OLAND_USE ! choice of doing land use or not
97 INTEGER, INTENT(IN) :: KI ! number of points
98 INTEGER, INTENT(IN) :: KSV ! number of scalars
99 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
100  CHARACTER(LEN=6), DIMENSION(KSV), INTENT(IN) :: HSV ! name of all scalar variables
101 REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration (kg/m3)
102 REAL, DIMENSION(KI), INTENT(IN) :: PRHOA ! air density
103 REAL, DIMENSION(KI), INTENT(IN) :: PZENITH ! solar zenithal angle
104 REAL, DIMENSION(KI), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clock)
105 REAL, DIMENSION(KSW), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
106 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band
107 REAL, DIMENSION(KI,KSW),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band
108 REAL, DIMENSION(KI), INTENT(OUT) :: PEMIS ! emissivity
109 REAL, DIMENSION(KI), INTENT(OUT) :: PTSRAD ! radiative temperature
110 REAL, DIMENSION(KI), INTENT(OUT) :: PTSURF ! surface effective temperature (K)
111 !
112 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
113 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
114 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
115 REAL, INTENT(IN) :: PTIME ! current time since
116  ! midnight (UTC, s)
117 !
118  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
119  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
120  CHARACTER(LEN=2), INTENT(IN) :: HTEST ! must be equal to 'OK'
121 !
122 !
123 !* 0.2 Declarations of local variables
124 ! -------------------------------
125 INTEGER :: JLAYER, INFOMPI
126 INTEGER :: ILU, JP ! 1D physical dimension
127 INTEGER :: IRESP ! Error code after redding
128 REAL(KIND=JPRB) :: ZHOOK_HANDLE
129 !
130 !-------------------------------------------------------------------------------
131 !
132 IF (lhook) CALL dr_hook('INIT_SURF_LANDUSE_N',0,zhook_handle)
133 !
134 IF (htest/='OK') THEN
135  CALL abor1_sfx('INIT_SURF_LANDUSEN: FATAL ERROR DURING ARGUMENT TRANSFER')
136 END IF
137 !
138 IF (.NOT. oland_use)THEN
139  IF (lhook) CALL dr_hook('INIT_SURF_LANDUSE_N',1,zhook_handle)
140  RETURN
141 ENDIF
142 !
143 IF (im%O%CISBA=='DIF') THEN
144  CALL abor1_sfx('INIT_SURF_LANDUSEN: LAND USE NOT IMPLEMENTED WITH DIF')
145 ENDIF
146 !
147 !-------------------------------------------------------------------------------
148 !
149 #ifdef SFX_MPI
150  CALL mpi_bcast(ug%NGRID_FULL_PAR,kind(ug%NGRID_FULL_PAR)/4,mpi_integer,npio,ncomm,infompi)
151 #endif
152 IF (nrank/=npio) ALLOCATE(ug%XGRID_FULL_PAR(ug%NGRID_FULL_PAR))
153 #ifdef SFX_MPI
154  CALL mpi_bcast(ug%XGRID_FULL_PAR,&
155  SIZE(ug%XGRID_FULL_PAR)*kind(ug%XGRID_FULL_PAR)/4,mpi_real,npio,ncomm,infompi)
156 #endif
157 !
158 !* initialization for I/O
159 !
160  CALL init_io_surf_n(dtco, u, hprogram,'NATURE','ISBA ','READ ')
161 !
162 !* 1D physical dimension
163 !
164  CALL get_type_dim_n(dtco, u, 'NATURE',ilu)
165 !
166 !* End of IO
167 !
168  CALL end_io_surf_n(hprogram)
169 !
170 im%DTV%LDATA_MIXPAR = .true.
171 IF (.NOT.ASSOCIATED(im%DTV%XPAR_VEGTYPE)) ALLOCATE(im%DTV%XPAR_VEGTYPE(ilu,nvegtype))
172 IF (im%DTV%NTIME==0) im%DTV%NTIME = 36
173 IF (.NOT.ASSOCIATED(im%DTV%XPAR_LAI)) ALLOCATE(im%DTV%XPAR_LAI(ilu,im%DTV%NTIME,nvegtype))
174 IF (.NOT.ASSOCIATED(im%DTV%XPAR_H_TREE)) ALLOCATE(im%DTV%XPAR_H_TREE(ilu,nvegtype))
175 IF (.NOT.ASSOCIATED(im%DTV%XPAR_ROOT_DEPTH)) ALLOCATE(im%DTV%XPAR_ROOT_DEPTH(ilu,nvegtype))
176 IF (.NOT.ASSOCIATED(im%DTV%XPAR_GROUND_DEPTH)) ALLOCATE(im%DTV%XPAR_GROUND_DEPTH(ilu,nvegtype))
177 IF (.NOT.ASSOCIATED(im%DTV%XPAR_IRRIG)) ALLOCATE(im%DTV%XPAR_IRRIG(ilu,im%DTV%NTIME,nvegtype))
178 IF (.NOT.ASSOCIATED(im%DTV%XPAR_WATSUP)) ALLOCATE(im%DTV%XPAR_WATSUP(ilu,im%DTV%NTIME,nvegtype))
179 !
180 !
181 !-------------------------------------------------------------------------------
182 !
183 !* read new fraction of each vege type
184 ! and then extrapolate parameters defined by cover
185 !
186  CALL set_vegtypes_fractions(dtco, im%DTV, im%G%NDIM, im%O, im%S, ug, u, hprogram)
187 !
188 !* re-initialize ISBA with new parameters
189 !
190  CALL compute_isba_parameters(dtco, oread_budgetc, ug, u, &
191  im%O, im%DTV, im%SB, im%S, im%G, im%K, im%NK, &
192  im%NG, im%NP, im%NPE, im%NAG, im%NISS, im%ISS, &
193  im%NCHI, im%CHI, im%ID, im%GB, im%NGB, &
194  ndst, slt, sv, hprogram, hinit, oland_use, &
195  ilu, ksv, ksw, hsv, pco2, prhoa, &
196  pzenith,psw_bands,pdir_alb,psca_alb, &
197  pemis,ptsrad,ptsurf,htest )
198 !-------------------------------------------------------------------------------
199 !
200 IF (lhook) CALL dr_hook('INIT_SURF_LANDUSE_N',1,zhook_handle)
201 !
202 END SUBROUTINE init_surf_landuse_n
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
subroutine compute_isba_parameters(DTCO, OREAD_BUDGETC, UG, U, IO, DTI, SB, S, IG, K, NK, NIG, NP, NPE, NAG, NISS, ISS, NCHI, CHI, ID, GB, NGB, NDST, SLT, SV, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, HTEST)
subroutine set_vegtypes_fractions(DTCO, DTV, KDIM, IO, S, UG, U,
integer, parameter jprb
Definition: parkind1.F90:32
subroutine end_io_surf_n(HPROGRAM)
Definition: end_io_surfn.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
subroutine init_surf_landuse_n(DTCO, OREAD_BUDGETC, U, UG, IM, SV, SLT, NDST, HPROGRAM, HINIT, OLAND_USE, KI, KSV, KSW, HSV, PCO2, PRHOA, PZENITH, PAZIM, PSW_BANDS, PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD, PTSURF, KYEAR, KMONTH, KDAY, PTIME, HATMFILE, HATMFILETYPE, HTEST)