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

Last change on this file since 5846 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
RevLine 
[5836]1!$gpum horizontal klon
2MODULE add_wake_tend_mod
3  PRIVATE
4
5  PUBLIC add_wake_tend
6
7  CONTAINS
8
[4744]9SUBROUTINE add_wake_tend(zddeltat, zddeltaq, zds, zdas, zddensw, zddensaw, zoccur, text, abortphy)
[2635]10!===================================================================
[5390]11! Ajoute les tendances liees aux diverses parametrisations physiques aux
[2635]12! variables d'etat des poches froides.
13!===================================================================
14!======================================================================
15! Declarations
16!======================================================================
17
18USE dimphy, ONLY: klon, klev
[4744]19USE phys_state_var_mod, ONLY: wake_deltat, wake_deltaq, wake_s, awake_s,  &
20                              wake_dens, awake_dens
[2635]21
22USE print_control_mod, ONLY: prt_level
23IMPLICIT none
24
25! Arguments :
26!------------
27  REAL, DIMENSION(klon, klev),   INTENT (IN)         :: zddeltat, zddeltaq
[4744]28  REAL, DIMENSION(klon),         INTENT (IN)         :: zds, zdas, zddensw, zddensaw
[2635]29  INTEGER, DIMENSION(klon),      INTENT (IN)         :: zoccur
[5836]30  CHARACTER(LEN=*),              INTENT (IN)         :: text
[2635]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
[3208]64             wake_s(i)     = wake_s(i)    + zds(i)
[4744]65             awake_s(i)    = awake_s(i)    + zdas(i)
66             wake_dens(i)  = wake_dens(i) + zddensw(i)
[3208]67             awake_dens(i) = awake_dens(i) + zddensaw(i)
[2635]68           ELSE
[3208]69             wake_s(i)     = 0.
[4744]70             awake_s(i)    = 0.
71             wake_dens(i)  = 0.
[3208]72             awake_dens(i) = 0.
[2635]73           ENDIF   ! (zoccur(i) .GE. 1)
74         END DO
75
76RETURN
[5390]77END SUBROUTINE add_wake_tend
[5836]78
79END MODULE add_wake_tend_mod
Note: See TracBrowser for help on using the repository browser.