Changeset 5880
- Timestamp:
- Nov 21, 2025, 7:05:56 PM (4 weeks ago)
- Location:
- LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd
- Files:
-
- 2 edited
-
climb_qbs_mod.f90 (modified) (10 diffs)
-
pbl_surface_mod.F90 (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/climb_qbs_mod.f90
r5868 r5880 3 3 ! Module to solve the verctical diffusion of blowing snow; 4 4 ! 5 USE dimphy6 5 7 6 IMPLICIT NONE 8 7 SAVE 9 8 PRIVATE 10 PUBLIC :: climb_qbs_down, climb_qbs_up 9 PUBLIC :: climb_qbs_down, climb_qbs_up, climb_qbs_init, climb_qbs_finalize 11 10 12 11 REAL, DIMENSION(:,:), ALLOCATABLE :: gamaqbs … … 19 18 !$OMP THREADPRIVATE(Kcoefqbs) 20 19 20 LOGICAL, SAVE :: first=.TRUE. 21 !$OMP THREADPRIVATE(first) 22 21 23 CONTAINS 24 SUBROUTINE climb_qbs_init 25 USE dimphy, ONLY : klon, klev 26 IMPLICIT NONE 27 INTEGER :: ierr 28 !**************************************************************************************** 29 ! 1) 30 ! Allocation at first time step only 31 ! 32 !**************************************************************************************** 33 34 IF (first) THEN 35 first=.FALSE. 36 ALLOCATE(Ccoef_QBS(klon,klev), STAT=ierr) 37 IF ( ierr /= 0 ) PRINT*,' pb in allloc Ccoef_QBS, ierr=', ierr 38 Ccoef_QBS(:,:) = 0. 39 40 ALLOCATE(Dcoef_QBS(klon,klev), STAT=ierr) 41 IF ( ierr /= 0 ) PRINT*,' pb in allloc Dcoef_QBS, ierr=', ierr 42 Dcoef_QBS(:,:) = 0. 43 44 ALLOCATE(Acoef_QBS(klon), Bcoef_QBS(klon), STAT=ierr) 45 IF ( ierr /= 0 ) PRINT*,' pb in allloc Acoef_BS and Bcoef_BS, ierr=', ierr 46 Acoef_QBS(:) = 0. ; Bcoef_QBS(:) = 0. 47 48 ALLOCATE(Kcoefqbs(klon,klev), STAT=ierr) 49 IF ( ierr /= 0 ) PRINT*,' pb in allloc Kcoefqbs, ierr=', ierr 50 Kcoefqbs(:,:) = 0. 51 52 ALLOCATE(gamaqbs(1:klon,2:klev), STAT=ierr) 53 IF ( ierr /= 0 ) PRINT*,' pb in allloc gamaqbs, ierr=', ierr 54 gamaqbs(:,:) = 0. 55 56 END IF 57 58 END SUBROUTINE climb_qbs_init 59 60 SUBROUTINE climb_qbs_finalize 61 IMPLICIT NONE 62 INTEGER :: ierr 63 !**************************************************************************************** 64 ! Some deallocations 65 ! 66 !**************************************************************************************** 67 DEALLOCATE(Ccoef_QBS, Dcoef_QBS,stat=ierr) 68 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Ccoef_QBS, Dcoef_QBS, ierr=', ierr 69 DEALLOCATE(Acoef_QBS, Bcoef_QBS,stat=ierr) 70 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Acoef_QBS, Bcoef_QBS, ierr=', ierr 71 DEALLOCATE(gamaqbs,stat=ierr) 72 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate gamaqbs, ierr=', ierr 73 DEALLOCATE(Kcoefqbs,stat=ierr) 74 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Kcoefqbs, ierr=', ierr 75 76 END SUBROUTINE climb_qbs_finalize 77 22 78 ! 23 79 !**************************************************************************************** … … 28 84 Kcoef_qbs_out, gama_qbs_out, & 29 85 Acoef_QBS_out, Bcoef_QBS_out) 86 !$gpum horizontal knon 30 87 31 88 ! This routine calculates recursivly the coefficients C and D … … 34 91 USE yomcst_mod_h 35 92 USE compbl_mod_h 93 USE dimphy, ONLY : klev 36 94 ! Input arguments 37 95 !**************************************************************************************** … … 64 122 REAL :: ygamaqbs(1:knon,2:klev) 65 123 66 LOGICAL, SAVE :: first=.TRUE.67 !$OMP THREADPRIVATE(first)68 124 REAL, DIMENSION(knon) :: psref 69 125 REAL :: delz, pkh 70 126 INTEGER :: k, i, j, ierr 71 !**************************************************************************************** 72 ! 1) 73 ! Allocation at first time step only 74 ! 75 !**************************************************************************************** 76 77 IF (first) THEN 78 first=.FALSE. 79 ALLOCATE(Ccoef_QBS(klon,klev), STAT=ierr) 80 IF ( ierr /= 0 ) PRINT*,' pb in allloc Ccoef_QBS, ierr=', ierr 81 82 ALLOCATE(Dcoef_QBS(klon,klev), STAT=ierr) 83 IF ( ierr /= 0 ) PRINT*,' pb in allloc Dcoef_QBS, ierr=', ierr 84 85 ALLOCATE(Acoef_QBS(klon), Bcoef_QBS(klon), STAT=ierr) 86 IF ( ierr /= 0 ) PRINT*,' pb in allloc Acoef_BS and Bcoef_BS, ierr=', ierr 87 88 ALLOCATE(Kcoefqbs(klon,klev), STAT=ierr) 89 IF ( ierr /= 0 ) PRINT*,' pb in allloc Kcoefqbs, ierr=', ierr 90 91 ALLOCATE(gamaqbs(1:klon,2:klev), STAT=ierr) 92 IF ( ierr /= 0 ) PRINT*,' pb in allloc gamaqbs, ierr=', ierr 93 94 END IF 127 95 128 96 129 !**************************************************************************************** … … 195 228 ! 196 229 SUBROUTINE calc_coef_qbs(knon, Kcoef, gama, delp, X, Ccoef, Dcoef, Acoef, Bcoef) 230 !$gpum horizontal knon 197 231 ! 198 232 ! Calculate the coefficients C and D in : X(k) = C(k) + D(k)*X(k-1) 199 233 ! where X is QQBS, and k the vertical level k=1,klev 200 234 USE yomcst_mod_h 235 USE dimphy, ONLY : klev 236 201 237 ! Input arguments 202 238 !**************************************************************************************** … … 266 302 Kcoef_qbs_in, gama_qbs_in, & 267 303 flux_qbs, d_qbs) 304 !$gpum horizontal knon 268 305 ! 269 306 ! This routine calculates the flux and tendency of the specific content of blowing snow qbs … … 274 311 USE yomcst_mod_h 275 312 USE compbl_mod_h 313 USE dimphy, ONLY : klev 314 276 315 ! Input arguments 277 316 !**************************************************************************************** … … 302 341 REAL :: ygamaqbs(1:knon,2:klev) 303 342 304 LOGICAL, SAVE :: last=.FALSE.305 !$OMP THREADPRIVATE(last)306 343 REAL, DIMENSION(knon,klev) :: qbs_new 307 344 REAL, DIMENSION(knon) :: psref … … 407 444 ENDDO 408 445 ENDDO 409 !**************************************************************************************** 410 ! Some deallocations 411 ! 412 !**************************************************************************************** 413 IF (last) THEN 414 DEALLOCATE(Ccoef_QBS, Dcoef_QBS,stat=ierr) 415 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Ccoef_QBS, Dcoef_QBS, ierr=', ierr 416 DEALLOCATE(Acoef_QBS, Bcoef_QBS,stat=ierr) 417 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Acoef_QBS, Bcoef_QBS, ierr=', ierr 418 DEALLOCATE(gamaqbs,stat=ierr) 419 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate gamaqbs, ierr=', ierr 420 DEALLOCATE(Kcoefqbs,stat=ierr) 421 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Kcoefqbs, ierr=', ierr 422 END IF 446 423 447 END SUBROUTINE climb_qbs_up 424 448 ! -
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/pbl_surface_mod.F90
r5879 r5880 111 111 USE climb_hq_mod, ONLY : climb_hq_init 112 112 USE climb_wind_mod, ONLY : climb_wind_init 113 USE climb_qbs_mod, ONLY : climb_qbs_init 114 113 115 IMPLICIT NONE 114 116 … … 267 269 CALL climb_hq_init 268 270 CALL climb_wind_init 271 CALL climb_qbs_init 269 272 270 273 END SUBROUTINE pbl_surface_init
Note: See TracChangeset
for help on using the changeset viewer.
