Ignore:
Timestamp:
Nov 21, 2025, 3:58:45 PM (16 hours ago)
Author:
yann meurdesoif
Message:

GPU port of cdrag + call_atke + coef_diff_turb

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/cdrag_mod.f90

    r5873 r5876  
    99!
    1010  IMPLICIT NONE
     11 
     12  PRIVATE
     13
     14  LOGICAL, SAVE :: firstcall = .TRUE.
     15  !$OMP THREADPRIVATE(firstcall)
     16  INTEGER, SAVE :: iflag_corr_sta
     17  !$OMP THREADPRIVATE(iflag_corr_sta)
     18  INTEGER, SAVE :: iflag_corr_insta
     19  !$OMP THREADPRIVATE(iflag_corr_insta)
     20  LOGICAL, SAVE :: ok_cdrag_iter
     21  !$OMP THREADPRIVATE(ok_cdrag_iter)
     22 
     23  PUBLIC :: cdrag_init, cdrag
    1124
    1225CONTAINS
     
    1629!r original routine svn3623
    1730!
     31  SUBROUTINE cdrag_init
     32  USE ioipsl_getin_p_mod, ONLY : getin_p
     33  USE modd_csts, ONLY : ini_csts
     34  IMPLICIT NONE
     35
     36! On choisit les fonctions de stabilite utilisees au premier appel
     37!**************************************************************************
     38    IF (firstcall) THEN
     39      iflag_corr_sta=2
     40      iflag_corr_insta=2
     41      ok_cdrag_iter = .FALSE.
     42 
     43      CALL getin_p('iflag_corr_sta',iflag_corr_sta)
     44      CALL getin_p('iflag_corr_insta',iflag_corr_insta)
     45      CALL getin_p('ok_cdrag_iter',ok_cdrag_iter)
     46 
     47      CALL ini_csts
     48
     49      firstcall = .FALSE.
     50    ENDIF
     51   
     52
     53  END SUBROUTINE cdrag_init
     54
     55
    1856 SUBROUTINE cdrag(knon,  nsrf,   &
    1957     speed, t1,    q1,    zgeop1, &
     
    2159     ri_in, iri_in, &
    2260     cdm,  cdh,  zri,   pref, prain, tsol , pat1)
     61!$gpum horizontal knon
    2362
    2463  USE coare_cp_mod, ONLY: coare_cp
     
    2665  USE indice_sol_mod
    2766  USE print_control_mod, ONLY: lunout, prt_level
    28   USE ioipsl_getin_p_mod, ONLY : getin_p
    2967  USE lmdz_atke_turbulence_ini, ONLY : smmin, ric, cinf, cepsilon, pr_slope, pr_asym, pr_neut
    3068  USE yomcst_mod_h
    3169  USE clesphys_mod_h
    3270  USE yoethf_mod_h
     71  USE clc_core_cp_mod, ONLY : clc_core_cp
     72  USE ecumev6_flux_mod, ONLY : ecumev6_flux
    3373  IMPLICIT NONE
    3474! ================================================================= c
     
    169209
    170210
    171 
    172   LOGICAL, SAVE :: firstcall = .TRUE.
    173   !$OMP THREADPRIVATE(firstcall)
    174   INTEGER, SAVE :: iflag_corr_sta
    175   !$OMP THREADPRIVATE(iflag_corr_sta)
    176   INTEGER, SAVE :: iflag_corr_insta
    177   !$OMP THREADPRIVATE(iflag_corr_insta)
    178   LOGICAL, SAVE :: ok_cdrag_iter
    179   !$OMP THREADPRIVATE(ok_cdrag_iter)
    180211
    181212!===================================================================c
     
    249280!=============================================================================c
    250281
    251 ! On choisit les fonctions de stabilite utilisees au premier appel
    252 !**************************************************************************
    253  IF (firstcall) THEN
    254    iflag_corr_sta=2
    255    iflag_corr_insta=2
    256    ok_cdrag_iter = .FALSE.
    257  
    258    CALL getin_p('iflag_corr_sta',iflag_corr_sta)
    259    CALL getin_p('iflag_corr_insta',iflag_corr_insta)
    260    CALL getin_p('ok_cdrag_iter',ok_cdrag_iter)
    261 
    262    firstcall = .FALSE.
    263  ENDIF
    264 
    265282!------------------ Rajout (OT2018) --------------------
    266283!---------    Rajout pour itération sur rugosité     ----------------
     
    302319            mixte = .true.
    303320         ENDIF
     321
    304322         call clc_core_cp ( sqrt(zdu2),t1(i)-tsurf(i),q1(i)-qsurf(i),t1(i),q1(i),&
    305323             zgeop1(i)/RG, zgeop1(i)/RG,  zgeop1(i)/RG,&
     
    320338           PSSS = 0.0
    321339         ENDIF
    322          call ini_csts
    323          call ecumev6_flux( z_0m,t1(i),tsurf(i),&
     340!         call ini_csts
     341!$gpum nocall
     342          call ecumev6_flux( knon, 1, z_0m,t1(i),tsurf(i),&
    324343             q1(i),qsurf(i),sqrt(zdu2),zgeop1(i)/RG,PSSS,zgeop1(i)/RG,&
    325344             psol(i),pat1(i), OPRECIP, OPWEBB,&
     
    339358         LPRECIP = .false.
    340359         LPWG    = .false.
    341          call ini_csts
     360!ym         call ini_csts
    342361
    343362           z0m_1d = z0m
     
    345364           sqrt_zdu2_1d = sqrt(zdu2)
    346365           zgeop1_rg_1d=zgeop1(i)/RG
    347            call coare30_flux_cnrm(z0m_1d,t1(i),tsurf(i), q1(i),  &
     366
     367!$gpum nocall
     368           call coare30_flux_cnrm(1, z0m_1d,t1(i),tsurf(i), q1(i),  &
    348369               sqrt_zdu2_1d,zgeop1_rg_1d,zgeop1_rg_1d,psol(i),qsurf(i),PQSAT, &
    349370               PSFTH,PFSTQ,PUSTAR,PCD,PCDN,PCH,PCE,PRI, &
     
    362383         ENDIF
    363384         write(*,*) "debug size",size(coeffs)
     385
     386!$gpum nocall
    364387         call coare_cp(sqrt(zdu2),t1(i)-tsurf(i),q1(i)-qsurf(i),&
    365388               t1(i),q1(i),&
Note: See TracChangeset for help on using the changeset viewer.