SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/OFFLIN/oi_jacobians.F90
Go to the documentation of this file.
00001 SUBROUTINE OI_JACOBIANS (KNBPT,&
00002 !---------------------------------------------------------------------------------
00003 ! - INPUT  1D
00004    PWS_O, PSAB, PARG, PD2, PWP, &
00005 ! - OUTPUT 1D .
00006    PDWG_DWG, PDWG_DW2)    
00007 !
00008 !**** * JACOBIANS * - Compute analytical Jacobians for assimilation of WG
00009 
00010 !     Purpose.
00011 !     --------
00012 
00013 !     - Based on the restore term of the ISBA equation for WG
00014 !       
00015     
00016 !**   Interface.
00017 !     ----------
00018 !        *CALL* *OI_JACOBIANS*
00019 
00020 !----------------------------------------------------------------------------------
00021 
00022 !     Externals.
00023 !     ---------
00024 
00025 !     Method.  analytical formulation
00026 !     -------
00027 
00028 !     Author.
00029 !     -------
00030 !        09-06, J.-F. Mahfouf
00031 
00032 !-----------------------------------------------------------------------
00033 !
00034 USE MODD_ASSIM,      ONLY : NECHGU, RSCAL_JAC                                                                      
00035 USE MODD_CSTS,       ONLY : XRHOLW, XDAY  
00036 !  
00037 !
00038 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
00039 USE PARKIND1  ,ONLY : JPRB
00040 !
00041 IMPLICIT NONE
00042 !  
00043 INTEGER    :: KNBPT
00044 INTEGER    :: JROF
00045 !
00046 REAL    ,INTENT(IN)    :: PWS_O(KNBPT) 
00047 REAL    ,INTENT(IN)    :: PSAB(KNBPT)
00048 REAL    ,INTENT(IN)    :: PARG(KNBPT)
00049 REAL    ,INTENT(IN)    :: PD2(KNBPT)
00050 REAL    ,INTENT(IN)    :: PWP(KNBPT)
00051 !
00052 REAL    ,INTENT(OUT)   :: PDWG_DWG(KNBPT)
00053 REAL    ,INTENT(OUT)   :: PDWG_DW2(KNBPT) 
00054 !
00055 REAL    :: ZWSAT, ZWL, ZDT, ZW2, ZC2, ZC2REF, ZP, ZA, ZWGEQ_DW2
00056 REAL(KIND=JPRB) :: ZHOOK_HANDLE
00057 !
00058 IF (LHOOK) CALL DR_HOOK('OI_JACOBIANS',0,ZHOOK_HANDLE)
00059 ZWL = 1.E-5
00060 ZDT = REAL(NECHGU)*3600.0*RSCAL_JAC
00061 !
00062 ! Compute analytical Jacobians for the ISBA 2L scheme
00063 !
00064 DO JROF = 1,KNBPT
00065   IF (PWS_O(JROF) /= 999.0) THEN
00066     ZP = 0.134*PARG(JROF) + 3.4
00067     ZA = 732.42E-3*PARG(JROF)**(-0.539)
00068     ZC2REF = 13.815*PARG(JROF)**(-0.954)
00069     ZWSAT = (-1.08*PSAB(JROF) + 494.305)*0.001
00070     ZW2 = PWP(JROF)/(PD2(JROF)*XRHOLW)
00071     ZC2 = ZC2REF*ZW2/(ZWSAT -ZW2 + ZWL)
00072     ZWGEQ_DW2 = 1.0 - ZA*ZP*(ZW2/ZWSAT)**(ZP-1.0) +  &
00073                    9.0*ZA*ZP*(ZW2/ZWSAT)**(9.0*ZP-1.0)   
00074     PDWG_DWG(JROF) = EXP(-ZC2/XDAY*ZDT)
00075     PDWG_DW2(JROF) = ZWGEQ_DW2*(1.0 - EXP(-ZC2/XDAY*ZDT))
00076   ELSE
00077     PDWG_DWG(JROF) = 0.0
00078     PDWG_DW2(JROF) = 0.0
00079   ENDIF 
00080 ENDDO
00081 IF (LHOOK) CALL DR_HOOK('OI_JACOBIANS',1,ZHOOK_HANDLE)
00082 !
00083 END SUBROUTINE OI_JACOBIANS