SURFEX v7.3
General documentation of Surfex
|
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