From bd7bf1ab7538651f345dae325b5a1441c88d091d Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Thu, 18 Jul 2024 14:58:49 +0200 Subject: [PATCH] Jean W. 18/07/2024: add LTOWN_TO_ROCK to initialize urban vegtype when needed --- src/SURFEX/ini_data_cover.F90 | 3 +- src/SURFEX/init_types_param.F90 | 83 +++++++++++++++++---------------- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/src/SURFEX/ini_data_cover.F90 b/src/SURFEX/ini_data_cover.F90 index a6b0ef2c7..b7c4c068e 100644 --- a/src/SURFEX/ini_data_cover.F90 +++ b/src/SURFEX/ini_data_cover.F90 @@ -43,6 +43,7 @@ !! R.Alkama 05/2015 Add 7 new vegtype (19 rather than 12) !! A. Druel 02/2019 Change default values and add new parameter for irrigation !! J. Wurtz 01/2023 Passing LECOSG key to default urban frac +!! J. Wurtz 05/2023 Passing LTOWN_TO_ROCK to init_types_param to define urban vegetation when needed !---------------------------------------------------------------------------- ! !* 0. DECLARATION @@ -1214,7 +1215,7 @@ XDATA_HOTWAT (:) = XUNDEF !* Global data set ! IF (U%LECOSG) THEN - CALL INIT_TYPES_PARAM + CALL INIT_TYPES_PARAM(U%LTOWN_TO_ROCK) ELSEIF (LREAD_DATA_COVER) THEN CALL READ_COVERS_PARAM(1) ELSE diff --git a/src/SURFEX/init_types_param.F90 b/src/SURFEX/init_types_param.F90 index 3a1d2f175..d8bdcd5e9 100644 --- a/src/SURFEX/init_types_param.F90 +++ b/src/SURFEX/init_types_param.F90 @@ -3,7 +3,7 @@ !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. ! ############################ - SUBROUTINE INIT_TYPES_PARAM + SUBROUTINE INIT_TYPES_PARAM(OTOWN_TO_ROCK) ! ############################ ! !!**** *INIT_TYPES_PARAM* initializes cover-field correspondance arrays @@ -37,6 +37,7 @@ !! R. Alkama 05/2012 : read 19 vegtypes rather than 12 !! E. Martin 10/2014 : add status='old' for ecoclimap.bin files !! A. Druel 02/2019 : remove part non compatible with TOWN_TO_ROCK - but temp ! #rustine +!! J. Wurtz 05/2023 : Adding a switch to be compatible with TOWN_TO_ROCK and TEB !! !---------------------------------------------------------------------------- ! @@ -61,6 +62,7 @@ IMPLICIT NONE ! !* 0.1 Declaration of arguments ! ------------------------ +LOGICAL, INTENT(IN) :: OTOWN_TO_ROCK ! !* 0.2 Declaration of local variables ! ------------------------------ @@ -148,10 +150,10 @@ XDATA_WALL_O_HOR(NUT_LALR) = 0.24 XDATA_WALL_O_HOR(NUT_SPAR) = 0.36 XDATA_WALL_O_HOR(NUT_INDU) = 0.45 ! -XDATA_H_TRAFFIC(NUT_CPHR) = 20 +XDATA_H_TRAFFIC(NUT_CPHR) = 10 XDATA_H_TRAFFIC(NUT_CPMR) = 10 XDATA_H_TRAFFIC(NUT_CPLR) = 5 -XDATA_H_TRAFFIC(NUT_OPHR) = 20 +XDATA_H_TRAFFIC(NUT_OPHR) = 5 XDATA_H_TRAFFIC(NUT_OPMR) = 10 XDATA_H_TRAFFIC(NUT_OPLR) = 5 XDATA_H_TRAFFIC(NUT_LWLR) = 5 @@ -166,45 +168,46 @@ XDATA_H_INDUSTRY(NUT_OPHR) = 0. XDATA_H_INDUSTRY(NUT_OPMR) = 0. XDATA_H_INDUSTRY(NUT_OPLR) = 0. XDATA_H_INDUSTRY(NUT_LWLR) = 0. -XDATA_H_INDUSTRY(NUT_LALR) = 50. +XDATA_H_INDUSTRY(NUT_LALR) = 0. XDATA_H_INDUSTRY(NUT_SPAR) = 0. -XDATA_H_INDUSTRY(NUT_INDU) = 100. -! -!#rustine remove following lines (non compatible with TOWN_TO_ROCK), but temp -!#rustine. Note that there is a difference between 1km LAI map and 300m LAI maps here: it's use NVT_FLGR in 1KM map and here NVT_GRASS -!XDATA_VEGTYPE(NUT_CPHR,NVT_GRAS) = 0.0 -!XDATA_VEGTYPE(NUT_CPMR,NVT_GRAS) = 0.0 -!XDATA_VEGTYPE(NUT_CPLR,NVT_GRAS) = 0.0 -!XDATA_VEGTYPE(NUT_OPHR,NVT_GRAS) = 0.4 -!XDATA_VEGTYPE(NUT_OPMR,NVT_GRAS) = 0.4 -!XDATA_VEGTYPE(NUT_OPLR,NVT_GRAS) = 0.4 -!XDATA_VEGTYPE(NUT_LWLR,NVT_GRAS) = 0.5 -!XDATA_VEGTYPE(NUT_LALR,NVT_GRAS) = 0.5 -!XDATA_VEGTYPE(NUT_SPAR,NVT_GRAS) = 0.5 -!XDATA_VEGTYPE(NUT_INDU,NVT_GRAS) = 0.4 -!! -!XDATA_VEGTYPE(NUT_CPHR,NVT_NO) = 0.0 -!XDATA_VEGTYPE(NUT_CPMR,NVT_NO) = 0.0 -!XDATA_VEGTYPE(NUT_CPLR,NVT_NO) = 0.0 -!XDATA_VEGTYPE(NUT_OPHR,NVT_NO) = 0.2 -!XDATA_VEGTYPE(NUT_OPMR,NVT_NO) = 0.2 -!XDATA_VEGTYPE(NUT_OPLR,NVT_NO) = 0.2 -!XDATA_VEGTYPE(NUT_LWLR,NVT_NO) = 0.5 -!XDATA_VEGTYPE(NUT_LALR,NVT_NO) = 0.5 -!XDATA_VEGTYPE(NUT_SPAR,NVT_NO) = 0.2 -!XDATA_VEGTYPE(NUT_INDU,NVT_NO) = 0.6 -!! -!XDATA_VEGTYPE(NUT_CPHR,NVT_TEBD) = 1.0 -!XDATA_VEGTYPE(NUT_CPMR,NVT_TEBD) = 1.0 -!XDATA_VEGTYPE(NUT_CPLR,NVT_TEBD) = 1.0 -!XDATA_VEGTYPE(NUT_OPHR,NVT_TEBD) = 0.4 -!XDATA_VEGTYPE(NUT_OPMR,NVT_TEBD) = 0.4 -!XDATA_VEGTYPE(NUT_OPLR,NVT_TEBD) = 0.4 -!XDATA_VEGTYPE(NUT_LWLR,NVT_TEBD) = 0.0 -!XDATA_VEGTYPE(NUT_LALR,NVT_TEBD) = 0.0 -!XDATA_VEGTYPE(NUT_SPAR,NVT_TEBD) = 0.3 -!XDATA_VEGTYPE(NUT_INDU,NVT_TEBD) = 0.0 +XDATA_H_INDUSTRY(NUT_INDU) = 0. +! + +IF (.NOT. OTOWN_TO_ROCK) THEN + XDATA_VEGTYPE(NUT_CPHR,NVT_GRAS) = 0.0 + XDATA_VEGTYPE(NUT_CPMR,NVT_GRAS) = 0.0 + XDATA_VEGTYPE(NUT_CPLR,NVT_GRAS) = 0.0 + XDATA_VEGTYPE(NUT_OPHR,NVT_GRAS) = 0.4 + XDATA_VEGTYPE(NUT_OPMR,NVT_GRAS) = 0.4 + XDATA_VEGTYPE(NUT_OPLR,NVT_GRAS) = 0.4 + XDATA_VEGTYPE(NUT_LWLR,NVT_GRAS) = 0.5 + XDATA_VEGTYPE(NUT_LALR,NVT_GRAS) = 0.5 + XDATA_VEGTYPE(NUT_SPAR,NVT_GRAS) = 0.5 + XDATA_VEGTYPE(NUT_INDU,NVT_GRAS) = 0.4 + !! + XDATA_VEGTYPE(NUT_CPHR,NVT_NO) = 0.0 + XDATA_VEGTYPE(NUT_CPMR,NVT_NO) = 0.0 + XDATA_VEGTYPE(NUT_CPLR,NVT_NO) = 0.0 + XDATA_VEGTYPE(NUT_OPHR,NVT_NO) = 0.2 + XDATA_VEGTYPE(NUT_OPMR,NVT_NO) = 0.2 + XDATA_VEGTYPE(NUT_OPLR,NVT_NO) = 0.2 + XDATA_VEGTYPE(NUT_LWLR,NVT_NO) = 0.5 + XDATA_VEGTYPE(NUT_LALR,NVT_NO) = 0.5 + XDATA_VEGTYPE(NUT_SPAR,NVT_NO) = 0.2 + XDATA_VEGTYPE(NUT_INDU,NVT_NO) = 0.6 + !! + XDATA_VEGTYPE(NUT_CPHR,NVT_TEBD) = 1.0 + XDATA_VEGTYPE(NUT_CPMR,NVT_TEBD) = 1.0 + XDATA_VEGTYPE(NUT_CPLR,NVT_TEBD) = 1.0 + XDATA_VEGTYPE(NUT_OPHR,NVT_TEBD) = 0.4 + XDATA_VEGTYPE(NUT_OPMR,NVT_TEBD) = 0.4 + XDATA_VEGTYPE(NUT_OPLR,NVT_TEBD) = 0.4 + XDATA_VEGTYPE(NUT_LWLR,NVT_TEBD) = 0.0 + XDATA_VEGTYPE(NUT_LALR,NVT_TEBD) = 0.0 + XDATA_VEGTYPE(NUT_SPAR,NVT_TEBD) = 0.3 + XDATA_VEGTYPE(NUT_INDU,NVT_TEBD) = 0.0 +END IF ! IF (LHOOK) CALL DR_HOOK('INIT_TYPES_PARAM',1,ZHOOK_HANDLE) ! -- GitLab