Changeset 5876 for LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd
- Timestamp:
- Nov 21, 2025, 3:58:45 PM (3 months ago)
- Location:
- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd
- Files:
-
- 17 edited
-
cdrag_mod.f90 (modified) (11 diffs)
-
clc_core_cp.f90 (modified) (2 diffs)
-
coare30_flux_cnrm_mod.f90 (modified) (4 diffs)
-
coare_cp_mod.f90 (modified) (2 diffs)
-
coef_diff_turb_mod.f90 (modified) (9 diffs)
-
coefkzmin.f90 (modified) (2 diffs)
-
ecumev6_flux.f90 (modified) (10 diffs)
-
lmdz_call_atke.f90 (modified) (1 diff)
-
modd_csts.f90 (modified) (2 diffs)
-
pbl_surface_mod.F90 (modified) (46 diffs)
-
qsat_seawater.f90 (modified) (5 diffs)
-
qsat_seawater2.f90 (modified) (4 diffs)
-
surf_land_bucket_hetero_mod.F90 (modified) (1 diff)
-
ustarhb.f90 (modified) (2 diffs)
-
vdif_kcay.f90 (modified) (2 diffs)
-
yamada4.f90 (modified) (9 diffs)
-
yamada_c.F90 (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/cdrag_mod.f90
r5873 r5876 9 9 ! 10 10 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 11 24 12 25 CONTAINS … … 16 29 !r original routine svn3623 17 30 ! 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 18 56 SUBROUTINE cdrag(knon, nsrf, & 19 57 speed, t1, q1, zgeop1, & … … 21 59 ri_in, iri_in, & 22 60 cdm, cdh, zri, pref, prain, tsol , pat1) 61 !$gpum horizontal knon 23 62 24 63 USE coare_cp_mod, ONLY: coare_cp … … 26 65 USE indice_sol_mod 27 66 USE print_control_mod, ONLY: lunout, prt_level 28 USE ioipsl_getin_p_mod, ONLY : getin_p29 67 USE lmdz_atke_turbulence_ini, ONLY : smmin, ric, cinf, cepsilon, pr_slope, pr_asym, pr_neut 30 68 USE yomcst_mod_h 31 69 USE clesphys_mod_h 32 70 USE yoethf_mod_h 71 USE clc_core_cp_mod, ONLY : clc_core_cp 72 USE ecumev6_flux_mod, ONLY : ecumev6_flux 33 73 IMPLICIT NONE 34 74 ! ================================================================= c … … 169 209 170 210 171 172 LOGICAL, SAVE :: firstcall = .TRUE.173 !$OMP THREADPRIVATE(firstcall)174 INTEGER, SAVE :: iflag_corr_sta175 !$OMP THREADPRIVATE(iflag_corr_sta)176 INTEGER, SAVE :: iflag_corr_insta177 !$OMP THREADPRIVATE(iflag_corr_insta)178 LOGICAL, SAVE :: ok_cdrag_iter179 !$OMP THREADPRIVATE(ok_cdrag_iter)180 211 181 212 !===================================================================c … … 249 280 !=============================================================================c 250 281 251 ! On choisit les fonctions de stabilite utilisees au premier appel252 !**************************************************************************253 IF (firstcall) THEN254 iflag_corr_sta=2255 iflag_corr_insta=2256 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 ENDIF264 265 282 !------------------ Rajout (OT2018) -------------------- 266 283 !--------- Rajout pour itération sur rugosité ---------------- … … 302 319 mixte = .true. 303 320 ENDIF 321 304 322 call clc_core_cp ( sqrt(zdu2),t1(i)-tsurf(i),q1(i)-qsurf(i),t1(i),q1(i),& 305 323 zgeop1(i)/RG, zgeop1(i)/RG, zgeop1(i)/RG,& … … 320 338 PSSS = 0.0 321 339 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),& 324 343 q1(i),qsurf(i),sqrt(zdu2),zgeop1(i)/RG,PSSS,zgeop1(i)/RG,& 325 344 psol(i),pat1(i), OPRECIP, OPWEBB,& … … 339 358 LPRECIP = .false. 340 359 LPWG = .false. 341 call ini_csts360 !ym call ini_csts 342 361 343 362 z0m_1d = z0m … … 345 364 sqrt_zdu2_1d = sqrt(zdu2) 346 365 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), & 348 369 sqrt_zdu2_1d,zgeop1_rg_1d,zgeop1_rg_1d,psol(i),qsurf(i),PQSAT, & 349 370 PSFTH,PFSTQ,PUSTAR,PCD,PCDN,PCH,PCE,PRI, & … … 362 383 ENDIF 363 384 write(*,*) "debug size",size(coeffs) 385 386 !$gpum nocall 364 387 call coare_cp(sqrt(zdu2),t1(i)-tsurf(i),q1(i)-qsurf(i),& 365 388 t1(i),q1(i),& -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/clc_core_cp.f90
r5268 r5876 1 MODULE clc_core_cp_mod 1 2 ! 2 3 ! $Id$ 3 4 ! 5 CONTAINS 6 4 7 SUBROUTINE clc_core_cp(du, dt, dq, t1, q1, & 5 8 zu, zt, zq, & … … 231 234 RETURN 232 235 END subroutine clc_core_cp 236 237 END MODULE clc_core_cp_mod 238 -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/coare30_flux_cnrm_mod.f90
r5285 r5876 13 13 14 14 15 SUBROUTINE COARE30_FLUX_CNRM( PZ0SEA,PTA,PSST,PQA, &15 SUBROUTINE COARE30_FLUX_CNRM(klon, PZ0SEA,PTA,PSST,PQA, & 16 16 PVMOD,PZREF,PUREF,PPS,PQSATA,PQSAT,PSFTH,PSFTQ,PUSTAR,PCD,PCDN,PCH,PCE,PRI,& 17 17 PRESA,PRAIN,PPA,PZ0HSEA,LPRECIP, LPWG,coeffs ) … … 75 75 76 76 !----------Rajout Olive --------- 77 USE dimphy78 77 USE indice_sol_mod 79 78 USE coare_cp_mod, ONLY: PSIFCTT=>psit_30, PSIFCTU=>psiuo … … 81 80 !-------------------------------- 82 81 83 USE MODD_CSTS, ONLY : XKARMAN, XG, XSTEFAN, XRD, XRV, XPI, &82 USE modd_csts, ONLY : XKARMAN, XG, XSTEFAN, XRD, XRV, XPI, & 84 83 XLVTT, XCL, XCPD, XCPV, XRHOLW, XTT, & 85 84 XP00 … … 111 110 !TYPE(SEAFLUX_t), INTENT(INOUT) :: S 112 111 ! 112 INTEGER, INTENT(IN) :: klon ! horizontal dim 113 113 REAL, DIMENSION(klon), INTENT(IN) :: PTA ! air temperature at atm. level (K) 114 114 REAL, DIMENSION(klon), INTENT(IN) :: PQA ! air humidity at atm. level (kg/kg) -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/coare_cp_mod.f90
r5268 r5876 61 61 !taylor and yelland zo=1200 h*(L/h)**4.5 jwave=2 62 62 ! 63 USE MODD_CSTS, ONLY : XKARMAN, XG, XSTEFAN, XRD, XRV, XPI, &63 USE modd_csts, ONLY : XKARMAN, XG, XSTEFAN, XRD, XRV, XPI, & 64 64 XLVTT, XCL, XCPD, XCPV, XRHOLW, XTT, & 65 65 XP00 … … 100 100 real old_usr, old_tsr, old_qsr,tmp 101 101 102 real, external :: grv102 ! real, external :: grv 103 103 integer i,j,k 104 104 !---------------- Rajout pour prendre en compte différent Z0 --------------------------------! -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/coef_diff_turb_mod.f90
r5868 r5876 6 6 ! at surface(cdrag) 7 7 ! 8 USE clesphys_mod_h9 8 IMPLICIT NONE 10 9 … … 16 15 ypaprs, ypplay, yu, yv, yq, yt, yts, yqsurf, ycdragm, & 17 16 ycoefm, ycoefh ,yq2, yeps, ydrgpro) 18 17 !$gpum horizontal knon 19 18 USE dimphy, ONLY : klev 20 19 USE mod_grid_phy_lmdz, ONLY: klon_glo … … 24 23 USE yoethf_mod_h 25 24 USE compbl_mod_h 25 USE yamada4_mod, ONLY : yamada4 26 USE ustarhb_mod, ONLY : ustarhb 27 USE vdif_kcay_mod, ONLY : vdif_kcay 28 USE coefkzmin_mod, ONLY : coefkzmin 29 USE clesphys_mod_h, ONLY : ksta, ksta_ter, ok_kzmin 30 26 31 ! 27 32 ! Calculate coefficients(ycoefm, ycoefh) for turbulent diffusion in the … … 206 211 qsurf, & 207 212 pcfm, pcfh) 208 213 !$gpum horizontal knon 209 214 USE yomcst_mod_h 210 USE dimphy 215 USE dimphy, ONLY : klev 211 216 USE indice_sol_mod 212 217 USE print_control_mod, ONLY: prt_level, lunout … … 254 259 ! Quelques constantes et options: 255 260 ! 256 REAL, PARAMETER :: cepdu2=0.1* *2261 REAL, PARAMETER :: cepdu2=0.1*0.1 257 262 REAL, PARAMETER :: CKAP=0.4 258 263 REAL, PARAMETER :: cb=5.0 … … 295 300 REAL gamt(2:klev) 296 301 297 LOGICAL, SAVE :: appel1er=.TRUE.298 !$OMP THREADPRIVATE(appel1er)299 302 ! 300 303 ! Fonctions thermodynamiques et fonctions d'instabilite … … 306 309 isommet=klev 307 310 308 IF (appel1er) THEN309 IF (prt_level > 9) THEN310 WRITE(lunout,*)'coefkz, opt_ec:', opt_ec311 WRITE(lunout,*)'coefkz, richum:', richum312 IF (richum) WRITE(lunout,*)'coefkz, ratqs:', ratqs313 WRITE(lunout,*)'coefkz, isommet:', isommet314 WRITE(lunout,*)'coefkz, tvirtu:', tvirtu315 appel1er = .FALSE.316 ENDIF317 ENDIF318 311 ! 319 312 ! Initialiser les sorties … … 496 489 SUBROUTINE coefkz2(nsrf, knon, paprs, pplay,t, & 497 490 pcfm, pcfh) 498 491 !$gpum horizontal knon 499 492 USE yomcst_mod_h 500 USE dimphy 493 USE dimphy, ONLY : klev 501 494 USE indice_sol_mod 502 495 … … 522 515 REAL, DIMENSION(knon, klev+1), INTENT(IN) :: paprs 523 516 REAL, DIMENSION(knon, klev), INTENT(IN) :: pplay 524 REAL, DIMENSION(knon, klev), INTENT(IN) :: t(klon,klev)517 REAL, DIMENSION(knon, klev), INTENT(IN) :: t 525 518 526 519 REAL, DIMENSION(knon, klev), INTENT(OUT) :: pcfm, pcfh -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/coefkzmin.f90
r5868 r5876 1 MODULE coefkzmin_mod 2 3 CONTAINS 1 4 2 5 SUBROUTINE coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, ycdragm, km, kn) 3 6 !$gpum horizontal knon 4 7 USE dimphy, ONLY: klev 5 8 USE yomcst_mod_h … … 131 134 RETURN 132 135 END SUBROUTINE coefkzmin 136 137 END MODULE coefkzmin_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/ecumev6_flux.f90
r5285 r5876 1 MODULE ecumev6_flux_mod 2 3 CONTAINS 1 4 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier 2 5 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence … … 4 7 !SFX_LIC for details. version 1. 5 8 ! ######### 6 SUBROUTINE ECUMEV6_FLUX(PZ0SEA,PTA,PSST,PQA,PQSAT,PVMOD, &9 SUBROUTINE ecumev6_flux(knon, klon, PZ0SEA,PTA,PSST,PQA,PQSAT,PVMOD, & 7 10 PZREF,PSSS,PUREF,PPS,PPA,OPRECIP,OPWEBB, & 8 11 PSFTH,PSFTQ,PUSTAR,PCD,PCDN,PCH,PCE, & 9 12 PRI,PRESA,PRAIN,PZ0HSEA,OPERTFLUX,coeffs ) 13 !$gpum horizontal knon 10 14 !############################################################################### 11 15 !! … … 84 88 ! ------------ 85 89 ! 86 USE dimphy87 90 USE indice_sol_mod 88 91 USE MODD_CSTS, ONLY : XPI, XDAY, XKARMAN, XG, XP00, XSTEFAN, XRD, XRV, & … … 104 107 USE yomcst_mod_h 105 108 USE clesphys_mod_h 109 USE qsat_seawater_mod, ONLY : qsat_seawater 110 USE qsat_seawater2_mod, ONLY : qsat_seawater2 106 111 IMPLICIT NONE 107 112 ! 108 113 ! 0.1. Declarations of arguments 109 114 ! 115 INTEGER, INTENT(IN) :: knon ! horizontal indice (compressed ? ) 116 INTEGER, INTENT(IN) :: klon ! horizontal indice (fake == 1?) 110 117 REAL, DIMENSION(klon), INTENT(IN) :: PVMOD ! module of wind at atm level (m/s) 111 118 REAL, DIMENSION(klon), INTENT(IN) :: PTA ! air temperature at atm level (K) … … 151 158 ! 152 159 ! specif SB 153 INTEGER, DIMENSION( SIZE(PTA)) :: JCV ! convergence index154 INTEGER, DIMENSION( SIZE(PTA)) :: JITER ! nb of iterations to converge160 INTEGER, DIMENSION(klon) :: JCV ! convergence index 161 INTEGER, DIMENSION(klon) :: JITER ! nb of iterations to converge 155 162 !rajout 156 REAL, DIMENSION( SIZE(PTA)) :: PEXNA ! Exner function at atm level157 REAL, DIMENSION( SIZE(PTA)) :: PEXNS ! Exner function at atm level158 ! 159 REAL, DIMENSION( SIZE(PTA)) :: ZTAU ! momentum flux (N/m2)160 REAL, DIMENSION( SIZE(PTA)) :: ZHF ! sensible heat flux (W/m2)161 REAL, DIMENSION( SIZE(PTA)) :: ZEF ! latent heat flux (W/m2)162 REAL, DIMENSION( SIZE(PTA)) :: ZTAUR ! momentum flx due to rain (N/m2)163 REAL, DIMENSION( SIZE(PTA)) :: ZRF ! sensible flx due to rain (W/m2)164 REAL, DIMENSION( SIZE(PTA)) :: ZEFWEBB ! Webb corr. on latent flx (W/m2)165 166 REAL, DIMENSION( SIZE(PTA)) :: ZVMOD ! wind intensity at atm level (m/s)167 REAL, DIMENSION( SIZE(PTA)) :: ZQSATA ! sat.spec.hum. at atm level (kg/kg)168 REAL, DIMENSION( SIZE(PTA)) :: ZLVA ! vap.heat of pure water at atm level (J/kg)169 REAL, DIMENSION( SIZE(PTA)) :: ZLVS ! vap.heat of seawater at sea surface (J/kg)170 REAL, DIMENSION( SIZE(PTA)) :: ZCPA ! specif.heat moist air (J/kg/K)171 REAL, DIMENSION( SIZE(PTA)) :: ZVISA ! kinemat.visc. of dry air (m2/s)172 REAL, DIMENSION( SIZE(PTA)) :: ZDU ! U vert.grad. (real atm)173 REAL, DIMENSION( SIZE(PTA)) :: ZDT,ZDQ ! T,Q vert.grad. (real atm)174 REAL, DIMENSION( SIZE(PTA)) :: ZDDU ! U vert.grad. (real atm + gust)175 REAL, DIMENSION( SIZE(PTA)) :: ZDDT,ZDDQ ! T,Q vert.grad. (real atm + WL/CS)176 REAL, DIMENSION( SIZE(PTA)) :: ZUSR ! velocity scaling param. (m/s)163 REAL, DIMENSION(klon) :: PEXNA ! Exner function at atm level 164 REAL, DIMENSION(klon) :: PEXNS ! Exner function at atm level 165 ! 166 REAL, DIMENSION(klon) :: ZTAU ! momentum flux (N/m2) 167 REAL, DIMENSION(klon) :: ZHF ! sensible heat flux (W/m2) 168 REAL, DIMENSION(klon) :: ZEF ! latent heat flux (W/m2) 169 REAL, DIMENSION(klon) :: ZTAUR ! momentum flx due to rain (N/m2) 170 REAL, DIMENSION(klon) :: ZRF ! sensible flx due to rain (W/m2) 171 REAL, DIMENSION(klon) :: ZEFWEBB ! Webb corr. on latent flx (W/m2) 172 173 REAL, DIMENSION(klon) :: ZVMOD ! wind intensity at atm level (m/s) 174 REAL, DIMENSION(klon) :: ZQSATA ! sat.spec.hum. at atm level (kg/kg) 175 REAL, DIMENSION(klon) :: ZLVA ! vap.heat of pure water at atm level (J/kg) 176 REAL, DIMENSION(klon) :: ZLVS ! vap.heat of seawater at sea surface (J/kg) 177 REAL, DIMENSION(klon) :: ZCPA ! specif.heat moist air (J/kg/K) 178 REAL, DIMENSION(klon) :: ZVISA ! kinemat.visc. of dry air (m2/s) 179 REAL, DIMENSION(klon) :: ZDU ! U vert.grad. (real atm) 180 REAL, DIMENSION(klon) :: ZDT,ZDQ ! T,Q vert.grad. (real atm) 181 REAL, DIMENSION(klon) :: ZDDU ! U vert.grad. (real atm + gust) 182 REAL, DIMENSION(klon) :: ZDDT,ZDDQ ! T,Q vert.grad. (real atm + WL/CS) 183 REAL, DIMENSION(klon) :: ZUSR ! velocity scaling param. (m/s) 177 184 ! =friction velocity 178 REAL, DIMENSION( SIZE(PTA)) :: ZTSR ! temperature scaling param. (K)179 REAL, DIMENSION( SIZE(PTA)) :: ZQSR ! humidity scaling param. (kg/kg)180 REAL, DIMENSION( SIZE(PTA)) :: ZDELTAU10N,ZDELTAT10N,ZDELTAQ10N185 REAL, DIMENSION(klon) :: ZTSR ! temperature scaling param. (K) 186 REAL, DIMENSION(klon) :: ZQSR ! humidity scaling param. (kg/kg) 187 REAL, DIMENSION(klon) :: ZDELTAU10N,ZDELTAT10N,ZDELTAQ10N 181 188 ! U,T,Q vert.grad. (10m, neutral atm) 182 REAL, DIMENSION( SIZE(PTA)) :: ZUSR0,ZTSR0,ZQSR0 ! ITERATIVE PROCESS183 REAL, DIMENSION( SIZE(PTA)) :: ZDUSTO,ZDTSTO,ZDQSTO ! ITERATIVE PROCESS184 REAL, DIMENSION( SIZE(PTA)) :: ZPSIU,ZPSIT! PSI funct for U, T/Q (Z0 comp)185 REAL, DIMENSION( SIZE(PTA)) :: ZCHARN ! Charnock parameter (Z0 comp)186 187 REAL, DIMENSION( SIZE(PTA)) :: ZUSTAR2 ! square of friction velocity188 REAL, DIMENSION( SIZE(PTA)) :: ZAC ! aerodynamical conductance189 REAL, DIMENSION( SIZE(PTA)) :: ZDIRCOSZW ! orography slope cosine189 REAL, DIMENSION(klon) :: ZUSR0,ZTSR0,ZQSR0 ! ITERATIVE PROCESS 190 REAL, DIMENSION(klon) :: ZDUSTO,ZDTSTO,ZDQSTO ! ITERATIVE PROCESS 191 REAL, DIMENSION(klon) :: ZPSIU,ZPSIT! PSI funct for U, T/Q (Z0 comp) 192 REAL, DIMENSION(klon) :: ZCHARN ! Charnock parameter (Z0 comp) 193 194 REAL, DIMENSION(klon) :: ZUSTAR2 ! square of friction velocity 195 REAL, DIMENSION(klon) :: ZAC ! aerodynamical conductance 196 REAL, DIMENSION(klon) :: ZDIRCOSZW ! orography slope cosine 190 197 ! (=1 on water!) 191 REAL, DIMENSION( SIZE(PTA)) :: ZPARUN,ZPARTN,ZPARQN ! neutral parameter for U,T,Q198 REAL, DIMENSION(klon) :: ZPARUN,ZPARTN,ZPARQN ! neutral parameter for U,T,Q 192 199 193 200 !-- rajout pour la pression saturante 194 REAL, DIMENSION( SIZE(PPA)) :: ZFOES ! [OPWEBB]195 REAL, DIMENSION( SIZE(PPA)) :: ZWORK1196 REAL, DIMENSION( SIZE(PPA)) :: ZWORK2197 REAL, DIMENSION( SIZE(PPS)) :: ZWORK1A198 REAL, DIMENSION( SIZE(PPS)) :: ZWORK2A201 REAL, DIMENSION(klon) :: ZFOES ! [OPWEBB] 202 REAL, DIMENSION(klon) :: ZWORK1 203 REAL, DIMENSION(klon) :: ZWORK2 204 REAL, DIMENSION(klon) :: ZWORK1A 205 REAL, DIMENSION(klon) :: ZWORK2A 199 206 !##################### 200 207 … … 202 209 203 210 !--------- Modif Olive ----------------- 204 REAL, DIMENSION( SIZE(PTA)) :: PRHOA211 REAL, DIMENSION(klon) :: PRHOA 205 212 REAL, PARAMETER :: XUNDEF = 1.E+20 206 213 … … 244 251 REAL, DIMENSION(klon) :: PQSATA ! sea surface spec. hum. (kg/kg) 245 252 246 REAL :: qsat_seawater2,qsat_seawater247 248 253 !REAL(KIND=JPRB) :: ZHOOK_HANDLE 249 254 ! … … 366 371 ! 367 372 WHERE(PSSS(:)>0.0.AND.PSSS(:)/=XUNDEF) 368 PQSATA = QSAT_SEAWATER2 ( PSST(:),PPS(:),PSSS(:)) !at sea surface373 PQSATA = QSAT_SEAWATER2 (knon, klon, PSST(:),PPS(:),PSSS(:)) !at sea surface 369 374 ELSEWHERE 370 PQSATA (:) = QSAT_SEAWATER ( PSST(:),PPS(:)) !at sea surface375 PQSATA (:) = QSAT_SEAWATER (knon, klon, PSST(:),PPS(:)) !at sea surface 371 376 ENDWHERE 372 377 … … 403 408 !PQSAT = ZWORK2*ZWORK1 / (1.+(ZWORK2-1.)*ZWORK1) 404 409 !ZQSATA = ZWORK2A*ZWORK1A / (1.+(ZWORK2A-1.)*ZWORK1A) 405 ZQSATA = QSAT_SEAWATER ( PTA(:),PPA(:)) !at sea surface410 ZQSATA = QSAT_SEAWATER (knon, klon, PTA(:),PPA(:)) !at sea surface 406 411 407 412 … … 773 778 ! 774 779 !------------------------------------------------------------------------------- 775 END SUBROUTINE ECUMEV6_FLUX 780 END SUBROUTINE ecumev6_flux 781 782 END MODULE ecumev6_flux_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/lmdz_call_atke.f90
r5268 r5876 14 14 15 15 16 16 !$gpum horizontal ngrid 17 17 USE lmdz_atke_turbulence_ini, ONLY : iflag_num_atke, rg, rd 18 18 USE phys_local_var_mod, ONLY: tke_shear, tke_buoy, tke_trans -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/modd_csts.f90
r5484 r5876 4 4 !SFX_LIC for details. version 1. 5 5 ! ############### 6 MODULE MODD_CSTS6 MODULE modd_csts 7 7 ! ############### 8 8 ! … … 95 95 !$OMP THREADPRIVATE(XSURF_TINY,XSURF_TINY_12,XSURF_EPSILON) 96 96 97 END MODULE MODD_CSTS 98 97 CONTAINS 98 99 100 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier 101 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence 102 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt 103 !SFX_LIC for details. version 1. 104 ! ######### 105 SUBROUTINE ini_csts 106 ! ################## 107 ! 108 !!**** *INI_CSTS * - routine to initialize the module MODD_CST 109 !! 110 !! PURPOSE 111 !! ------- 112 ! The purpose of this routine is to initialize the physical constants 113 ! stored in module MODD_CST. 114 ! 115 ! 116 !!** METHOD 117 !! ------ 118 !! The physical constants are set to their numerical values 119 !! 120 !! 121 !! EXTERNAL 122 !! -------- 123 !! FMLOOK : to retrieve logical unit number associated to a file 124 !! 125 !! IMPLICIT ARGUMENTS 126 !! ------------------ 127 !! Module MODD_CST : contains physical constants 128 !! 129 !! REFERENCE 130 !! --------- 131 !! Book2 of the documentation (module MODD_CST, routine INI_CSTS) 132 !! 133 !! 134 !! AUTHOR 135 !! ------ 136 !! V. Ducrocq * Meteo France * 137 !! 138 !! MODIFICATIONS 139 !! ------------- 140 !! Original 18/05/94 141 !! J. Stein 02/01/95 add the volumic mass of liquid water 142 !! J.-P. Pinty 13/12/95 add the water vapor pressure over solid ice 143 !! J. Stein 29/06/97 add XTH00 144 !! V. Masson 05/10/98 add XRHOLI 145 !! C. Mari 31/10/00 add NDAYSEC 146 !! V. Masson 01/03/03 add XCONDI 147 !! A. Voldoire 01/12/09 add XTTSI, XICEC, XTTS for ESM 148 !! J. Escobar 28/03/2014 for pb with emissivity/aerosol reset XSURF_TINY=1.0e-80 in real8 case 149 !! 150 !------------------------------------------------------------------------------- 151 ! 152 !* 0. DECLARATIONS 153 ! ------------ 154 ! 155 !USE MODD_CSTS 156 ! 157 ! 158 !USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 159 !USE PARKIND1 ,ONLY : JPRB 160 ! 161 !USE MODI_INI_CTURBS 162 ! 163 !USE MODI_INI_OCEAN_CSTS 164 ! 165 !USE MODI_INI_SURF_CSTS 166 ! 167 IMPLICIT NONE 168 ! 169 !------------------------------------------------------------------------------- 170 ! 171 !* 1. FUNDAMENTAL CONSTANTS 172 ! --------------------- 173 ! 174 175 !REAL(KIND=JPRB) :: ZHOOK_HANDLE 176 177 !IF (LHOOK) CALL DR_HOOK('INI_CSTS',0,ZHOOK_HANDLE) 178 179 !#ifdef SFX_MNH 180 !#ifdef MNH_MPI_DOUBLE_PRECISION 181 XSURF_TINY = 1.0e-80 182 !#else 183 !XSURF_TINY = TINY (XSURF_TINY ) 184 !#endif 185 !#else 186 XSURF_TINY = 1.0e-80 187 !#endif 188 XSURF_TINY_12 = SQRT (XSURF_TINY ) 189 XSURF_EPSILON = EPSILON (XSURF_EPSILON ) * 10.0 190 191 XPI = 2.*ASIN(1.) 192 XKARMAN = 0.4 193 XBOLTZ = 1.380658E-23 194 XLIGHTSPEED = 299792458. 195 XPLANCK = 6.6260755E-34 196 XAVOGADRO = 6.0221367E+23 197 ! 198 !------------------------------------------------------------------------------- 199 ! 200 !* 2. ASTRONOMICAL CONSTANTS 201 ! ---------------------- 202 ! 203 XDAY = 86400. 204 XSIYEA = 365.25*XDAY*2.*XPI/ 6.283076 205 XSIDAY = XDAY/(1.+XDAY/XSIYEA) 206 XOMEGA = 2.*XPI/XSIDAY 207 NDAYSEC = 24*3600 ! Number of seconds in a day 208 ! 209 !-------------------------------------------------------------------------------! 210 ! 211 ! 212 !* 3. TERRESTRIAL GEOIDE CONSTANTS 213 ! ---------------------------- 214 ! 215 XRADIUS = 6371229. 216 XG = 9.80665 217 ! 218 !------------------------------------------------------------------------------- 219 ! 220 !* 4. REFERENCE PRESSURE 221 ! ------------------- 222 ! 223 XP00 = 1.E5 224 XTH00 = 300. 225 !------------------------------------------------------------------------------- 226 ! 227 !* 5. RADIATION CONSTANTS 228 ! ------------------- 229 ! 230 !JUAN OVERFLOW XSTEFAN = 2.* XPI**5 * XBOLTZ**4 / (15.* XLIGHTSPEED**2 * XPLANCK**3) 231 XSTEFAN = ( 2.* XPI**5 / 15. ) * ( (XBOLTZ / XPLANCK)* XBOLTZ ) * (XBOLTZ/(XLIGHTSPEED*XPLANCK))**2 232 XI0 = 1370. 233 ! 234 !------------------------------------------------------------------------------- 235 ! 236 !* 6. THERMODYNAMIC CONSTANTS 237 ! ----------------------- 238 ! 239 XMD = 28.9644E-3 240 XMV = 18.0153E-3 241 XRD = XAVOGADRO * XBOLTZ / XMD 242 XRV = XAVOGADRO * XBOLTZ / XMV 243 XCPD = 7.* XRD /2. 244 XCPV = 4.* XRV 245 XRHOLW = 1000. 246 XRHOLI = 917. 247 XCONDI = 2.22 248 XCL = 4.218E+3 249 XCI = 2.106E+3 250 XTT = 273.16 251 XTTSI = XTT - 1.8 252 XICEC = 0.5 253 XTTS = XTT*(1-XICEC) + XTTSI*XICEC 254 XLVTT = 2.5008E+6 255 XLSTT = 2.8345E+6 256 XLMTT = XLSTT - XLVTT 257 XESTT = 611.14 258 XGAMW = (XCL - XCPV) / XRV 259 XBETAW = (XLVTT/XRV) + (XGAMW * XTT) 260 XALPW = LOG(XESTT) + (XBETAW /XTT) + (XGAMW *LOG(XTT)) 261 XGAMI = (XCI - XCPV) / XRV 262 XBETAI = (XLSTT/XRV) + (XGAMI * XTT) 263 XALPI = LOG(XESTT) + (XBETAI /XTT) + (XGAMI *LOG(XTT)) 264 ! 265 !------------------------------------------------------------------------------- 266 ! 267 !* 7. TURBULENCE CONSTANTS 268 ! -------------------- 269 ! 270 ! CALL INI_CTURBS 271 !------------------------------------------------------------------------------- 272 ! 273 !* 8. OCEAN CONSTANTS 274 ! --------------- 275 ! 276 ! CALL INI_OCEAN_CSTS 277 ! 278 !* 9. SURFACE CONSTANTS 279 ! ----------------- 280 ! 281 ! CALL INI_SURF_CSTS 282 !IF (LHOOK) CALL DR_HOOK('INI_CSTS',1,ZHOOK_HANDLE) 283 ! 284 !------------------------------------------------------------------------------- 285 ! 286 287 END SUBROUTINE ini_csts 288 289 290 291 END MODULE modd_csts 292 -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90
r5875 r5876 108 108 USE dimsoil_mod_h, ONLY: nsoilmx 109 109 USE flux_arp_mod_h 110 USE cdrag_mod, ONLY : cdrag_init 110 111 IMPLICIT NONE 111 112 … … 260 261 CALL wx_pbl_init 261 262 !>jyg 263 264 CALL cdrag_init 262 265 263 266 END SUBROUTINE pbl_surface_init … … 1645 1648 USE surf_param_mod, ONLY: eff_surf_param !AM 1646 1649 USE yomcst_mod_h 1647 USE phys_local_var_mod, only: l_mixmin, l_mix 1650 USE phys_local_var_mod, only: l_mixmin, l_mix, wprime 1648 1651 IMPLICIT NONE 1649 1652 … … 2015 2018 runoff(:)=0. ; icesub_lic(:)=0. 2016 2019 l_mixmin(:,:,:)=0. 2017 l_mix(:,:,:)=0. 2020 l_mix(:,:,:) = 0. 2021 wprime(:,:,:) = 0 2018 2022 #ifdef ISO 2019 2023 zxxtevap(:,:)=0. … … 2324 2328 delp, d_t_diss_x, d_t_diss_w, flux_t_x, flux_q_x, flux_t_w, flux_q_w,& 2325 2329 flux_u_x, flux_v_x, flux_u_w, flux_v_w, fluxlat_x, fluxlat_w) 2330 !$gpum horizontal knon 2331 2332 2326 2333 !**************************************************************************************** 2327 2334 ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818 … … 2435 2442 USE lmdz_checksum, ONLY : checksum 2436 2443 USE mod_phys_lmdz_para, ONLY : is_master 2444 USE cdrag_mod, ONLY : cdrag 2445 2437 2446 IMPLICIT NONE 2438 2447 … … 3272 3281 ENDDO 3273 3282 ! 3283 3274 3284 CALL eff_surf_param(knon, nbtersrf, yz0m_tersrf, yfrac_tersrf, 'CDN', yz0m, zgeo1/RG) 3275 3285 CALL eff_surf_param(knon, nbtersrf, yz0h_tersrf, yfrac_tersrf, 'CDN', yz0h, zgeo1/RG) … … 3280 3290 ! 3281 3291 ypblh_tmp(:)=s_pblh(ni(:)) 3292 3282 3293 CALL cdrag(knon, nsrf, & 3283 3294 speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1), ypblh_tmp, & … … 3327 3338 3328 3339 ypblh_tmp(:)=s_pblh_w(ni(:)) 3340 3329 3341 CALL cdrag(knon, nsrf, & 3330 3342 speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),s_pblh_w,& … … 3372 3384 3373 3385 IF (iflag_pbl>=50) THEN 3386 3374 3387 CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm, ycdragh,yus0,yvs0,yts, & 3375 3388 yu, yv,yt,yq,ypplay,ypaprs, & … … 3377 3390 3378 3391 ELSE 3392 3379 3393 3380 3394 CALL coef_diff_turb(dtime, nsrf, knon, ni, & … … 3421 3435 3422 3436 ELSE 3437 3423 3438 3424 3439 CALL coef_diff_turb(dtime, nsrf, knon, ni, & … … 3456 3471 IF (iflag_pbl>=50) THEN 3457 3472 3458 CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm_w(1:knon),ycdragh_w(1:knon),yus0(1:knon),yvs0(1:knon),yts_w(1:knon), & 3459 yu_w(1:knon,:),yv_w(1:knon,:),yt_w(1:knon,:),yq_w(1:knon,:),ypplay(1:knon,:),ypaprs(1:knon,:), & 3460 ytke_w(1:knon,:),yeps_w(1:knon,:),ycoefm_w(1:knon,:),ycoefh_w(1:knon,:)) 3473 3474 CALL call_atke(dtime,knon,klev,nsrf,ni,ycdragm_w,ycdragh_w,yus0,yvs0,yts_w, & 3475 yu_w, yv_w, yt_w, yq_w, ypplay, ypaprs, & 3476 ytke_w, yeps_w, ycoefm_w, ycoefh_w) 3461 3477 3462 3478 ELSE … … 3519 3535 & ) 3520 3536 ELSE !(iflag_split .eq.0) 3537 3521 3538 CALL climb_hq_down(knon, ni, ycoefh_x, ypaprs, ypplay, & 3522 3539 ydelp, yt_x, yq_x, dtime, & … … 3536 3553 ENDIF 3537 3554 3555 3538 3556 CALL climb_hq_down(knon, ni, ycoefh_w, ypaprs, ypplay, & 3539 3557 ydelp, yt_w, yq_w, dtime, & … … 3558 3576 ! - Calculate the coefficients Ccoef_U, Ccoef_V, Dcoef_U and Dcoef_V 3559 3577 IF (iflag_split .eq.0) THEN 3578 3560 3579 CALL climb_wind_down(knon, ni, dtime, ycoefm, ypplay, ypaprs, yt, ydelp, yu, yv, & 3561 3580 CcoefU, CcoefV, DcoefU, DcoefV, & … … 3563 3582 AcoefU, AcoefV, BcoefU, BcoefV) 3564 3583 ELSE ! (iflag_split .eq.0) 3584 3565 3585 CALL climb_wind_down(knon, ni, dtime, ycoefm_x, ypplay, ypaprs, yt_x, ydelp, yu_x, yv_x, & 3566 3586 CcoefU_x, CcoefV_x, DcoefU_x, DcoefV_x, & … … 3584 3604 enddo 3585 3605 enddo 3606 3586 3607 CALL climb_qbs_down(knon, ni, ycoefqbs, ypaprs, ypplay, & 3587 3608 ydelp, yt, yqbs, dtime, & … … 3654 3675 ENDIF ! ( f_z0qh_oce .ne. 1. .and. nsrf .eq.is_oce) 3655 3676 ! 3677 3656 3678 CALL wx_pbl_prelim_0(knon, nsrf, dtime, ypplay, ypaprs, ywake_s, & 3657 3679 yts, y_delta_tsurf, ygustiness, & … … 3669 3691 BcoefQ_x, BcoefQ_w & 3670 3692 ) 3693 3671 3694 CALL wx_pbl0_merge(knon, ypplay, ypaprs, & 3672 3695 ywake_s, ydTs0, ydqs0, & … … 3685 3708 ) 3686 3709 IF (iflag_split .eq. 2 .AND. nsrf .ne. is_oce) THEN 3710 3687 3711 CALL wx_pbl_dts_merge(knon, dtime, ypplay, ypaprs, & 3688 3712 ywake_s, ybeta, ywake_cstar, ywake_dens, & … … 3743 3767 ! Calculate the temperature et relative humidity at 2m and the wind at 10m 3744 3768 IF (iflag_new_t2mq2m==1) THEN 3745 CALL stdlevvarn(knon, knon, is_ter, zxli, & 3769 3770 CALL stdlevvarn(knon, knon, is_ter, zxli, & 3746 3771 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, & 3747 3772 yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), & … … 3749 3774 yn2mout) 3750 3775 ELSE 3776 3751 3777 CALL stdlevvar(knon, knon, is_ter, zxli, & 3752 3778 yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, & … … 3767 3793 3768 3794 CASE(is_ter) 3795 3769 3796 CALL surf_land(itap, dtime, date0, jour, knon, ni,& 3770 3797 rlon, rlat, yrmu0, & … … 3792 3819 3793 3820 IF (ifl_pbltree .ge. 1) THEN 3821 3794 3822 CALL freinage(knon, knon, yu, yv, yt, & 3795 3823 yveget,ylai, yheight,ypaprs,ypplay,y_treedrg, y_d_u_frein,y_d_v_frein) … … 3830 3858 IF (landice_opt .LT. 2) THEN 3831 3859 ! Land ice is treated by LMDZ and not by ORCHIDEE 3860 3832 3861 CALL surf_landice(itap, dtime, knon, ni, & 3833 3862 rlon, rlat, debut, lafin, & … … 3916 3945 ENDDO 3917 3946 3918 DO j = 1, knon 3919 k= minloc(abs(ypphii(j,:)-300),1) 3920 ydthetadz300(j)=ydthetadz(j,k) 3947 !ym minloc does't work on GPU (nvfortran + openacc) 3948 ! DO j = 1, knon 3949 ! k= minloc(abs(ypphii(j,:)-300),1) 3950 ! ydthetadz300(j)=ydthetadz(j,k) 3951 ! ENDDO 3952 3953 ydthetadz300(1:knon) = ydthetadz(1:knon,1) 3954 DO k=2, klev 3955 DO j=1,knon 3956 IF (abs(ypphii(j,k)-300) < ydthetadz300(j)) ydthetadz300(j) = abs(ypphii(j,k)-300) 3957 ENDDO 3921 3958 ENDDO 3959 3922 3960 end if 3923 3961 … … 3942 3980 #endif 3943 3981 & ) 3982 !$gpum nocall 3944 3983 CALL checksum("yalb_dir_new_ocean",yalb_dir_new(1:knon,:)) 3945 3984 IF (prt_level >=10) THEN … … 3967 4006 3968 4007 CASE(is_sic) 4008 3969 4009 CALL surf_seaice( & 3970 4010 rlon, rlat, ysolsw, ysollw, yalb_vis, yfder, & … … 4135 4175 BcoefQ_x, BcoefQ_w & 4136 4176 ) 4177 4137 4178 CALL wx_pbl0_merge(knon, ypplay, ypaprs, & 4138 4179 ywake_s, ydTs0, ydqs0, & … … 4151 4192 ) 4152 4193 IF (iflag_split .eq. 2) THEN 4194 4153 4195 CALL wx_pbl_dts_merge(knon, dtime, ypplay, ypaprs, & 4154 4196 ywake_s, ybeta, ywake_cstar, ywake_dens, & … … 4219 4261 4220 4262 IF (nsrf .ne. is_oce) THEN 4263 4221 4264 CALL wx_pbl_dts_check(knon, dtime, ypplay, ypaprs, ywake_s, ybeta, iflag_split, & 4222 4265 yTs, y_delta_tsurf, & … … 4282 4325 & ) 4283 4326 ELSE !(iflag_split .eq.0) 4327 4284 4328 CALL climb_hq_up(knon, ni, dtime, yt_x, yq_x, & 4285 4329 y_flux_q1_x, y_flux_t1_x, ypaprs, ypplay, & … … 4295 4339 & ) 4296 4340 ! 4341 4297 4342 CALL climb_hq_up(knon, ni, dtime, yt_w, yq_w, & 4298 4343 y_flux_q1_w, y_flux_t1_w, ypaprs, ypplay, & … … 4361 4406 y_d_t_diss(:,:)=0. 4362 4407 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 4408 4363 4409 CALL yamada_c(knon, knon,dtime,ypaprs,ypplay & 4364 4410 & ,yu,yv,yt,y_d_u,y_d_v,y_d_t,ycdragm,ytke,ycoefm,ycoefh,ycoefq,y_d_t_diss,yustar & … … 4367 4413 4368 4414 ELSE !(iflag_split .eq.0) 4415 4369 4416 CALL climb_wind_up(knon, ni, dtime, yu_x, yv_x, y_flux_u1_x, y_flux_v1_x, & 4370 4417 AcoefU_x, AcoefV_x, BcoefU_x, BcoefV_x, & … … 4375 4422 y_d_t_diss_x(:,:)=0. 4376 4423 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 4424 4377 4425 CALL yamada_c(knon, knon,dtime,ypaprs,ypplay & 4378 4426 & ,yu_x,yv_x,yt_x,y_d_u_x,y_d_v_x,y_d_t_x,ycdragm_x,ytke_x,ycoefm_x,ycoefh_x & … … 4389 4437 y_d_t_diss_w(:,:)=0. 4390 4438 IF (iflag_pbl>=20 .and. iflag_pbl<30) THEN 4439 4391 4440 CALL yamada_c(knon, knon,dtime,ypaprs,ypplay & 4392 4441 & ,yu_w,yv_w,yt_w,y_d_u_w,y_d_v_w,y_d_t_w,ycdragm_w,ytke_w,ycoefm_w,ycoefh_w & … … 4403 4452 4404 4453 IF (ok_bs) THEN 4454 4405 4455 CALL climb_qbs_up(knon, ni, dtime, yqbs, & 4406 4456 y_flux_bs, ypaprs, ypplay, & … … 4877 4927 CALL checksum("yq2m_bis", yq2m(1:knon)) 4878 4928 ELSE 4929 4879 4930 CALL stdlevvar(knon, knon, nsrf, zxli, & 4880 4931 uzon, vmer, tair1, qair1, zgeo1, & … … 4884 4935 ELSE !(iflag_split .eq.0) 4885 4936 IF (iflag_new_t2mq2m==1) THEN 4937 4886 4938 CALL stdlevvarn(knon, knon, nsrf, zxli, & 4887 4939 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, & … … 4889 4941 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x, & 4890 4942 yn2mout_x(:, :, :)) 4943 4891 4944 CALL stdlevvarn(knon, knon, nsrf, zxli, & 4892 4945 uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, & … … 4895 4948 yn2mout_w(:, :, :)) 4896 4949 ELSE 4950 4897 4951 CALL stdlevvar(knon, knon, nsrf, zxli, & 4898 4952 uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, & 4899 4953 tairsol_x, qairsol, yz0m, yz0h_oupas, psfce, patm, & 4900 4954 yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x, ypblh_x, rain_f, yzxtsol) 4955 4901 4956 CALL stdlevvar(knon, knon, nsrf, zxli, & 4902 4957 uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, & … … 5010 5065 5011 5066 IF (iflag_split .eq.0) THEN 5067 5012 5068 CALL hbtm(knon, ypaprs, ypplay, & 5013 5069 yt2m,yt10m,yq2m,yq10m,yustar,ywstar, & … … 5029 5085 ENDIF 5030 5086 ELSE ! (iflag_split .eq.0) 5087 5031 5088 CALL HBTM(knon, ypaprs, ypplay, & 5032 5089 yt2m_x,yt10m_x,yq2m_x,yq10m_x,yustar_x,ywstar_x, & … … 5047 5104 print *,' Arg. de HBTM: yq_x ',yq_x(1:knon,:) 5048 5105 ENDIF 5106 5049 5107 CALL HBTM(knon, ypaprs, ypplay, & 5050 5108 yt2m_w,yt10m_w,yq2m_w,yq10m_w,yustar_w,ywstar_w, & -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/qsat_seawater.f90
r5390 r5876 1 MODULE qsat_seawater_mod 2 3 CONTAINS 4 1 5 !------------------------------------------------------------------------------- 2 6 ! 3 7 ! ###################################### 4 REAL FUNCTION QSAT_SEAWATER(PT,PP) 8 FUNCTION QSAT_SEAWATER(knon, klon, PT,PP) 9 !$gpum horizontal knon 10 5 11 ! ###################################### 6 12 ! … … 64 70 ! 65 71 USE MODD_CSTS 66 USE dimphy67 72 USE indice_sol_mod 68 73 ! … … 72 77 ! 73 78 ! 79 INTEGER, INTENT(IN) :: knon ! horizontal indice compressed 80 INTEGER, INTENT(IN) :: klon ! horizontal indice (fake can be 1) 74 81 75 82 REAL, DIMENSION(klon), INTENT(IN) :: PT ! Temperature … … 88 95 ! pressure 89 96 ! (Pascal) 97 REAL :: QSAT_SEAWATER 90 98 ! 91 99 REAL, DIMENSION(SIZE(PT)) :: ZWORK1 … … 118 126 ! 119 127 !------------------------------------------------------------------------------- 128 END MODULE qsat_seawater_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/qsat_seawater2.f90
r5390 r5876 1 !------------------------------------------------------------------------------- 2 ! 3 ! ###################################### 4 REAL FUNCTION QSAT_SEAWATER2(PT,PP,PSSS) 1 MODULE qsat_seawater2_mod 2 3 4 CONTAINS 5 6 REAL FUNCTION QSAT_SEAWATER2(knon, klon, PT,PP,PSSS) 7 !$gpum horizontal knon 8 5 9 ! ###################################### 6 10 ! … … 50 54 ! 51 55 USE MODD_CSTS, ONLY : XRD, XRV 52 USE dimphy53 56 USE indice_sol_mod 54 57 ! … … 58 61 ! 59 62 ! 63 INTEGER, INTENT(IN) :: knon ! horizontal indice compressed 64 INTEGER, INTENT(IN) :: klon ! horizontal indice (fake can be 1) 65 60 66 REAL, DIMENSION(klon), INTENT(IN) :: PT ! Temperature 61 67 ! (Kelvin) … … 103 109 ! 104 110 !------------------------------------------------------------------------------- 111 112 END MODULE qsat_seawater2_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/surf_land_bucket_hetero_mod.F90
r5868 r5876 131 131 REAL, DIMENSION(klon, nbtersrf) :: radsol_tersrf 132 132 REAL, DIMENSION(klon, nbtersrf) :: zri_tersrf 133 REAL, PARAMETER:: klon_1D = 1133 INTEGER, PARAMETER :: klon_1D = 1 134 134 135 135 ! -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/ustarhb.f90
r5268 r5876 1 1 2 2 ! $Header$ 3 MODULE ustarhb_mod 4 5 CONTAINS 3 6 4 7 SUBROUTINE ustarhb(klon, klev, knon, u, v, cd_m, ustar) 8 !$gpum horizontal knon klon 5 9 IMPLICIT NONE 6 10 ! ====================================================================== … … 42 46 RETURN 43 47 END SUBROUTINE ustarhb 48 49 END MODULE ustarhb_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/vdif_kcay.f90
r5268 r5876 1 2 1 ! $Header$ 2 MODULE vdif_kcay_mod 3 4 CONTAINS 3 5 4 6 SUBROUTINE vdif_kcay(klon,klev,ngrid,dt, g, rconst, plev, temp, zlev, zlay, u, v, & 5 7 teta, cd, q2, q2diag, km, kn, ustar, l_mix) 8 9 !$gpum horizontal ngrid klon 6 10 7 11 IMPLICIT NONE … … 673 677 RETURN 674 678 END SUBROUTINE vdif_kcay 679 680 END MODULE vdif_kcay_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/yamada4.f90
r5868 r5876 1 MODULE yamada4_mod 2 3 CONTAINS 1 4 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 5 3 6 SUBROUTINE yamada4(ni, nsrf, ngrid, dt, g, rconst, plev, temp, zlev, zlay, u, v, teta, & 4 7 cd, tke, eps, km, kn, kq, ustar, iflag_pbl, drgpro) 5 8 !$gpum horizontal ngrid 6 9 USE dimphy, only : klev 7 10 USE phys_local_var_mod, only: wprime … … 131 134 REAL :: disseff 132 135 133 REAL,SAVE :: rifc 134 !$OMP THREADPRIVATE(rifc) 135 REAL,SAVE :: seuilsm, seuilalpha 136 !$OMP THREADPRIVATE(seuilsm, seuilalpha) 136 REAL :: rifc 137 REAL :: seuilsm, seuilalpha 137 138 138 139 REAL frif, falpha, fsm … … 690 691 691 692 eps(:,:)=0. 692 wprime(1:ngrid,:,nsrf)=0.693 !ym wprime(1:ngrid,:,nsrf)=0. 693 694 DO k=2,klev 694 695 DO ig=1,ngrid … … 711 712 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 712 713 SUBROUTINE vdif_q2(timestep, gravity, rconst, ngrid, plev, temp, kmy, q2) 713 714 !$gpum horizontal ngrid 714 715 USE dimphy, only : klev 715 716 IMPLICIT NONE … … 800 801 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 801 802 SUBROUTINE vdif_q2e(timestep, gravity, rconst, ngrid, plev, temp, kmy, q2) 802 803 USE dimphy, only : klev ,klon803 !$gpum horizontal ngrid 804 USE dimphy, only : klev 804 805 IMPLICIT NONE 805 806 … … 869 870 870 871 SUBROUTINE mixinglength(ni, nsrf, ngrid,iflag_pbl,pbl_lmixmin_alpha,lmixmin,zlay,zlev,u,v,q2,n2, lmix) 871 872 873 874 USE dimphy, only : klev ,klon872 !$gpum horizontal ngrid 873 874 875 USE dimphy, only : klev 875 876 USE yamada_ini_mod, only : l0 876 877 USE phys_state_var_mod, only: zstd, zsig, zmea … … 882 883 ! zsig: pente moyenne de le maille 883 884 884 USE geometry_mod, only: cell_area885 !USE geometry_mod, only: cell_area 885 886 ! aire_cell: aire de la maille 886 887 … … 966 967 !.......................................................................... 967 968 968 fl(zzz, zl0, zq2, zn2) = max(min(l0(ig)*kap*zlev(ig, & 969 k)/(kap*zlev(ig,k)+l0(ig)),0.5*sqrt(q2(ig,k))/sqrt( & 970 max(n2(ig,k),1.E-10))), 1.E-5) 969 !ym il ya a des gens qui font du code avec leur pieds => n'importe quoi ! 970 !ym fl(zzz, zl0, zq2, zn2) = max(min(l0(ig)*kap*zlev(ig, & 971 !ym k)/(kap*zlev(ig,k)+l0(ig)),0.5*sqrt(q2(ig,k))/sqrt( & 972 !ym max(n2(ig,k),1.E-10))), 1.E-5) 973 974 fl(zzz, zl0, zq2, zn2) = max(min(zl0*kap*zzz/(kap*zzz+zl0),0.5*sqrt(zq2)/sqrt(max(zn2,1.E-10))), 1.E-5) 975 976 971 977 972 978 ! Fonction d'amortissement de la turbulence au dessus de la montagne … … 1122 1128 1123 1129 END SUBROUTINE mixinglength 1130 1131 END MODULE yamada4_mod -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/yamada_c.F90
r5868 r5876 8 8 USE print_control_mod, ONLY: prt_level 9 9 USE ioipsl_getin_p_mod, ONLY : getin_p 10 10 USE yamada4_mod, ONLY : vdif_q2 11 11 USE yomcst_mod_h 12 12 IMPLICIT NONE
Note: See TracChangeset
for help on using the changeset viewer.
