SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
oi_bc_soil_moisture.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 SUBROUTINE oi_bc_soil_moisture (KNBPT,&
6 !---------------------------------------------------------------------------------
7 ! - INPUT 1D
8  psm_o,psab,&
9 ! - OUTPUT 1D .
10  pws_o)
11 !
12 !**** * BC_SOIL_MOISTURE * - BIAS CORRECTION OF ASCAT SUPERFICIAL SOIL MOISTURE
13 
14 ! Purpose.
15 ! --------
16 
17 ! - Use of CDF matching technique (Koster and Reichle, 2004)
18 !
19 
20 !** Interface.
21 ! ----------
22 ! *CALL* *BC_SOIL_MOISTURE*
23 
24 !----------------------------------------------------------------------------------
25 
26 ! Externals.
27 ! ---------
28 
29 ! Method. 5th other polynomial correction
30 ! -------
31 
32 ! Author.
33 ! -------
34 ! 09-06, J.-F. Mahfouf
35 
36 !-----------------------------------------------------------------------
37 !
38 !
39 !
40 USE yomhook ,ONLY : lhook, dr_hook
41 USE parkind1 ,ONLY : jprb
42 !
43 IMPLICIT NONE
44 !
45 INTEGER, INTENT(IN) :: knbpt
46 !
47 REAL ,INTENT(IN) :: psm_o(knbpt)
48 REAL ,INTENT(IN) :: psab(knbpt)
49 !
50 REAL ,INTENT(OUT) :: pws_o(knbpt)
51 !
52 REAL :: zwsat, za0, za1, za2, za3, za4, za5
53 INTEGER :: jrof
54 REAL(KIND=JPRB) :: zhook_handle
55 !
56 ! Coefficient for 5th order polynomial fit
57 !
58 IF (lhook) CALL dr_hook('OI_BC_SOIL_MOISTURE',0,zhook_handle)
59 !
60 za0 = 8.80461e-08
61 za1 = -2.21598e-05
62 za2 = 0.00188043
63 za3 = -0.0575883
64 za4 = 0.0249301
65 za5 = 15.7502
66 !
67 ! Perform the bias correction when observation available
68 !
69 DO jrof = 1,knbpt
70  !
71  IF (psm_o(jrof) /= 999.0) THEN
72  !
73  zwsat = -0.108*psab(jrof) + 0.494305
74  !
75  pws_o(jrof) = za0*psm_o(jrof)**5 + za1*psm_o(jrof)**4 + za2*psm_o(jrof)**3 + &
76  za3*psm_o(jrof)**2 + (1.+za4)*psm_o(jrof) + za5
77  !
78  pws_o(jrof) = pws_o(jrof)*zwsat*0.01
79  !
80  ELSE
81  pws_o(jrof) = 999.0
82  ENDIF
83  !
84 ENDDO
85 !
86 IF (lhook) CALL dr_hook('OI_BC_SOIL_MOISTURE',1,zhook_handle)
87 !
88 END SUBROUTINE oi_bc_soil_moisture
subroutine oi_bc_soil_moisture(KNBPT,