Changeset 5836 for LMDZ6


Ignore:
Timestamp:
Sep 24, 2025, 5:18:08 PM (3 months ago)
Author:
rkazeroni
Message:

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
Location:
LMDZ6/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/add_phys_tend_mod.f90

    r5285 r5836  
    33!
    44!
     5!$gpum horizontal klon nlon
    56MODULE add_phys_tend_mod
    67
     
    1314  INTEGER, SAVE ::   fl_cor_ebil
    1415!$OMP THREADPRIVATE(fl_cor_ebil)
     16! First call to add_phys_tend
     17  LOGICAL, SAVE :: add_phys_tend_first=.true.
     18!$OMP THREADPRIVATE(add_phys_tend_first)
    1519
    1620CONTAINS
     
    5054  REAL zdu(klon, klev), zdv(klon, klev)
    5155  REAL zdt(klon, klev), zdq(klon, klev), zdql(klon, klev), zdqi(klon, klev), zdqbs(klon,klev)
    52   CHARACTER *(*) text
     56  CHARACTER(LEN=*) :: text
    5357  REAL paprs(klon,klev+1)
    5458  INTEGER flag_inhib_tend ! if flag_inhib_tend != 0, tendencies are not added
     
    118122REAL, DIMENSION(klon,klev),     INTENT(IN)    :: zdt, zdql, zdqi, zdqbs
    119123REAL, DIMENSION(klon,klev+1),   INTENT(IN)    :: paprs
    120 CHARACTER*(*),                  INTENT(IN)    :: text
     124CHARACTER(LEN=*),               INTENT(IN)    :: text
    121125INTEGER,                        INTENT(IN)    :: abortphy
    122126INTEGER,                        INTENT(IN)    :: flag_inhib_tend ! if not 0, tendencies are not added
     
    149153
    150154INTEGER debug_level
    151 LOGICAL, SAVE :: first=.true.
    152 !$OMP THREADPRIVATE(first)
    153155!
    154156!======================================================================
     
    202204
    203205  debug_level=10
    204   IF (first) THEN
     206  IF (add_phys_tend_first) THEN
    205207     print *,"TestJLD rcpv, rcw, rcs",rcpv, rcw, rcs
    206      first=.false.
     208     add_phys_tend_first=.false.
    207209  ENDIF
    208210!
     
    523525REAL, DIMENSION(nlon,nlev),     INTENT(IN)    :: zdt, zdq, zdql, zdqs, zdqbs
    524526REAL, DIMENSION(nlon,nlev+1),   INTENT(IN)    :: paprs
    525 CHARACTER*(*),                  INTENT(IN)    :: text
     527CHARACTER(LEN=*),               INTENT(IN)    :: text
    526528
    527529! Local :
     
    749751! Arguments :
    750752!------------
    751 CHARACTER*(*) text ! text specifing the involved parametrization
     753CHARACTER(LEN=*) :: text ! text specifing the involved parametrization
    752754INTEGER itap        ! time step number
    753755! local variables
     
    757759REAL bilq_bnd,  bilh_bnd     ! Q and H budget due to exchange with boundaries
    758760INTEGER bilq_ok,  bilh_ok
    759 CHARACTER*(12) status
     761CHARACTER(LEN=12) :: status
    760762
    761763bilq_seuil = 1.E-10
  • LMDZ6/trunk/libf/phylmd/add_wake_tend.f90

    r5390 r5836  
     1!$gpum horizontal klon
     2MODULE add_wake_tend_mod
     3  PRIVATE
     4
     5  PUBLIC add_wake_tend
     6
     7  CONTAINS
     8
    19SUBROUTINE add_wake_tend(zddeltat, zddeltaq, zds, zdas, zddensw, zddensaw, zoccur, text, abortphy)
    210!===================================================================
     
    2028  REAL, DIMENSION(klon),         INTENT (IN)         :: zds, zdas, zddensw, zddensaw
    2129  INTEGER, DIMENSION(klon),      INTENT (IN)         :: zoccur
    22   CHARACTER*(*),                 INTENT (IN)         :: text
     30  CHARACTER(LEN=*),              INTENT (IN)         :: text
    2331  INTEGER,                       INTENT (IN)         :: abortphy
    2432
     
    6876RETURN
    6977END SUBROUTINE add_wake_tend
     78
     79END MODULE add_wake_tend_mod
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5835 r5836  
    2121
    2222    USE ACAMA_GWD_rando_m, only: ACAMA_GWD_rando, ACAMA_GWD_rando_first
     23    USE add_wake_tend_mod, ONLY: add_wake_tend
    2324    USE aero_mod
    2425    USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, diag_phys_tend, prt_enerbil, &
Note: See TracChangeset for help on using the changeset viewer.