SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE HOR_INTERPOL_NONE(KLUOUT,PFIELDIN,PFIELDOUT) 00003 ! ################################################################################# 00004 ! 00005 !!**** *HOR_INTERPOL_NONE * - Only extrapolation 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! REFERENCE 00014 !! --------- 00015 !! 00016 !! 00017 !! AUTHOR 00018 !! ------ 00019 !! S.Malardel 00020 !! 00021 !! MODIFICATIONS 00022 !! ------------- 00023 !! Original 03/2005 00024 !!------------------------------------------------------------------ 00025 ! 00026 ! 00027 ! 00028 USE MODD_PREP, ONLY : XLAT_OUT, XLON_OUT, CMASK 00029 ! 00030 USE MODD_GRID_BUFFER, ONLY : NNI 00031 USE MODD_SURF_PAR, ONLY : XUNDEF 00032 ! 00033 USE MODI_PACK_SAME_RANK 00034 ! 00035 ! 00036 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00037 USE PARKIND1 ,ONLY : JPRB 00038 ! 00039 USE MODI_GET_SURF_MASK_n 00040 ! 00041 IMPLICIT NONE 00042 ! 00043 !* 0.1 declarations of arguments 00044 ! 00045 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00046 REAL, POINTER, DIMENSION(:,:) :: PFIELDIN ! field to interpolate horizontally 00047 REAL, DIMENSION(:,:), INTENT(OUT) :: PFIELDOUT ! interpolated field 00048 ! 00049 !* 0.2 declarations of local variables 00050 ! 00051 INTEGER, DIMENSION(:), ALLOCATABLE :: IMASKOUT ! output mask 00052 INTEGER :: INO ! output number of points 00053 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00054 ! 00055 !------------------------------------------------------------------------------ 00056 ! 00057 !* 1. Initialisation of the output mask 00058 ! 00059 IF (LHOOK) CALL DR_HOOK('HOR_INTERPOL_NONE',0,ZHOOK_HANDLE) 00060 INO = SIZE(XLAT_OUT) 00061 ALLOCATE(IMASKOUT(INO)) 00062 CALL GET_SURF_MASK_n(CMASK,INO,IMASKOUT,NNI,KLUOUT) 00063 ! 00064 !* 2. Mask the input field with the output mask 00065 !!mask du tableau de taille FULL en fonction du type de surface 00066 CALL PACK_SAME_RANK(IMASKOUT,PFIELDIN,PFIELDOUT) 00067 ! 00068 !* 6. Deallocations 00069 ! 00070 DEALLOCATE(IMASKOUT) 00071 IF (LHOOK) CALL DR_HOOK('HOR_INTERPOL_NONE',1,ZHOOK_HANDLE) 00072 00073 !------------------------------------------------------------------------------------- 00074 END SUBROUTINE HOR_INTERPOL_NONE