Changeset 1507 for LMDZ5/trunk/libf/phylmd/physiq.F
- Timestamp:
- Apr 15, 2011, 12:44:31 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/physiq.F
r1506 r1507 173 173 save iflag_ratqs 174 174 c$OMP THREADPRIVATE(iflag_ratqs) 175 real facteur,zfratqs1,zfratqs2 176 175 177 REAL lambda_th(klon,klev),zz,znum,zden 176 178 REAL wmax_th(klon) … … 924 926 save fact_cldcon,facttemps 925 927 c$OMP THREADPRIVATE(fact_cldcon,facttemps) 926 real facteur927 928 928 929 integer iflag_cldcon … … 1440 1441 cCR:04.12.07: initialisations poches froides 1441 1442 c Controle de ALE et ALP pour la fermeture convective (jyg) 1442 if (iflag_wake .eq.1) then1443 if (iflag_wake>=1) then 1443 1444 CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr 1444 1445 s ,alp_bl_prescr, ale_bl_prescr) … … 1934 1935 ! ajout des tendances de la diffusion turbulente 1935 1936 CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf') 1937 1936 1938 !----------------------------------------------------------------------------------------- 1937 1939 … … 2054 2056 do k=1,klev 2055 2057 do i=1,klon 2056 if (iflag_wake .eq.1) then2058 if (iflag_wake>=1) then 2057 2059 t_wake(i,k) = t_seri(i,k) 2058 2060 . +(1-wake_s(i))*wake_deltat(i,k) … … 2071 2073 enddo 2072 2074 enddo 2075 2073 2076 2074 2077 cc-- Calcul de l'energie disponible ALE (J/kg) et de la puissance disponible ALP (W/m2) … … 2081 2084 c 2082 2085 ccalcul de ale_wake et alp_wake 2083 if (iflag_wake .eq.1) then2086 if (iflag_wake>=1) then 2084 2087 if (itap .le. it_wape_prescr) then 2085 2088 do i = 1,klon … … 2343 2346 cpour la couche limite diffuse pour l instant 2344 2347 c 2345 if (iflag_wake .eq.1) then2348 if (iflag_wake>=1) then 2346 2349 DO k=1,klev 2347 2350 DO i=1,klon … … 2358 2361 ENDDO 2359 2362 ENDDO 2363 2364 if (iflag_wake==2) then 2365 dt_dwn(:,:)= dt_dwn(:,:)+(d_t_eva(:,:)+d_t_lsc(:,:))/dtime 2366 dq_dwn(:,:)= dq_dwn(:,:)+(d_q_eva(:,:)+d_q_lsc(:,:))/dtime 2367 endif 2360 2368 c 2361 2369 ccalcul caracteristiques de la poche froide … … 2474 2482 endif 2475 2483 2484 do i=1,klon 2485 zmax_th(i)=pphi(i,lmax_th(i))/rg 2486 enddo 2487 2476 2488 endif 2477 2489 … … 2604 2616 enddo 2605 2617 2606 else 2618 else if (iflag_ratqs.eq.2) then 2607 2619 2608 2620 do k=1,klev … … 2620 2632 enddo 2621 2633 enddo 2634 2635 else if (iflag_ratqs==3) then 2636 do k=1,klev 2637 ratqss(:,k)=ratqsbas+(ratqshaut-ratqsbas) 2638 s *min( ((paprs(:,1)-pplay(:,k))/70000.)**2 , 1. ) 2639 enddo 2640 2641 else if (iflag_ratqs==4) then 2642 do k=1,klev 2643 ratqss(:,k)=ratqsbas+0.5*(ratqshaut-ratqsbas) 2644 s *( tanh( (50000.-pplay(:,k))/20000.) + 1.) 2645 enddo 2646 2622 2647 endif 2623 2648 … … 2659 2684 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2660 2685 ratqs(:,:)=max(ratqs(:,:),ratqss(:,:)) 2661 else 2686 else if (iflag_cldcon<=6) then 2662 2687 ! on ne prend que le ratqs stable pour fisrtilp 2663 2688 ratqs(:,:)=ratqss(:,:) 2689 else 2690 zfratqs1=exp(-pdtphys/10800.) 2691 zfratqs2=exp(-pdtphys/10800.) 2692 ! print*,'RAPPEL RATQS 1 ',zfratqs1,zfratqs2 2693 ! s ,ratqss(1,14),ratqs(1,14),ratqsc(1,14) 2694 do k=1,klev 2695 do i=1,klon 2696 if (ratqsc(i,k).gt.1.e-10) then 2697 ratqs(i,k)=ratqs(i,k)*zfratqs2 2698 s +(iflag_cldcon/100.)*ratqsc(i,k)*(1.-zfratqs2) 2699 endif 2700 ratqs(i,k)=min(ratqs(i,k)*zfratqs1 2701 s +ratqss(i,k)*(1.-zfratqs1),0.5) 2702 enddo 2703 enddo 2664 2704 endif 2705 2665 2706 2666 2707 … … 2844 2885 if (iflag_cldcon>=5) then 2845 2886 2846 ptconvth(:,:)=fm_therm(:,:)>0. 2887 do k=1,klev 2888 ptconvth(:,k)=fm_therm(:,k+1)>0. 2889 enddo 2847 2890 2848 2891 if (iflag_coupl==4) then … … 2890 2933 2891 2934 ENDIF 2935 2936 ! plulsc(:)=0. 2937 ! do k=1,klev,-1 2938 ! do i=1,klon 2939 ! zzz=prfl(:,k)+psfl(:,k) 2940 ! if (.not.ptconvth.zzz.gt.0.) 2941 ! enddo prfl, psfl, 2942 ! enddo 2892 2943 c 2893 2944 c 2. NUAGES STARTIFORMES … … 3355 3406 IF (MOD(itap,NINT(freq_cosp/dtime)).EQ.0) THEN 3356 3407 3357 !print*,'freq_cosp',freq_cosp3408 print*,'freq_cosp',freq_cosp 3358 3409 mr_ozone=wo(:, :, 1) * dobson_u * 1e3 / zmasse 3359 3410 ! print*,'Dans physiq.F avant appel cosp ref_liq,ref_ice=', … … 3714 3765 3715 3766 3767 3768 c============================================================= 3769 ! Separation entre thermiques et non thermiques dans les sorties 3770 ! de fisrtilp 3771 c============================================================= 3772 3773 if (iflag_thermals>1) then 3774 d_t_lscth=0. 3775 d_t_lscst=0. 3776 d_q_lscth=0. 3777 d_q_lscst=0. 3778 do k=1,klev 3779 do i=1,klon 3780 if (ptconvth(i,k)) then 3781 d_t_lscth(i,k)=d_t_eva(i,k)+d_t_lsc(i,k) 3782 d_q_lscth(i,k)=d_q_eva(i,k)+d_q_lsc(i,k) 3783 else 3784 d_t_lscst(i,k)=d_t_eva(i,k)+d_t_lsc(i,k) 3785 d_q_lscst(i,k)=d_q_eva(i,k)+d_q_lsc(i,k) 3786 endif 3787 enddo 3788 enddo 3789 3790 do i=1,klon 3791 plul_st(i)=prfl(i,lmax_th(i)+1)+psfl(i,lmax_th(i)+1) 3792 plul_th(i)=prfl(i,1)+psfl(i,1) 3793 enddo 3794 endif 3795 3796 3716 3797 #include "phys_output_write.h" 3717 3798
Note: See TracChangeset
for help on using the changeset viewer.