Changeset 5099 for LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/tiedqneg.f90
- Timestamp:
- Jul 22, 2024, 9:29:09 PM (4 months ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/tiedqneg.f90
r5098 r5099 1 SUBROUTINE tiedqneg (pres_h,q,d_q)2 c 3 4 5 c======================================================================6 cAuteur(s): CG (LGGE/CNRS) date: 199502017 cO. Boucher (LOA/CNRS) date 199611258 cObjet: Correction eventuelle des valeurs negatives d'humidite9 c induites par le schema de convection de Tiedke 10 c======================================================================11 cArguments:12 cpres_h--input-R-la valeur de la pression aux interfaces13 cq-------input-R-quantite de traceur14 cd_q-----input-output-R-increment du traceur15 c======================================================================16 c 17 18 cINCLUDE "dimphy.h"19 REAL pres_h(klon,klev+1)20 REAL q(klon,klev)21 REAL d_q(klon,klev)22 INTEGERnb_neg23 INTEGERi, l24 c 25 REALqmin26 PARAMETER (qmin=0.0)27 c 28 DO l = klev,2,-129 30 DO i = 1,klon31 IF (q(i,l)+d_q(i,l)<qmin) THEN32 33 d_q(i,l-1) = d_q(i,l-1) + (q(i,l)+d_q(i,l)-qmin)34 . *(pres_h(i,l)-pres_h(i,l+1))/(pres_h(i,l-1)-pres_h(i,l))35 d_q(i,l) = qmin - q(i,l)36 37 38 c IF (nb_neg.NE.0) THEN 39 cPRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives'40 cENDIF41 42 c 43 DO l = 1, klev-144 45 DO i = 1,klon46 IF (q(i,l)+d_q(i,l)<qmin) THEN47 48 d_q(i,l+1) = d_q(i,l+1) + (q(i,l)+d_q(i,l)-qmin)49 . *(pres_h(i,l)-pres_h(i,l+1))/(pres_h(i,l+1)-pres_h(i,l+2))50 d_q(i,l) = qmin - q(i,l)51 52 53 c IF (nb_neg.NE.0) THEN 54 cPRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives'55 cENDIF56 57 c 58 59 DO i = 1,klon60 IF (q(i,l)+d_q(i,l)<qmin) THEN61 d_q(i,l) = qmin - q(i,l)62 63 64 c 65 66 END 1 SUBROUTINE tiedqneg (pres_h, q, d_q) 2 3 USE dimphy 4 IMPLICIT none 5 !====================================================================== 6 ! Auteur(s): CG (LGGE/CNRS) date: 19950201 7 ! O. Boucher (LOA/CNRS) date 19961125 8 ! Objet: Correction eventuelle des valeurs negatives d'humidite 9 ! induites par le schema de convection de Tiedke 10 !====================================================================== 11 ! Arguments: 12 ! pres_h--input-R-la valeur de la pression aux interfaces 13 ! q-------input-R-quantite de traceur 14 ! d_q-----input-output-R-increment du traceur 15 !====================================================================== 16 17 INCLUDE "dimensions.h" 18 ! INCLUDE "dimphy.h" 19 REAL :: pres_h(klon, klev + 1) 20 REAL :: q(klon, klev) 21 REAL :: d_q(klon, klev) 22 INTEGER :: nb_neg 23 INTEGER :: i, l 24 25 REAL :: qmin 26 PARAMETER (qmin = 0.0) 27 28 DO l = klev, 2, -1 29 nb_neg = 0 30 DO i = 1, klon 31 IF (q(i, l) + d_q(i, l)<qmin) THEN 32 nb_neg = nb_neg + 1 33 d_q(i, l - 1) = d_q(i, l - 1) + (q(i, l) + d_q(i, l) - qmin) & 34 * (pres_h(i, l) - pres_h(i, l + 1)) / (pres_h(i, l - 1) - pres_h(i, l)) 35 d_q(i, l) = qmin - q(i, l) 36 ENDIF 37 ENDDO 38 ! IF (nb_neg.NE.0) THEN 39 ! PRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives' 40 ! ENDIF 41 ENDDO 42 43 DO l = 1, klev - 1 44 nb_neg = 0 45 DO i = 1, klon 46 IF (q(i, l) + d_q(i, l)<qmin) THEN 47 nb_neg = nb_neg + 1 48 d_q(i, l + 1) = d_q(i, l + 1) + (q(i, l) + d_q(i, l) - qmin) & 49 * (pres_h(i, l) - pres_h(i, l + 1)) / (pres_h(i, l + 1) - pres_h(i, l + 2)) 50 d_q(i, l) = qmin - q(i, l) 51 ENDIF 52 ENDDO 53 ! IF (nb_neg.NE.0) THEN 54 ! PRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives' 55 ! ENDIF 56 ENDDO 57 58 l = klev 59 DO i = 1, klon 60 IF (q(i, l) + d_q(i, l)<qmin) THEN 61 d_q(i, l) = qmin - q(i, l) 62 ENDIF 63 ENDDO 64 65 RETURN 66 END SUBROUTINE tiedqneg
Note: See TracChangeset
for help on using the changeset viewer.