SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
oi_jacobians.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_jacobians (KNBPT,&
6 !---------------------------------------------------------------------------------
7 ! - INPUT 1D
8  pws_o, psab, parg, pd2, pwp, &
9 ! - OUTPUT 1D .
10  pdwg_dwg, pdwg_dw2)
11 !
12 !**** * JACOBIANS * - Compute analytical Jacobians for assimilation of WG
13 
14 ! Purpose.
15 ! --------
16 
17 ! - Based on the restore term of the ISBA equation for WG
18 !
19 
20 !** Interface.
21 ! ----------
22 ! *CALL* *OI_JACOBIANS*
23 
24 !----------------------------------------------------------------------------------
25 
26 ! Externals.
27 ! ---------
28 
29 ! Method. analytical formulation
30 ! -------
31 
32 ! Author.
33 ! -------
34 ! 09-06, J.-F. Mahfouf
35 
36 !-----------------------------------------------------------------------
37 !
38 USE modd_assim, ONLY : nechgu, xrscal_jac
39 USE modd_csts, ONLY : xrholw, xday
40 !
41 !
42 USE yomhook ,ONLY : lhook, dr_hook
43 USE parkind1 ,ONLY : jprb
44 !
45 IMPLICIT NONE
46 !
47 INTEGER, INTENT(IN) :: knbpt
48 REAL ,INTENT(IN) :: pws_o(knbpt)
49 REAL ,INTENT(IN) :: psab(knbpt)
50 REAL ,INTENT(IN) :: parg(knbpt)
51 REAL ,INTENT(IN) :: pd2(knbpt)
52 REAL ,INTENT(IN) :: pwp(knbpt)
53 !
54 REAL ,INTENT(OUT) :: pdwg_dwg(knbpt)
55 REAL ,INTENT(OUT) :: pdwg_dw2(knbpt)
56 !
57 REAL :: zwsat, zwl, zdt, zw2, zc2, zc2ref, zp, za, zwgeq_dw2
58 INTEGER :: jrof
59 REAL(KIND=JPRB) :: zhook_handle
60 !
61 IF (lhook) CALL dr_hook('OI_JACOBIANS',0,zhook_handle)
62 !
63 zwl = 1.e-5
64 zdt = REAL(nechgu)*3600.0*xrscal_jac
65 !
66 ! Compute analytical Jacobians for the ISBA 2L scheme
67 !
68 DO jrof = 1,knbpt
69 
70  IF (pws_o(jrof) /= 999.0) THEN
71 
72  zp = 0.134 * parg(jrof) + 3.4
73  za = 732.42e-3 * parg(jrof)**(-0.539)
74  zc2ref = 13.815 * parg(jrof)**(-0.954)
75  zwsat = (-1.08*psab(jrof) + 494.305)*0.001
76  zw2 = pwp(jrof)/(pd2(jrof)*xrholw)
77  zc2 = zc2ref*zw2/(zwsat -zw2 + zwl)
78  zwgeq_dw2 = 1.0 - za*zp*(zw2/zwsat)**(zp-1.0) + &
79  9.0*za*zp*(zw2/zwsat)**(9.0*zp-1.0)
80  pdwg_dwg(jrof) = exp(-zc2/xday*zdt)
81  pdwg_dw2(jrof) = zwgeq_dw2 * (1.0 - exp(-zc2/xday*zdt))
82 
83  ELSE
84 
85  pdwg_dwg(jrof) = 0.0
86  pdwg_dw2(jrof) = 0.0
87 
88  ENDIF
89 
90 ENDDO
91 IF (lhook) CALL dr_hook('OI_JACOBIANS',1,zhook_handle)
92 !
93 END SUBROUTINE oi_jacobians
subroutine oi_jacobians(KNBPT,
Definition: oi_jacobians.F90:5