Changeset 5536 for LMDZ6/branches/contrails/libf/phylmdiso/physiq_mod.F90
- Timestamp:
- Feb 12, 2025, 10:08:35 AM (4 days ago)
- Location:
- LMDZ6/branches/contrails
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/contrails
- Property svn:mergeinfo changed
/LMDZ6/trunk reverse-merged: 5451,5458,5460,5463,5468-5487
- Property svn:mergeinfo changed
-
LMDZ6/branches/contrails/libf/phylmdiso/physiq_mod.F90
r5489 r5536 39 39 USE ioipsl_getin_p_mod, ONLY : getin_p 40 40 USE indice_sol_mod 41 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type_trac,addPhase, ivap, iliq, isol , ibs, icf, irvc41 USE infotrac_phy, ONLY: nqtot, nbtr, nqo, tracers, type_trac,addPhase, ivap, iliq, isol 42 42 USE strings_mod, ONLY: strIdx 43 43 USE iophy … … 579 579 !====================================================================== 580 580 ! 581 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional), blowing snow (optional) 582 ! INTEGER,SAVE :: ivap, iliq, isol, irneb, ibs 583 !!$OMP THREADPRIVATE(ivap, iliq, isol, irneb, ibs) 584 ! Camille Risi 25 juillet 2023: ivap,iliq,isol deja definis dans infotrac_phy. 585 ! Et ils sont utiles ailleurs que dans physiq_mod (ex: 586 ! reevap -> je commente les 2 lignes au dessus et je laisse la definition 587 ! plutot dans infotrac_phy 588 INTEGER,SAVE :: irneb, ibs, icf,irvc 589 !$OMP THREADPRIVATE(irneb, ibs, icf,irvc) 590 ! 581 591 ! 582 592 ! Variables argument: … … 1111 1121 1112 1122 REAL picefra(klon,klev) 1113 REAL nm_oro(klon)1123 REAL zrel_oro(klon) 1114 1124 !IM cf. AM 081204 END 1115 1125 ! … … 1449 1459 1450 1460 IF (first) THEN 1461 ivap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 1462 iliq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 1463 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1464 ibs = strIdx(tracers(:)%name, addPhase('H2O', 'b')) 1465 icf = strIdx(tracers(:)%name, addPhase('H2O', 'f')) 1466 irvc = strIdx(tracers(:)%name, addPhase('H2O', 'c')) 1451 1467 ! CALL init_etat0_limit_unstruct 1452 1468 IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) … … 6267 6283 ! a l'echelle sous-maille: 6268 6284 ! 6269 6270 ! calculation of nm_oro6271 DO i=1,klon6272 ! nm_oro is a proxy for the number of subgrid scale mountains6273 ! -> condition on nm_oro can deactivate the lifting on tilted planar terrains6274 ! such as ice sheets (work by V. Wiener)6275 ! in such a case, the SSO scheme should activate only where nm_oro>0 i.e. by setting6276 ! nm_oro_t=0.6277 nm_oro(i)=zsig(i)*sqrt(cell_area(i)*(pctsrf(i,is_ter)+pctsrf(i,is_lic)))/(4.*MAX(zstd(i),1.e-8))-1.6278 END DO6279 6280 6285 IF (prt_level .GE.10) THEN 6281 6286 print *,' call orography ? ', ok_orodr 6282 6287 ENDIF 6283 6288 ! 6284 6289 IF (ok_orodr) THEN 6285 6290 ! … … 6288 6293 DO i=1,klon 6289 6294 itest(i)=0 6295 zrel_oro(i)=zstd(i)/(max(zsig(i),1.E-8)*sqrt(cell_area(i))) 6296 !zrel_oro: relative mountain height wrt relief explained by mean slope 6297 ! -> condition on zrel_oro can deactivate the drag on tilted planar terrains 6298 ! such as ice sheets (work by V. Wiener) 6290 6299 ! zpmm_orodr_t and zstd_orodr_t are activation thresholds set by F. Lott to 6291 6300 ! earn computation time but they are not physical. 6292 IF (((zpic(i)-zmea(i)).GT.zpmm_orodr_t).AND.(zstd(i).GT.zstd_orodr_t).AND.( nm_oro(i).GT.nm_oro_t)) THEN6301 IF (((zpic(i)-zmea(i)).GT.zpmm_orodr_t).AND.(zstd(i).GT.zstd_orodr_t).AND.(zrel_oro(i).LE.zrel_oro_t)) THEN 6293 6302 itest(i)=1 6294 6303 igwd=igwd+1 … … 6343 6352 DO i=1,klon 6344 6353 itest(i)=0 6345 IF (((zpic(i)-zmea(i)).GT.zpmm_orolf_t).AND.(nm_oro(i).GT.nm_oro_t)) THEN 6354 !zrel_oro: relative mountain height wrt relief explained by mean slope 6355 ! -> condition on zrel_oro can deactivate the lifting on tilted planar terrains 6356 ! such as ice sheets (work by V. Wiener) 6357 zrel_oro(i)=zstd(i)/(max(zsig(i),1.E-8)*sqrt(cell_area(i))) 6358 IF (((zpic(i)-zmea(i)).GT.zpmm_orolf_t).AND.(zrel_oro(i).LE.zrel_oro_t)) THEN 6346 6359 itest(i)=1 6347 6360 igwd=igwd+1 … … 6617 6630 ! car on peut s'attendre a ce que les petites echelles produisent aussi de la TKE 6618 6631 ! Mais attention, cela ne va pas dans le sens de la conservation de l'energie! 6619 IF ((zstd(i).GT.1.0) .AND.( nm_oro(i).GT.nm_oro_t)) THEN6632 IF ((zstd(i).GT.1.0) .AND.(zrel_oro(i).LE.zrel_oro_t)) THEN 6620 6633 itest(i)=1 6621 6634 igwd=igwd+1 … … 6629 6642 DO i=1,klon 6630 6643 itest(i)=0 6631 IF (((zpic(i)-zmea(i)).GT.zpmm_orodr_t).AND.(zstd(i).GT.zstd_orodr_t).AND.( nm_oro(i).GT.nm_oro_t)) THEN6644 IF (((zpic(i)-zmea(i)).GT.zpmm_orodr_t).AND.(zstd(i).GT.zstd_orodr_t).AND.(zrel_oro(i).LE.zrel_oro_t)) THEN 6632 6645 itest(i)=1 6633 6646 igwd=igwd+1
Note: See TracChangeset
for help on using the changeset viewer.