SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
ver_interp_lin3d_surf.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ##############################################
6  FUNCTION ver_interp_lin3d_surf(PVAR1,KKLIN,PCOEFLIN) RESULT(PVAR2)
7 ! ##############################################
8 !
9 !!**** *VER_INTERP_LIN* - vertical linear interpolation
10 !!
11 !! PURPOSE
12 !! -------
13 ! This function interpolates the 3D fields from one grid
14 ! to another using linear interpolation cofficients stored in module
15 ! MODD_VER_INTERP_LIN.
16 !
17 !!
18 !!** METHOD
19 !! ------
20 !!
21 !! EXTERNAL
22 !! --------
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! Book 2
31 !!
32 !! AUTHOR
33 !! ------
34 !!
35 ! V.Masson Meteo-France
36 !!
37 !! MODIFICATIONS
38 !! -------------
39 !! Original 18/07/97
40 !-------------------------------------------------------------------------------
41 !
42 !* 0. DECLARATIONS
43 ! ------------
44 !
45 !
46 USE yomhook ,ONLY : lhook, dr_hook
47 USE parkind1 ,ONLY : jprb
48 !
49 IMPLICIT NONE
50 !
51 !* 0.1 Declaration of arguments
52 ! ------------------------
53 REAL, DIMENSION(:,:,:), INTENT(IN) :: pvar1 ! variable values on the initial
54 ! ! grid
55 INTEGER,DIMENSION(:,:,:), INTENT(IN) :: kklin ! lower interpolating level of
56 ! ! grid 1 for each level of grid 2
57 REAL, DIMENSION(:,:,:), INTENT(IN) :: pcoeflin ! coefficient for level KKLIN
58 !
59 REAL, DIMENSION(SIZE(KKLIN,1),SIZE(KKLIN,2),SIZE(KKLIN,3)) &
60  :: pvar2 ! variable values on target
61 ! ! grid
62 !
63 !* 0.2 Declaration of local variables
64 ! ------------------------------
65 !
66 INTEGER :: ji,jj,jk2
67 REAL(KIND=JPRB) :: zhook_handle
68 !-------------------------------------------------------------------------------
69 !
70 IF (lhook) CALL dr_hook('MODI_VER_INTERP_LIN3D_SURF:VER_INTERP_LIN3D_SURF',0,zhook_handle)
71 DO jk2=1,SIZE(kklin,3)
72  DO jj=1,SIZE(kklin,2)
73  DO ji=1,SIZE(kklin,1)
74  pvar2(ji,jj,jk2)= pcoeflin(ji,jj,jk2) *pvar1(ji,jj,kklin(ji,jj,jk2) )&
75  +(1.-pcoeflin(ji,jj,jk2))*pvar1(ji,jj,kklin(ji,jj,jk2)+1)
76  END DO
77  END DO
78 END DO
79 IF (lhook) CALL dr_hook('MODI_VER_INTERP_LIN3D_SURF:VER_INTERP_LIN3D_SURF',1,zhook_handle)
80 !
81 !-------------------------------------------------------------------------------
82 !
83 END FUNCTION ver_interp_lin3d_surf
real function, dimension(size(kklin, 1), size(kklin, 2), size(kklin, 3)) ver_interp_lin3d_surf(PVAR1, KKLIN, PCOEFLIN)