From 532141cd3dca0800dd008e8001aa5fd4652eae9e Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Wed, 25 Mar 2015 14:02:31 +0000
Subject: [PATCH]  Christine 25/3/2015 : bug trainee des arbres

---
 src/SURFEX/allocate_physio.F90           |  4 ++--
 src/SURFEX/pack_isba_patch_get_sizen.F90 |  6 +++---
 src/SURFEX/pack_isba_patchn.F90          | 11 +++++------
 src/SURFEX/pgd_cover.F90                 | 10 ++++++++++
 src/SURFEX/pgd_isba_par.F90              |  4 ++++
 5 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/src/SURFEX/allocate_physio.F90 b/src/SURFEX/allocate_physio.F90
index cbcdbcdd4..8f3539b99 100644
--- a/src/SURFEX/allocate_physio.F90
+++ b/src/SURFEX/allocate_physio.F90
@@ -100,10 +100,11 @@ ALLOCATE(PALBNIR_VEG             (KLU,KPATCH              ))
 ALLOCATE(PALBVIS_VEG             (KLU,KPATCH              )) 
 ALLOCATE(PALBUV_VEG              (KLU,KPATCH              )) 
 !
+ALLOCATE(PH_TREE                 (KLU,KPATCH              )) 
+!
 ! - vegetation: Ags parameters ('AGS', 'LAI', 'AST', 'LST', 'NIT' options)
 !
 IF (HPHOTO/='NON') THEN
-  ALLOCATE(PH_TREE                 (KLU,KPATCH              )) 
   ALLOCATE(PRE25                   (KLU,KPATCH              )) 
   ALLOCATE(PLAIMIN                 (KLU,KPATCH              )) 
   ALLOCATE(PBSLAI                  (KLU,KPATCH              )) 
@@ -132,7 +133,6 @@ IF (HPHOTO/='NON') THEN
     ALLOCATE(PCNA_NITRO   (0,0))
   ENDIF
 ELSE
-  ALLOCATE(PH_TREE    (0,0)) 
   ALLOCATE(PRE25      (0,0))
   ALLOCATE(PLAIMIN    (0,0))
   ALLOCATE(PBSLAI     (0,0))  
diff --git a/src/SURFEX/pack_isba_patch_get_sizen.F90 b/src/SURFEX/pack_isba_patch_get_sizen.F90
index 9271f5085..463523274 100644
--- a/src/SURFEX/pack_isba_patch_get_sizen.F90
+++ b/src/SURFEX/pack_isba_patch_get_sizen.F90
@@ -66,7 +66,7 @@ NSIZE_N0=0
 NSIZE_TSIMPLE=0
 NSIZE_T0=0
 !
-NSIZE_SIMPLE=68
+NSIZE_SIMPLE=69
 NSIZE_GROUND=11
 NSIZE_VEGTYPE=1
 NSIZE_TG=1
@@ -150,10 +150,10 @@ ELSE
 ENDIF
 !
 IF (CPHOTO/='NON') THEN
-  NSIZE_SIMPLE=NSIZE_SIMPLE+23
+  NSIZE_SIMPLE=NSIZE_SIMPLE+22
   NSIZE_BIOMASS=NSIZE_BIOMASS+2
 ELSE
-  NSIZE_0=NSIZE_0+23
+  NSIZE_0=NSIZE_0+22
   NSIZE_00=NSIZE_00+2
 ENDIF
 !
diff --git a/src/SURFEX/pack_isba_patchn.F90 b/src/SURFEX/pack_isba_patchn.F90
index ed6fea2d9..bbf1ecc1a 100644
--- a/src/SURFEX/pack_isba_patchn.F90
+++ b/src/SURFEX/pack_isba_patchn.F90
@@ -528,6 +528,8 @@ ELSE
   XP_RSMIN      => XBLOCK_0(:,ISIZE_0)
 END IF
 !
+ISIZE_SIMPLE = ISIZE_SIMPLE + 1
+ XP_H_TREE     => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
 !
 IF (CPHOTO/='NON') THEN
   ISIZE_SIMPLE = ISIZE_SIMPLE + 1
@@ -536,8 +538,6 @@ IF (CPHOTO/='NON') THEN
    XP_LAIMIN     => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
   ISIZE_SIMPLE = ISIZE_SIMPLE + 1
    XP_SEFOLD     => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
-  ISIZE_SIMPLE = ISIZE_SIMPLE + 1
-   XP_H_TREE     => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
   ISIZE_SIMPLE = ISIZE_SIMPLE + 1
    XP_ANF        => XBLOCK_SIMPLE(:,ISIZE_SIMPLE)
   ISIZE_SIMPLE = ISIZE_SIMPLE + 1
@@ -588,8 +588,6 @@ ELSE
   ISIZE_0 = ISIZE_0 + 1
   XP_SEFOLD     => XBLOCK_0(:,ISIZE_0)
   ISIZE_0 = ISIZE_0 + 1
-  XP_H_TREE     => XBLOCK_0(:,ISIZE_0)
-  ISIZE_0 = ISIZE_0 + 1
   XP_ANF        => XBLOCK_0(:,ISIZE_0)
   ISIZE_0 = ISIZE_0 + 1
   XP_ANMAX      => XBLOCK_0(:,ISIZE_0)
