Changeset 2799 for LMDZ5/trunk/libf/phylmd/climb_hq_mod.F90
- Timestamp:
- Feb 24, 2017, 7:50:33 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/climb_hq_mod.F90
r2159 r2799 9 9 SAVE 10 10 PRIVATE 11 PUBLIC :: climb_hq_down, climb_hq_up 11 PUBLIC :: climb_hq_down, climb_hq_up, d_h_col_vdf, f_h_bnd 12 12 13 13 REAL, DIMENSION(:,:), ALLOCATABLE :: gamaq, gamah … … 23 23 REAL, DIMENSION(:,:), ALLOCATABLE :: Kcoefhq 24 24 !$OMP THREADPRIVATE(Kcoefhq) 25 REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: h_old ! for diagnostics, h before solving diffusion 26 !$OMP THREADPRIVATE(h_old) 27 REAL, SAVE, DIMENSION(:), ALLOCATABLE :: d_h_col_vdf ! for diagnostics, vertical integral of enthalpy change 28 !$OMP THREADPRIVATE(d_h_col_vdf) 29 REAL, SAVE, DIMENSION(:), ALLOCATABLE :: f_h_bnd ! for diagnostics, enthalpy flux at surface 30 !$OMP THREADPRIVATE(d_h_bnd) 25 31 26 32 CONTAINS … … 71 77 LOGICAL, SAVE :: first=.TRUE. 72 78 !$OMP THREADPRIVATE(first) 73 REAL, DIMENSION(klon,klev) :: local_H 79 ! JLD now renamed h_old and declared in module 80 ! REAL, DIMENSION(klon,klev) :: local_H 74 81 REAL, DIMENSION(klon) :: psref 75 82 REAL :: delz, pkh 76 83 INTEGER :: k, i, ierr 77 78 84 ! Include 79 85 !**************************************************************************************** … … 113 119 ALLOCATE(gamah(1:klon,2:klev), STAT=ierr) 114 120 IF ( ierr /= 0 ) PRINT*,' pb in allloc gamah, ierr=', ierr 121 122 ALLOCATE(h_old(klon,klev), STAT=ierr) 123 IF ( ierr /= 0 ) PRINT*,' pb in allloc h_old, ierr=', ierr 124 125 ALLOCATE(d_h_col_vdf(klon), STAT=ierr) 126 IF ( ierr /= 0 ) PRINT*,' pb in allloc d_h_col_vdf, ierr=', ierr 127 128 ALLOCATE(f_h_bnd(klon), STAT=ierr) 129 IF ( ierr /= 0 ) PRINT*,' pb in allloc f_h_bnd, ierr=', ierr 115 130 END IF 116 131 … … 177 192 ! 178 193 !**************************************************************************************** 179 local_H(:,:) = 0.0194 h_old(:,:) = 0.0 180 195 181 196 DO k=1,klev 182 197 DO i = 1, knon 183 198 ! convertie la temperature en entalpie potentielle 184 local_H(i,k) = RCPD * temp(i,k) * &199 h_old(i,k) = RCPD * temp(i,k) * & 185 200 (psref(i)/pplay(i,k))**RKAPPA 186 201 ENDDO 187 202 ENDDO 188 203 189 CALL calc_coef(knon, Kcoefhq(:,:), gamah(:,:), delp(:,:), local_H(:,:), &204 CALL calc_coef(knon, Kcoefhq(:,:), gamah(:,:), delp(:,:), h_old(:,:), & 190 205 Ccoef_H(:,:), Dcoef_H(:,:), Acoef_H, Bcoef_H) 191 206 … … 349 364 ! 1) 350 365 ! Definition of some variables 366 REAL, DIMENSION(klon,klev) :: d_h, zairm 351 367 ! 352 368 !**************************************************************************************** … … 355 371 d_q(:,:) = 0.0 356 372 d_t(:,:) = 0.0 373 d_h(:,:) = 0.0 374 f_h_bnd(:)= 0.0 357 375 358 376 psref(1:knon) = paprs(1:knon,1) … … 393 411 q_new(1:knon,1) = Acoef_Q(1:knon) + Bcoef_Q(1:knon)*flx_q1(1:knon)*dtime 394 412 h_new(1:knon,1) = Acoef_H(1:knon) + Bcoef_H(1:knon)*flx_h1(1:knon)*dtime 395 413 f_h_bnd(1:knon) = flx_h1(1:knon) 396 414 !- All the other layers 397 415 DO k = 2, klev … … 427 445 ! 428 446 !**************************************************************************************** 429 447 d_h_col_vdf(:) = 0.0 430 448 DO k = 1, klev 431 449 DO i = 1, knon 432 450 d_t(i,k) = h_new(i,k)/(psref(i)/pplay(i,k))**RKAPPA/RCPD - t_old(i,k) 433 451 d_q(i,k) = q_new(i,k) - q_old(i,k) 434 END DO 452 d_h(i,k) = h_new(i,k) - h_old(i,k) 453 !JLD d_t(i,k) = d_h(i,k)/(psref(i)/pplay(i,k))**RKAPPA/RCPD !correction a venir 454 ! layer air mass 455 zairm(i, k) = (paprs(i,k)-paprs(i,k+1))/rg 456 d_h_col_vdf(i) = d_h_col_vdf(i) + d_h(i,k)*zairm(i,k) 457 END DO 435 458 END DO 436 459 … … 448 471 DEALLOCATE(Kcoefhq,stat=ierr) 449 472 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate Kcoefhq, ierr=', ierr 473 DEALLOCATE(h_old, d_h_col_vdf, f_h_bnd, stat=ierr) 474 IF ( ierr /= 0 ) PRINT*,' pb in dealllocate h_old, d_h_col_vdf, f_h_bnd, ierr=', ierr 450 475 END IF 451 476 END SUBROUTINE climb_hq_up
Note: See TracChangeset
for help on using the changeset viewer.