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

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

Replace academic.h, alpale.h, comdissip.h, comdissipn.h, comdissnew.h by modules
Remove unused clesph0.h

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  REAL :: pres_h(klon, klev + 1)
19  REAL :: q(klon, klev)
20  REAL :: d_q(klon, klev)
21  INTEGER :: nb_neg
22  INTEGER :: i, l
23
24  REAL :: qmin
25  PARAMETER (qmin = 0.0)
26
27  DO l = klev, 2, -1
28    nb_neg = 0
29    DO i = 1, klon
30      IF (q(i, l) + d_q(i, l)<qmin) THEN
31        nb_neg = nb_neg + 1
32        d_q(i, l - 1) = d_q(i, l - 1) + (q(i, l) + d_q(i, l) - qmin) &
33                * (pres_h(i, l) - pres_h(i, l + 1)) / (pres_h(i, l - 1) - pres_h(i, l))
34        d_q(i, l) = qmin - q(i, l)
35      ENDIF
36    ENDDO
37    ! IF (nb_neg.NE.0) THEN
38    ! PRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives'
39    ! ENDIF
40  ENDDO
41
42  DO l = 1, klev - 1
43    nb_neg = 0
44    DO i = 1, klon
45      IF (q(i, l) + d_q(i, l)<qmin) THEN
46        nb_neg = nb_neg + 1
47        d_q(i, l + 1) = d_q(i, l + 1) + (q(i, l) + d_q(i, l) - qmin) &
48                * (pres_h(i, l) - pres_h(i, l + 1)) / (pres_h(i, l + 1) - pres_h(i, l + 2))
49        d_q(i, l) = qmin - q(i, l)
50      ENDIF
51    ENDDO
52    ! IF (nb_neg.NE.0) THEN
53    ! PRINT *,'niveau ', l,' ' , nb_neg, ' valeurs negatives'
54    ! ENDIF
55  ENDDO
56
57  l = klev
58  DO i = 1, klon
59    IF (q(i, l) + d_q(i, l)<qmin) THEN
60      d_q(i, l) = qmin - q(i, l)
61    ENDIF
62  ENDDO
63
64
65END SUBROUTINE tiedqneg
Note: See TracBrowser for help on using the repository browser.