SURFEX v8.1
General documentation of Surfex
pt_by_pt_treatment.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  SUBROUTINE pt_by_pt_treatment (UG, U, USS, &
7  KLUOUT,PLAT,PLON,PVALUE,HSUBROUTINE,&
8  KNBLINES,PNODATA,OMULTITYPE,KFACT)
9 ! ###################################################################
10 !
11 !!**** *PT_BY_PT_TREATMENT*
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !! METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 12/09/95
37 !! 27/03/96 (V. Masson) modify the arguments for the call of
38 !! interpolation subroutine
39 !! 06/2009 (B. Decharme) call Topographic index statistics calculation
40 !----------------------------------------------------------------------------
41 !
42 !* 0. DECLARATION
43 ! -----------
44 !
46 USE modd_surf_atm_n, ONLY : surf_atm_t
47 USE modd_sso_n, ONLY : sso_t
48 !
49 USE modi_average1_cover
50 USE modi_average1_orography
51 USE modi_average1_cti
52 USE modi_average1_ldb
53 USE modi_average1_mesh
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 Declaration of arguments
62 ! ------------------------
63 !
64 !
65 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
66 TYPE(surf_atm_t), INTENT(INOUT) :: U
67 TYPE(sso_t), INTENT(INOUT) :: USS
68 !
69 INTEGER, INTENT(IN) :: KLUOUT
70 REAL,DIMENSION(:), INTENT(IN) :: PLAT
71 REAL,DIMENSION(:), INTENT(IN) :: PLON
72 REAL,DIMENSION(:), INTENT(IN) :: PVALUE
73  CHARACTER(LEN=6), INTENT(IN) :: HSUBROUTINE ! Name of the subroutine to call
74 INTEGER, OPTIONAL, INTENT(IN) :: KNBLINES
75 REAL, OPTIONAL, INTENT(IN) :: PNODATA
76 LOGICAL, OPTIONAL, INTENT(IN) :: OMULTITYPE
77 INTEGER, OPTIONAL, INTENT(IN) :: KFACT
78 REAL(KIND=JPRB) :: ZHOOK_HANDLE
79 !
80 !
81 !* 0.2 Declaration of local variables
82 ! ------------------------------
83 !
84 LOGICAL :: GMULTITYPE
85 INTEGER :: ITYPE, IFACT
86 INTEGER :: INBLINES
87 !----------------------------------------------------------------------------
88 !
89 IF (lhook) CALL dr_hook('PT_BY_PT_TREATMENT',0,zhook_handle)
90 !
91 inblines = 0
92 IF (PRESENT(knblines)) inblines = knblines
93 !
94 gmultitype = .false.
95 IF (PRESENT(omultitype)) gmultitype = omultitype
96 !
97 ifact = 1
98 IF (PRESENT(kfact)) ifact = kfact
99 !
100 SELECT CASE (hsubroutine)
101 
102  CASE ('A_COVR')
103  IF (PRESENT(pnodata)) THEN
104  CALL average1_cover(ug, u, kluout,inblines,plat,plon,pvalue,pnodata)
105  ELSE
106  CALL average1_cover(ug, u, kluout,inblines,plat,plon,pvalue)
107  ENDIF
108 
109  CASE ('A_OROG')
110  IF (PRESENT(pnodata)) THEN
111  CALL average1_orography(ug, uss, kluout,inblines,plat,plon,pvalue,pnodata)
112  ELSE
113  CALL average1_orography(ug, uss, kluout,inblines,plat,plon,pvalue)
114  ENDIF
115 
116  CASE ('A_CTI ')
117  IF (PRESENT(pnodata)) THEN
118  CALL average1_cti(ug, kluout,inblines,plat,plon,pvalue,pnodata)
119  ELSE
120  CALL average1_cti(ug, kluout,inblines,plat,plon,pvalue)
121  ENDIF
122 
123  CASE ('A_LDBD')
124  IF (PRESENT(pnodata)) THEN
125  CALL average1_ldb(ug, kluout,inblines,plat,plon,pvalue,'D',pnodata)
126  ELSE
127  CALL average1_ldb(ug, kluout,inblines,plat,plon,pvalue,'D')
128  ENDIF
129 
130  CASE ('A_LDBS')
131  IF (PRESENT(pnodata)) THEN
132  CALL average1_ldb(ug, kluout,inblines,plat,plon,pvalue,'S',pnodata)
133  ELSE
134  CALL average1_ldb(ug, kluout,inblines,plat,plon,pvalue,'S')
135  ENDIF
136 
137  CASE ('A_MESH')
138  IF (PRESENT(pnodata)) THEN
139  CALL average1_mesh(ug, kluout,inblines,plat,plon,pvalue,gmultitype,ifact,pnodata)
140  ELSE
141  CALL average1_mesh(ug,kluout,inblines,plat,plon,pvalue,gmultitype,ifact)
142  ENDIF
143 
144 END SELECT
145 IF (lhook) CALL dr_hook('PT_BY_PT_TREATMENT',1,zhook_handle)
146 !
147 !-------------------------------------------------------------------------------
148 !
149 END SUBROUTINE pt_by_pt_treatment
subroutine average1_orography(UG, USS, KLUOUT, KNBLINES, PLAT, PLON, PVALUE, PN
integer, parameter jprb
Definition: parkind1.F90:32
subroutine average1_ldb(UG, KLUOUT, KNBLINES, PLAT, PLON, PVALUE, HTYPE,
Definition: average1_ldb.F90:7
subroutine average1_cti(UG, KLUOUT, KNBLINES, PLAT, PLON, PVALUE, PNODAT
Definition: average1_cti.F90:7
subroutine average1_cover(UG, U, KLUOUT, KNBLINES, PLAT, PLON, PVALUE, PN
subroutine pt_by_pt_treatment(UG, U, USS, KLUOUT, PLAT, PLON, PVALUE, HSUBROUTINE
logical lhook
Definition: yomhook.F90:15
subroutine average1_mesh(UG, KLUOUT, KNBLINES, PLAT, PLON, PVALUE, OMULT