Changeset 2499 for LMDZ5/trunk/libf/phylmd
- Timestamp:
- Apr 24, 2016, 12:38:19 PM (9 years ago)
- Location:
- LMDZ5/trunk/libf/phylmd
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/phyetat0.F90
r2497 r2499 12 12 qsol, fevap, z0m, z0h, agesno, & 13 13 du_gwd_rando, du_gwd_front, entr_therm, f0, fm_therm, & 14 falb_dir, falb_dif, &14 falb_dir, falb_dif, prw_ancien, prlw_ancien, prsw_ancien, & 15 15 ftsol, pbl_tke, pctsrf, q_ancien, ql_ancien, qs_ancien, radpas, radsol, rain_fall, ratqs, & 16 16 rnebcon, rugoro, sig1, snow_fall, solaire_etat0, sollw, sollwdown, & 17 17 solsw, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, & 18 18 wake_deltat, wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, & 19 wake_s, zgam, & 20 zmax0, zmea, zpic, zsig, & 19 wake_s, zgam, zmax0, zmea, zpic, zsig, & 21 20 zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl 22 21 USE geometry_mod, ONLY : longitude_deg, latitude_deg … … 322 321 323 322 ancien_ok=.true. 324 ql_ancien=0.;qs_ancien=0.325 323 ancien_ok=ancien_ok.AND.phyetat0_get(klev,t_ancien,"TANCIEN","TANCIEN",0.) 326 324 ancien_ok=ancien_ok.AND.phyetat0_get(klev,q_ancien,"QANCIEN","QANCIEN",0.) … … 329 327 ancien_ok=ancien_ok.AND.phyetat0_get(klev,u_ancien,"UANCIEN","UANCIEN",0.) 330 328 ancien_ok=ancien_ok.AND.phyetat0_get(klev,v_ancien,"VANCIEN","VANCIEN",0.) 329 ancien_ok=ancien_ok.AND.phyetat0_get(1,prw_ancien,"PRWANCIEN","PRWANCIEN",0.) 330 ancien_ok=ancien_ok.AND.phyetat0_get(1,prlw_ancien,"PRLWANCIEN","PRLWANCIEN",0.) 331 ancien_ok=ancien_ok.AND.phyetat0_get(1,prsw_ancien,"PRSWANCIEN","PRSWANCIEN",0.) 331 332 332 333 ! Ehouarn: addtional tests to check if t_ancien, q_ancien contain 333 334 ! dummy values (as is the case when generated by ce0l, 334 335 ! or by iniaqua) 335 if ( (maxval(q_ancien).eq.minval(q_ancien)) .or. & 336 if ( (maxval(q_ancien).eq.minval(q_ancien)) .or. & 337 (maxval(ql_ancien).eq.minval(ql_ancien)) .or. & 338 (maxval(qs_ancien).eq.minval(qs_ancien)) .or. & 339 (maxval(prw_ancien).eq.minval(prw_ancien)) .or. & 340 (maxval(prlw_ancien).eq.minval(prlw_ancien)) .or. & 341 (maxval(prsw_ancien).eq.minval(prsw_ancien)) .or. & 336 342 (maxval(t_ancien).eq.minval(t_ancien)) ) then 337 343 ancien_ok=.false. -
LMDZ5/trunk/libf/phylmd/phyredem.F90
r2497 r2499 9 9 USE fonte_neige_mod, ONLY : fonte_neige_final 10 10 USE pbl_surface_mod, ONLY : pbl_surface_final 11 USE phys_state_var_mod, ONLY: radpas, zmasq, pctsrf, ftsol, falb_dir, &11 USE phys_state_var_mod, ONLY: radpas, zmasq, pctsrf, ftsol, falb_dir, & 12 12 falb_dif, qsol, fevap, radsol, solsw, sollw, & 13 sollwdown, rain_fall, snow_fall, z0m, z0h, & 14 agesno, zmea, zstd, zsig, zgam, zthe, zpic, & 15 zval, rugoro, t_ancien, q_ancien, ql_ancien, qs_ancien, u_ancien, & 16 v_ancien, clwcon, rnebcon, ratqs, pbl_tke, & 17 wake_delta_pbl_tke, zmax0, f0, sig1, w01, & 18 wake_deltat, wake_deltaq, wake_s, wake_cstar, & 19 wake_pe, wake_fip, fm_therm, entr_therm, & 20 detr_therm, Ale_bl, Ale_bl_trig, Alp_bl, & 13 sollwdown, rain_fall, snow_fall, z0m, z0h, & 14 agesno, zmea, zstd, zsig, zgam, zthe, zpic, & 15 zval, rugoro, t_ancien, q_ancien, & 16 prw_ancien, prlw_ancien, prsw_ancien, & 17 ql_ancien, qs_ancien, u_ancien, & 18 v_ancien, clwcon, rnebcon, ratqs, pbl_tke, & 19 wake_delta_pbl_tke, zmax0, f0, sig1, w01, & 20 wake_deltat, wake_deltaq, wake_s, wake_cstar,& 21 wake_pe, wake_fip, fm_therm, entr_therm, & 22 detr_therm, Ale_bl, Ale_bl_trig, Alp_bl, & 21 23 du_gwd_rando, du_gwd_front 22 24 USE geometry_mod, ONLY : longitude_deg, latitude_deg … … 205 207 CALL put_field("QSANCIEN", "QSANCIEN", qs_ancien) 206 208 207 CALL put_field("UANCIEN", "", u_ancien) 208 209 CALL put_field("VANCIEN", "", v_ancien) 209 CALL put_field("PRWANCIEN", "PRWANCIEN", prw_ancien) 210 211 CALL put_field("PRLWANCIEN", "PRLWANCIEN", prlw_ancien) 212 213 CALL put_field("PRSWANCIEN", "PRSWANCIEN", prsw_ancien) 214 215 CALL put_field("UANCIEN", "UANCIEN", u_ancien) 216 217 CALL put_field("VANCIEN", "VANCIEN", v_ancien) 210 218 211 219 CALL put_field("CLWCON", "Eau liquide convective", clwcon) -
LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90
r2496 r2499 23 23 REAL, SAVE, ALLOCATABLE :: d_ql_dyn(:,:), d_qs_dyn(:,:) 24 24 !$OMP THREADPRIVATE(d_ql_dyn, d_qs_dyn) 25 REAL, SAVE, ALLOCATABLE :: d_q_dyn2d(:), d_ql_dyn2d(:), d_qs_dyn2d(:) 26 !$OMP THREADPRIVATE(d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d) 25 27 REAL, SAVE, ALLOCATABLE :: d_u_dyn(:,:), d_v_dyn(:,:) 26 28 !$OMP THREADPRIVATE(d_u_dyn, d_v_dyn) … … 404 406 allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev)) 405 407 allocate(d_ql_dyn(klon,klev),d_qs_dyn(klon,klev)) 408 allocate(d_q_dyn2d(klon),d_ql_dyn2d(klon),d_qs_dyn2d(klon)) 406 409 allocate(d_u_dyn(klon,klev),d_v_dyn(klon,klev)) 407 410 allocate(d_tr_dyn(klon,klev,nbtr)) !RomP … … 619 622 deallocate(d_t_dyn,d_q_dyn) 620 623 deallocate(d_ql_dyn,d_qs_dyn) 624 deallocate(d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d) 621 625 deallocate(d_u_dyn,d_v_dyn) 622 626 deallocate(d_tr_dyn) !RomP -
LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90
r2496 r2499 233 233 lcc, lcc3d, lcc3dcon, lcc3dstra, reffclwtop, & 234 234 ec550aer, flwc, fiwc, t_seri, theta, q_seri, & 235 !jyg<236 !! ql_seri, zphi, u_seri, v_seri, omega, cldfra, &237 235 ql_seri, tr_seri, & 238 236 zphi, u_seri, v_seri, omega, cldfra, & 239 !>jyg 240 rneb, rnebjn, zx_rh, d_t_dyn, d_q_dyn,&241 d_q l_dyn, d_qs_dyn, &237 rneb, rnebjn, zx_rh, d_t_dyn, & 238 d_q_dyn, d_ql_dyn, d_qs_dyn, & 239 d_q_dyn2d, d_ql_dyn2d, d_qs_dyn2d, & 242 240 d_u_dyn, d_v_dyn, d_t_con, d_t_ajsb, d_t_ajs, & 243 241 d_u_ajs, d_v_ajs, & … … 1127 1125 1128 1126 CALL histwrite_phy(o_dqdyn, d_q_dyn) 1129 CALL water_int(klon,klev,d_q_dyn,zmasse,zx_tmp_fi2d) 1130 CALL histwrite_phy(o_dqdyn2d, zx_tmp_fi2d)1127 1128 CALL histwrite_phy(o_dqdyn2d,d_q_dyn2d) 1131 1129 1132 1130 CALL histwrite_phy(o_dqldyn, d_ql_dyn) 1133 CALL water_int(klon,klev,d_ql_dyn,zmasse,zx_tmp_fi2d) 1134 CALL histwrite_phy(o_dqldyn2d, zx_tmp_fi2d)1131 1132 CALL histwrite_phy(o_dqldyn2d, d_ql_dyn2d) 1135 1133 1136 1134 CALL histwrite_phy(o_dqsdyn, d_qs_dyn) 1137 CALL water_int(klon,klev,d_qs_dyn,zmasse,zx_tmp_fi2d) 1138 CALL histwrite_phy(o_dqsdyn2d, zx_tmp_fi2d)1135 1136 CALL histwrite_phy(o_dqsdyn2d, d_qs_dyn2d) 1139 1137 1140 1138 CALL histwrite_phy(o_dudyn, d_u_dyn) -
LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90
r2497 r2499 66 66 REAL, ALLOCATABLE, SAVE :: ql_ancien(:,:), qs_ancien(:,:) 67 67 !$OMP THREADPRIVATE(ql_ancien, qs_ancien) 68 REAL, ALLOCATABLE, SAVE :: prw_ancien(:), prlw_ancien(:), prsw_ancien(:) 69 !$OMP THREADPRIVATE(prw_ancien, prlw_ancien, prsw_ancien) 68 70 REAL, ALLOCATABLE, SAVE :: u_ancien(:,:), v_ancien(:,:) 69 71 !$OMP THREADPRIVATE(u_ancien, v_ancien) … … 444 446 ALLOCATE(t_ancien(klon,klev), q_ancien(klon,klev)) 445 447 ALLOCATE(ql_ancien(klon,klev), qs_ancien(klon,klev)) 448 ALLOCATE(prw_ancien(klon), prlw_ancien(klon), prsw_ancien(klon)) 446 449 ALLOCATE(u_ancien(klon,klev), v_ancien(klon,klev)) 447 450 !!! Rom P >>> … … 605 608 deallocate(rugoro, t_ancien, q_ancien, clwcon, rnebcon) 606 609 deallocate(qs_ancien, ql_ancien) 610 deallocate(prw_ancien, prlw_ancien, prsw_ancien) 607 611 deallocate(qtc_cv,sigt_cv) 608 deallocate( u_ancien, v_ancien)609 deallocate( 612 deallocate(u_ancien, v_ancien) 613 deallocate(tr_ancien) !RomP 610 614 deallocate(ratqs, pbl_tke,coefh,coefm) 611 615 !nrlmd< -
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2496 r2499 1043 1043 forall (k=1: nbp_lev) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg 1044 1044 1045 1046 1047 1045 modname = 'physiq' 1048 1046 !IM … … 1599 1597 !--store initial water burden 1600 1598 qql1(:)=0.0 1601 DO i = 1, klon 1602 DO k = 1, klev 1603 qql1(i)=qql1(i)+(q_seri(i,k)+ql_seri(i,k))*zmasse(i,k) 1604 ENDDO 1599 DO k = 1, klev 1600 qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k))*zmasse(:,k) 1605 1601 ENDDO 1606 1602 ENDIF … … 1656 1652 ! 1657 1653 IF (ancien_ok) THEN 1658 DO k = 1, klev 1659 DO i = 1, klon 1660 d_u_dyn(i,k) = (u_seri(i,k)-u_ancien(i,k))/dtime 1661 d_v_dyn(i,k) = (v_seri(i,k)-v_ancien(i,k))/dtime 1662 d_t_dyn(i,k) = (t_seri(i,k)-t_ancien(i,k))/dtime 1663 d_q_dyn(i,k) = (q_seri(i,k)-q_ancien(i,k))/dtime 1664 d_ql_dyn(i,k) = (ql_seri(i,k)-ql_ancien(i,k))/dtime 1665 d_qs_dyn(i,k) = (qs_seri(i,k)-qs_ancien(i,k))/dtime 1666 ENDDO 1667 ENDDO 1654 ! 1655 d_u_dyn(:,:) = (u_seri(:,:)-u_ancien(:,:))/dtime 1656 d_v_dyn(:,:) = (v_seri(:,:)-v_ancien(:,:))/dtime 1657 d_t_dyn(:,:) = (t_seri(:,:)-t_ancien(:,:))/dtime 1658 d_q_dyn(:,:) = (q_seri(:,:)-q_ancien(:,:))/dtime 1659 d_ql_dyn(:,:) = (ql_seri(:,:)-ql_ancien(:,:))/dtime 1660 d_qs_dyn(:,:) = (qs_seri(:,:)-qs_ancien(:,:))/dtime 1661 CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d) 1662 d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/dtime 1663 CALL water_int(klon,klev,ql_seri,zmasse,zx_tmp_fi2d) 1664 d_ql_dyn2d(:)=(zx_tmp_fi2d(:)-prlw_ancien(:))/dtime 1665 CALL water_int(klon,klev,qs_seri,zmasse,zx_tmp_fi2d) 1666 d_qs_dyn2d(:)=(zx_tmp_fi2d(:)-prsw_ancien(:))/dtime 1668 1667 ! !! RomP >>> td dyn traceur 1669 !! IF (nqtot.GE.3) THEN ! jyg 1670 !! DO iq = 3, nqtot ! jyg 1671 IF (nqtot.GE.nqo+1) THEN ! jyg 1668 IF (nqtot.GT.nqo) THEN ! jyg 1672 1669 DO iq = nqo+1, nqtot ! jyg 1673 DO k = 1, klev 1674 DO i = 1, klon 1675 !! d_tr_dyn(i,k,iq-2)= & ! jyg 1676 !! (tr_seri(i,k,iq-2)-tr_ancien(i,k,iq-2))/dtime ! jyg 1677 d_tr_dyn(i,k,iq-nqo)= & ! jyg 1678 (tr_seri(i,k,iq-nqo)-tr_ancien(i,k,iq-nqo))/dtime ! jyg 1679 ! iiq=niadv(iq) 1680 ! print*,i,k," d_tr_dyn",d_tr_dyn(i,k,iq-nqo),"tra:",iq,& 1681 ! tname(iiq) 1682 ENDDO 1683 ENDDO 1670 d_tr_dyn(:,:,iq-nqo)=(tr_seri(:,:,iq-nqo)-tr_ancien(:,:,iq-nqo))/dtime ! jyg 1684 1671 ENDDO 1685 1672 ENDIF 1686 1673 ! !! RomP <<< 1687 1674 ELSE 1688 DO k = 1, klev 1689 DO i = 1, klon 1690 d_u_dyn(i,k) = 0.0 1691 d_v_dyn(i,k) = 0.0 1692 d_t_dyn(i,k) = 0.0 1693 d_q_dyn(i,k) = 0.0 1694 d_ql_dyn(i,k) = 0.0 1695 d_qs_dyn(i,k) = 0.0 1696 ENDDO 1697 ENDDO 1675 d_u_dyn(:,:) = 0.0 1676 d_v_dyn(:,:) = 0.0 1677 d_t_dyn(:,:) = 0.0 1678 d_q_dyn(:,:) = 0.0 1679 d_ql_dyn(:,:) = 0.0 1680 d_qs_dyn(:,:) = 0.0 1681 d_q_dyn2d(:) = 0.0 1682 d_ql_dyn2d(:) = 0.0 1683 d_qs_dyn2d(:) = 0.0 1698 1684 ! !! RomP >>> td dyn traceur 1699 !! IF (nqtot.GE.3) THEN ! jyg 1700 !! DO iq = 3, nqtot ! jyg 1701 IF (nqtot.GE.nqo+1) THEN ! jyg 1702 DO iq = nqo+1, nqtot ! jyg 1703 DO k = 1, klev 1704 DO i = 1, klon 1705 !! d_tr_dyn(i,k,iq-2)= 0.0 ! jyg 1706 d_tr_dyn(i,k,iq-nqo)= 0.0 ! jyg 1707 ENDDO 1708 ENDDO 1685 IF (nqtot.GT.nqo) THEN ! jyg 1686 DO iq = nqo+1, nqtot ! jyg 1687 d_tr_dyn(:,:,iq-nqo)= 0.0 ! jyg 1709 1688 ENDDO 1710 1689 ENDIF … … 4306 4285 ! prlw = colonne eau liquide 4307 4286 ! prlw = colonne eau solide 4308 DO i = 1, klon 4309 prw(i) = 0. 4310 prlw(i) = 0. 4311 prsw(i) = 0. 4312 DO k = 1, klev 4313 prw(i) = prw(i) + & 4314 q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG 4315 prlw(i) = prlw(i) + & 4316 ql_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG 4317 prsw(i) = prsw(i) + & 4318 qs_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG 4319 ENDDO 4287 prw(:) = 0. 4288 prlw(:) = 0. 4289 prsw(:) = 0. 4290 DO k = 1, klev 4291 prw(:) = prw(:) + q_seri(:,k)*zmasse(:,k) 4292 prlw(:) = prlw(:) + ql_seri(:,k)*zmasse(:,k) 4293 prsw(:) = prsw(:) + qs_seri(:,k)*zmasse(:,k) 4320 4294 ENDDO 4321 4295 ! … … 4395 4369 IF (mass_fixer) THEN 4396 4370 qql2(:)=0.0 4397 DO i = 1, klon 4398 DO k = 1, klev 4399 qql2(i)=qql2(i)+(q_seri(i,k)+ql_seri(i,k))*zmasse(i,k) 4400 ENDDO 4371 DO k = 1, klev 4372 qql2(:)=qql2(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k))*zmasse(:,k) 4401 4373 ENDDO 4402 4374 DO i = 1, klon … … 4413 4385 ! Sauvegarder les valeurs de t et q a la fin de la physique: 4414 4386 ! 4415 DO k = 1, klev 4416 DO i = 1, klon 4417 u_ancien(i,k) = u_seri(i,k) 4418 v_ancien(i,k) = v_seri(i,k) 4419 t_ancien(i,k) = t_seri(i,k) 4420 q_ancien(i,k) = q_seri(i,k) 4421 ql_ancien(i,k) = ql_seri(i,k) 4422 qs_ancien(i,k) = qs_seri(i,k) 4423 ENDDO 4424 ENDDO 4425 4387 u_ancien(:,:) = u_seri(:,:) 4388 v_ancien(:,:) = v_seri(:,:) 4389 t_ancien(:,:) = t_seri(:,:) 4390 q_ancien(:,:) = q_seri(:,:) 4391 ql_ancien(:,:) = ql_seri(:,:) 4392 qs_ancien(:,:) = qs_seri(:,:) 4393 CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien) 4394 CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien) 4395 CALL water_int(klon,klev,qs_ancien,zmasse,prsw_ancien) 4426 4396 ! !! RomP >>> 4427 4397 !CR: nb de traceurs eau: nqo 4428 ! IF (nqtot.GE.3) THEN 4429 IF (nqtot.GE.(nqo+1)) THEN 4430 ! DO iq = 3, nqtot 4398 IF (nqtot.GT.nqo) THEN 4431 4399 DO iq = nqo+1, nqtot 4432 DO k = 1, klev 4433 DO i = 1, klon 4434 ! tr_ancien(i,k,iq-2) = tr_seri(i,k,iq-2) 4435 tr_ancien(i,k,iq-nqo) = tr_seri(i,k,iq-nqo) 4436 ENDDO 4437 ENDDO 4400 tr_ancien(:,:,iq-nqo) = tr_seri(:,:,iq-nqo) 4438 4401 ENDDO 4439 4402 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.