source: LMDZ6/trunk/libf/phylmd/transp.f90 @ 5821

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

For GPU porting of transp routine:

  • Put routine into module (speeds up source-to-source transformation)
  • Add "horizontal" comment to specify possible names of horizontal variables
  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1
2! $Id: transp.f90 5818 2025-09-17 11:12:39Z idelkadi $
3!$gpum horizontal klon
4MODULE transp_mod
5
6  PRIVATE
7
8  PUBLIC transp
9
10  CONTAINS
11
12SUBROUTINE transp(paprs, tsol, t, q, ql, qs, u, v, geom, &
13                  utran_e, vtran_e, utran_q, vtran_q, utran_w, vtran_w)
14
15  USE dimphy
16  USE yomcst_mod_h
17IMPLICIT NONE
18  ! ======================================================================
19  ! Auteur(s): Z.X.Li (LMD/CNRS)
20  ! Date: le 25 avril 1994
21  ! Objet: Calculer le transport de l'energie et de la vapeur d'eau
22  ! ======================================================================
23
24
25
26  !--inputs
27  REAL, INTENT(IN)  :: paprs(klon, klev+1), tsol(klon), geom(klon, klev)
28  REAL, INTENT(IN)  :: t(klon, klev), q(klon, klev), ql(klon, klev), qs(klon, klev)
29  REAL, INTENT(IN)  :: u(klon, klev), v(klon, klev)
30  !--outputs
31  REAL, INTENT(OUT) :: utran_e(klon), vtran_e(klon) !--lateral flux of dry static energy (J m-1 s-1)
32  REAL, INTENT(OUT) :: utran_q(klon), vtran_q(klon) !--lateral flux of water vapour (kg m-1 s-1)
33  REAL, INTENT(OUT) :: utran_w(klon), vtran_w(klon) !--lateral flux of total water (kg m-1 s-1)
34  !--local variables
35  INTEGER i, l
36  REAL e, dm
37  ! ------------------------------------------------------------------
38
39  !--initialisations
40  utran_e(:) = 0.0
41  utran_q(:) = 0.0
42  vtran_e(:) = 0.0
43  vtran_q(:) = 0.0
44  utran_w(:) = 0.0
45  vtran_w(:) = 0.0
46
47  !--vertical integration of diagnostics
48  DO l = 1, klev
49    DO i = 1, klon
50      dm= (paprs(i,l)-paprs(i,l+1))/RG  !--mass of layer kg m-2
51      !--moist static energy
52!      e = rcpd*t(i, l) + rlvtt*q(i, l) + geom(i, l)
53      !--dry static energy
54      e = rcpd*t(i, l) + geom(i, l)
55      utran_e(i) = utran_e(i) + u(i, l)*e*dm
56      vtran_e(i) = vtran_e(i) + v(i, l)*e*dm
57      !--water vapour
58      utran_q(i) = utran_q(i) + u(i, l)*q(i,l)*dm
59      vtran_q(i) = vtran_q(i) + v(i, l)*q(i,l)*dm
60      !--total water
61      utran_w(i) = utran_w(i) + u(i, l)*(q(i,l)+ql(i,l)+qs(i,l))*dm
62      vtran_w(i) = vtran_w(i) + v(i, l)*(q(i,l)+ql(i,l)+qs(i,l))*dm
63    ENDDO
64  ENDDO
65
66  RETURN
67END SUBROUTINE transp
68
69END MODULE transp_mod
Note: See TracBrowser for help on using the repository browser.