From 4dd734a8794b4b7cb305ec6d7677c2f82e7c75a3 Mon Sep 17 00:00:00 2001
From: Gaelle Tanguy <gaelle.tanguy@meteo.fr>
Date: Wed, 24 Jun 2015 14:10:41 +0000
Subject: [PATCH] Gaelle 24/06/2015 : bug for arome file at 1.3km

---
 src/SURFEX/mode_read_extern.F90 | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/SURFEX/mode_read_extern.F90 b/src/SURFEX/mode_read_extern.F90
index b466b8a8f..5f459a472 100644
--- a/src/SURFEX/mode_read_extern.F90
+++ b/src/SURFEX/mode_read_extern.F90
@@ -2,6 +2,9 @@
 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SURFEX_LIC for details. version 1.
+! Modifications :
+! P.Marguinaud : 11-09-2012 : shorten field name
+! G.Delautier : 24-06-2015 : bug for arome compressed files
 !     #####################
 MODULE MODE_READ_EXTERN
 !     #####################
@@ -32,9 +35,6 @@ USE MODI_READ_SURF
 USE MODI_CONVERT_COVER_ISBA
 USE MODI_GARDEN_SOIL_DEPTH
 
-! Modifications :
-! P.Marguinaud : 11-09-2012 : shorten field name
-
 !
 IMPLICIT NONE
 !
@@ -160,6 +160,7 @@ IF (HNAT=='NAT' .AND. (IVERSION>=7 .OR. .NOT.GECOCLIMAP)) THEN
     !
   ENDIF
   !
+    GDATA_GROUND_DEPTH=.FALSE.
   IF (IVERSION>7 .OR. IVERSION==7 .AND. IBUGFIX>=2) THEN
     !
     YRECFM2='L_GROUND_DEPTH'
@@ -332,6 +333,7 @@ REAL,  DIMENSION(:),   ALLOCATABLE   :: ZWWILT    ! wilting point
 REAL,  DIMENSION(:),   ALLOCATABLE   :: ZWFC      ! field capacity
 REAL,  DIMENSION(:),   ALLOCATABLE   :: ZWSAT     ! saturation
 REAL,  DIMENSION(:),   ALLOCATABLE   :: ZSOILGRID
+REAL,  DIMENSION(:),   ALLOCATABLE   :: ZNAT      ! natural surface fraction 
 !
 INTEGER :: IVERSION   ! surface version
 INTEGER :: IBUGFIX
@@ -469,6 +471,15 @@ ELSE
 END IF
 !
 DEALLOCATE(ZSOILGRID)
+!
+! *.  Read fraction of nature
+!     --------------
+!
+ALLOCATE(ZNAT(KNI))
+IF (IVERSION>=7) THEN
+  CALL READ_SURF(HFILEPGDTYPE,'FRAC_NATURE',ZNAT,IRESP,HDIR='A')
+ENDIF
+
 !
  CALL CLOSE_AUX_IO_SURF(HFILEPGD,HFILEPGDTYPE)
 !
@@ -550,7 +561,7 @@ IF (HFIELD=='WG    ' .OR. HFIELD=='WGI   ') THEN
   IF (HFIELD=='WG    ') THEN
     DO JPATCH=1,IPATCH
       DO JLAYER=1,ILAYER
-        WHERE(ZVAR(:,JLAYER,JPATCH)/=XUNDEF)
+        WHERE(ZNAT(:)>0.0)
           ZVAR(:,JLAYER,JPATCH) = MAX(MIN(ZVAR(:,JLAYER,JPATCH),ZWSAT(:)),0.)
           !
           ZFIELD(:,JLAYER,JPATCH) = (ZVAR(:,JLAYER,JPATCH) - ZWWILT(:)) / (ZWFC(:) - ZWWILT(:))
@@ -560,12 +571,14 @@ IF (HFIELD=='WG    ' .OR. HFIELD=='WGI   ') THEN
   ELSE IF (HFIELD=='WGI   ') THEN
     DO JPATCH=1,IPATCH
       DO JLAYER=1,ILAYER
-        WHERE(ZVAR(:,JLAYER,JPATCH)/=XUNDEF) &
+        WHERE(ZNAT(:)>0.0)
           ZFIELD(:,JLAYER,JPATCH) = ZVAR(:,JLAYER,JPATCH) / ZWSAT(:)  
+        END WHERE 
       END DO
     END DO
   END IF
 !
+  DEALLOCATE (ZNAT)
   DEALLOCATE (ZWSAT)
   DEALLOCATE (ZWWILT)
   DEALLOCATE (ZWFC)
-- 
GitLab