source: LMDZ6/trunk/libf/phylmd/Dust/tiedqneg.f90 @ 5246

Last change on this file since 5246 was 5246, checked in by abarral, 4 days ago

Convert fixed-form to free-form sources .F -> .{f,F}90
(WIP: some .F remain, will be handled in subsequent commits)

File size: 1.8 KB
Line 
1SUBROUTINE 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).LT.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).LT.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).LT.qmin) THEN
61      d_q(i,l) = qmin - q(i,l)
62    ENDIF
63  ENDDO
64  !
65  RETURN
66END SUBROUTINE tiedqneg
Note: See TracBrowser for help on using the repository browser.