Changeset 4887
- Timestamp:
- Apr 2, 2024, 1:14:33 PM (8 months ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/DefLists/field_def_lmdz.xml
r4846 r4887 311 311 <field id="prsw" long_name="Precipitable solid water" unit="kg/m2" /> 312 312 <field id="prbsw" long_name="Precipitable blowing snow" unit="kg/m2" /> 313 <field id="water_budget" long_name="Residual non-conservation water budget from physics" unit="kg/m2" /> 313 314 <field id="s_pblh" long_name="Boundary Layer Height" unit="m" /> 314 315 <field id="s_pblt" long_name="t at Boundary Layer Height" unit="K" /> -
LMDZ6/trunk/DefLists/field_def_lmdz_cospv2.xml
r3625 r4887 265 265 <field id="prlw" long_name="Precipitable liquid water" unit="kg/m2" /> 266 266 <field id="prsw" long_name="Precipitable solid water" unit="kg/m2" /> 267 <field id="water_budget" long_name="Residual non-conservation water budget from physics" unit="kg/m2" /> 267 268 <field id="s_pblh" long_name="Boundary Layer Height" unit="m" /> 268 269 <field id="s_pblt" long_name="t at Boundary Layer Height" unit="K" /> -
LMDZ6/trunk/DefLists/file_def_histmth_lmdz.xml
r4846 r4887 254 254 <field field_ref="prlw" level="1" /> 255 255 <field field_ref="prsw" level="1" /> 256 <field field_ref="water_budget" level="1" /> 256 257 <field field_ref="s_pblh" level="1" /> 257 258 <field field_ref="s_pblt" level="1" /> -
LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90
r4881 r4887 319 319 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt 320 320 !$OMP THREADPRIVATE(JrNt) 321 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw 322 !$OMP THREADPRIVATE(dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw )321 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget 322 !$OMP THREADPRIVATE(dthmin, evap, snowerosion, fder, plcl, plfc, prw, prlw, prsw, prbsw, water_budget) 323 323 REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m 324 324 !$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m) … … 829 829 ALLOCATE(JrNt(klon)) 830 830 ALLOCATE(dthmin(klon), evap(klon), snowerosion(klon), fder(klon), plcl(klon), plfc(klon)) 831 ALLOCATE(prw(klon), prlw(klon), prsw(klon), prbsw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))831 ALLOCATE(prw(klon), prlw(klon), prsw(klon), prbsw(klon), water_budget(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon)) 832 832 ALLOCATE(s_lcl(klon)) 833 833 ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon)) … … 1163 1163 DEALLOCATE(JrNt) 1164 1164 DEALLOCATE(dthmin, evap, snowerosion, fder, plcl, plfc) 1165 DEALLOCATE(prw, prlw, prsw, prbsw, zustar, zu10m, zv10m, rh2m, s_lcl)1165 DEALLOCATE(prw, prlw, prsw, prbsw, water_budget, zustar, zu10m, zv10m, rh2m, s_lcl) 1166 1166 DEALLOCATE(s_pblh, s_pblt, s_therm) 1167 1167 ! -
LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90
r4843 r4887 833 833 TYPE(ctrl_out), SAVE :: o_prbsw = ctrl_out((/ 10, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 834 834 'prbsw', 'Precipitable blowing snow', 'kg/m2', (/ ('', i=1, 10) /)) 835 TYPE(ctrl_out), SAVE :: o_water_budget = ctrl_out((/ 1, 1, 10, 10, 10, 10, 11, 11, 11, 11/), & 836 'water_budget', 'Water budget', 'kg/m2', (/ ('', i=1, 10) /)) 835 837 TYPE(ctrl_out), SAVE :: o_s_pblh = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11, 11/), & 836 838 's_pblh', 'Boundary Layer Height', 'm', (/ ('', i=1, 10) /)) -
LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90
r4881 r4887 83 83 o_Mipsh, o_Ma, & 84 84 o_dnwd, o_dnwd0, o_ftime_deepcv, o_ftime_con, o_mc, & 85 o_prw, o_prlw, o_prsw, o_prbsw, o_ s_pblh, o_s_pblt, o_s_lcl, &85 o_prw, o_prlw, o_prsw, o_prbsw, o_water_budget, o_s_pblh, o_s_pblt, o_s_lcl, & 86 86 o_s_therm, o_uSTDlevs, o_vSTDlevs, & 87 87 o_wSTDlevs, o_zSTDlevs, o_qSTDlevs, & … … 324 324 uwat, vwat, & 325 325 rneb_seri, d_rneb_dyn, & 326 plcl, plfc, wbeff, convoccur, upwd, dnwd, dnwd0, prw, prlw, prsw, prbsw, &326 plcl, plfc, wbeff, convoccur, upwd, dnwd, dnwd0, prw, prlw, prsw, prbsw, water_budget, & 327 327 s_pblh, s_pblt, s_lcl, s_therm, uwriteSTD, & 328 328 vwriteSTD, wwriteSTD, phiwriteSTD, qwriteSTD, & … … 1400 1400 CALL histwrite_phy(o_prbsw, prbsw) 1401 1401 ENDIF 1402 CALL histwrite_phy(o_water_budget, water_budget) 1402 1403 CALL histwrite_phy(o_s_pblh, s_pblh) 1403 1404 CALL histwrite_phy(o_s_pblt, s_pblt) -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4886 r4887 259 259 JrNt, & 260 260 dthmin, evap, snowerosion,fder, plcl, plfc, & 261 prw, prlw, prsw, prbsw, 261 prw, prlw, prsw, prbsw, water_budget, & 262 262 s_lcl, s_pblh, s_pblt, s_therm, & 263 263 cdragm, cdragh, & … … 2464 2464 qql1(:)=0.0 2465 2465 DO k = 1, klev 2466 qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k)+qbs_seri(:,k))*zmasse(:,k) 2466 qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k))*zmasse(:,k) 2467 IF (nqo >= 3) THEN 2468 qql1(:)=qql1(:)+qs_seri(:,k)*zmasse(:,k) 2469 ENDIF 2470 IF (ok_bs) THEN 2471 qql1(:)=qql1(:)+qbs_seri(:,k)*zmasse(:,k) 2472 ENDIF 2467 2473 ENDDO 2468 2474 ENDIF … … 5465 5471 t_seri(:,:)=t_seri(:,:)+d_t_ec(:,:) 5466 5472 5467 !======================================================================= 5468 ! SORTIES 5469 !======================================================================= 5470 ! 5471 !IM initialisation + calculs divers diag AMIP2 5472 ! 5473 include "calcul_divers.h" 5474 ! 5475 !IM Interpolation sur les niveaux de pression du NMC 5476 ! ------------------------------------------------- 5477 ! 5478 include "calcul_STDlev.h" 5479 ! 5480 ! slp sea level pressure derived from Arpege-IFS : CALL ctstar + CALL pppmer 5481 CALL diag_slp(klon,t_seri,paprs,pplay,pphis,ptstar,pt0,slp) 5482 ! 5473 !================================================================== 5474 !--OB water mass fixer for the physics 5475 !--water profiles are corrected to force mass conservation of water 5476 !--currently flag is turned off 5477 !================================================================== 5478 IF (mass_fixer) THEN 5479 qql2(:)=0.0 5480 DO k = 1, klev 5481 qql2(:)=qql2(:)+(q_seri(:,k)+ql_seri(:,k))*zmasse(:,k) 5482 IF (nqo >= 3) THEN 5483 qql2(:)=qql2(:)+qs_seri(:,k)*zmasse(:,k) 5484 ENDIF 5485 IF (ok_bs) THEN 5486 qql2(:)=qql2(:)+qbs_seri(:,k)*zmasse(:,k) 5487 ENDIF 5488 ENDDO 5489 5490 #ifdef CPP_StratAer 5491 IF (ok_qemiss) THEN 5492 DO k = 1, klev 5493 qql1(:) = qql1(:)+d_q_emiss(:,k)*zmasse(:,k) 5494 ENDDO 5495 ENDIF 5496 #endif 5497 IF (ok_qch4) THEN 5498 DO k = 1, klev 5499 qql1(:) = qql1(:)+d_q_ch4_dtime(:,k)*zmasse(:,k) 5500 ENDDO 5501 ENDIF 5502 5503 DO i = 1, klon 5504 !--compute ratio of what q+ql should be with conservation to what it is 5505 IF (ok_bs) THEN 5506 corrqql=(qql1(i)+(evap(i)-rain_fall(i)-snow_fall(i)-bs_fall(i))*pdtphys)/qql2(i) 5507 ELSE 5508 corrqql=(qql1(i)+(evap(i)-rain_fall(i)-snow_fall(i))*pdtphys)/qql2(i) 5509 ENDIF 5510 DO k = 1, klev 5511 q_seri(i,k) =q_seri(i,k)*corrqql 5512 ql_seri(i,k)=ql_seri(i,k)*corrqql 5513 IF (nqo >= 3) THEN 5514 qs_seri(i,k)=qs_seri(i,k)*corrqql 5515 ENDIF 5516 IF (ok_bs) THEN 5517 qbs_seri(i,k)=qbs_seri(i,k)*corrqql 5518 ENDIF 5519 ENDDO 5520 ENDDO 5521 ENDIF 5522 !--fin mass fixer 5523 5483 5524 !cc prw = eau precipitable 5484 5525 ! prlw = colonne eau liquide 5485 5526 ! prlw = colonne eau solide 5486 5527 ! prbsw = colonne neige soufflee 5528 ! water_budget = non-conservation residual from the LMDZ physics 5529 ! (should be equal to machine precision if mass fixer is activated) 5487 5530 prw(:) = 0. 5488 5531 prlw(:) = 0. 5489 5532 prsw(:) = 0. 5490 5533 prbsw(:) = 0. 5534 water_budget(:) = 0.0 5491 5535 DO k = 1, klev 5492 5536 prw(:) = prw(:) + q_seri(:,k)*zmasse(:,k) 5493 5537 prlw(:) = prlw(:) + ql_seri(:,k)*zmasse(:,k) 5494 prsw(:) = prsw(:) + qs_seri(:,k)*zmasse(:,k) 5495 prbsw(:)= prbsw(:) + qbs_seri(:,k)*zmasse(:,k) 5538 water_budget(:) = water_budget(:) + (q_seri(:,k)-qx(:,k,ivap)+ql_seri(:,k)-qx(:,k,iliq))*zmasse(:,k) 5539 IF (nqo >= 3) THEN 5540 prsw(:) = prsw(:) + qs_seri(:,k)*zmasse(:,k) 5541 water_budget(:) = water_budget(:) + (qs_seri(:,k)-qx(:,k,isol))*zmasse(:,k) 5542 ENDIF 5543 IF (nqo >= 4 .AND. ok_bs) THEN 5544 prbsw(:)= prbsw(:) + qbs_seri(:,k)*zmasse(:,k) 5545 water_budget(:) = water_budget(:) + (qbs_seri(:,k)-qx(:,k,ibs))*zmasse(:,k) 5546 ENDIF 5496 5547 ENDDO 5548 water_budget(:)=water_budget(:)+(rain_fall(:)+snow_fall(:)-evap(:))*pdtphys 5549 IF (ok_bs) THEN 5550 water_budget(:)=water_budget(:)+bs_fall(:)*pdtphys 5551 ENDIF 5552 5553 !======================================================================= 5554 ! SORTIES 5555 !======================================================================= 5556 ! 5557 !IM initialisation + calculs divers diag AMIP2 5558 ! 5559 include "calcul_divers.h" 5560 ! 5561 !IM Interpolation sur les niveaux de pression du NMC 5562 ! ------------------------------------------------- 5563 ! 5564 include "calcul_STDlev.h" 5565 ! 5566 ! slp sea level pressure derived from Arpege-IFS : CALL ctstar + CALL pppmer 5567 CALL diag_slp(klon,t_seri,paprs,pplay,pphis,ptstar,pt0,slp) 5568 ! 5497 5569 ! 5498 5570 IF (ANY(type_trac == ['inca','inco'])) THEN … … 5579 5651 !IM global posePB include "write_bilKP_ave.h" 5580 5652 ! 5581 5582 !--OB mass fixer5583 !--profile is corrected to force mass conservation of water5584 IF (mass_fixer) THEN5585 qql2(:)=0.05586 DO k = 1, klev5587 qql2(:)=qql2(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k)+qbs_seri(:,k))*zmasse(:,k)5588 ENDDO5589 5590 #ifdef CPP_StratAer5591 IF (ok_qemiss) THEN5592 DO k = 1, klev5593 qql1(:) = qql1(:)+d_q_emiss(:,k)*zmasse(:,k)5594 ENDDO5595 ENDIF5596 #endif5597 IF (ok_qch4) THEN5598 DO k = 1, klev5599 qql1(:) = qql1(:)+d_q_ch4_dtime(:,k)*zmasse(:,k)5600 ENDDO5601 ENDIF5602 5603 DO i = 1, klon5604 !--compute ratio of what q+ql should be with conservation to what it is5605 corrqql=(qql1(i)+(evap(i)-rain_fall(i)-snow_fall(i))*pdtphys)/qql2(i)5606 DO k = 1, klev5607 q_seri(i,k) =q_seri(i,k)*corrqql5608 ql_seri(i,k)=ql_seri(i,k)*corrqql5609 qs_seri(i,k)=qs_seri(i,k)*corrqql5610 qbs_seri(i,k)=qbs_seri(i,k)*corrqql5611 ENDDO5612 ENDDO5613 ENDIF5614 !--fin mass fixer5615 5616 5653 ! Sauvegarder les valeurs de t et q a la fin de la physique: 5617 5654 !
Note: See TracChangeset
for help on using the changeset viewer.