SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/treat_bathyfield.F90
Go to the documentation of this file.
00001 !     #########
00002       SUBROUTINE TREAT_BATHYFIELD(HPROGRAM,HSCHEME,HFILETYPE,    &
00003                               HSUBROUTINE,HFILENAME,HNCVARNAME,   &
00004                               HFIELD, PPGDARRAY,HSFTYPE               )  
00005 !     ##############################################################
00006 !
00007 !!**** *TREAT_BATHYFIELD* chooses which treatment subroutine to use to read 
00008 !!                        the bathymetry
00009 !!
00010 !!    PURPOSE
00011 !!    -------
00012 !!
00013 !!    METHOD
00014 !!    ------
00015 !!   
00016 !!    EXTERNAL
00017 !!    --------
00018 !!
00019 !!    IMPLICIT ARGUMENTS
00020 !!    ------------------
00021 !!
00022 !!    REFERENCE
00023 !!    ---------
00024 !!
00025 !!    AUTHOR
00026 !!    ------
00027 !!
00028 !!    C. Lebeaupin Brossier        Meteo-France
00029 !!
00030 !!    MODIFICATION
00031 !!    ------------
00032 !!    
00033 !!    Original    01/2008
00034 !!
00035 !----------------------------------------------------------------------------
00036 !
00037 !*    0.     DECLARATION
00038 !            -----------
00039 !
00040 USE MODI_GET_LUOUT
00041 USE MODI_READ_DIRECT
00042 USE MODI_READ_BINLLV
00043 USE MODI_READ_BINLLVFAST
00044 USE MODI_READ_ASCLLV
00045 USE MODI_READ_NETCDF
00046 USE MODI_AVERAGE2_MESH
00047 !
00048 USE MODD_SURF_ATM_GRID_n, ONLY : CGRID
00049 !
00050 !
00051 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00052 USE PARKIND1  ,ONLY : JPRB
00053 !
00054 USE MODI_ABOR1_SFX
00055 !
00056 USE MODI_AVERAGE2_COVER
00057 !
00058 USE MODI_AVERAGE2_OROGRAPHY
00059 !
00060 USE MODI_READ_DIRECT_GAUSS
00061 IMPLICIT NONE
00062 !
00063 !*    0.1    Declaration of arguments
00064 !            ------------------------
00065 !
00066  CHARACTER(LEN=6),  INTENT(IN) :: HPROGRAM      ! Type of program
00067  CHARACTER(LEN=6),  INTENT(IN) :: HSCHEME       ! Scheme treated
00068  CHARACTER(LEN=6),  INTENT(IN) :: HFILETYPE     ! Type of the data file
00069  CHARACTER(LEN=6),  INTENT(IN) :: HSUBROUTINE   ! Name of the subroutine to call
00070  CHARACTER(LEN=28), INTENT(IN) :: HFILENAME     ! Name of the field file.
00071  CHARACTER(LEN=28), INTENT(IN) :: HNCVARNAME    ! Name of the variable in netcdf file
00072  CHARACTER(LEN=20), INTENT(IN) :: HFIELD        ! Name of the field.
00073 REAL, DIMENSION(:), INTENT(INOUT), OPTIONAL :: PPGDARRAY ! field on MESONH grid
00074  CHARACTER(LEN=3),   INTENT(IN),    OPTIONAL :: HSFTYPE
00075 !
00076 !*    0.2    Declaration of local variables
00077 !            ------------------------------
00078 !
00079 INTEGER :: ILUOUT
00080 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00081 !-------------------------------------------------------------------------------
00082 !
00083 IF (LHOOK) CALL DR_HOOK('TREAT_BATHYFIELD',0,ZHOOK_HANDLE)
00084  CALL GET_LUOUT(HPROGRAM,ILUOUT)
00085 !
00086 !*    1.     Selection of type of reading (and point by point treatment)
00087 !            -----------------------------------------------------------
00088 !
00089 SELECT CASE (HFILETYPE)
00090 
00091    CASE ('DIRECT')
00092          IF(CGRID=="GAUSS     ")THEN
00093             CALL READ_DIRECT_GAUSS(HPROGRAM,HSCHEME,HSUBROUTINE,HFILENAME,HFIELD)
00094          ELSE
00095             CALL READ_DIRECT(HPROGRAM,HSCHEME,HSUBROUTINE,HFILENAME,HFIELD)
00096          ENDIF
00097    CASE ('BINLLV')
00098        CALL READ_BINLLV(HPROGRAM,HSUBROUTINE,HFILENAME)
00099 
00100    CASE ('BINLLF')
00101        CALL READ_BINLLVFAST(HPROGRAM,HSUBROUTINE,HFILENAME)
00102 
00103    CASE ('ASCLLV')
00104        CALL READ_ASCLLV(HPROGRAM,HSUBROUTINE,HFILENAME)
00105 
00106    CASE ('NETCDF')
00107        CALL READ_NETCDF(HPROGRAM,HSUBROUTINE,HFILENAME,HNCVARNAME)
00108 
00109 END SELECT
00110 !
00111 !-------------------------------------------------------------------------------
00112 !
00113 !*    2.     Call to the adequate subroutine (global treatment)
00114 !            --------------------------------------------------
00115 !
00116 SELECT CASE (HSUBROUTINE)
00117 
00118   CASE ('A_COVR')
00119     CALL AVERAGE2_COVER
00120 
00121   CASE ('A_OROG')
00122     CALL AVERAGE2_OROGRAPHY
00123 
00124   CASE ('A_MESH')
00125     IF (.NOT. PRESENT(PPGDARRAY)) THEN
00126       WRITE(ILUOUT,*) 'You asked to average a PGD field with A_MESH option,'
00127       WRITE(ILUOUT,*) 'but you did not give the array to store this field'
00128       CALL ABOR1_SFX('TREAT_BATHYFIELD: PGD ARRAY IS MISSING')
00129     END IF
00130     CALL AVERAGE2_MESH(PPGDARRAY)
00131 
00132 END SELECT
00133 IF (LHOOK) CALL DR_HOOK('TREAT_BATHYFIELD',1,ZHOOK_HANDLE)
00134 !-------------------------------------------------------------------------------
00135 !
00136 END SUBROUTINE TREAT_BATHYFIELD