SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/write_diag_misc_isban.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE WRITE_DIAG_MISC_ISBA_n(HPROGRAM)
00003 !     #################################
00004 !
00005 !!****  *WRITE_DIAG_MISC_ISBA* - writes the ISBA diagnostic fields
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    REFERENCE
00015 !!    ---------
00016 !!
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!      P. Le Moigne   *Meteo France*   
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original    10/2004
00025 !!      B. Decharme    2008  Total Albedo, Total SWI and Floodplains
00026 !!      B. Decharme 06/2009  key to write (or not) patch result
00027 !!      A.L. Gibelin 04/09 : Add respiration diagnostics
00028 !!      A.L. Gibelin 05/09 : Add carbon spinup
00029 !!      A.L. Gibelin 07/09 : Suppress RDK and transform GPP as a diagnostic
00030 !!      D. Carrer    04/11 : Add FAPAR and effective LAI
00031 !!      B. Decharme  09/2012 : suppress NWG_LAYER (parallelization problems)
00032 !!      B. Decharme  09/12 : Carbon fluxes in diag_evap
00033 !!      B. Decharme  09/12   New diag for DIF:
00034 !!                           F2 stress
00035 !!                           Root zone swi, wg and wgi
00036 !!                           swi, wg and wgi comparable to ISBA-FR-DG2 and DG3 layers
00037 !!                           active layer thickness over permafrost
00038 !!                           frozen layer thickness over non-permafrost
00039 !!
00040 !-------------------------------------------------------------------------------
00041 !
00042 !*       0.    DECLARATIONS
00043 !              ------------
00044 !
00045 USE MODD_SURFEX_MPI, ONLY : NWG_SIZE
00046 !
00047 USE MODD_SURF_PAR,        ONLY :   NUNDEF, XUNDEF
00048 USE MODD_ISBA_n,          ONLY :   NGROUND_LAYER,       &
00049                                    CRUNOFF, CRAIN, CISBA, LTR_ML,  &
00050                                    XMUF, NWG_LAYER,                &
00051                                    CPHOTO, CRESPSL, LFLOOD,        &
00052                                    XFFLOOD, XPIFLOOD, TSNOW  
00053 !                                 
00054 USE MODD_DIAG_ISBA_n,     ONLY :   LPATCH_BUDGET, XTS, XAVG_TS,    &
00055                                    XTSRAD, XAVG_TSRAD  
00056 !                                 
00057 USE MODD_AGRI,            ONLY :   LAGRIP
00058 USE MODD_DIAG_MISC_ISBA_n,ONLY :   LSURF_MISC_BUDGET, LSURF_MISC_DIF,   &
00059                                    XHV, XAVG_HV, XSWI, XAVG_SWI,        &
00060                                    XTSWI, XAVG_TSWI, XDPSNG, XAVG_PSNG, &
00061                                    XDPSNV, XAVG_PSNV, XDPSN, XAVG_PSN,  &
00062                                    XSEUIL, XSOIL_TSWI, XALBT, XAVG_ALBT,&                                   
00063                                    XTWSNOW, XAVG_TWSNOW, XTDSNOW,       &
00064                                    XAVG_TDSNOW,XTTSNOW, XAVG_TTSNOW,    &
00065                                    XDFFG, XAVG_FFG, XDFFV, XAVG_FFV,    &
00066                                    XDFF, XAVG_FF, XSOIL_TWG, XSOIL_TWGI,&
00067                                    XDFSAT , XAVG_FSAT,                  &
00068                                    XSURF_TSWI, XSURF_TWG, XSURF_TWGI,   &
00069                                    XROOT_TSWI, XROOT_TWG, XROOT_TWGI,   &
00070                                    XFRD2_TSWI, XFRD2_TWG, XFRD2_TWGI,   &
00071                                    XFRD3_TSWI, XFRD3_TWG, XFRD3_TWGI,   &                                   
00072                                    XSNOWLIQ, XSNOWTEMP, XDLAI_EFFC,     &
00073                                    XFAPAR, XFAPIR, XDFAPARC, XDFAPIRC,  &
00074                                    XFAPAR_BS, XFAPIR_BS, XALT, XAVG_ALT,&
00075                                    XFLT, XAVG_FLT, XAVG_LAI
00076 !
00077 USE MODI_INIT_IO_SURF_n
00078 USE MODI_WRITE_SURF
00079 USE MODI_END_IO_SURF_n
00080 !
00081 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00082 USE PARKIND1  ,ONLY : JPRB
00083 !
00084 IMPLICIT NONE
00085 !
00086 !*       0.1   Declarations of arguments
00087 !              -------------------------
00088 !
00089  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling
00090 !
00091 !*       0.2   Declarations of local variables
00092 !              -------------------------------
00093 !
00094 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00095  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00096  CHARACTER(LEN=100):: YCOMMENT       ! Comment string
00097  CHARACTER(LEN=2)  :: YLVL
00098  CHARACTER(LEN=20) :: YFORM
00099 !
00100 INTEGER           :: JLAYER, IWORK, JJ, IDEPTH
00101 !
00102 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00103 !
00104 !-------------------------------------------------------------------------------
00105 !
00106 !         Initialisation for IO
00107 !
00108 IF (LHOOK) CALL DR_HOOK('WRITE_DIAG_MISC_ISBA_N',0,ZHOOK_HANDLE)
00109  CALL INIT_IO_SURF_n(HPROGRAM,'NATURE','ISBA  ','WRITE')
00110 !
00111 !-------------------------------------------------------------------------------
00112 !
00113 IF (LSURF_MISC_BUDGET) THEN
00114   !
00115   !*       2.     Miscellaneous fields :
00116   !
00117   !-------------------------------------------------------------------------------
00118   !
00119   !        2.1    Halstead coefficient
00120   !               --------------------
00121   !
00122   YRECFM='HV_ISBA'
00123   YCOMMENT='Halstead coefficient averaged over tile nature (-)'
00124   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_HV(:),IRESP,HCOMMENT=YCOMMENT)
00125   !
00126   !        2.2    Snow fractions
00127   !               --------------
00128   !
00129   YRECFM='PSNG_ISBA'
00130   YCOMMENT='snow fraction over ground averaged over tile nature (-)'
00131   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_PSNG(:),IRESP,HCOMMENT=YCOMMENT)
00132   !
00133   YRECFM='PSNV_ISBA'
00134   YCOMMENT='snow fraction over vegetation averaged over tile nature (-)'
00135   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_PSNV(:),IRESP,HCOMMENT=YCOMMENT)
00136   !
00137   YRECFM='PSN_ISBA'
00138   YCOMMENT='total snow fraction averaged over tile nature (-)'
00139   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_PSN(:),IRESP,HCOMMENT=YCOMMENT)
00140   !
00141   !        2.3    Total Albedo and surface temperature
00142   !               ------------------------------------
00143   !
00144   YRECFM='TALB_ISBA'
00145   YCOMMENT='total albedo over tile nature (-)'
00146   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_ALBT(:),IRESP,HCOMMENT=YCOMMENT)
00147   !
00148   IF (TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO') THEN
00149     !        
00150     YRECFM='TS_ISBA'
00151     YCOMMENT='total surface temperature (isba+snow) over tile nature'
00152     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TS(:),IRESP,HCOMMENT=YCOMMENT)
00153     !
00154     YRECFM='TSRAD_ISBA'
00155     YCOMMENT='total radiative surface temperature (isba+snow) over tile nature'
00156     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TSRAD(:),IRESP,HCOMMENT=YCOMMENT)
00157     !
00158   END IF
00159   !
00160   !        2.4    Soil Wetness Index, Water content and active layer depth
00161   !               --------------------------------------------------------
00162   !  
00163   IF(CISBA=='DIF')THEN
00164     !
00165     IWORK = NWG_SIZE
00166     !          
00167     DO JLAYER = 1,NGROUND_LAYER
00168      DO JJ=1,SIZE(NWG_LAYER,1)
00169         IDEPTH=MAXVAL(NWG_LAYER(JJ,:),NWG_LAYER(JJ,:)/=NUNDEF)
00170         IF(JLAYER>IDEPTH)THEN  
00171           XAVG_SWI (JJ,JLAYER) = XUNDEF
00172           XAVG_TSWI(JJ,JLAYER) = XUNDEF
00173         ENDIF
00174       ENDDO 
00175     ENDDO
00176   ELSE
00177     IWORK = NGROUND_LAYER    
00178   ENDIF         
00179   !
00180   DO JLAYER=1,IWORK
00181     !
00182     WRITE(YLVL,'(I2)') JLAYER
00183     !
00184     YRECFM='SWI'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00185     YRECFM=YRECFM(:LEN_TRIM(YRECFM))//'_ISBA'
00186     YFORM='(A29,I1.1,A4)'
00187     IF (JLAYER >= 10)  YFORM='(A29,I2.2,A4)'
00188     WRITE(YCOMMENT,FMT=YFORM) 'soil wetness index for layer ',JLAYER,' (-)'
00189     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_SWI(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00190     !
00191     YRECFM='TSWI'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00192     YRECFM=YRECFM(:LEN_TRIM(YRECFM))//'_ISBA'
00193     YFORM='(A29,I1.1,A4)'
00194     IF (JLAYER >= 10)  YFORM='(A29,I2.2,A4)'
00195     WRITE(YCOMMENT,FMT=YFORM) 'total swi (liquid+solid) for layer ',JLAYER,' (-)'
00196     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TSWI(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00197     !
00198   END DO
00199   !
00200   YRECFM='TSWI_T_ISBA'
00201   YCOMMENT='total soil wetness index over the soil column (-)'
00202   CALL WRITE_SURF(HPROGRAM,YRECFM,XSOIL_TSWI(:),IRESP,HCOMMENT=YCOMMENT)
00203   !
00204   YRECFM='WGTOT_T_ISBA'
00205   YCOMMENT='total water content (liquid+solid) over the soil column (kg/m2)'
00206   CALL WRITE_SURF(HPROGRAM,YRECFM,XSOIL_TWG(:),IRESP,HCOMMENT=YCOMMENT)
00207   !
00208   YRECFM='WGI_T_ISBA'
00209   YCOMMENT='total ice content (solid) over the soil column (kg/m2)'
00210   CALL WRITE_SURF(HPROGRAM,YRECFM,XSOIL_TWGI(:),IRESP,HCOMMENT=YCOMMENT)
00211   !
00212   IF(CISBA=='DIF') THEN
00213     !
00214     IF (LSURF_MISC_DIF)THEN
00215       !
00216       YRECFM='TSWI_R_ISBA'
00217       YCOMMENT='total soil wetness index over the root zone (-)'
00218       CALL WRITE_SURF(HPROGRAM,YRECFM,XROOT_TSWI(:),IRESP,HCOMMENT=YCOMMENT)
00219       !
00220       YRECFM='WGTOT_R_ISBA'
00221       YCOMMENT='total water content (liquid+solid) over the root zone (kg/m2)'
00222       CALL WRITE_SURF(HPROGRAM,YRECFM,XROOT_TWG(:),IRESP,HCOMMENT=YCOMMENT)
00223       !
00224       YRECFM='WGI_R_ISBA'
00225       YCOMMENT='total ice content (solid) over the root zone (kg/m2)'
00226       CALL WRITE_SURF(HPROGRAM,YRECFM,XROOT_TWGI(:),IRESP,HCOMMENT=YCOMMENT)  
00227       !    
00228       YRECFM='TSWI_S_ISBA'
00229       YCOMMENT='total soil wetness index over the surface (-)'
00230       CALL WRITE_SURF(HPROGRAM,YRECFM,XSURF_TSWI(:),IRESP,HCOMMENT=YCOMMENT)
00231       !
00232       YRECFM='WG_S_ISBA'
00233       YCOMMENT='liquid water content over the surface (m3/m3)'
00234       CALL WRITE_SURF(HPROGRAM,YRECFM,XSURF_TWG(:),IRESP,HCOMMENT=YCOMMENT)
00235       !
00236       YRECFM='WGI_S_ISBA'
00237       YCOMMENT='ice content over the surface (m3/m3)'
00238       CALL WRITE_SURF(HPROGRAM,YRECFM,XSURF_TWGI(:),IRESP,HCOMMENT=YCOMMENT)  
00239       !
00240       YRECFM='TSWI_D2_ISBA'
00241       YCOMMENT='total soil wetness index over comparable FR-DG2 reservoir (-)'
00242       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD2_TSWI(:),IRESP,HCOMMENT=YCOMMENT)
00243       !
00244       YRECFM='WG_D2_ISBA'
00245       YCOMMENT='liquid water content over comparable FR-DG2 reservoir (m3/m3)'
00246       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD2_TWG(:),IRESP,HCOMMENT=YCOMMENT)
00247       !
00248       YRECFM='WGI_D2_ISBA'
00249       YCOMMENT='ice content over comparable FR-DG2 reservoir (m3/m3)'
00250       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD2_TWGI(:),IRESP,HCOMMENT=YCOMMENT)  
00251       !
00252       YRECFM='TSWI_D3_ISBA'
00253       YCOMMENT='total soil wetness index over comparable FR-DG3 reservoir (-)'
00254       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD3_TSWI(:),IRESP,HCOMMENT=YCOMMENT)
00255       !
00256       YRECFM='WG_D3_ISBA'
00257       YCOMMENT='liquid water content over comparable FR-DG3 reservoir (m3/m3)'
00258       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD3_TWG(:),IRESP,HCOMMENT=YCOMMENT)
00259       !
00260       YRECFM='WGI_D3_ISBA'
00261       YCOMMENT='ice content over comparable FR-DG3 reservoir (m3/m3)'
00262       CALL WRITE_SURF(HPROGRAM,YRECFM,XFRD3_TWGI(:),IRESP,HCOMMENT=YCOMMENT)  
00263       !
00264     ENDIF
00265     !
00266     YRECFM='ALT_ISBA'
00267     YCOMMENT='active layer thickness over permafrost (m)'
00268     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_ALT(:),IRESP,HCOMMENT=YCOMMENT)
00269     !
00270     YRECFM='FLT_ISBA'
00271     YCOMMENT='frozen layer thickness over non-permafrost (m)'
00272     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_FLT(:),IRESP,HCOMMENT=YCOMMENT)
00273     !
00274   ENDIF
00275   !
00276   !        2.5    Snow outputs
00277   !               -------------
00278   !
00279   YRECFM='WSNOW_T_ISBA'
00280   YCOMMENT='Total_snow_reservoir (kg/m2)'
00281   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TWSNOW(:),IRESP,HCOMMENT=YCOMMENT)
00282   !
00283   YRECFM='DSNOW_T_ISBA'
00284   YCOMMENT='Total_snow_depth (m)'
00285   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TDSNOW(:),IRESP,HCOMMENT=YCOMMENT)
00286   !
00287   YRECFM='TSNOW_T_ISBA'
00288   YCOMMENT='Total_snow_temperature (K)'
00289   CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_TTSNOW(:),IRESP,HCOMMENT=YCOMMENT)
00290   !
00291   !        2.6    SGH scheme
00292   !               ----------
00293   !
00294   IF(CRUNOFF=='SGH '.OR.CRUNOFF=='DT92')THEN     
00295     YRECFM='FSAT_ISBA'
00296     YCOMMENT='Soil saturated fraction (-)'
00297     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_FSAT(:),IRESP,HCOMMENT=YCOMMENT)
00298   ENDIF
00299   !
00300   IF(CRAIN=='SGH ')THEN
00301     YRECFM='MUF_ISBA'
00302     YCOMMENT='fraction of the grid cell reached by the rainfall (-)'
00303     CALL WRITE_SURF(HPROGRAM,YRECFM,XMUF(:),IRESP,HCOMMENT=YCOMMENT)
00304   ENDIF
00305   !
00306   !        2.7    Flooding scheme
00307   !               ---------------
00308   !
00309   IF(LFLOOD)THEN
00310     !
00311     YRECFM='FFG_ISBA'
00312     YCOMMENT='flood fraction over ground averaged over tile nature (-)'
00313     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_FFG(:),IRESP,HCOMMENT=YCOMMENT)
00314     !
00315     YRECFM='FFV_ISBA'
00316     YCOMMENT='flood fraction over vegetation averaged over tile nature (-)'
00317     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_FFV(:),IRESP,HCOMMENT=YCOMMENT)
00318     !
00319     YRECFM='FF_ISBA'
00320     YCOMMENT='total flood fraction averaged over tile nature (-)'
00321     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_FF(:),IRESP,HCOMMENT=YCOMMENT)
00322     !
00323     YRECFM='FFLOOD_ISBA'
00324     YCOMMENT='Grdi-cell potential flood fraction (-)'
00325     CALL WRITE_SURF(HPROGRAM,YRECFM,XFFLOOD(:),IRESP,HCOMMENT=YCOMMENT)
00326     !
00327     YRECFM='PIFLOOD_ISBA'
00328     YCOMMENT='Grdi-cell Potential_floodplain_infiltration (kg/m2s)'
00329     CALL WRITE_SURF(HPROGRAM,YRECFM,XPIFLOOD(:),IRESP,HCOMMENT=YCOMMENT)
00330     !
00331   ENDIF
00332   !
00333   !        2.8    Total LAI
00334   !               ---------
00335   !
00336   IF(CPHOTO/='NON')THEN        
00337     YRECFM='LAI_ISBA'
00338     YCOMMENT='leaf area index (m2/m2)'
00339     CALL WRITE_SURF(HPROGRAM,YRECFM,XAVG_LAI(:),IRESP,HCOMMENT=YCOMMENT)
00340   ENDIF
00341   !  
00342   !*       3.     Miscellaneous fields for each patch :
00343   !               -------------------------------------
00344   !
00345   !----------------------------------------------------------------------------
00346   !User wants (or not) patch output
00347   IF(LPATCH_BUDGET)THEN
00348     !----------------------------------------------------------------------------
00349     !
00350     !        3.1    Soil Wetness Index and active layer depth
00351     !               -----------------------------------------   
00352     !
00353     DO JLAYER=1,IWORK
00354       !
00355       WRITE(YLVL,'(I2)') JLAYER
00356       !
00357       YRECFM='SWI'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00358       YFORM='(A39,I1.1,A4)'
00359       IF (JLAYER >= 10)  YFORM='(A39,I2.2,A4)'
00360       WRITE(YCOMMENT,FMT=YFORM) 'soil wetness index per patch for layer ',JLAYER,' (-)'
00361       CALL WRITE_SURF(HPROGRAM,YRECFM,XSWI(:,JLAYER,:),IRESP,HCOMMENT=YCOMMENT)
00362       !
00363       YRECFM='TSWI'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00364       YFORM='(A39,I1.1,A4)'
00365       IF (JLAYER >= 10)  YFORM='(A39,I2.2,A4)'
00366       WRITE(YCOMMENT,FMT=YFORM) 'total swi (liquid+solid) per patch for layer ',JLAYER,' (-)'
00367       CALL WRITE_SURF(HPROGRAM,YRECFM,XTSWI(:,JLAYER,:),IRESP,HCOMMENT=YCOMMENT)
00368       !
00369     END DO
00370     !
00371     IF(CISBA=='DIF')THEN
00372       !
00373       YRECFM='ALT_P'
00374       YCOMMENT='active layer thickness over permafrost per patch (m)'
00375       CALL WRITE_SURF(HPROGRAM,YRECFM,XALT(:,:),IRESP,HCOMMENT=YCOMMENT)
00376       !
00377       YRECFM='FLT_P'
00378       YCOMMENT='frozen layer thickness over non-permafrost per patch (m)'
00379       CALL WRITE_SURF(HPROGRAM,YRECFM,XFLT(:,:),IRESP,HCOMMENT=YCOMMENT) 
00380       !
00381     ENDIF
00382     !    
00383     !        3.2    Snow fractions
00384     !               --------------
00385     !
00386     YRECFM='PSNG'
00387     YCOMMENT='snow fraction per patch over ground '
00388     CALL WRITE_SURF(HPROGRAM,YRECFM,XDPSNG(:,:),IRESP,HCOMMENT=YCOMMENT)
00389     !
00390     YRECFM='PSNV'
00391     YCOMMENT='snow fraction per patch over vegetation'
00392     CALL WRITE_SURF(HPROGRAM,YRECFM,XDPSNV(:,:),IRESP,HCOMMENT=YCOMMENT)
00393     !
00394     YRECFM='PSN'
00395     YCOMMENT='total snow fraction per patch'
00396     CALL WRITE_SURF(HPROGRAM,YRECFM,XDPSN(:,:),IRESP,HCOMMENT=YCOMMENT)
00397     !
00398     !        3.3    SGH scheme
00399     !               ----------
00400     !
00401     IF(CRUNOFF=='DT92')THEN     
00402       YRECFM='FSAT_P'
00403       YCOMMENT='Soil saturated fraction per patch (-)'
00404       CALL WRITE_SURF(HPROGRAM,YRECFM,XDFSAT(:,:),IRESP,HCOMMENT=YCOMMENT)
00405     ENDIF
00406     !
00407     !        3.3    Flood fractions
00408     !               --------------
00409     !
00410     IF(LFLOOD)THEN
00411       !        
00412       YRECFM='FFG_P'
00413       YCOMMENT='flood fraction per patch over ground '
00414       CALL WRITE_SURF(HPROGRAM,YRECFM,XDFFG(:,:),IRESP,HCOMMENT=YCOMMENT)
00415       !
00416       YRECFM='FFV_P'
00417       YCOMMENT='flood fraction per patch over vegetation'
00418       CALL WRITE_SURF(HPROGRAM,YRECFM,XDFFV(:,:),IRESP,HCOMMENT=YCOMMENT)
00419       !
00420       YRECFM='FF_P'
00421       YCOMMENT='total flood fraction per patch'
00422       CALL WRITE_SURF(HPROGRAM,YRECFM,XDFF(:,:),IRESP,HCOMMENT=YCOMMENT)
00423       !
00424     ENDIF
00425     !
00426     !        3.4    Total Albedo
00427     !               ------------
00428     !
00429     YRECFM='TALB'
00430     YCOMMENT='total albedo per patch'
00431     !
00432     CALL WRITE_SURF(HPROGRAM,YRECFM,XALBT(:,:),IRESP,HCOMMENT=YCOMMENT)
00433     !
00434     IF (TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO') THEN
00435       YRECFM='TS_P'
00436       YCOMMENT='total surface temperature (isba+snow) per patch'
00437       CALL WRITE_SURF(HPROGRAM,YRECFM,XTS(:,:),IRESP,HCOMMENT=YCOMMENT)
00438       YRECFM='TSRAD_P'
00439       YCOMMENT='total radiative surface temperature (isba+snow) per patch'
00440       CALL WRITE_SURF(HPROGRAM,YRECFM,XTSRAD(:,:),IRESP,HCOMMENT=YCOMMENT)
00441     ENDIF
00442     !
00443     !        3.5    Halstead coefficient
00444     !               --------------------
00445     !
00446     YRECFM='HV'
00447     YCOMMENT='Halstead coefficient per patch'
00448     CALL WRITE_SURF(HPROGRAM,YRECFM,XHV(:,:),IRESP,HCOMMENT=YCOMMENT)
00449     !
00450     !        3.6  Snow outputs 
00451     !        -----------------
00452     !
00453     YRECFM='WSNOW_VEGT'
00454     YCOMMENT='X_Y_WSNOW_VEG_TOT (kg/m2) per patch'
00455     CALL WRITE_SURF(HPROGRAM,YRECFM,XTWSNOW(:,:),IRESP,HCOMMENT=YCOMMENT)
00456     !
00457     YRECFM='DSNOW_VEGT'
00458     YCOMMENT='X_Y_DSNOW_VEG_TOT (m) per patch'
00459     CALL WRITE_SURF(HPROGRAM,YRECFM,XTDSNOW(:,:),IRESP,HCOMMENT=YCOMMENT)
00460     !
00461     YRECFM='TSNOW_VEGT'
00462     YCOMMENT='X_Y_TSNOW_VEG_TOT (k) per patch'
00463     CALL WRITE_SURF(HPROGRAM,YRECFM,XTTSNOW(:,:),IRESP,HCOMMENT=YCOMMENT)
00464     !
00465     IF (TSNOW%SCHEME=='3-L' .OR. TSNOW%SCHEME=='CRO') THEN
00466       !
00467       DO JLAYER=1,TSNOW%NLAYER
00468         !
00469         WRITE(YLVL,'(I2)') JLAYER
00470         !
00471         YRECFM='SNOWLIQ'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00472         YFORM='(A17,I1.1,A4)'
00473         IF (JLAYER >= 10)  YFORM='(A17,I2.2,A4)'
00474         WRITE(YCOMMENT,FMT=YFORM) 'snow liquid water',JLAYER,' (m)'
00475         CALL WRITE_SURF(HPROGRAM,YRECFM,XSNOWLIQ(:,JLAYER,:),IRESP,HCOMMENT=YCOMMENT)
00476         !
00477         YRECFM='SNOWTEMP'//ADJUSTL(YLVL(:LEN_TRIM(YLVL)))
00478         YFORM='(A16,I1.1,A4)'
00479         IF (JLAYER >= 10)  YFORM='(A16,I2.2,A4)'
00480         WRITE(YCOMMENT,FMT=YFORM) 'snow temperature',JLAYER,' (K)'
00481         CALL WRITE_SURF(HPROGRAM,YRECFM,XSNOWTEMP(:,JLAYER,:),IRESP,HCOMMENT=YCOMMENT)
00482         !
00483       END DO
00484       !        
00485     ENDIF
00486     !
00487   END IF
00488   !
00489   IF (LAGRIP) THEN
00490     !
00491     !        2.8    Irrigation threshold
00492     !               --------------------
00493     !
00494     YRECFM='IRRISEUIL'
00495     YCOMMENT='irrigation threshold per patch'
00496     CALL WRITE_SURF(HPROGRAM,YRECFM,XSEUIL(:,:),IRESP,HCOMMENT=YCOMMENT)
00497     !
00498   ENDIF
00499   !
00500   IF (LTR_ML) THEN
00501     !
00502     YRECFM='FAPAR'
00503     YCOMMENT='FAPAR (-)'
00504     CALL WRITE_SURF(HPROGRAM,YRECFM,XFAPAR(:,:),IRESP,HCOMMENT=YCOMMENT)
00505     !
00506     YRECFM='FAPIR'
00507     YCOMMENT='FAPIR (-)'
00508     CALL WRITE_SURF(HPROGRAM,YRECFM,XFAPIR(:,:),IRESP,HCOMMENT=YCOMMENT)
00509     !
00510     YRECFM='FAPAR_BS'
00511     YCOMMENT='FAPAR_BS (-)'
00512     CALL WRITE_SURF(HPROGRAM,YRECFM,XFAPAR_BS(:,:),IRESP,HCOMMENT=YCOMMENT)
00513     !
00514     YRECFM='FAPIR_BS'
00515     YCOMMENT='FAPIR_BS (-)'
00516     CALL WRITE_SURF(HPROGRAM,YRECFM,XFAPIR_BS(:,:),IRESP,HCOMMENT=YCOMMENT)
00517     !
00518     YRECFM='DFAPARC'
00519     YCOMMENT='DFAPARC (-)'
00520     CALL WRITE_SURF(HPROGRAM,YRECFM,XDFAPARC(:,:),IRESP,HCOMMENT=YCOMMENT)
00521     !
00522     YRECFM='DFAPIRC'
00523     YCOMMENT='DFAPIRC (-)'
00524     CALL WRITE_SURF(HPROGRAM,YRECFM,XDFAPIRC(:,:),IRESP,HCOMMENT=YCOMMENT)
00525     !
00526     YRECFM='DLAI_EFFC'
00527     YCOMMENT='DLAI_EFFC (m2/m2)'
00528     CALL WRITE_SURF(HPROGRAM,YRECFM,XDLAI_EFFC(:,:),IRESP,HCOMMENT=YCOMMENT)
00529     !
00530   ENDIF
00531   !  
00532 ENDIF
00533 !         End of IO
00534 !
00535  CALL END_IO_SURF_n(HPROGRAM)
00536 IF (LHOOK) CALL DR_HOOK('WRITE_DIAG_MISC_ISBA_N',1,ZHOOK_HANDLE)
00537 !
00538 END SUBROUTINE WRITE_DIAG_MISC_ISBA_n