SURFEX v7.3
General documentation of Surfex
|
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