SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/ver_interp_lin_surf.F90
Go to the documentation of this file.
00001 !     ######################
00002       MODULE MODI_VER_INTERP_LIN_SURF
00003 !     ######################
00004 INTERFACE VER_INTERP_LIN_SURF
00005 !     ##############################################
00006       FUNCTION VER_INTERP_LIN3D_SURF_BIS(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00007 !     ##############################################
00008 !
00009 ! third dimension of the arrays is vertical
00010 !
00011 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PVAR1 ! variable values on the initial
00012 !                                             ! grid
00013 INTEGER,DIMENSION(:,:,:), INTENT(IN) :: KKLIN ! lower interpolating level of
00014 !                                             ! grid 1 for each level of grid 2 
00015 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00016 !
00017 REAL,   DIMENSION(SIZE(KKLIN,1),SIZE(KKLIN,2),SIZE(KKLIN,3)) 
00018                                        :: PVAR2 ! variable values on target  
00019 !                                             ! grid 
00020 END FUNCTION VER_INTERP_LIN3D_SURF_BIS
00021 !     ##############################################
00022       FUNCTION VER_INTERP_LIN2D_SURF(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00023 !     ##############################################
00024 !
00025 ! second dimension of the arrays is vertical
00026 !
00027 REAL,   DIMENSION(:,:),   INTENT(IN) :: PVAR1 ! variable values on the initial
00028 !                                             ! grid
00029 INTEGER,DIMENSION(:,:), INTENT(IN) :: KKLIN ! lower interpolating level of
00030 !                                             ! grid 1 for each level of grid 2 
00031 REAL,   DIMENSION(:,:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00032 !
00033 REAL,   DIMENSION(SIZE(KKLIN,1),SIZE(KKLIN,2))                               
00034                                        :: PVAR2 ! variable values on target  
00035 !                                             ! grid 
00036 END FUNCTION VER_INTERP_LIN2D_SURF
00037 !     ##############################################
00038       FUNCTION VER_INTERP_LIN1D_SURF(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00039 !     ##############################################
00040 !
00041 ! first dimension of the arrays is vertical
00042 !
00043 REAL,   DIMENSION(:), INTENT(IN) :: PVAR1 ! variable values on the initial
00044 !                                         ! grid
00045 INTEGER,DIMENSION(:), INTENT(IN) :: KKLIN ! lower interpolating level of
00046 !                                             ! grid 1 for each level of grid 2 
00047 REAL,   DIMENSION(:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00048 !
00049 REAL,   DIMENSION(SIZE(KKLIN)) :: PVAR2 ! variable values on target
00050 !                                         ! grid 
00051 END FUNCTION VER_INTERP_LIN1D_SURF
00052 !
00053 !
00054 END INTERFACE
00055 END MODULE MODI_VER_INTERP_LIN_SURF
00056 !     ##############################################
00057       FUNCTION VER_INTERP_LIN3D_SURF_BIS(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00058 !     ##############################################
00059 !
00060 !!****  *VER_INTERP_LIN* - vertical linear interpolation
00061 !!
00062 !!    PURPOSE
00063 !!    -------
00064 !     This function interpolates the 3D fields from one grid
00065 !     to another using linear interpolation cofficients stored in module
00066 !     MODD_VER_INTERP_LIN.
00067 !
00068 !!
00069 !!**  METHOD
00070 !!    ------
00071 !!
00072 !!    EXTERNAL
00073 !!    --------
00074 !!
00075 !!    IMPLICIT ARGUMENTS
00076 !!    ------------------
00077 !!
00078 !!    REFERENCE
00079 !!    ---------
00080 !!
00081 !!    Book 2
00082 !!
00083 !!    AUTHOR
00084 !!    ------
00085 !!      
00086 !     V.Masson  Meteo-France
00087 !!
00088 !!    MODIFICATIONS
00089 !!    -------------
00090 !!      Original    18/07/97
00091 !-------------------------------------------------------------------------------
00092 !
00093 !*       0.    DECLARATIONS
00094 !              ------------
00095 !
00096 !
00097 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00098 USE PARKIND1  ,ONLY : JPRB
00099 !
00100 USE MODI_VER_INTERP_LIN3D_SURF
00101 !
00102 IMPLICIT NONE
00103 !
00104 !*       0.1   Declaration of arguments
00105 !              ------------------------
00106 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PVAR1 ! variable values on the initial
00107 !                                             ! grid
00108 INTEGER,DIMENSION(:,:,:), INTENT(IN) :: KKLIN ! lower interpolating level of
00109 !                                             ! grid 1 for each level of grid 2 
00110 REAL,   DIMENSION(:,:,:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00111 !
00112 REAL,   DIMENSION(SIZE(KKLIN,1),SIZE(KKLIN,2),SIZE(KKLIN,3))                   
00113                                        :: PVAR2 ! variable values on target  
00114 !                                             ! grid 
00115 !
00116 !*       0.2   Declaration of local variables
00117 !              ------------------------------
00118 !
00119 INTEGER                                               :: JI,JJ,JK2
00120 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00121 !-------------------------------------------------------------------------------
00122 !
00123 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN3D_SURF_BIS',0,ZHOOK_HANDLE)
00124 PVAR2(:,:,:)=VER_INTERP_LIN3D_SURF(PVAR1(:,:,:),KKLIN(:,:,:),PCOEFLIN(:,:,:))
00125 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN3D_SURF_BIS',1,ZHOOK_HANDLE)
00126 !
00127 !-------------------------------------------------------------------------------
00128 !
00129 END FUNCTION VER_INTERP_LIN3D_SURF_BIS
00130 !     ##############################################
00131       FUNCTION VER_INTERP_LIN2D_SURF(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00132 !     ##############################################
00133 !
00134 !!****  *VER_INTERP_LIN* - vertical linear interpolation
00135 !!
00136 !!    PURPOSE
00137 !!    -------
00138 !
00139 !!
00140 !!**  METHOD
00141 !!    ------
00142 !!
00143 !!    This routine calls the 3D version of VER_INTERP_LIN after rewritting of
00144 !!    the fields under 3D form.
00145 !!
00146 !!    EXTERNAL
00147 !!    --------
00148 !!
00149 !!    function VER_INTERP_LIN3D
00150 !!    module   MODI_VER_INTERP_LIN3D
00151 !!
00152 !!    IMPLICIT ARGUMENTS
00153 !!    ------------------
00154 !!
00155 !!    REFERENCE
00156 !!    ---------
00157 !!
00158 !!    Book 2
00159 !!
00160 !!    AUTHOR
00161 !!    ------
00162 !!      
00163 !     V.Masson  Meteo-France
00164 !!
00165 !!    MODIFICATIONS
00166 !!    -------------
00167 !!      Original    17/07/97
00168 !-------------------------------------------------------------------------------
00169 !
00170 !*       0.    DECLARATIONS
00171 !              ------------
00172 !
00173 USE MODI_VER_INTERP_LIN3D_SURF
00174 !
00175 !
00176 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00177 USE PARKIND1  ,ONLY : JPRB
00178 !
00179 IMPLICIT NONE
00180 !
00181 !*       0.1   Declaration of arguments
00182 !              ------------------------
00183 REAL,   DIMENSION(:,:), INTENT(IN) :: PVAR1 ! variable values on the initial
00184 !                                           ! grid
00185 INTEGER,DIMENSION(:,:), INTENT(IN) :: KKLIN ! lower interpolating level of
00186 !                                             ! grid 1 for each level of grid 2 
00187 REAL,   DIMENSION(:,:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00188 !
00189 REAL,   DIMENSION(SIZE(KKLIN,1),SIZE(KKLIN,2)) :: PVAR2 ! variable values on
00190 !                                                       ! target grid 
00191 !
00192 !*       0.2   Declaration of local variables
00193 !              ------------------------------
00194 !
00195 REAL,   DIMENSION(1,SIZE(PVAR1,1),SIZE(PVAR1,2)) :: ZVAR1 ! variable values on the initial
00196 !                                                         ! grid
00197 REAL,   DIMENSION(1,SIZE(KKLIN,1),SIZE(KKLIN,2)) :: ZVAR2 ! variable values on target
00198 !
00199 INTEGER,DIMENSION(1,SIZE(KKLIN,1),SIZE(KKLIN,2)) :: IKLIN ! lower interpolating level of
00200 !                                             ! grid 1 for each level of grid 2 
00201 REAL,   DIMENSION(1,SIZE(PCOEFLIN,1),SIZE(PCOEFLIN,2)):: ZCOEFLIN ! coefficient for level KKLIN
00202 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00203 !
00204 !-------------------------------------------------------------------------------
00205 !
00206 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN2D_SURF',0,ZHOOK_HANDLE)
00207 ZVAR1(1,:,:)=PVAR1(:,:)
00208 IKLIN(1,:,:)=KKLIN(:,:)
00209 ZCOEFLIN(1,:,:)=PCOEFLIN(:,:)
00210 !
00211 ZVAR2(:,:,:)=VER_INTERP_LIN3D_SURF(ZVAR1(:,:,:),IKLIN(:,:,:),ZCOEFLIN(:,:,:))
00212 !
00213 PVAR2(:,:)  =ZVAR2(1,:,:)
00214 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN2D_SURF',1,ZHOOK_HANDLE)
00215 !
00216 !-------------------------------------------------------------------------------
00217 !
00218 END FUNCTION VER_INTERP_LIN2D_SURF
00219 !     ##############################################
00220       FUNCTION VER_INTERP_LIN1D_SURF(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
00221 !     ##############################################
00222 !
00223 !!****  *VER_INTERP_LIN* - vertical linear interpolation
00224 !!
00225 !!    PURPOSE
00226 !!    -------
00227 !
00228 !!
00229 !!**  METHOD
00230 !!    ------
00231 !!
00232 !!    This routine calls the 3D version of VER_INTERP_LIN after rewritting of
00233 !!    the fields under 3D form.
00234 !!
00235 !!    EXTERNAL
00236 !!    --------
00237 !!
00238 !!    function VER_INTERP_LIN3D
00239 !!    module   MODI_VER_INTERP_LIN3D
00240 !!
00241 !!    IMPLICIT ARGUMENTS
00242 !!    ------------------
00243 !!
00244 !!    REFERENCE
00245 !!    ---------
00246 !!
00247 !!    Book 2
00248 !!
00249 !!    AUTHOR
00250 !!    ------
00251 !!      
00252 !     V.Masson  Meteo-France
00253 !!
00254 !!    MODIFICATIONS
00255 !!    -------------
00256 !!      Original    17/07/97
00257 !-------------------------------------------------------------------------------
00258 !
00259 !*       0.    DECLARATIONS
00260 !              ------------
00261 !
00262 USE MODI_VER_INTERP_LIN3D_SURF
00263 !
00264 !
00265 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00266 USE PARKIND1  ,ONLY : JPRB
00267 !
00268 IMPLICIT NONE
00269 !
00270 !*       0.1   Declaration of arguments
00271 !              ------------------------
00272 REAL,   DIMENSION(:), INTENT(IN) :: PVAR1 ! variable values on the initial
00273 !                                         ! grid
00274 INTEGER,DIMENSION(:), INTENT(IN) :: KKLIN ! lower interpolating level of
00275 !                                             ! grid 1 for each level of grid 2 
00276 REAL,   DIMENSION(:), INTENT(IN) :: PCOEFLIN ! coefficient for level KKLIN
00277 
00278 REAL,   DIMENSION(SIZE(KKLIN)) :: PVAR2 ! variable values on target
00279 !                                         ! grid 
00280 !
00281 !*       0.2   Declaration of local variables
00282 !              ------------------------------
00283 !
00284 INTEGER,DIMENSION(1,1,SIZE(KKLIN)) :: IKLIN ! lower interpolating level of
00285 !                                             ! grid 1 for each level of grid 2 
00286 REAL,   DIMENSION(1,1,SIZE(PCOEFLIN)) :: ZCOEFLIN ! coefficient for level KKLIN
00287 !
00288 REAL,   DIMENSION(1,1,SIZE(PVAR1)) :: ZVAR1 ! variable values on the initial
00289 !                                           ! grid
00290 REAL,   DIMENSION(1,1,SIZE(KKLIN)) :: ZVAR2 ! variable values on target
00291 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00292 !
00293 !-------------------------------------------------------------------------------
00294 !
00295 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN1D_SURF',0,ZHOOK_HANDLE)
00296 ZVAR1(1,1,:)=PVAR1(:)
00297 IKLIN(1,1,:)=KKLIN(:)
00298 ZCOEFLIN(1,1,:)=PCOEFLIN(:)
00299 !
00300 ZVAR2(:,:,:)=VER_INTERP_LIN3D_SURF(ZVAR1(:,:,:),IKLIN(:,:,:),ZCOEFLIN(:,:,:))
00301 !
00302 PVAR2(:)    =ZVAR2(1,1,:)
00303 IF (LHOOK) CALL DR_HOOK('MODI_VER_INTERP_LIN_SURF:VER_INTERP_LIN1D_SURF',1,ZHOOK_HANDLE)
00304 !
00305 !-------------------------------------------------------------------------------
00306 !
00307 END FUNCTION VER_INTERP_LIN1D_SURF