Changeset 4887 for LMDZ6/trunk/libf/phylmd/physiq_mod.F90
- Timestamp:
- Apr 2, 2024, 1:14:33 PM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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.