source: LMDZ6/trunk/libf/phylmd/add_wake_tend.f90 @ 5836

Last change on this file since 5836 was 5836, checked in by rkazeroni, 2 months ago

For GPU porting of add_phys_tend and add_wake_tend routines:

  • Put routine into module (speeds up source-to-source transformation)
  • Add "horizontal" comment to specify possible names of horizontal variables
  • Move declaration of variables with SAVE attributes from the compute routine to the module
  • Modernize declarations of character arguments to fortran90 standards
File size: 2.6 KB
Line 
1!$gpum horizontal klon
2MODULE add_wake_tend_mod
3  PRIVATE
4
5  PUBLIC add_wake_tend
6
7  CONTAINS
8
9SUBROUTINE add_wake_tend(zddeltat, zddeltaq, zds, zdas, zddensw, zddensaw, zoccur, text, abortphy)
10!===================================================================
11! Ajoute les tendances liees aux diverses parametrisations physiques aux
12! variables d'etat des poches froides.
13!===================================================================
14!======================================================================
15! Declarations
16!======================================================================
17
18USE dimphy, ONLY: klon, klev
19USE phys_state_var_mod, ONLY: wake_deltat, wake_deltaq, wake_s, awake_s,  &
20                              wake_dens, awake_dens
21
22USE print_control_mod, ONLY: prt_level
23IMPLICIT none
24
25! Arguments :
26!------------
27  REAL, DIMENSION(klon, klev),   INTENT (IN)         :: zddeltat, zddeltaq
28  REAL, DIMENSION(klon),         INTENT (IN)         :: zds, zdas, zddensw, zddensaw
29  INTEGER, DIMENSION(klon),      INTENT (IN)         :: zoccur
30  CHARACTER(LEN=*),              INTENT (IN)         :: text
31  INTEGER,                       INTENT (IN)         :: abortphy
32
33! Local :
34!--------
35
36INTEGER                                              :: i, l
37
38
39
40     IF (prt_level >= 5) then
41        write (*,*) "In add_wake_tend, after ",text
42        call flush
43     end if
44
45     IF (abortphy==1) RETURN ! on n ajoute pas les tendance si le modele
46                              ! a deja plante.
47
48!======================================================================
49!    Add tendencies to wake state variables
50!======================================================================
51         DO l = 1, klev
52           DO i = 1, klon
53             IF (zoccur(i) .GE. 1) THEN
54               wake_deltat(i, l) = wake_deltat(i, l) + zddeltat(i,l)
55               wake_deltaq(i, l) = wake_deltaq(i, l) + zddeltaq(i,l)
56             ELSE
57               wake_deltat(i, l) = 0.
58               wake_deltaq(i, l) = 0.
59             ENDIF   ! (zoccur(i) .GE. 1)
60           END DO
61         END DO
62         DO i = 1, klon
63           IF (zoccur(i) .GE. 1) THEN
64             wake_s(i)     = wake_s(i)    + zds(i)
65             awake_s(i)    = awake_s(i)    + zdas(i)
66             wake_dens(i)  = wake_dens(i) + zddensw(i)
67             awake_dens(i) = awake_dens(i) + zddensaw(i)
68           ELSE
69             wake_s(i)     = 0.
70             awake_s(i)    = 0.
71             wake_dens(i)  = 0.
72             awake_dens(i) = 0.
73           ENDIF   ! (zoccur(i) .GE. 1)
74         END DO
75
76RETURN
77END SUBROUTINE add_wake_tend
78
79END MODULE add_wake_tend_mod
Note: See TracBrowser for help on using the repository browser.