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