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

Last change on this file was 5159, checked in by abarral, 3 months ago

Put dimensions.h and paramet.h into modules

File size: 1.9 KB
Line 
1SUBROUTINE tiedqneg(pres_h, q, d_q)
2
3  USE dimphy
4  USE lmdz_dimensions, ONLY: iim, jjm, llm, ndm
5  IMPLICIT NONE
6  !======================================================================
7  ! Auteur(s): CG (LGGE/CNRS) date: 19950201
8  ! O. Boucher (LOA/CNRS) date 19961125
9  ! Objet:  Correction eventuelle des valeurs negatives d'humidite
10  ! induites par le schema de convection de Tiedke
11  !======================================================================
12  ! Arguments:
13  ! pres_h--input-R-la valeur de la pression aux interfaces
14  ! q-------input-R-quantite de traceur
15  ! d_q-----input-output-R-increment du traceur
16  !======================================================================
17
18
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
66END SUBROUTINE tiedqneg
Note: See TracBrowser for help on using the repository browser.