SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/write_diag_surf_atmn.F90
Go to the documentation of this file.
00001 !     #################################################################################
00002 SUBROUTINE WRITE_DIAG_SURF_ATM_n(HPROGRAM,HWRITE)
00003 !     #################################################################################
00004 !
00005 !!****  *WRITE_DIAG_SURF_ATM_n * - Chooses the surface schemes for diagnostics writing
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     V. Masson 
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    01/2004
00024 !!------------------------------------------------------------------
00025 !
00026 USE MODD_SURF_CONF,      ONLY : CPROGNAME
00027 USE MODD_SURF_ATM_n,     ONLY : NDIM_SEA,  NDIM_TOWN,  NDIM_NATURE,  NDIM_WATER, &
00028                                   XSEA    ,  XTOWN    ,  XNATURE    ,  XWATER,     &
00029                                   TTIME  
00030 
00031 USE MODD_SURF_PAR,       ONLY : XUNDEF
00032 USE MODD_DIAG_SURF_ATM_n,ONLY : XDIAG_TSTEP, LFRAC, LDIAG_GRID
00033 !
00034 USE MODI_INIT_IO_SURF_n
00035 USE MODI_WRITE_SURF
00036 USE MODI_END_IO_SURF_n
00037 !
00038 USE MODI_WRITE_DIAG_NATURE_n 
00039 USE MODI_WRITE_DIAG_SEA_n 
00040 USE MODI_WRITE_DIAG_INLAND_WATER_n 
00041 USE MODI_WRITE_DIAG_TOWN_n 
00042 !
00043 USE MODI_WRITE_DIAG_SEB_SURF_ATM_n
00044 !
00045 !
00046 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00047 USE PARKIND1  ,ONLY : JPRB
00048 !
00049 IMPLICIT NONE
00050 !
00051 !*      0.1    declarations of arguments
00052 !
00053  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00054  CHARACTER(LEN=3),   INTENT(IN)  :: HWRITE    ! 'PGD' : only physiographic fields are written
00055 !                                            ! 'ALL' : all fields are written
00056 !
00057 !
00058 !*      0.2    declarations of local variables
00059 !
00060  CHARACTER(LEN=100) :: YCOMMENT
00061 INTEGER            :: IRESP
00062 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00063 !-------------------------------------------------------------------------------------
00064 !
00065 IF (LHOOK) CALL DR_HOOK('WRITE_DIAG_SURF_ATM_N',0,ZHOOK_HANDLE)
00066 CPROGNAME = HPROGRAM
00067 !
00068 IF (NDIM_SEA    >0) CALL WRITE_DIAG_SEA_n         (HPROGRAM,HWRITE)
00069 IF (NDIM_WATER  >0) CALL WRITE_DIAG_INLAND_WATER_n(HPROGRAM,HWRITE)
00070 IF (NDIM_NATURE >0) CALL WRITE_DIAG_NATURE_n      (HPROGRAM,HWRITE)
00071 IF (NDIM_TOWN   >0) CALL WRITE_DIAG_TOWN_n        (HPROGRAM,HWRITE)
00072 !
00073 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00074 ! Writing
00075 ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
00076 !
00077 !
00078 IF (XDIAG_TSTEP==XUNDEF .OR. ABS(NINT(TTIME%TIME/XDIAG_TSTEP)*XDIAG_TSTEP-TTIME%TIME)<1.E-3 ) THEN
00079   !
00080   IF (LFRAC) THEN
00081     CALL INIT_IO_SURF_n(HPROGRAM,'FULL  ','SURF  ','WRITE')
00082     YCOMMENT = '(-)'
00083     CALL WRITE_SURF(HPROGRAM,'FRAC_SEA   ',XSEA,   IRESP,HCOMMENT=YCOMMENT)
00084     CALL WRITE_SURF(HPROGRAM,'FRAC_NATURE',XNATURE,IRESP,HCOMMENT=YCOMMENT)
00085     CALL WRITE_SURF(HPROGRAM,'FRAC_WATER ',XWATER, IRESP,HCOMMENT=YCOMMENT)
00086     CALL WRITE_SURF(HPROGRAM,'FRAC_TOWN  ',XTOWN,  IRESP,HCOMMENT=YCOMMENT)
00087     CALL END_IO_SURF_n(HPROGRAM)
00088   END IF
00089   !
00090   IF (HWRITE/='PGD'.AND.LDIAG_GRID) CALL WRITE_DIAG_SEB_SURF_ATM_n(HPROGRAM)
00091 END IF
00092 IF (LHOOK) CALL DR_HOOK('WRITE_DIAG_SURF_ATM_N',1,ZHOOK_HANDLE)
00093 !
00094 !--------------------------------------------------------------------------------------
00095 !
00096 END SUBROUTINE WRITE_DIAG_SURF_ATM_n