SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_ocean_netcdf.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_OCEAN_NETCDF(HPROGRAM,HSURF,HFILE,HFILETYPE,&
00003                               KLUOUT,HNCVARNAME,PFIELD)  
00004 !     #################################################################################
00005 !
00006 !!****  *PREP_OCEAN_NETCDF* - prepares oceanic fields from Mercator analysis
00007 !!
00008 !!    PURPOSE
00009 !!    -------
00010 !
00011 !!**  METHOD
00012 !!    ------
00013 !!
00014 !!    REFERENCE
00015 !!    ---------
00016 !!      
00017 !!
00018 !!    AUTHOR
00019 !!    ------
00020 !!     C. Lebeaupin Brossier
00021 !!
00022 !!    MODIFICATIONS
00023 !!    -------------
00024 !!      Original    01/2008
00025 !!------------------------------------------------------------------
00026 !
00027 USE MODD_PREP,       ONLY : CINTERP_TYPE, CINGRID_TYPE
00028 USE MODD_GRID_LATLONREGUL, ONLY : NILENGTH, NINDEPTH, XILONARRAY
00029 !
00030 USE MODE_READ_NETCDF_MERCATOR
00031 !
00032 !
00033 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00034 USE PARKIND1  ,ONLY : JPRB
00035 !
00036 IMPLICIT NONE
00037 !
00038 !*      0.1    declarations of arguments
00039 !
00040  CHARACTER(LEN=6),   INTENT(IN)  :: HPROGRAM  ! program calling surf. schemes
00041  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00042  CHARACTER(LEN=28),  INTENT(IN)  :: HFILE     ! file name
00043  CHARACTER(LEN=6),   INTENT(IN)  :: HFILETYPE ! file type
00044 INTEGER,            INTENT(IN)  :: KLUOUT    ! output listing logical unit
00045  CHARACTER(LEN=28),  INTENT(IN), OPTIONAL   :: HNCVARNAME!var to read 
00046 REAL, POINTER, DIMENSION(:,:,:)   :: PFIELD    ! field to interpolate horizontally
00047 !
00048 !*      0.2    declarations of local variables
00049 REAL,DIMENSION(:), ALLOCATABLE :: ZLATI
00050 REAL,DIMENSION(:), ALLOCATABLE :: ZLONG
00051 REAL,DIMENSION(:), ALLOCATABLE :: ZDEPTH
00052 REAL,DIMENSION(:,:,:), ALLOCATABLE :: ZFIELD
00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00054 !
00055 !
00056 !-------------------------------------------------------------------------------------
00057 !*      1.     Grid type
00058 !              ---------
00059 IF (LHOOK) CALL DR_HOOK('PREP_OCEAN_NETCDF',0,ZHOOK_HANDLE)
00060 CINGRID_TYPE='LATLON'
00061 !
00062 !
00063 IF (.NOT. ALLOCATED(XILONARRAY)) CALL PREP_NETCDF_GRID(HFILE,HNCVARNAME)
00064 !
00065 ALLOCATE(ZLATI(NILENGTH) )
00066 ALLOCATE(ZLONG(NILENGTH) )
00067 ALLOCATE(ZDEPTH(NINDEPTH))
00068 !
00069 ALLOCATE(ZFIELD(NILENGTH,NINDEPTH,1))
00070 !
00071 !*      2.     Reading of field
00072 !              ----------------
00073  CALL READ_LATLONDEPVAL_CDF(HFILE,HNCVARNAME,ZLONG,ZLATI,ZDEPTH,ZFIELD(:,:,1))
00074 ALLOCATE(PFIELD(1:SIZE(ZFIELD,1),1:SIZE(ZFIELD,2),1:SIZE(ZFIELD,3)))
00075 PFIELD=ZFIELD
00076 !
00077 !*      3.     Interpolation method
00078 !              --------------------
00079 !
00080 CINTERP_TYPE='HORIBL'
00081 !
00082 !*      4.     Deallocations
00083 !              -------------
00084 !
00085 IF (ALLOCATED(ZLONG       ))  DEALLOCATE(ZLONG  )
00086 IF (ALLOCATED(ZLATI       ))  DEALLOCATE(ZLATI  )
00087 IF (ALLOCATED(ZDEPTH      ))  DEALLOCATE(ZDEPTH )
00088 IF (ALLOCATED(ZFIELD      ))  DEALLOCATE(ZFIELD )
00089 IF (LHOOK) CALL DR_HOOK('PREP_OCEAN_NETCDF',1,ZHOOK_HANDLE)
00090 !
00091 !-------------------------------------------------------------------------------------
00092 END SUBROUTINE PREP_OCEAN_NETCDF