From b298cf6e22fad634ae3f5a571bacbef89ebef9f4 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 18 Jun 2018 09:55:50 +0200
Subject: [PATCH] Philippe 18/06/2018: SURFEX: do not use SIZE on non
 associated pointers

---
 src/SURFEX/coupling_isban.F90 | 14 ++++++++++++--
 src/SURFEX/init_surf_atmn.F90 | 11 +++++++++--
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/src/SURFEX/coupling_isban.F90 b/src/SURFEX/coupling_isban.F90
index 1e87ac09d..1250e5719 100644
--- a/src/SURFEX/coupling_isban.F90
+++ b/src/SURFEX/coupling_isban.F90
@@ -727,8 +727,8 @@ REAL, DIMENSION(PK%NSIZE_P) :: ZP_Z0FLOOD  !Floodplain
 REAL, DIMENSION(PK%NSIZE_P) :: ZP_FFGNOS   !Floodplain fraction over the ground without snow
 REAL, DIMENSION(PK%NSIZE_P) :: ZP_FFVNOS   !Floodplain fraction over vegetation without snow
 !
-REAL, DIMENSION(SIZE(MGN%XPFT,1),PK%NSIZE_P) :: ZP_PFT
-REAL, DIMENSION(SIZE(MGN%XEF,1),PK%NSIZE_P) :: ZP_EF
+REAL, DIMENSION(:,:),ALLOCATABLE :: ZP_PFT
+REAL, DIMENSION(:,:),ALLOCATABLE :: ZP_EF
 INTEGER, DIMENSION(PK%NSIZE_P) :: IP_SLTYP
 !
 REAL, DIMENSION(PK%NSIZE_P,IO%NNBIOMASS) :: ZP_RESP_BIOMASS_INST         ! instantaneous biomass respiration (kgCO2/kgair m/s)
@@ -776,6 +776,16 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE
 !
 IF (LHOOK) CALL DR_HOOK('COUPLING_ISBA_n:TREAT_PATCH',0,ZHOOK_HANDLE)
 !
+IF (ASSOCIATED(MGN%XPFT)) THEN
+  ALLOCATE(ZP_PFT(SIZE(MGN%XPFT,1),PK%NSIZE_P))
+ELSE
+  ALLOCATE(ZP_PFT(0,0))
+ENDIF
+IF (ASSOCIATED(MGN%XEF)) THEN
+  ALLOCATE(ZP_EF(SIZE(MGN%XEF,1),PK%NSIZE_P))
+ELSE
+  ALLOCATE(ZP_EF(0,0))
+ENDIF
 !--------------------------------------------------------------------------------------
 !
 ! Pack isba forcing outputs
diff --git a/src/SURFEX/init_surf_atmn.F90 b/src/SURFEX/init_surf_atmn.F90
index 349efe1b1..6e454467d 100644
--- a/src/SURFEX/init_surf_atmn.F90
+++ b/src/SURFEX/init_surf_atmn.F90
@@ -725,8 +725,15 @@ DO JJ=1,KSIZE
       ZP_AZIM  (JJ)     = ZAZIM       (KMASK(JJ)) 
     ENDIF
   ENDIF
-  IF (SIZE(YSC%IM%MSF%XMEGAN_FIELDS,1)>0 .AND. YSC%IM%MSF%NMEGAN_NBR>0 ) &
-    ZP_MEGAN_FIELDS  (JJ,:)  = YSC%IM%MSF%XMEGAN_FIELDS(KMASK(JJ),:)  
+!  IF (SIZE(YSC%IM%MSF%XMEGAN_FIELDS,1)>0 .AND. YSC%IM%MSF%NMEGAN_NBR>0 ) &
+!    ZP_MEGAN_FIELDS  (JJ,:)  = YSC%IM%MSF%XMEGAN_FIELDS(KMASK(JJ),:)
+  IF ( YSC%IM%MSF%NMEGAN_NBR>0 ) THEN
+    IF ( ASSOCIATED(YSC%IM%MSF%XMEGAN_FIELDS)) THEN
+      IF ( SIZE(YSC%IM%MSF%XMEGAN_FIELDS,1)>0 ) THEN
+        ZP_MEGAN_FIELDS  (JJ,:)  = YSC%IM%MSF%XMEGAN_FIELDS(KMASK(JJ),:)
+      END IF
+    END IF
+  END IF
 ENDDO
 IF (LHOOK) CALL DR_HOOK('PACK_SURF_INIT_ARG',1,ZHOOK_HANDLE)
 !
-- 
GitLab