Changeset 1496
- Timestamp:
- Mar 11, 2011, 10:44:05 AM (14 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/etat0_netcdf.F90
r1492 r1496 138 138 flag_aerosol, new_aod, & 139 139 bl95_b0, bl95_b1, & 140 iflag_thermals,nsplit_thermals,tau_thermals, & 141 iflag_thermals_ed,iflag_thermals_optflux, & 142 iflag_coupl,iflag_clos,iflag_wake, read_climoz, & 140 read_climoz, & 143 141 alp_offset) 144 142 -
LMDZ5/trunk/libf/dyn3dpar/etat0_netcdf.F90
r1492 r1496 138 138 flag_aerosol, new_aod, & 139 139 bl95_b0, bl95_b1, & 140 iflag_thermals,nsplit_thermals,tau_thermals, & 141 iflag_thermals_ed,iflag_thermals_optflux, & 142 iflag_coupl,iflag_clos,iflag_wake, read_climoz, & 140 read_climoz, & 143 141 alp_offset) 144 142 -
LMDZ5/trunk/libf/phylmd/calltherm.F90
r1428 r1496 216 216 & ,zfm_therm,zentr_therm,zdetr_therm,zqasc,zqla,lmax & 217 217 & ,ratqscth,ratqsdiff,zqsatth & 218 & ,r_aspect_thermals,l_mix_thermals & 219 & ,tau_thermals,iflag_thermals_ed,Ale,Alp,lalim_conv,wght_th & 218 ! & ,r_aspect_thermals,l_mix_thermals & 219 ! & ,tau_thermals,iflag_thermals_ed,iflag_coupl & 220 & ,Ale,Alp,lalim_conv,wght_th & 220 221 & ,zmax0,f0,zw2,fraca,ztv,zpspsk & 221 222 & ,ztla,zthl) -
LMDZ5/trunk/libf/phylmd/conf_phys.F90
r1492 r1496 21 21 flag_aerosol, new_aod, & 22 22 bl95_b0, bl95_b1,& 23 iflag_thermals,nsplit_thermals,tau_thermals, & 24 iflag_thermals_ed,iflag_thermals_optflux, & 25 iflag_coupl,iflag_clos,iflag_wake, read_climoz, & 23 read_climoz, & 26 24 alp_offset) 27 25 … … 37 35 include "YOMCST.h" 38 36 include "YOMCST2.h" 37 38 include "thermcell.h" 39 39 40 !IM : on inclut/initialise les taux de CH4, N2O, CFC11 et CFC12 40 41 include "clesphys.h" … … 106 107 real,save :: seuil_inversion_omp 107 108 108 integer :: iflag_thermals,nsplit_thermals109 109 integer,SAVE :: iflag_thermals_ed_omp,iflag_thermals_optflux_omp 110 integer :: iflag_thermals_ed,iflag_thermals_optflux111 110 integer,SAVE :: iflag_thermals_omp,nsplit_thermals_omp 112 real :: tau_thermals 113 real,save :: tau_thermals_omp 114 integer :: iflag_coupl 115 integer :: iflag_clos 116 integer :: iflag_wake 111 real,save :: tau_thermals_omp,alp_bl_k_omp 117 112 real :: alp_offset 118 113 REAL, SAVE :: alp_offset_omp … … 1002 997 call getin('nsplit_thermals',nsplit_thermals_omp) 1003 998 999 !Config Key = alp_bl_k 1000 !Config Desc = 1001 !Config Def = 0. 1002 !Config Help = 1003 ! 1004 alp_bl_k_omp = 1. 1005 call getin('alp_bl_k',alp_bl_k_omp) 1006 1007 ! 1004 1008 !Config Key = tau_thermals 1005 1009 !Config Desc = … … 1554 1558 nsplit_thermals = nsplit_thermals_omp 1555 1559 tau_thermals = tau_thermals_omp 1560 alp_bl_k = alp_bl_k_omp 1556 1561 iflag_coupl = iflag_coupl_omp 1557 1562 iflag_clos = iflag_clos_omp -
LMDZ5/trunk/libf/phylmd/physiq.F
r1493 r1496 1234 1234 . flag_aerosol, new_aod, 1235 1235 . bl95_b0, bl95_b1, 1236 . iflag_thermals,nsplit_thermals,tau_thermals,1237 . iflag_thermals_ed,iflag_thermals_optflux,1238 1236 c nv flags pour la convection et les poches froides 1239 . iflag_coupl,iflag_clos,iflag_wake,read_climoz,1237 . read_climoz, 1240 1238 & alp_offset) 1241 1239 call phys_state_var_init(read_climoz) … … 2846 2844 if (iflag_cldcon>=5) then 2847 2845 2846 ptconvth(:,:)=fm_therm(:,:)>0. 2847 2848 if (iflag_coupl==4) then 2849 2850 ! Dans le cas iflag_coupl==4, on prend la somme des convertures 2851 ! convectives et lsc dans la partie des thermiques 2852 ! Le controle par iflag_coupl est peut etre provisoire. 2853 do k=1,klev 2854 do i=1,klon 2855 if (ptconv(i,k).and.ptconvth(i,k)) then 2856 cldliq(i,k)=cldliq(i,k)+rnebcon(i,k)*clwcon(i,k) 2857 cldfra(i,k)=min(cldfra(i,k)+rnebcon(i,k),1.) 2858 else if (ptconv(i,k)) then 2859 cldfra(i,k)=rnebcon(i,k) 2860 cldliq(i,k)=rnebcon(i,k)*clwcon(i,k) 2861 endif 2862 enddo 2863 enddo 2864 2865 else 2848 2866 ! Si on est sur un point touche par la convection profonde et pas 2849 2867 ! par les thermiques, on prend la couverture nuageuse et l'eau nuageuse … … 2852 2870 !IM/FH: 2011/02/23 2853 2871 ! definition des points sur lesquels ls thermiques sont actifs 2854 if (prt_level>9)write(*,*)'TEST SCHEMA DE NUAGES ' 2855 ptconvth(:,:)=fm_therm(:,:)>0. 2872 2856 2873 do k=1,klev 2857 2874 do i=1,klon … … 2862 2879 enddo 2863 2880 enddo 2881 2882 endif 2883 2864 2884 else 2885 2865 2886 ! Ancienne version 2866 2887 cldfra(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.) -
LMDZ5/trunk/libf/phylmd/thermcell.h
r1146 r1496 1 1 integer :: iflag_thermals,nsplit_thermals 2 2 real,parameter :: r_aspect_thermals=2.,l_mix_thermals=30. 3 real :: alp_bl_k 3 4 real :: tau_thermals 4 5 integer,parameter :: w2di_thermals=1 … … 9 10 10 11 common/ctherm1/iflag_thermals,nsplit_thermals 11 common/ctherm2/tau_thermals 12 common/ctherm2/tau_thermals,alp_bl_k 12 13 common/ctherm4/iflag_coupl,iflag_clos,iflag_wake 13 14 common/ctherm5/iflag_thermals_ed,iflag_thermals_optflux -
LMDZ5/trunk/libf/phylmd/thermcell_main.F90
r1494 r1496 8 8 & ,fm0,entr0,detr0,zqta,zqla,lmax & 9 9 & ,ratqscth,ratqsdiff,zqsatth & 10 & ,r_aspect,l_mix,tau_thermals,iflag_thermals_ed &11 10 & ,Ale_bl,Alp_bl,lalim_conv,wght_th & 12 11 & ,zmax0, f0,zw2,fraca,ztv & … … 47 46 #include "FCTTRE.h" 48 47 #include "iniprint.h" 48 #include "thermcell.h" 49 49 50 50 ! arguments: … … 54 54 INTEGER itap 55 55 56 INTEGER ngrid,nlay,w2di 57 real tau_thermals 58 integer iflag_thermals_ed 59 real ptimestep,l_mix,r_aspect 56 INTEGER ngrid,nlay 57 real ptimestep 60 58 REAL pt(ngrid,nlay),pdtadj(ngrid,nlay) 61 59 REAL pu(ngrid,nlay),pduadj(ngrid,nlay) … … 162 160 real Ale_bl(klon) 163 161 real Alp_bl(klon) 164 real alp_int(klon) 162 real alp_int(klon),dp_int(klon),zdp 165 163 real ale_int(klon) 166 164 integer n_int(klon) … … 474 472 475 473 ! Appel avec la version seche 476 CALL thermcell_closure(ngrid,nlay,r_aspect ,ptimestep,rho, &474 CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho, & 477 475 & zlev,lalim,alim_star_clos,f_star,zmax_sec,wmax_sec,f,lev_out) 478 476 … … 480 478 ! Appel avec les zmax et wmax tenant compte de la condensation 481 479 ! Semble moins bien marcher 482 ! CALL thermcell_closure(ngrid,nlay,r_aspect ,ptimestep,rho, &480 ! CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho, & 483 481 ! & zlev,lalim,alim_star,f_star,zmax,wmax,f,lev_out) 484 482 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 702 700 enddo 703 701 704 ! print*,'AAAAAAA ',Alp_bl,Ale_bl,lmix705 706 707 ! TEST. IL FAUT REECRIRE LES ALE et ALP708 ! Ale_bl(:)=0.5*wmax(:)*wmax(:)709 ! Alp_bl(:)=0.1*wmax(:)*wmax(:)*wmax(:)710 711 702 !test:calcul de la ponderation des couches pour KE 712 703 !initialisations 713 ! print*,'ponderation'714 704 715 705 fm_tot(:)=0. … … 743 733 endif 744 734 enddo 735 736 !------------------------------------------------------------------------ 737 ! Modif CR/FH 20110310 : Alp integree sur la verticale. 738 ! Integrale verticale de ALP. 739 ! wth3 etant aux niveaux inter-couches, on utilise d play comme masse des 740 ! couches 741 !------------------------------------------------------------------------ 742 743 alp_int(:)=0. 744 dp_int(:)=0. 745 do l=2,nlay 746 do ig=1,ngrid 747 if(l.LE.lmax(ig)) THEN 748 zdp=pplay(ig,l-1)-pplay(ig,l) 749 alp_int(ig)=alp_int(ig)+0.5*rhobarz(ig,l)*wth3(ig,l)*zdp 750 dp_int(ig)=dp_int(ig)+zdp 751 endif 752 enddo 753 enddo 754 755 if (iflag_coupl==3 .or. iflag_coupl==4) then 756 do ig=1,ngrid 757 !valeur integree de alp_bl * 0.5: 758 if (dp_int(ig)>0.) then 759 Alp_bl(ig)=alp_int(ig)/dp_int(ig) 760 endif 761 enddo! 762 endif 763 764 765 ! Facteur multiplicatif sur Alp_bl 766 Alp_bl(:)=alp_bl_k*Alp_bl(:) 767 768 !------------------------------------------------------------------------ 745 769 746 770
Note: See TracChangeset
for help on using the changeset viewer.