Changeset 3825 for dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/physiq.F90
- Timestamp:
- May 6, 2015, 12:14:12 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dynamico_lmdz/aquaplanet/LMDZ5/libf/phylmd/physiq.F90
r3819 r3825 7 7 u,v,t,qx, & 8 8 flxmass_w, & 9 d_u, d_v, d_t, d_qx, d_ps & 10 , dudyn) 9 d_u, d_v, d_t, d_qx, d_ps) 11 10 12 11 USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, & 13 12 histwrite, ju2ymds, ymds2ju, getin 14 USE comgeomphy, ONLY: airephy13 USE geometry_mod, ONLY: cell_area 15 14 USE phys_cal_mod, only: year_len, mth_len, days_elapsed, jh_1jan, year_cur, & 16 15 mth_cur, phys_cal_update … … 33 32 USE phys_output_ctrlout_mod 34 33 USE iophy 34 USE geometry_mod, ONLY : lon_degrees, lat_degrees 35 35 use open_climoz_m, only: open_climoz ! ozone climatology from a file 36 36 use regr_pr_av_m, only: regr_pr_av … … 681 681 ! PARAMETER(imp1jmp1=(iim+1)*jjmp1) ! => (imp1jmp1=(nbp_lon+1)*(nbp_lat-1/(nbp_lat-1))) 682 682 !ym A voir plus tard 683 REAL zx_tmp((nbp_lon+1)*(nbp_lat-1/(nbp_lat-1))) 684 REAL airedyn(nbp_lon+1,nbp_lat-1/(nbp_lat-1)) 685 REAL padyn(nbp_lon+1,nbp_lat-1/(nbp_lat-1),klev+1) 686 REAL dudyn(nbp_lon+1,nbp_lat-1/(nbp_lat-1),klev) 687 REAL rlatdyn(nbp_lon+1,nbp_lat-1/(nbp_lat-1)) 683 ! REAL zx_tmp((nbp_lon+1)*(nbp_lat-1/(nbp_lat-1))) 688 684 !IM 190504 END 689 685 LOGICAL ok_msk … … 1264 1260 ok_sync_omp=.false. 1265 1261 CALL getin('ok_sync',ok_sync_omp) 1266 call phys_output_open( rlon,rlat,nCFMIP,tabijGCM, &1262 call phys_output_open(lon_degrees,lat_degrees,nCFMIP,tabijGCM, & 1267 1263 iGCM,jGCM,lonGCM,latGCM, & 1268 1264 jjmp1,nlevSTD,clevSTD,rlevSTD, dtime,ok_veget, & … … 1318 1314 rg, & 1319 1315 ra, & 1320 airephy, &1321 rlat, &1322 rlon, &1316 cell_area, & 1317 lat_degrees, & 1318 lon_degrees, & 1323 1319 presnivs, & 1324 1320 calday, & … … 1526 1522 IF (ip_ebil_phy.ge.1) THEN 1527 1523 ztit='after dynamic' 1528 CALL diagetpq( airephy,ztit,ip_ebil_phy,1,1,dtime &1524 CALL diagetpq(cell_area,ztit,ip_ebil_phy,1,1,dtime & 1529 1525 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 1530 1526 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) … … 1533 1529 ! est egale a la variation de la physique au pas de temps precedent. 1534 1530 ! Donc la somme de ces 2 variations devrait etre nulle. 1535 call diagphy( airephy,ztit,ip_ebil_phy &1531 call diagphy(cell_area,ztit,ip_ebil_phy & 1536 1532 , zero_v, zero_v, zero_v, zero_v, zero_v & 1537 1533 , zero_v, zero_v, zero_v, ztsol & … … 1675 1671 zzz=real(90) ! could be revisited 1676 1672 ENDIF 1677 wo(:,:,1)=ozonecm( rlat, paprs,read_climoz,rjour=zzz)1673 wo(:,:,1)=ozonecm(lat_degrees, paprs,read_climoz,rjour=zzz) 1678 1674 ENDIF 1679 1675 ! … … 1730 1726 IF (ip_ebil_phy.ge.2) THEN 1731 1727 ztit='after reevap' 1732 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,1,dtime &1728 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,1,dtime & 1733 1729 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 1734 1730 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1735 call diagphy( airephy,ztit,ip_ebil_phy &1731 call diagphy(cell_area,ztit,ip_ebil_phy & 1736 1732 , zero_v, zero_v, zero_v, zero_v, zero_v & 1737 1733 , zero_v, zero_v, zero_v, ztsol & … … 1777 1773 ! non nul aux poles. 1778 1774 IF (abs(solarlong0-1000.)<1.e-4) then 1779 call zenang_an(cycle_diurne,jH_cur, rlat,rlon,rmu0,fract)1775 call zenang_an(cycle_diurne,jH_cur,lat_degrees,lon_degrees,rmu0,fract) 1780 1776 ELSE 1781 1777 ! Avec ou sans cycle diurne 1782 1778 IF (cycle_diurne) THEN 1783 1779 zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s) 1784 CALL zenang(zlongi,jH_cur,zdtime, rlat,rlon,rmu0,fract)1780 CALL zenang(zlongi,jH_cur,zdtime,lat_degrees,lon_degrees,rmu0,fract) 1785 1781 ELSE 1786 CALL angle(zlongi, rlat, fract, rmu0)1782 CALL angle(zlongi, lat_degrees, fract, rmu0) 1787 1783 ENDIF 1788 1784 ENDIF … … 1854 1850 dtime, date0, itap, days_elapsed+1, & 1855 1851 debut, lafin, & 1856 rlon, rlat, rugoro, rmu0, &1852 lon_degrees, lat_degrees, rugoro, rmu0, & 1857 1853 zsig, sollwdown, pphi, cldt, & 1858 1854 rain_fall, snow_fall, solsw, sollw, & … … 1974 1970 IF (ip_ebil_phy.ge.2) THEN 1975 1971 ztit='after surface_main' 1976 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &1972 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 1977 1973 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 1978 1974 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 1979 call diagphy( airephy,ztit,ip_ebil_phy &1975 call diagphy(cell_area,ztit,ip_ebil_phy & 1980 1976 , zero_v, zero_v, zero_v, zero_v, sens & 1981 1977 , evap , zero_v, zero_v, ztsol & … … 2024 2020 ENDDO 2025 2021 IF (check) THEN 2026 za = qcheck(klon,klev,paprs,q_seri,ql_seri, airephy)2022 za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area) 2027 2023 WRITE(lunout,*) "avantcon=", za 2028 2024 ENDIF … … 2044 2040 DO k = 1, klev 2045 2041 DO i = 1, klon 2046 omega(i,k) = RG*flxmass_w(i,k) / airephy(i)2042 omega(i,k) = RG*flxmass_w(i,k) / cell_area(i) 2047 2043 END DO 2048 2044 END DO … … 2377 2373 IF (ip_ebil_phy.ge.2) THEN 2378 2374 ztit='after convect' 2379 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &2375 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 2380 2376 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 2381 2377 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2382 call diagphy( airephy,ztit,ip_ebil_phy &2378 call diagphy(cell_area,ztit,ip_ebil_phy & 2383 2379 , zero_v, zero_v, zero_v, zero_v, zero_v & 2384 2380 , zero_v, rain_con, snow_con, ztsol & … … 2388 2384 ! 2389 2385 IF (check) THEN 2390 za = qcheck(klon,klev,paprs,q_seri,ql_seri, airephy)2386 za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area) 2391 2387 WRITE(lunout,*)"aprescon=", za 2392 2388 zx_t = 0.0 2393 2389 za = 0.0 2394 2390 DO i = 1, klon 2395 za = za + airephy(i)/REAL(klon)2391 za = za + cell_area(i)/REAL(klon) 2396 2392 zx_t = zx_t + (rain_con(i)+ & 2397 snow_con(i))* airephy(i)/REAL(klon)2393 snow_con(i))*cell_area(i)/REAL(klon) 2398 2394 ENDDO 2399 2395 zx_t = zx_t/za*dtime … … 2542 2538 IF (ip_ebil_phy.ge.2) THEN 2543 2539 ztit='after wake' 2544 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &2540 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 2545 2541 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 2546 2542 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2547 call diagphy( airephy,ztit,ip_ebil_phy &2543 call diagphy(cell_area,ztit,ip_ebil_phy & 2548 2544 , zero_v, zero_v, zero_v, zero_v, zero_v & 2549 2545 , zero_v, zero_v, zero_v, ztsol & … … 2635 2631 ,ztv,zpspsk,ztla,zthl & 2636 2632 !cc nrlmd le 10/04/2012 2637 ,pbl_tke_input,pctsrf,omega, airephy&2633 ,pbl_tke_input,pctsrf,omega,cell_area & 2638 2634 ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 & 2639 2635 ,n2,s2,ale_bl_stat & … … 2858 2854 IF (ip_ebil_phy.ge.2) THEN 2859 2855 ztit='after dry_adjust' 2860 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &2856 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 2861 2857 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 2862 2858 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2863 call diagphy( airephy,ztit,ip_ebil_phy &2859 call diagphy(cell_area,ztit,ip_ebil_phy & 2864 2860 , zero_v, zero_v, zero_v, zero_v, zero_v & 2865 2861 , zero_v, zero_v, zero_v, ztsol & … … 2911 2907 ENDDO 2912 2908 IF (check) THEN 2913 za = qcheck(klon,klev,paprs,q_seri,ql_seri, airephy)2909 za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area) 2914 2910 WRITE(lunout,*)"apresilp=", za 2915 2911 zx_t = 0.0 2916 2912 za = 0.0 2917 2913 DO i = 1, klon 2918 za = za + airephy(i)/REAL(klon)2914 za = za + cell_area(i)/REAL(klon) 2919 2915 zx_t = zx_t + (rain_lsc(i) & 2920 + snow_lsc(i))* airephy(i)/REAL(klon)2916 + snow_lsc(i))*cell_area(i)/REAL(klon) 2921 2917 ENDDO 2922 2918 zx_t = zx_t/za*dtime … … 2926 2922 IF (ip_ebil_phy.ge.2) THEN 2927 2923 ztit='after fisrt' 2928 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &2924 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 2929 2925 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 2930 2926 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2931 call diagphy( airephy,ztit,ip_ebil_phy &2927 call diagphy(cell_area,ztit,ip_ebil_phy & 2932 2928 , zero_v, zero_v, zero_v, zero_v, zero_v & 2933 2929 , zero_v, rain_lsc, snow_lsc, ztsol & … … 3170 3166 IF (ip_ebil_phy.ge.2) THEN 3171 3167 ztit="after diagcld" 3172 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &3168 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 3173 3169 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 3174 3170 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 3175 call diagphy( airephy,ztit,ip_ebil_phy &3171 call diagphy(cell_area,ztit,ip_ebil_phy & 3176 3172 , zero_v, zero_v, zero_v, zero_v, zero_v & 3177 3173 , zero_v, zero_v, zero_v, ztsol & … … 3239 3235 CALL AEROSOL_METEO_CALC( & 3240 3236 calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs, & 3241 prfl,psfl,pctsrf, airephy,rlat,rlon,u10m,v10m)3237 prfl,psfl,pctsrf,cell_area,lat_degrees,lon_degrees,u10m,v10m) 3242 3238 END IF 3243 3239 … … 3248 3244 jH_cur, & 3249 3245 pctsrf(1,1), & 3250 rlat, &3251 rlon, &3252 airephy, &3246 lat_degrees, & 3247 lon_degrees, & 3248 cell_area, & 3253 3249 paprs, & 3254 3250 pplay, & … … 3360 3356 DO i=1,klon 3361 3357 ! 3362 if ( rlon(i).ge.lon1_beta.AND.rlon(i).le.lon2_beta.AND. &3363 rlat(i).le.lat1_beta.AND.rlat(i).ge.lat2_beta) THEN3358 if (lon_degrees(i).ge.lon1_beta.AND.lat_degrees(i).le.lon2_beta.AND. & 3359 lat_degrees(i).le.lat1_beta.AND.lat_degrees(i).ge.lat2_beta) THEN 3364 3360 if (pplay(i,k).GE.pfree) THEN 3365 3361 beta(i,k) = beta_pbl … … 3582 3578 IF (ip_ebil_phy.ge.2) THEN 3583 3579 ztit='after rad' 3584 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &3580 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 3585 3581 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 3586 3582 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 3587 call diagphy( airephy,ztit,ip_ebil_phy &3583 call diagphy(cell_area,ztit,ip_ebil_phy & 3588 3584 , topsw, toplw, solsw, sollw, zero_v & 3589 3585 , zero_v, zero_v, zero_v, ztsol & … … 3681 3677 3682 3678 CALL lift_noro_strato(klon,klev,dtime,paprs,pplay, & 3683 rlat,zmea,zstd,zpic,zgam,zthe,zpic,zval, &3679 lat_degrees,zmea,zstd,zpic,zgam,zthe,zpic,zval, & 3684 3680 igwd,idx,itest, & 3685 3681 t_seri, u_seri, v_seri, & … … 3689 3685 ELSE 3690 3686 CALL lift_noro(klon,klev,dtime,paprs,pplay, & 3691 rlat,zmea,zstd,zpic, &3687 lat_degrees,zmea,zstd,zpic, & 3692 3688 itest, & 3693 3689 t_seri, u_seri, v_seri, & … … 3707 3703 3708 3704 CALL hines_gwd(klon,klev,dtime,paprs,pplay, & 3709 rlat,t_seri,u_seri,v_seri, &3705 lat_degrees,t_seri,u_seri,v_seri, & 3710 3706 zustrhi,zvstrhi, & 3711 3707 d_t_hin, d_u_hin, d_v_hin) … … 3751 3747 CALL aaam_bud (27,klon,klev,jD_cur-jD_ref,jH_cur, & 3752 3748 ra,rg,romega, & 3753 rlat,rlon,pphis, &3749 lat_degrees,lon_degrees,pphis, & 3754 3750 zustrdr,zustrli,zustrph, & 3755 3751 zvstrdr,zvstrli,zvstrph, & … … 3761 3757 IF (ip_ebil_phy.ge.2) THEN 3762 3758 ztit='after orography' 3763 CALL diagetpq( airephy,ztit,ip_ebil_phy,2,2,dtime &3759 CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime & 3764 3760 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 3765 3761 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 3766 call diagphy( airephy,ztit,ip_ebil_phy &3762 call diagphy(cell_area,ztit,ip_ebil_phy & 3767 3763 , zero_v, zero_v, zero_v, zero_v, zero_v & 3768 3764 , zero_v, zero_v, zero_v, ztsol & … … 3798 3794 ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP, & 3799 3795 ecrit_mth,ecrit_day,ecrit_hf, ok_all_xml, & 3800 klon,klev, rlon,rlat,presnivs,overlap, &3796 klon,klev,lon_degrees,lat_degrees,presnivs,overlap, & 3801 3797 fract,ref_liq,ref_ice, & 3802 3798 pctsrf(:,is_ter)+pctsrf(:,is_lic), & … … 3842 3838 zustar, zu10m, zv10m, & 3843 3839 wstar(:,is_ave), ale_bl, ale_wake, & 3844 rlat, rlon, &3840 lat_degrees, lon_degrees, & 3845 3841 frac_impa,frac_nucl, beta_prec_fisrt,beta_prec, & 3846 3842 presnivs, pphis, pphi, albsol1, & … … 3863 3859 print*,'Attention on met a 0 les thermiques pour phystoke' 3864 3860 call phystokenc ( & 3865 nlon,klev,pdtphys, rlon,rlat, &3861 nlon,klev,pdtphys,lon_degrees,lat_degrees, & 3866 3862 t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, & 3867 3863 fm_therm,entr_therm, & 3868 3864 cdragh,coefh(1:klon,1:klev,is_ave),u1,v1,ftsol,pctsrf, & 3869 3865 frac_impa, frac_nucl, & 3870 pphis, airephy,dtime,itap, &3866 pphis,cell_area,dtime,itap, & 3871 3867 qx(:,:,ivap),da,phi,mp,upwd,dnwd) 3872 3868 … … 3908 3904 IF (ip_ebil_phy.ge.1) THEN 3909 3905 ztit='after physic' 3910 CALL diagetpq( airephy,ztit,ip_ebil_phy,1,1,dtime &3906 CALL diagetpq(cell_area,ztit,ip_ebil_phy,1,1,dtime & 3911 3907 , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay & 3912 3908 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) … … 3916 3912 ! Donc la somme de ces 2 variations devrait etre nulle. 3917 3913 3918 call diagphy( airephy,ztit,ip_ebil_phy &3914 call diagphy(cell_area,ztit,ip_ebil_phy & 3919 3915 , topsw, toplw, solsw, sollw, sens & 3920 3916 , evap, rain_fall, snow_fall, ztsol & … … 3964 3960 paprs, & 3965 3961 q_seri, & 3966 airephy, &3962 cell_area, & 3967 3963 pphi, & 3968 3964 pphis, &
Note: See TracChangeset
for help on using the changeset viewer.