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