Changeset 5820 for LMDZ6


Ignore:
Timestamp:
Sep 17, 2025, 2:50:16 PM (2 months ago)
Author:
rkazeroni
Message:

For GPU porting of ratqs_main routine:

  • Add "horizontal" comment to specify possible names of horizontal variables
  • Move computation of maxval into an initialization routine as this cannot be GPU ported
  • Fix wrong dimensionality of wake_s in the argument declaration
  • Change problematic variable initializations at declaration (SAVE attribute implied) by either adding a PARAMETER attribute or moving the initialization
Location:
LMDZ6/trunk/libf/phylmd
Files:
3 edited

Legend:

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

    r5816 r5820  
     1!$gpum horizontal klon ngrid
    12MODULE lmdz_ratqs_main
     3  PRIVATE
     4
     5  LOGICAL, SAVE :: first=.TRUE.  ! fisrt call to ratqs_main
     6  !$OMP THREADPRIVATE(first)
     7
     8  REAL, SAVE :: resolmax
     9
     10  REAL, SAVE, ALLOCATABLE :: resol(:)
     11  !$OMP THREADPRIVATE(resol)
     12
     13  PUBLIC ratqs_main_first, ratqs_main
    214
    315CONTAINS
     16
     17SUBROUTINE ratqs_main_first(klon, cell_area)
     18
     19  IMPLICIT NONE
     20  INTEGER, INTENT(in) :: klon
     21  REAL, DIMENSION(klon), INTENT(in) :: cell_area
     22  INTEGER :: i
     23
     24  IF (first) THEN
     25     ALLOCATE(resol(klon))
     26     resolmax=sqrt(maxval(cell_area))
     27     DO i=1,klon
     28        resol(i) = sqrt(cell_area(i))
     29     END DO
     30     first = .FALSE.
     31  END IF
     32
     33END SUBROUTINE ratqs_main_first
    434
    535SUBROUTINE ratqs_main(klon,klev,nbsrf,prt_level,lunout,       &
     
    4575logical, dimension(klon,klev),intent(in) :: ptconv
    4676real, dimension(klon,klev),intent(in) :: rnebcon0th,clwcon0th
    47 real, dimension(klon,klev),intent(in) :: wake_deltaq,wake_s
     77real, dimension(klon,klev),intent(in) :: wake_deltaq
     78real, dimension(klon),intent(in) :: wake_s
    4879real, dimension(klon,nbsrf),intent(in) :: t2m,q2m
    4980real, dimension(klon), intent(in) :: cell_area
     
    6293real facteur,zfratqs1,zfratqs2
    6394real, dimension(klon,klev) :: ratqs_hetero_,ratqs_oro_,ratqs_tke_
    64 real resol,resolmax,fact
     95real, dimension(klon) :: fact
    6596
    6697!-------------------------------------------------------------------------
     
    163194! Audran, Meryl, Lea, Gwendal and Etienne
    164195! April 2023
    165         resolmax=sqrt(maxval(cell_area))
    166196         do k=1,klev
    167197            do i=1,klon
    168               resol=sqrt(cell_area(i))
    169               fact=sqrt(resol/resolmax)
    170               ratqss(i,k)=ratqsbas*fact+0.5*(ratqshaut-ratqsbas)*fact &
     198              fact(i) = sqrt(resol(i)/resolmax)
     199              ratqss(i,k)=ratqsbas*fact(i)+0.5*(ratqshaut-ratqsbas)*fact(i) &
    171200              *( tanh( (ratqsp0-pplay(i,k))/ratqsdp) + 1.)
    172201           enddo
  • LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.f90

    r5390 r5820  
    5858
    5959! local
    60 LOGICAL :: klein = .false.
    61 LOGICAL :: klein_conv = .true.
    62 REAL :: taup0 = 70000
    63 REAL :: taudp = 500
    64 integer :: lev_out=10
     60LOGICAL, PARAMETER :: klein = .false.
     61LOGICAL, PARAMETER :: klein_conv = .true.
     62REAL, PARAMETER :: taup0 = 70000
     63REAL, PARAMETER :: taudp = 500
     64integer :: lev_out
    6565REAL, DIMENSION (klon,klev) :: zmasse,entr0,detr0,detraincv,dqp,detrain_p,q0,qd0,tau_diss
    6666REAL, DIMENSION (klon,klev+1) :: fm0
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5819 r5820  
    9999    USE lmdz_blowing_snow_ini, ONLY : blowing_snow_ini , qbst_bs
    100100    USE lmdz_lscp_ini, ONLY : lscp_ini
    101     USE lmdz_ratqs_main, ONLY : ratqs_main
     101    USE lmdz_ratqs_main, ONLY : ratqs_main, ratqs_main_first
    102102    USE lmdz_ratqs_ini, ONLY : ratqs_ini
    103103    USE lmdz_cloud_optics_prop_ini, ONLY : cloud_optics_prop_ini
     
    39313931    ENDDO
    39323932
     3933    CALL ratqs_main_first(klon, cell_area)
    39333934    CALL ratqs_main(klon,klev,nbsrf,prt_level,lunout,        &
    39343935         iflag_ratqs,iflag_con,iflag_cld_th,pdtphys,  &
Note: See TracChangeset for help on using the changeset viewer.