source: LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/tiedqneg.f90 @ 5099

Last change on this file since 5099 was 5099, checked in by abarral, 4 months ago

Replace most uses of CPP_DUST by the corresponding logical defined in lmdz_cppkeys_wrapper.F90
Convert several files from .F to .f90 to allow Dust to compile w/o rrtm/ecrad
Create lmdz_yoerad.f90
(lint) Remove "!" on otherwise empty line

File size: 1.9 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)<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
66END SUBROUTINE tiedqneg
Note: See TracBrowser for help on using the repository browser.