SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/prep_ocean_unif.F90
Go to the documentation of this file.
00001 !     #########
00002 SUBROUTINE PREP_OCEAN_UNIF(KLUOUT,HSURF,PFIELD)
00003 !     #################################################################################
00004 !
00005 !!****  *PREP_OCEAN_UNIF* - prepares oceanic field from prescribed values
00006 !!
00007 !!    PURPOSE
00008 !!    -------
00009 !
00010 !!**  METHOD
00011 !!    ------
00012 !!
00013 !!    REFERENCE
00014 !!    ---------
00015 !!      
00016 !!
00017 !!    AUTHOR
00018 !!    ------
00019 !!     C. Lebeaupin Brossier
00020 !!
00021 !!    MODIFICATIONS
00022 !!    -------------
00023 !!      Original    01/2008
00024 !!------------------------------------------------------------------
00025 !
00026 
00027 !
00028 USE MODD_CSTS,       ONLY : XTT
00029 USE MODD_PREP,       ONLY : CINTERP_TYPE
00030 USE MODD_PREP_SEAFLUX,   ONLY : XSST_UNIF
00031 USE MODD_OCEAN_GRID_n
00032 !
00033 !
00034 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00035 USE PARKIND1  ,ONLY : JPRB
00036 !
00037 IMPLICIT NONE
00038 !
00039 !*      0.1    declarations of arguments
00040 !
00041 INTEGER,            INTENT(IN)  :: KLUOUT    ! output listing logical unit
00042  CHARACTER(LEN=7),   INTENT(IN)  :: HSURF     ! type of field
00043 REAL, POINTER, DIMENSION(:,:,:)   :: PFIELD    ! field to interpolate horizontally
00044 !
00045 !*      0.2    declarations of local variables
00046 REAL :: ZSSS_UNIF=37.6
00047 REAL :: ZGRADT,ZGRADS
00048 INTEGER :: JLEV
00049 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00050 !
00051 !
00052 !-------------------------------------------------------------------------------------
00053 !
00054 IF (LHOOK) CALL DR_HOOK('PREP_OCEAN_UNIF',0,ZHOOK_HANDLE)
00055 SELECT CASE(HSURF)
00056 !
00057 !*      3.1    oceanic temperature
00058 !
00059   CASE('TEMP_OC')
00060     ZGRADT=1.2/1000.
00061     ALLOCATE(PFIELD(1,NOCKMAX-NOCKMIN+1,1))
00062     PFIELD(:,1,:) = XSST_UNIF-XTT
00063     DO JLEV=1,NOCKMAX
00064       PFIELD(:,JLEV+1,:) = XSST_UNIF-XTT-ZGRADT*(XZHOC(JLEV)+1)
00065     ENDDO
00066 !
00067 !*      3.2    oceanic salinity
00068 !
00069   CASE('SALT_OC')
00070     ZGRADS=-0.5/1000.
00071     ALLOCATE(PFIELD(1,NOCKMAX-NOCKMIN+1,1))
00072     PFIELD(:,1,:) = ZSSS_UNIF
00073     DO JLEV=1,NOCKMAX
00074       PFIELD(:,JLEV+1,:) = ZSSS_UNIF+ZGRADS*(XZHOC(JLEV)+1)
00075     ENDDO
00076 !
00077 !*      3.3    oceanic currents
00078 !
00079   CASE('UCUR_OC')
00080     ALLOCATE(PFIELD(1,NOCKMAX-NOCKMIN+1,1))
00081     PFIELD = 0. 
00082 !
00083   CASE('VCUR_OC')
00084     ALLOCATE(PFIELD(1,NOCKMAX-NOCKMIN+1,1))
00085     PFIELD = 0. 
00086 !
00087 END SELECT
00088 !
00089 !*      4.     Interpolation method
00090 !              --------------------
00091 !
00092 CINTERP_TYPE='UNIF  '
00093 IF (LHOOK) CALL DR_HOOK('PREP_OCEAN_UNIF',1,ZHOOK_HANDLE)
00094 !
00095 !
00096 !-------------------------------------------------------------------------------------
00097 END SUBROUTINE PREP_OCEAN_UNIF