Newer
Older

WAUTELET Philippe
committed
!SFX_LIC Copyright 2003-2019 CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence

WAUTELET Philippe
committed
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
SUBROUTINE WRITESURF_PGD_ISBA_PAR_n (HSELECT, DTV, HPROGRAM)
! ################################################
!
!!**** *WRITESURF_PGD_ISBA_PAR_n* - writes ISBA physiographic fields
!!
!!
!! PURPOSE
!! -------
!!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! REFERENCE
!! ---------
!!
!!
!! AUTHOR
!! ------
!!
!! MODIFICATIONS
!! -------------
!! Original 01/2003
!! P. Le Moigne 12/2004 : add type of photosynthesis

WAUTELET Philippe
committed
!! P. Wautelet 01/2019: bug: write L_STRESS only if it exists
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
!
USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
USE PARKIND1 ,ONLY : JPRB
!
IMPLICIT NONE
!
!* 0.1 Declarations of arguments
! -------------------------
CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
!
CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
!
!* 0.2 Declarations of local variables
! -------------------------------
!
LOGICAL :: GFOUND ! Return code when searching namelist
INTEGER :: ILUOUT ! logical unit of output file
INTEGER :: INAM ! logical unit of namelist file
INTEGER :: IRESP ! IRESP : return-code if a problem appears
CHARACTER(LEN=LEN_HREC) :: YRECFM ! Name of the article to be read
CHARACTER(LEN=100):: YCOMMENT ! Comment string
INTEGER :: JTIME ! loop index
INTEGER :: JL ! loop index
INTEGER :: JV ! loop index
REAL, DIMENSION(:), ALLOCATABLE :: ZWORK
REAL(KIND=JPRB) :: ZHOOK_HANDLE
!
!-------------------------------------------------------------------------------
!
IF (LHOOK) CALL DR_HOOK('WRITESURF_PGD_ISBA_PAR_N',0,ZHOOK_HANDLE)
YRECFM='L_VEGTYPE'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_VEGTYPE,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_VEGTYPE) THEN
YCOMMENT='X_Y_DATA_ISBATYPE'
IF (LSPLIT_PATCH) THEN
DO JV=1,DTV%NVEGTYPE
WRITE(YPAT,'(I2)') JV
YRECFM = 'D_VEGTY_P'//ADJUSTL(YPAT)
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_VEGTYPE(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDDO
ELSE
YRECFM='D_VEGTYPE'
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_VEGTYPE(:,:),IRESP,HCOMMENT=YCOMMENT,HNAM_DIM="Number_of_covers")
ENDIF
ENDIF
!
YRECFM='NDATA_TIME'
YCOMMENT='(-)'
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%NTIME,IRESP,HCOMMENT=YCOMMENT)
!
YRECFM='L_VEG'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_VEG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_VEG'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_VEG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_VEG_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_VEG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
!
YRECFM='L_LAI'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_LAI,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
!for each defined time
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_LAI'
!for each vegtype for this time
DO JV=1,DTV%NVEGTYPE
! we write the field only if the data exists
IF (DTV%LDATA_LAI((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_LAI_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_LAI(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
YRECFM='L_Z0'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_Z0,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_Z0'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_Z0((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A6,I2.2,A1,I2.2)') 'D_Z0_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_Z0(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
!
YRECFM='L_EMIS'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_EMIS,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_EMIS'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_EMIS((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_EMI_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_EMIS(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
!
YRECFM='L_H_VEG'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_H_VEG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_H_VEG'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_H_VEG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_HVG_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_H_VEG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
!
YRECFM='L_GNDLITTER'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_GNDLITTER,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_GNDLITTER'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_GNDLITTER((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_GLI_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_GNDLITTER(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_Z0LITTER,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
YCOMMENT='X_Y_D_Z0LITTER'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_Z0LITTER((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_Z0L_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_Z0LITTER(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
END DO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBNIR_VEG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBNIR_VEG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_ANV_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBNIR_VEG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBVIS_VEG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBVIS_VEG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_AVV_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBVIS_VEG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBUV_VEG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBUV_VEG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_AUV_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBUV_VEG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBNIR_SOIL,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBNIR_SOIL((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_ANS_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBNIR_SOIL(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBVIS_SOIL,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBVIS_SOIL((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_AVS_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBVIS_SOIL(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ALBUV_SOIL,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ALBUV_SOIL((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_AUS_T',JTIME,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ALBUV_SOIL(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
ENDDO
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%LDATA_RSMIN,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_RSMIN'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_RSMIN(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_RSMIN_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_RSMIN(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_GAMMA,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_GAMMA'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_GAMMA(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_GAMMA_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_GAMMA(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_WRMAX_CF,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_WRMAX_CF'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_WRMAX_CF(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_WRMAX_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_WRMAX_CF(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_RGL,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_RGL'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_RGL(JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2)') 'D_RGL_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_RGL(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_CV'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_CV,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_CV'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_CV(JV)) THEN
WRITE(YRECFM,FMT='(A6,I2.2)') 'D_CV_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_CV(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_Z0_O_Z0H'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_Z0_O_Z0H,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_D_Z0_O_Z0H'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_Z0_O_Z0H(JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2)') 'D_Z0H_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_Z0_O_Z0H(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_DG'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_DG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_DG(JV)) THEN
DO JL=1,SIZE(DTV%XPAR_DG,2)
WRITE(YRECFM,FMT='(A6,I2.2,A1,I2.2)') 'D_DG_L',JL,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_DG(:,JL,JV),IRESP,HCOMMENT=YCOMMENT)
ENDDO
ENDIF
ENDDO
!
YRECFM='L_ROOTFRAC'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ROOTFRAC,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ROOTFRAC(JV)) THEN
DO JL=1,SIZE(DTV%XPAR_ROOTFRAC,2)
WRITE(YRECFM,FMT='(A6,I2.2,A1,I2.2)') 'D_RTF_L',JL,'V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ROOTFRAC(:,JL,JV),IRESP,HCOMMENT=YCOMMENT)
ENDDO
ENDIF
ENDDO
!
YRECFM='L_GROUND_DPT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_GROUND_DEPTH,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_GROUND_DEPTH(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_GRDPT_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_GROUND_DEPTH(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_ROOT_DEPTH'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ROOT_DEPTH,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ROOT_DEPTH(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_RTDPT_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ROOT_DEPTH(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_ROOT_EXT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ROOT_EXTINCTION,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ROOT_EXTINCTION(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_RTEXT_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ROOT_EXTINCTION(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_ROOT_LIN'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_ROOT_LIN,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_ROOT_LIN(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_RTLIN_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_ROOT_LIN(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_DICE,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_DICE(JV)) THEN
WRITE(YRECFM,FMT='(A8,I2.2)') 'D_DICE_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_DICE(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_GMES'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_GMES,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_GMES(JV)) THEN
WRITE(YRECFM,FMT='(A8,I2.2)') 'D_GMES_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_GMES(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_BSLAI'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_BSLAI,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_BSLAI(JV)) THEN
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_BSLAI_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_BSLAI(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_LAIMIN'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_LAIMIN,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_LAIMIN(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_LAIMIN_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_LAIMIN(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_SEFOLD'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_SEFOLD,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_SEFOLD(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_SEFOLD_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_SEFOLD(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_GC'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_GC,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_GC(JV)) THEN
WRITE(YRECFM,FMT='(A6,I2.2)') 'D_GC_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_GC(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_DMAX'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_DMAX,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_DMAX(JV)) THEN
WRITE(YRECFM,FMT='(A8,I2.2)') 'D_DMAX_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_DMAX(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_F2I'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_F2I,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_F2I(JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2)') 'D_F2I_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_F2I(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO

WAUTELET Philippe
committed
IF (ASSOCIATED(DTV%LPAR_STRESS)) THEN
YRECFM='L_STRESS'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_STRESS,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
ALLOCATE(ZWORK(SIZE(DTV%LPAR_STRESS,1)))
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_STRESS(JV)) THEN
ZWORK=0.
WHERE(DTV%LPAR_STRESS(:,JV)) ZWORK=1.
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_STRESS_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,ZWORK(:),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
DEALLOCATE(ZWORK)

WAUTELET Philippe
committed
END IF
!
YRECFM='L_H_TREE'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_H_TREE,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_H_TREE(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_H_TREE_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_H_TREE(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_RE25'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_RE25,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_RE25(JV)) THEN
WRITE(YRECFM,FMT='(A8,I2.2)') 'D_RE25_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_RE25(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_CE_NITRO'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_CE_NITRO,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_CE_NITRO(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_CENITR_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_CE_NITRO(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_CF_NITRO'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_CF_NITRO,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_CF_NITRO(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_CFNITR_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_CF_NITRO(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_CNA_NITRO'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_CNA_NITRO,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_CNA_NITRO(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_CNANIT_V',JV
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_CNA_NITRO(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_IRRIG'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_IRRIG,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_IRRIG'
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_IRRIG((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_IRR_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_IRRIG(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
!
YRECFM='L_WATSUP'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_WATSUP,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_WATSUP'
DO JTIME=1,DTV%NTIME
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_WATSUP((JTIME-1)*DTV%NVEGTYPE+JV)) THEN
WRITE(YRECFM,FMT='(A7,I2.2,A1,I2.2)') 'D_WAT_T',JTIME,'V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_WATSUP(:,JTIME,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
ENDDO
!
YRECFM='L_SEED_M'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_SEED_M,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_SEED_M'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_SEED_M(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2,A1)') 'D_SEED_M_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_SEED_M(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_SEED_D'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_SEED_D,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_SEED_D'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_SEED_D(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_SEED_D_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_SEED_D(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_REAP_M'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_REAP_M,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_REAP_M'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_REAP_M(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_REAP_M_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_REAP_M(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
YRECFM='L_REAP_D'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_REAP_D,IRESP,HCOMMENT=YCOMMENT,HDIR='-')
YCOMMENT='X_Y_REAP_D'
DO JV=1,DTV%NVEGTYPE
IF (DTV%LDATA_REAP_D(JV)) THEN
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_REAP_D_V',JV
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%XPAR_REAP_D(:,JV),IRESP,HCOMMENT=YCOMMENT)
ENDIF
ENDDO
!
!
YRECFM='L_CONDSAT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_CONDSAT,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_CONDSAT) THEN
DO JL=1,SIZE(DTV%XPAR_CONDSAT,2)
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_CNDSAT_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_CONDSAT(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
YRECFM='L_MPOTSAT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_MPOTSAT,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_MPOTSAT) THEN
DO JL=1,SIZE(DTV%XPAR_MPOTSAT,2)
WRITE(YRECFM,FMT='(A10,I2.2)') 'D_MPTSAT_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_MPOTSAT(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
YRECFM='L_BCOEF'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_BCOEF,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_BCOEF) THEN
DO JL=1,SIZE(DTV%XPAR_BCOEF,2)
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_BCOEF_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_BCOEF(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
YRECFM='L_WWILT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_WWILT,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_WWILT) THEN
DO JL=1,SIZE(DTV%XPAR_WWILT,2)
WRITE(YRECFM,FMT='(A9,I2.2)') 'D_WWILT_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_WWILT(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
YRECFM='L_WFC'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_WFC,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_WFC) THEN
DO JL=1,SIZE(DTV%XPAR_WFC,2)
WRITE(YRECFM,FMT='(A7,I2.2)') 'D_WFC_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_WFC(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
YRECFM='L_WSAT'
YCOMMENT=YRECFM
CALL WRITE_SURF(HSELECT,HPROGRAM,YRECFM,DTV%LDATA_WSAT,IRESP,HCOMMENT=YCOMMENT)
IF (DTV%LDATA_WSAT) THEN
DO JL=1,SIZE(DTV%XPAR_WSAT,2)
WRITE(YRECFM,FMT='(A8,I2.2)') 'D_WSAT_L',JL
YCOMMENT='X_Y_'//YRECFM
CALL WRITE_SURF(HSELECT, HPROGRAM,YRECFM,DTV%XPAR_WSAT(:,JL),IRESP,HCOMMENT=YCOMMENT)
END DO
ENDIF
!
IF (LHOOK) CALL DR_HOOK('WRITESURF_PGD_ISBA_PAR_N',1,ZHOOK_HANDLE)
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE WRITESURF_PGD_ISBA_PAR_n