SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/writesurf_teb_canopyn.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE WRITESURF_TEB_CANOPY_n(HPROGRAM,HWRITE)
00003 !     ####################################
00004 !
00005 !!****  *WRITE_TEB_n* - writes TEB fields
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !!
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    EXTERNAL
00014 !!    --------
00015 !!
00016 !!
00017 !!    IMPLICIT ARGUMENTS
00018 !!    ------------------
00019 !!
00020 !!    REFERENCE
00021 !!    ---------
00022 !!
00023 !!
00024 !!    AUTHOR
00025 !!    ------
00026 !!      V. Masson   *Meteo France*      
00027 !!
00028 !!    MODIFICATIONS
00029 !!    -------------
00030 !!      Original    01/2003 
00031 !!      E. Martin   01/2012 avoid write of XUNDEF fields
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 !
00038 !
00039 USE MODD_TEB_n,          ONLY : LCANOPY
00040 USE MODD_TEB_CANOPY_n,   ONLY : NLVL, XZ, XU, XT, XQ, XTKE, XLMO, XLM, XLEPS, XP
00041 USE MODD_SURF_PAR       ,ONLY : XUNDEF
00042 !
00043 USE MODI_WRITE_SURF
00044 !
00045 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00046 USE PARKIND1  ,ONLY : JPRB
00047 !
00048 IMPLICIT NONE
00049 !
00050 !*       0.1   Declarations of arguments
00051 !              -------------------------
00052 !
00053  CHARACTER(LEN=6),  INTENT(IN)  :: HPROGRAM ! program calling
00054  CHARACTER(LEN=3),  INTENT(IN)  :: HWRITE   ! 'PREP' : does not write SBL XUNDEF fields
00055 !                                          ! 'ALL' : all fields are written
00056 !*       0.2   Declarations of local variables
00057 !              -------------------------------
00058 !
00059 INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
00060  CHARACTER(LEN=12) :: YRECFM         ! Name of the article to be read
00061  CHARACTER(LEN=100):: YCOMMENT       ! Comment string
00062 !
00063 INTEGER :: JLAYER  ! loop counter on layers
00064 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00065 !
00066 !-------------------------------------------------------------------------------
00067 !
00068 !*       1.     Prognostic fields:
00069 !               -----------------
00070 !
00071 !* flag to define if canopy is computed
00072 !
00073 IF (LHOOK) CALL DR_HOOK('WRITESURF_TEB_CANOPY_N',0,ZHOOK_HANDLE)
00074 YRECFM='TEB_CANOPY'
00075 YCOMMENT='flag to use canopy levels'
00076  CALL WRITE_SURF(HPROGRAM,YRECFM,LCANOPY,IRESP,HCOMMENT=YCOMMENT)
00077 !
00078 IF (.NOT. LCANOPY .AND. LHOOK) CALL DR_HOOK('WRITESURF_TEB_CANOPY_N',1,ZHOOK_HANDLE)
00079 IF (.NOT. LCANOPY) RETURN
00080 !
00081 !* number of levels
00082 !
00083 YRECFM='TEB_CAN_LVL'
00084 YCOMMENT='number of canopy levels'
00085  CALL WRITE_SURF(HPROGRAM,YRECFM,NLVL,IRESP,HCOMMENT=YCOMMENT)
00086 !
00087 !* altitudes
00088 !
00089 DO JLAYER=1,NLVL
00090   WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_Z',JLAYER,' '
00091   YCOMMENT='altitudes of canopy levels (m)'
00092   CALL WRITE_SURF(HPROGRAM,YRECFM,XZ(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00093 END DO
00094 !
00095 IF (HWRITE/='PRE') THEN
00096   !
00097   !* wind in canopy
00098   !
00099   DO JLAYER=1,NLVL
00100     WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_U',JLAYER,' '
00101     YCOMMENT='wind at canopy levels (m/s)'
00102     CALL WRITE_SURF(HPROGRAM,YRECFM,XU(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00103   END DO
00104   !
00105   !* temperature in canopy
00106   !
00107   DO JLAYER=1,NLVL
00108     WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_T',JLAYER,' '
00109     YCOMMENT='temperature at canopy levels (K)'
00110     CALL WRITE_SURF(HPROGRAM,YRECFM,XT(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00111   END DO
00112   !
00113   !* humidity in canopy
00114   !
00115   DO JLAYER=1,NLVL
00116     WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_Q',JLAYER,' '
00117     YCOMMENT='humidity at canopy levels (kg/m3)'
00118     CALL WRITE_SURF(HPROGRAM,YRECFM,XQ(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00119   END DO
00120   !
00121   !* Tke in canopy
00122   !
00123   DO JLAYER=1,NLVL
00124     WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_E',JLAYER,' '
00125     YCOMMENT='Tke at canopy levels (m2/s2)'
00126     CALL WRITE_SURF(HPROGRAM,YRECFM,XTKE(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00127   END DO
00128   !
00129   !* Monin-Obhukov length
00130   !
00131   DO JLAYER=1,NLVL
00132     WRITE(YRECFM,'(A10,I2.2)') 'TEB_CAN_MO',JLAYER
00133     YCOMMENT='Monin-Obukhov length (m)'
00134     CALL WRITE_SURF(HPROGRAM,YRECFM,XLMO(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00135   END DO
00136   !
00137   !* mixing length
00138   !
00139   IF (ASSOCIATED(XLM)) THEN
00140     DO JLAYER=1,NLVL
00141       WRITE(YRECFM,'(A10,I2.2)') 'TEB_CAN_LM',JLAYER
00142       YCOMMENT='mixing length (m)'
00143       CALL WRITE_SURF(HPROGRAM,YRECFM,XLM(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00144    END DO
00145   END IF
00146   !
00147   !* dissipative length
00148   !
00149   IF (ASSOCIATED(XLEPS)) THEN
00150     DO JLAYER=1,NLVL
00151       WRITE(YRECFM,'(A10,I2.2)') 'TEB_CAN_LE',JLAYER
00152       YCOMMENT='mixing length (m)'
00153       CALL WRITE_SURF(HPROGRAM,YRECFM,XLEPS(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00154     END DO
00155   END IF
00156   !
00157   !* Air pressure in canopy
00158   !
00159   DO JLAYER=1,NLVL
00160     WRITE(YRECFM,'(A9,I2.2,A1)') 'TEB_CAN_P',JLAYER,' '
00161     YCOMMENT='Pressure at canopy levels (Pa)'
00162     CALL WRITE_SURF(HPROGRAM,YRECFM,XP(:,JLAYER),IRESP,HCOMMENT=YCOMMENT)
00163   END DO
00164   !
00165 ENDIF
00166 !
00167 IF (LHOOK) CALL DR_HOOK('WRITESURF_TEB_CANOPY_N',1,ZHOOK_HANDLE)
00168 !-------------------------------------------------------------------------------
00169 !
00170 END SUBROUTINE WRITESURF_TEB_CANOPY_n