@@ -967,11 +965,12 @@ IF (NPATCH==1) THEN
     XP_RSMIN      (:)    =    XRSMIN      (:, 1) 
   END IF
   !
+  XP_H_TREE     (:)    =    XH_TREE     (:, 1)
+  !
   IF (CPHOTO/='NON') THEN
     XP_BSLAI      (:)    =    XBSLAI      (:, 1)
     XP_LAIMIN     (:)    =    XLAIMIN     (:, 1)
     XP_SEFOLD     (:)    =    XSEFOLD     (:, 1)
-    XP_H_TREE     (:)    =    XH_TREE     (:, 1)
     XP_ANMAX      (:)    =    XANMAX      (:, 1)
     XP_FZERO      (:)    =    XFZERO      (:, 1)
     XP_EPSO       (:)    =    XEPSO       (:, 1)
@@ -1100,6 +1099,7 @@ ELSE
     XP_LAT          (JJ)    =    XLAT          (JI)
     XP_LON          (JJ)    =    XLON          (JI)    
     XP_FSAT         (JJ)    =    XFSAT         (JI)
+    XP_H_TREE       (JJ)    =    XH_TREE       (JI, KPATCH)
   ENDDO
   !  
   DO JK=1,NGROUND_LAYER
@@ -1300,7 +1300,6 @@ ELSE
       XP_BSLAI      (JJ)    =    XBSLAI      (JI, KPATCH)
       XP_LAIMIN     (JJ)    =    XLAIMIN     (JI, KPATCH)
       XP_SEFOLD     (JJ)    =    XSEFOLD     (JI, KPATCH)
-      XP_H_TREE     (JJ)    =    XH_TREE     (JI, KPATCH)
       XP_ANMAX      (JJ)    =    XANMAX      (JI, KPATCH)
       XP_FZERO      (JJ)    =    XFZERO      (JI, KPATCH)
       XP_EPSO       (JJ)    =    XEPSO       (JI, KPATCH)
diff --git a/src/SURFEX/pgd_cover.F90 b/src/SURFEX/pgd_cover.F90
index 35dc68c68..c2d37c707 100644
--- a/src/SURFEX/pgd_cover.F90
+++ b/src/SURFEX/pgd_cover.F90
@@ -143,6 +143,7 @@ INTEGER                  :: ICOVER      ! 0 if cover is not present, >1 if prese
 !                                       ! (even on another processor)
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
+INTEGER :: JI, JX, JY
 !---------------------------------------------------------------
 !
 !*    1.      Initializations
@@ -195,6 +196,15 @@ IF (ANY(XUNIF_COVER/=0.)) THEN
        XCOVER(:,JCOVER) = XUNIF_COVER(JCOVER)
     END DO
     XCOVER(:,:)=XCOVER(:,:)/SPREAD(SUM(XCOVER(:,:),2),2,JPCOVER)
+  DO JI=1,NL
+    JY = (JI-1)/20+1
+    JX =  JI -(JY-1)*20
+    IF (JX>=2 .AND. JX<4) THEN
+      XCOVER(JI,:) = 0.   !JI->JX
+      XCOVER(JI,202)= 1.  !JI->JX
+    END IF
+  END DO
+! inclusion d'arbres 
   END IF
 !
 !*    3.3     No data
diff --git a/src/SURFEX/pgd_isba_par.F90 b/src/SURFEX/pgd_isba_par.F90
index 57536f78f..87bb475d7 100644
--- a/src/SURFEX/pgd_isba_par.F90
+++ b/src/SURFEX/pgd_isba_par.F90
@@ -240,6 +240,7 @@ LOGICAL, DIMENSION(NVEGTYPE_MAX)            :: LUNIF_STRESS     ! stress type
  CHARACTER(LEN=6), DIMENSION(NVEGTYPE_MAX)             :: CFTYP_CNA_NITRO  ! CNA for nitrogen
 REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
+INTEGER :: JI
 NAMELIST/NAM_DATA_ISBA/NTIME, XUNIF_VEGTYPE, XUNIF_DG, XUNIF_ROOTFRAC, XUNIF_DICE,                  &
                          XUNIF_GROUND_DEPTH, XUNIF_ROOT_DEPTH, XUNIF_ROOT_EXTINCTION,               &
                          XUNIF_ROOT_LIN, XUNIF_LAI, XUNIF_VEG, XUNIF_Z0, XUNIF_EMIS,                &
@@ -480,6 +481,9 @@ IF (.NOT. LDATA_VEGTYPE .AND. .NOT. LDATA_LAI) DEALLOCATE(XPAR_LAI)
 !
 ALLOCATE(XPAR_Z0       (NDIM,NTIME,NVEGTYPE))
  CALL INI_VAR_FROM_DATA(HPROGRAM,'CDN','Z0: roughness length','NAT',CFNAM_Z0,CFTYP_Z0,XUNIF_Z0,XPAR_Z0,LDATA_Z0)
+DO JI=1,NDIM
+XPAR_Z0(JI,:,:) = XPAR_Z0(JI,:,:) * (0.5 + MOD(NINT ( (FLOAT(JI)**1.5) ),100)/100. )
+END DO
 IF (.NOT. LDATA_Z0) DEALLOCATE(XPAR_Z0)
 !
 ALLOCATE(XPAR_EMIS     (NDIM,NTIME,NVEGTYPE))
-- 
GitLab