SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/write_pgd_surf_atmn.F90
Go to the documentation of this file.
00001 !     ####################################
00002       SUBROUTINE WRITE_PGD_SURF_ATM_n(HPROGRAM)
00003 !     ####################################
00004 !
00005 !!****  *WRITE_PGD_SURF_ATM_n* - routine to write pgd surface variables 
00006 !!                               in their respective files or in file
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !!
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    EXTERNAL
00015 !!    --------
00016 !!
00017 !!
00018 !!    IMPLICIT ARGUMENTS
00019 !!    ------------------
00020 !!
00021 !!    REFERENCE
00022 !!    ---------
00023 !!
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!      B. Decharme   *Meteo France*    
00028 !!
00029 !!    MODIFICATIONS
00030 !!    -------------
00031 !!      Original    05/2011 according to previous write_surf_atmn.f90
00032 !-------------------------------------------------------------------------------
00033 !
00034 !*       0.    DECLARATIONS
00035 !              ------------
00036 !
00037 USE MODD_SURF_CONF,       ONLY : CPROGNAME
00038 USE MODD_SURF_PAR,        ONLY : NVERSION, NBUGFIX
00039 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID, XGRID_PAR, XLAT, XLON, XMESH_SIZE
00040 USE MODD_SURF_ATM_n,      ONLY : NDIM_FULL, NDIM_SEA, NDIM_WATER, NDIM_TOWN, NDIM_NATURE, &
00041                                  CSEA, CWATER, CNATURE, CTOWN, XCOVER, TTIME, LECOCLIMAP, &
00042                                  LWATER_TO_NATURE, LTOWN_TO_ROCK, LGARDEN
00043 USE MODD_SURF_ATM_SSO_n,  ONLY : XZ0EFFJPDIR
00044 USE MODD_CH_SURF_n,       ONLY : LCH_EMIS, CCH_EMIS
00045 USE MODD_IO_SURF_FA,      ONLY : LFANOCOMPACT
00046 !
00047 USE MODI_INIT_IO_SURF_n
00048 USE MODI_WRITE_SURF
00049 USE MODI_WRITE_PGD_SEA_n
00050 USE MODI_WRITE_PGD_INLAND_WATER_n
00051 USE MODI_WRITE_PGD_NATURE_n
00052 USE MODI_WRITE_PGD_TOWN_n
00053 USE MODI_END_IO_SURF_n
00054 !
00055 USE MODI_FLAG_UPDATE
00056 !
00057 USE MODI_WRITESURF_COVER_n
00058 USE MODI_WRITESURF_SSO_n
00059 USE MODI_WRITESURF_DUMMY_n
00060 USE MODI_WRITESURF_SNAP_n
00061 USE MODI_WRITESURF_CH_EMIS_n
00062 USE MODI_WRITE_GRID
00063 !
00064 USE MODI_WRITE_ECOCLIMAP2_DATA
00065 !
00066 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00067 USE PARKIND1  ,ONLY : JPRB
00068 !
00069 IMPLICIT NONE
00070 !
00071 !*       0.1   Declarations of arguments
00072 !              -------------------------
00073 !
00074  CHARACTER(LEN=6),    INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00075 !
00076 !*       0.2   Declarations of local variables
00077 !              -------------------------------
00078 !
00079  CHARACTER(LEN=3)   :: YWRITE
00080  CHARACTER(LEN=100) :: YCOMMENT
00081 INTEGER            :: IRESP
00082 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00083 !-------------------------------------------------------------------------------
00084 !
00085 IF (LHOOK) CALL DR_HOOK('WRITE_PGD_SURF_ATM_N',0,ZHOOK_HANDLE)
00086 !
00087 !*       0.     Initialize some options:
00088 !               ------------------------
00089 !
00090 CPROGNAME = HPROGRAM
00091 !
00092  CALL FLAG_UPDATE(.FALSE.,.TRUE.,.FALSE.,.FALSE.)
00093 !
00094 !*       1.     Configuration and cover fields:
00095 !               ------------------------------
00096 !
00097 !
00098 !         Initialisation for IO
00099 !
00100  CALL INIT_IO_SURF_n(HPROGRAM,'FULL  ','SURF  ','WRITE')
00101 !
00102 YWRITE='PGD'
00103 YCOMMENT='(-)'
00104  CALL WRITE_SURF(HPROGRAM,'VERSION',NVERSION,IRESP,YCOMMENT)
00105  CALL WRITE_SURF(HPROGRAM,'BUG    ',NBUGFIX ,IRESP,YCOMMENT)
00106  CALL WRITE_SURF(HPROGRAM,'STORAGETYPE',YWRITE,IRESP,YCOMMENT)
00107 !
00108  CALL WRITE_SURF(HPROGRAM,'SEA   ',CSEA   ,IRESP,YCOMMENT)
00109  CALL WRITE_SURF(HPROGRAM,'WATER ',CWATER ,IRESP,YCOMMENT)
00110  CALL WRITE_SURF(HPROGRAM,'NATURE',CNATURE,IRESP,YCOMMENT)
00111  CALL WRITE_SURF(HPROGRAM,'TOWN  ',CTOWN  ,IRESP,YCOMMENT)
00112 !
00113  CALL WRITE_SURF(HPROGRAM,'DIM_FULL  ',NDIM_FULL,  IRESP,HCOMMENT=YCOMMENT)
00114  CALL WRITE_SURF(HPROGRAM,'DIM_SEA   ',NDIM_SEA,   IRESP,HCOMMENT=YCOMMENT)
00115  CALL WRITE_SURF(HPROGRAM,'DIM_NATURE',NDIM_NATURE,IRESP,HCOMMENT=YCOMMENT)
00116  CALL WRITE_SURF(HPROGRAM,'DIM_WATER ',NDIM_WATER, IRESP,HCOMMENT=YCOMMENT)
00117  CALL WRITE_SURF(HPROGRAM,'DIM_TOWN  ',NDIM_TOWN,  IRESP,HCOMMENT=YCOMMENT)
00118  CALL WRITE_SURF(HPROGRAM,'ECOCLIMAP ',LECOCLIMAP ,IRESP,YCOMMENT)
00119  CALL WRITE_SURF(HPROGRAM,'WATER_TO_NAT',LWATER_TO_NATURE,IRESP,YCOMMENT)
00120  CALL WRITE_SURF(HPROGRAM,'TOWN_TO_ROCK',LTOWN_TO_ROCK,IRESP,YCOMMENT)
00121  CALL WRITE_SURF(HPROGRAM,'GARDEN',LGARDEN,IRESP,YCOMMENT)
00122 IF (HPROGRAM.NE.'BINARY' .AND. HPROGRAM.NE.'TEXTE ') THEN
00123    CALL WRITE_ECOCLIMAP2_DATA(HPROGRAM)
00124 ENDIF
00125 !
00126  CALL WRITE_GRID(HPROGRAM,CGRID,XGRID_PAR,XLAT,XLON,XMESH_SIZE,IRESP,XZ0EFFJPDIR)
00127 !
00128  CALL WRITESURF_COVER_n(HPROGRAM)
00129  CALL WRITESURF_SSO_n(HPROGRAM)
00130  CALL WRITESURF_DUMMY_n(HPROGRAM)
00131 !
00132 YCOMMENT='CH_EMIS'
00133  CALL WRITE_SURF(HPROGRAM,'CH_EMIS',LCH_EMIS,IRESP,HCOMMENT=YCOMMENT)
00134 !
00135 IF (LCH_EMIS) THEN
00136   YCOMMENT='CH_EMIS_OPT'
00137   CALL WRITE_SURF(HPROGRAM,'CH_EMIS_OPT',CCH_EMIS,IRESP,HCOMMENT=YCOMMENT)
00138 END IF
00139 !
00140 IF (LCH_EMIS) THEN
00141   IF (CCH_EMIS=='AGGR') THEN
00142     CALL WRITESURF_CH_EMIS_n(HPROGRAM)
00143   ELSE IF (CCH_EMIS=='SNAP') THEN
00144     CALL WRITESURF_SNAP_n(HPROGRAM)
00145   ENDIF
00146 ENDIF
00147 !
00148 !         End of IO
00149 !
00150  CALL END_IO_SURF_n(HPROGRAM)
00151 !
00152 !
00153 !*       2.     Sea
00154 !               ---
00155 !
00156 IF (NDIM_SEA>0) CALL WRITE_PGD_SEA_n(HPROGRAM)
00157 !
00158 !
00159 !*       3.     Inland water
00160 !               ------------
00161 !
00162 IF (NDIM_WATER>0) CALL WRITE_PGD_INLAND_WATER_n(HPROGRAM)
00163 !
00164 !
00165 !*       4.     Vegetation scheme
00166 !               -----------------
00167 !
00168 IF (NDIM_NATURE>0) CALL WRITE_PGD_NATURE_n(HPROGRAM)
00169 !
00170 !
00171 !*       5.     Urban scheme
00172 !               ------------
00173 !
00174 IF (NDIM_TOWN>0) CALL WRITE_PGD_TOWN_n(HPROGRAM)
00175 !
00176 !
00177 IF (LHOOK) CALL DR_HOOK('WRITE_PGD_SURF_ATM_N',1,ZHOOK_HANDLE)
00178 !
00179 !-------------------------------------------------------------------------------
00180 !
00181 END SUBROUTINE WRITE_PGD_SURF_ATM_n