Changeset 544 for trunk/LMDZ.MARS/libf
- Timestamp:
- Feb 27, 2012, 10:44:32 AM (13 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/callkeys.h
r485 r544 18 18 & ,dustbin,nqchem_min,nltemodel,nircorr 19 19 20 COMMON/callkeys_r/topdustref,solarcondate,semi,alphan 20 COMMON/callkeys_r/topdustref,solarcondate,semi,alphan, & 21 & tke_heat_flux 21 22 22 23 LOGICAL callrad,calldifv,calladj,callcond,callsoil, & … … 36 37 real alphan 37 38 real solarcondate 39 real tke_heat_flux 38 40 39 41 integer iddist -
trunk/LMDZ.MARS/libf/phymars/calltherm_interface.F90
r512 r544 158 158 endif 159 159 160 ! dtke_thermals=.false. !! default setting 161 ! !call getin("dtke_thermals",dtke_thermals) 162 ! 163 ! IF(dtke_thermals) THEN 164 ! DO l=1,nlayermx 165 ! q2_therm(:,l)=0.5*(q2(:,l)+q2(:,l+1)) 166 ! ENDDO 167 ! ENDIF 160 dtke_thermals=.false. !! default setting 161 call getin("dtke_thermals",dtke_thermals) 162 IF(dtke_thermals) THEN 163 DO l=1,nlayermx 164 q2_therm(:,l)=0.5*(q2(:,l)+q2(:,l+1)) 165 ENDDO 166 ENDIF 168 167 169 168 ! ********************************************************************** … … 338 337 endif 339 338 339 if (dtke_thermals) then 340 modname='tke' 341 call thermcell_dqup(ngridmx,nlayermx,ptimestep & 342 & ,fm_therm,entr_therm,detr_therm, & 343 & masse,q2_therm,dq2_therm,modname,zdz) 344 endif 345 340 346 DO ig=1,ngridmx 341 347 hfmax(ig)=MAXVAL(heatFlux(ig,:)+heatFlux_down(ig,:)) … … 369 375 endif 370 376 371 !IF(dtke_thermals) THEN372 !DO l=2,nlayermx373 !pbl_dtke(:,l)=0.5*(dq2_therm(:,l-1)+dq2_therm(:,l))374 !ENDDO375 !376 !pbl_dtke(:,1)=0.5*dq2_therm(:,1)377 !pbl_dtke(:,nlayermx+1)=0.378 !ENDIF377 IF(dtke_thermals) THEN 378 DO l=2,nlayermx 379 pbl_dtke(:,l)=0.5*(dq2_therm(:,l-1)+dq2_therm(:,l)) 380 ENDDO 381 382 pbl_dtke(:,1)=0.5*dq2_therm(:,1) 383 pbl_dtke(:,nlayermx+1)=0. 384 ENDIF 379 385 380 386 -
trunk/LMDZ.MARS/libf/phymars/inifis.F
r485 r544 203 203 write(*,*) " topdustref = ",topdustref 204 204 205 write(*,*) "Prescribed surface thermal flux (H/(rho*cp),K m/s)" 206 tke_heat_flux=0. ! default value 207 call getin("tke_heat_flux",tke_heat_flux) 208 write(*,*) " tke_heat_flux = ",tke_heat_flux 209 write(*,*) " 0 means the usual schemes are computing" 210 205 211 write(*,*) "call radiative transfer ?" 206 212 callrad=.true. ! default value -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r529 r544 11 11 #endif 12 12 $ ) 13 13 14 14 15 IMPLICIT NONE … … 338 339 339 340 c Variables for PBL 340 341 REAL zz1(ngridmx) 341 342 REAL lmax_th_out(ngridmx),zmax_th(ngridmx) 342 343 REAL, SAVE :: wstar(ngridmx) … … 769 770 #endif 770 771 772 IF (tke_heat_flux .ne. 0.) THEN 773 zz1(:)=(pt(:,1)+pdt(:,1)*ptimestep)*(r/g)* 774 & (-alog(pplay(:,1)/pplev(:,1))) 775 pdt(:,1)=pdt(:,1) + (tke_heat_flux/zz1(:))*zpopsk(:,1) 776 ENDIF 771 777 772 778 c Calling vdif (Martian version WITH CO2 condensation) … … 1997 2003 call WRITEDIAGFI(ngrid,"pplev","Pressure","Pa",1,zplev) 1998 2004 call WRITEDIAGFI(ngrid,"rho","rho","kg.m-3",1,rho) 2005 ! call WRITEDIAGFI(ngrid,"dtrad","rad. heat. rate", & 2006 ! & "K.s-1",1,dtrad/zpopsk) 2007 ! call WRITEDIAGFI(ngridmx,'sw_htrt','sw heat. rate', 2008 ! & 'w.m-2',1,zdtsw/zpopsk) 2009 ! call WRITEDIAGFI(ngridmx,'lw_htrt','lw heat. rate', 2010 ! & 'w.m-2',1,zdtlw/zpopsk) 2011 1999 2012 ! or output in diagfi.nc (for testphys1d) 2000 2013 call WRITEDIAGFI(ngridmx,'ps','Surface pressure','Pa',0,ps) -
trunk/LMDZ.MARS/libf/phymars/thermcell_main_mars.F90
r532 r544 113 113 REAL zdz,zbuoy(ngridmx,nlayermx),zw2m 114 114 LOGICAL activecell(ngridmx),activetmp(ngridmx) 115 REAL a1,b1,ae,be,ad,bd,fdfu,b1inv,a1inv,omega 115 REAL a1,b1,ae,be,ad,bd,fdfu,b1inv,a1inv,omega,adalim 116 116 INTEGER tic 117 117 … … 381 381 b1inv=b1 382 382 omega=0. 383 adalim=0. 383 384 384 385 ! One good config for 34/35 levels … … 389 390 ! Best configuration for 222 levels: 390 391 391 omega=0.06 392 b1=0. 393 a1=1. 394 a1inv=0.25*a1 395 b1inv=0.0002 392 ! omega=0.06 393 ! b1=0. 394 ! a1=1. 395 ! a1inv=0.25*a1 396 ! b1inv=0.0002 397 !! 398 !! 399 !! ae=0.9*ae 396 400 397 401 ! Best config for norad 222 levels: 398 399 ! omega=0.06 400 ! a1=1. 401 ! b1=0. 402 ! a1inv=a1 403 ! be=1.1*be 404 ! ad = 0.0004 405 ! b1inv=0.00035 402 ! with yamada4 and alim at sqrt(zlev) 403 404 omega=0.06 405 a1=1. 406 b1=0. 407 a1inv=a1 408 be=1.1*be 409 ad = 0.0004 410 b1inv=0.00035 411 adalim=0. 412 413 b1inv=0.00025 406 414 407 415 ! Trying stuff : 416 417 ! omega=0.04 418 !! b1=0. 419 ! a1=1. 420 ! a1inv=a1 421 ! b1inv=0.0005689 422 !! be=1.1*be 423 !! ae=0.96*ae 424 408 425 409 426 ! omega=0.06 … … 431 448 if (ztv(ig,1)>=(ztv(ig,2))) then 432 449 alim_star(ig,1)=MAX((ztv(ig,1)-ztv(ig,2)),0.) & 433 & *sqrt(zlev(ig,2))450 ! & *sqrt(zlev(ig,2)) 434 451 ! & /sqrt(zlev(ig,2)) 435 !& *zlev(ig,2)452 & *zlev(ig,2) 436 453 lalim(ig)=2 437 454 alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,1) … … 444 461 if (ztv(ig,l)>(ztv(ig,l+1)+0.) .and. ztv(ig,1)>=ztv(ig,l) .and. (alim_star(ig,l-1) .ne. 0.)) then ! .and. (zlev(ig,l+1) .lt. 1000.)) then 445 462 alim_star(ig,l)=MAX((ztv(ig,l)-ztv(ig,l+1)),0.) & 446 & *sqrt(zlev(ig,l+1)) 447 ! & *zlev(ig,2) 463 ! & *sqrt(zlev(ig,l+1)) 464 ! & /sqrt(zlev(ig,l+1)) 465 & *zlev(ig,l+1) 448 466 lalim(ig)=l+1 449 467 alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l) … … 562 580 if(zbuoy(ig,l) .gt. 0.) then 563 581 if(l .lt. lalim(ig)) then 564 detr_star(ig,l)=0. 582 583 ! detr_star(ig,l)=0. 584 detr_star(ig,l) = f_star(ig,l)*zdz* & 585 & adalim 565 586 else 566 587 … … 628 649 !--------------------------------------------------------------------------- 629 650 630 DO tic=0, 0! internal convergence loop651 DO tic=0,5 ! internal convergence loop 631 652 activetmp(:)=activecell(:) .and. f_star(:,l+1)>1.e-10 632 653 do ig=1,ngridmx … … 674 695 if(zbuoy(ig,l) .gt. 0.) then 675 696 if(l .lt. lalim(ig)) then 676 detr_star(ig,l)=0. 697 698 ! detr_star(ig,l)=0. 699 detr_star(ig,l) = f_star(ig,l)*zdz* & 700 & adalim 701 677 702 else 678 703 detr_star(ig,l) = f_star(ig,l)*zdz* & -
trunk/LMDZ.MARS/libf/phymars/vdifc.F
r529 r544 10 10 #endif 11 11 & ) 12 USE ioipsl_getincom13 12 IMPLICIT NONE 14 13 … … 369 368 c ** schema de diffusion turbulente dans la couche limite 370 369 c ---------------------------------------------------- 370 IF (tke_heat_flux .eq. 0.) THEN 371 371 372 372 CALL vdif_kc(ptimestep,g,pzlev,pzlay … … 374 374 & ,pq2,zkv,zkh,zq) 375 375 376 ! pt(:,:)=ph(:,:)*ppopsk(:,:) 377 ! CALL yamada4(ngrid,nlay,ptimestep,g,r,pplev,pt 378 ! s ,pzlev,pzlay,pu,pv,ph,zcdv_true,pq2,zkv,zkh,zkq,ust 379 ! s ,8) 376 ELSE 377 378 pt(:,:)=zh(:,:)*ppopsk(:,:) 379 CALL yamada4(ngrid,nlay,ptimestep,g,r,pplev,pt 380 s ,pzlev,pzlay,pu,pv,ph,zcdv_true,pq2,zkv,zkh,zkq,ust 381 s ,8) 382 383 ENDIF 380 384 381 385 if ((doubleq).and.(ngrid.eq.1)) then … … 523 527 524 528 z4st=4.*5.67e-8*ptimestep 529 IF (tke_heat_flux .eq. 0.) THEN 525 530 DO ig=1,ngrid 526 531 zdplanck(ig)=z4st*pemis(ig)*ptsrf(ig)*ptsrf(ig)*ptsrf(ig) 527 532 ENDDO 533 ELSE 534 zdplanck(:)=0. 535 ENDIF 528 536 529 537 ! calcul de zc et zd pour la couche top en prenant en compte le terme
Note: See TracChangeset
for help on using the changeset viewer.