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
File:
1 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
Note: See TracChangeset for help on using the changeset viewer.