Changeset 1795 for LMDZ5/branches/testing/libf/phylmd/physiq.F
- Timestamp:
- Jul 18, 2013, 10:20:28 AM (12 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1747-1749,1751,1753-1767,1769,1771-1772,1774-1776,1778-1794
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/physiq.F
r1750 r1795 31 31 USE fonte_neige_mod, ONLY : fonte_neige_get_vars 32 32 USE phys_output_mod 33 USE phys_output_ctrlout_mod 34 USE iophy 33 35 use open_climoz_m, only: open_climoz ! ozone climatology from a file 34 36 use regr_pr_av_m, only: regr_pr_av 35 37 use netcdf95, only: nf95_close 36 38 cIM for NMC files 37 use netcdf, only: nf90_fill_real 39 c use netcdf, only: nf90_fill_real 40 use netcdf 38 41 use mod_phys_lmdz_mpi_data, only: is_mpi_root 39 42 USE aero_mod … … 45 48 USE CHEM_REP, ONLY : Init_chem_rep_xjour 46 49 #endif 47 50 USE indice_sol_mod 48 51 49 52 !IM stations CFMIP 50 53 USE CFMIP_point_locations 51 54 IMPLICIT none 52 c======================================================================53 c 54 cAuteur(s) Z.X. Li (LMD/CNRS) date: 1993081855 c 56 cObjet: Moniteur general de la physique du modele57 cAA Modifications quant aux traceurs :58 cAA - uniformisation des parametrisations ds phytrac59 cAA - stockage des moyennes des champs necessaires60 cAA en mode traceur off-line61 c======================================================================62 cCLEFS CPP POUR LES IO63 c=====================55 !>====================================================================== 56 !! 57 !! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818 58 !! 59 !! Objet: Moniteur general de la physique du modele 60 !!AA Modifications quant aux traceurs : 61 !!AA - uniformisation des parametrisations ds phytrac 62 !!AA - stockage des moyennes des champs necessaires 63 !!AA en mode traceur off-line 64 !!====================================================================== 65 !! CLEFS CPP POUR LES IO 66 !! ===================== 64 67 #define histNMC 65 68 c#define histISCCP 66 c======================================================================67 cmodif ( P. Le Van , 12/10/98 )68 c 69 cArguments:70 c 71 cnlon----input-I-nombre de points horizontaux72 cnlev----input-I-nombre de couches verticales, doit etre egale a klev73 cdebut---input-L-variable logique indiquant le premier passage74 clafin---input-L-variable logique indiquant le dernier passage75 cjD_cur -R-jour courant a l'appel de la physique (jour julien)76 cjH_cur -R-heure courante a l'appel de la physique (jour julien)77 cpdtphys-input-R-pas d'integration pour la physique (seconde)78 cpaprs---input-R-pression pour chaque inter-couche (en Pa)79 cpplay---input-R-pression pour le mileu de chaque couche (en Pa)80 cpphi----input-R-geopotentiel de chaque couche (g z) (reference sol)81 cpphis---input-R-geopotentiel du sol82 cpresnivs-input_R_pressions approximat. des milieux couches ( en PA)83 cu-------input-R-vitesse dans la direction X (de O a E) en m/s84 cv-------input-R-vitesse Y (de S a N) en m/s85 ct-------input-R-temperature (K)86 cqx------input-R-humidite specifique (kg/kg) et d'autres traceurs87 cd_t_dyn-input-R-tendance dynamique pour "t" (K/s)88 cd_q_dyn-input-R-tendance dynamique pour "q" (kg/kg/s)89 cflxmass_w -input-R- flux de masse verticale90 cd_u-----output-R-tendance physique de "u" (m/s/s)91 cd_v-----output-R-tendance physique de "v" (m/s/s)92 cd_t-----output-R-tendance physique de "t" (K/s)93 cd_qx----output-R-tendance physique de "qx" (kg/kg/s)94 cd_ps----output-R-tendance physique de la pression au sol95 cIM96 cPVteta--output-R-vorticite potentielle a des thetas constantes97 c======================================================================69 !!====================================================================== 70 !! modif ( P. Le Van , 12/10/98 ) 71 !! 72 !! Arguments: 73 !! 74 !! nlon----input-I-nombre de points horizontaux 75 !! nlev----input-I-nombre de couches verticales, doit etre egale a klev 76 !! debut---input-L-variable logique indiquant le premier passage 77 !! lafin---input-L-variable logique indiquant le dernier passage 78 !! jD_cur -R-jour courant a l'appel de la physique (jour julien) 79 !! jH_cur -R-heure courante a l'appel de la physique (jour julien) 80 !! pdtphys-input-R-pas d'integration pour la physique (seconde) 81 !! paprs---input-R-pression pour chaque inter-couche (en Pa) 82 !! pplay---input-R-pression pour le mileu de chaque couche (en Pa) 83 !! pphi----input-R-geopotentiel de chaque couche (g z) (reference sol) 84 !! pphis---input-R-geopotentiel du sol 85 !! presnivs-input_R_pressions approximat. des milieux couches ( en PA) 86 !! u-------input-R-vitesse dans la direction X (de O a E) en m/s 87 !! v-------input-R-vitesse Y (de S a N) en m/s 88 !! t-------input-R-temperature (K) 89 !! qx------input-R-humidite specifique (kg/kg) et d'autres traceurs 90 !! d_t_dyn-input-R-tendance dynamique pour "t" (K/s) 91 !! d_q_dyn-input-R-tendance dynamique pour "q" (kg/kg/s) 92 !! flxmass_w -input-R- flux de masse verticale 93 !! d_u-----output-R-tendance physique de "u" (m/s/s) 94 !! d_v-----output-R-tendance physique de "v" (m/s/s) 95 !! d_t-----output-R-tendance physique de "t" (K/s) 96 !! d_qx----output-R-tendance physique de "qx" (kg/kg/s) 97 !! d_ps----output-R-tendance physique de la pression au sol 98 !!IM 99 !! PVteta--output-R-vorticite potentielle a des thetas constantes 100 !!====================================================================== 98 101 #include "dimensions.h" 99 102 integer jjmp1 … … 103 106 104 107 #include "regdim.h" 105 #include "indicesol.h"106 108 #include "dimsoil.h" 107 109 #include "clesphys.h" … … 218 220 REAL u(klon,klev) 219 221 REAL v(klon,klev) 220 REAL t(klon,klev),theta(klon,klev) 222 REAL t(klon,klev),theta(klon,klev),thetal(klon,klev) 223 c thetal: ligne suivante a decommenter si vous avez les fichiers MPL 20130625 224 c fth_fonctions.F90 et parkind1.F90 225 c sinon thetal=theta 226 c REAL fth_thetae,fth_thetav,fth_thetal 221 227 REAL qx(klon,klev,nqtot) 222 228 REAL flxmass_w(klon,klev) … … 642 648 REAL zw2(klon,klev+1) 643 649 REAL fraca(klon,klev+1) 644 REAL ztv(klon,klev) 650 REAL ztv(klon,klev),ztva(klon,klev) 645 651 REAL zpspsk(klon,klev) 646 REAL ztla(klon,klev) 652 REAL ztla(klon,klev),zqla(klon,klev) 647 653 REAL zthl(klon,klev) 648 654 … … 655 661 real w0(klon) ! Vitesse des thermiques au LCL 656 662 real w_conv(klon) ! Vitesse verticale de grande \'echelle au LCL 663 real tke0(klon,klev+1) ! TKE au début du pas de temps 657 664 real therm_tke_max0(klon) ! TKE dans les thermiques au LCL 658 665 real env_tke_max0(klon) ! TKE dans l'environnement au LCL … … 694 701 cAA 695 702 cAA Pour phytrac 696 cAA697 REAL coefh(klon,klev) ! coef d'echange pour phytrac, valable pour 2<=k<=klev698 REAL coefm(klon,klev) ! coef d'echange pour U, V699 703 REAL u1(klon) ! vents dans la premiere couche U 700 704 REAL v1(klon) ! vents dans la premiere couche V … … 722 726 723 727 REAL bils(klon) ! bilan de chaleur au sol 728 724 729 REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque 725 730 C ! type de sous-surface et pondere par la fraction … … 751 756 SAVE lmt_pas ! frequence de mise a jour 752 757 c$OMP THREADPRIVATE(lmt_pas) 753 real zmasse(klon, llm) 758 real zmasse(klon, llm),exner(klon, llm) 754 759 C (column-density of mass of air in a cell, in kg m-2) 755 760 real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2 … … 1058 1063 . prof2d_av = 3, prof3d_av = 4) 1059 1064 character*30 nom_fichier 1060 character* 10 varname1065 character*40 varname 1061 1066 character*40 vartitle 1062 1067 character*20 varunits … … 1121 1126 LOGICAL, SAVE :: new_aod 1122 1127 c$OMP THREADPRIVATE(new_aod) 1123 1128 c 1129 c--STRAT AEROSOL 1130 LOGICAL, SAVE :: flag_aerosol_strat 1131 c$OMP THREADPRIVATE(flag_aerosol_strat) 1132 cc-fin STRAT AEROSOL 1124 1133 c 1125 1134 c Declaration des constantes et des fonctions thermodynamiques … … 1271 1280 . iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, 1272 1281 . ok_ade, ok_aie, ok_cdnc, aerosol_couple, 1273 . flag_aerosol, new_aod,1282 . flag_aerosol, flag_aerosol_strat, new_aod, 1274 1283 . bl95_b0, bl95_b1, 1275 1284 c nv flags pour la convection et les poches froides … … 1287 1296 pbase=0 1288 1297 cIM 180608 1289 c pmflxr=0.1290 c pmflxs=0.1291 1298 1292 1299 itau_con=0 … … 1395 1402 1396 1403 CALL phyetat0 ("startphy.nc",clesphy0,tabcntr0) 1404 IF (klon_glo==1) THEN 1405 coefh=0. ; coefm=0. ; pbl_tke=0. 1406 coefh(:,2,:)=1.e-2 ; coefm(:,2,:)=1.e-2 ; pbl_tke(:,2,:)=1.e-2 1407 PRINT*,'FH WARNING : lignes a supprimer' 1408 ENDIF 1397 1409 cIM begin 1398 1410 print*,'physiq: clwcon rnebcon ratqs',clwcon(1,1),rnebcon(1,1) … … 1593 1605 & ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, 1594 1606 & read_climoz, phys_out_filestations, 1595 & new_aod, aerosol_couple 1596 & )1607 & new_aod, aerosol_couple, 1608 & flag_aerosol_strat ) 1597 1609 c$OMP END MASTER 1598 1610 c$OMP BARRIER … … 1769 1781 d1a(:,:)=0. 1770 1782 dam(:,:)=0. 1783 pmflxr=0. 1784 pmflxs=0. 1771 1785 ! RomP <<< 1772 1786 … … 1784 1798 ENDDO 1785 1799 ENDDO 1800 tke0(:,:)=pbl_tke(:,:,is_ave) 1786 1801 IF (nqtot.GE.3) THEN 1787 1802 DO iq = 3, nqtot … … 2072 2087 s albsol1, albsol2, sens, evap, 2073 2088 s zxtsol, zxfluxlat, zt2m, qsat2m, 2074 s d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, 2089 s d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_t_diss, 2075 2090 s coefh, coefm, slab_wfbils, 2076 2091 d qsol, zq2m, s_pblh, s_lcl, … … 2088 2103 !----------------------------------------------------------------------------------------- 2089 2104 ! ajout des tendances de la diffusion turbulente 2090 CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf') 2105 CALL add_phys_tend 2106 s (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf') 2091 2107 !----------------------------------------------------------------------------------------- 2092 2108 … … 2658 2674 s ,alp_bl_conv,alp_bl_stat 2659 2675 ccc fin nrlmd le 10/04/2012 2660 s 2676 s ,zqla,ztva ) 2661 2677 2662 2678 ccc nrlmd le 10/04/2012 … … 2966 2982 cg_aero(:,:,:,:) = 0. 2967 2983 ENDIF 2984 c 2985 c--STRAT AEROSOL 2986 c--updates tausum_aero,tau_aero,piz_aero,cg_aero 2987 IF (flag_aerosol_strat) THEN 2988 PRINT *,'appel a readaerosolstrat', mth_cur 2989 CALL readaerosolstrato(debut) 2990 ENDIF 2991 c--fin STRAT AEROSOL 2968 2992 2969 2993 cIM calcul nuages par le simulateur ISCCP … … 3174 3198 $ paprs, 3175 3199 $ pplay, 3176 $ coefh ,3200 $ coefh(:,:,is_ave), 3177 3201 $ pphi, 3178 3202 $ t_seri, … … 3353 3377 e t_seri,q_seri,wo, 3354 3378 e cldfrarad, cldemirad, cldtaurad, 3355 e ok_ade, ok_aie, flag_aerosol, 3379 e ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, 3380 e flag_aerosol_strat, 3356 3381 e tau_aero, piz_aero, cg_aero, 3357 3382 e cldtaupirad,new_aod, … … 3395 3420 e t_seri,q_seri,wo, 3396 3421 e cldfra, cldemi, cldtau, 3397 e ok_ade, ok_aie, flag_aerosol, 3422 e ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, 3423 e flag_aerosol_strat, 3398 3424 e tau_aero, piz_aero, cg_aero, 3399 3425 e cldtaupi,new_aod, … … 3431 3457 solsw=0. 3432 3458 radsol=0. 3459 swup=0. ! MPL 27102011 pour les fichiers AMMA_profiles et AMMA_scalars 3460 swup0=0. 3461 swdn=0. 3462 swdn0=0. 3463 lwup=0. 3464 lwup0=0. 3465 lwdn=0. 3466 lwdn0=0. 3433 3467 END IF 3434 3468 … … 3695 3729 I paprs, pplay, pmfu, pmfd, 3696 3730 I pen_u, pde_u, pen_d, pde_d, 3697 I cdragh, coefh , fm_therm, entr_therm,3731 I cdragh, coefh(:,:,is_ave), fm_therm, entr_therm, 3698 3732 I u1, v1, ftsol, pctsrf, 3699 3733 I ustar, u10m, v10m, … … 3722 3756 I t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, 3723 3757 I fm_therm,entr_therm, 3724 I cdragh,coefh ,u1,v1,ftsol,pctsrf,3758 I cdragh,coefh(:,:,is_ave),u1,v1,ftsol,pctsrf, 3725 3759 I frac_impa, frac_nucl, 3726 3760 I pphis,airephy,dtime,itap, … … 3748 3782 c Accumuler les variables a stocker dans les fichiers histoire: 3749 3783 c 3750 c+jld ec_conser 3751 DO k = 1, klev 3752 DO i = 1, klon 3753 ZRCPD = RCPD*(1.0+RVTMP2*q_seri(i,k)) 3754 d_t_ec(i,k)=0.5/ZRCPD 3755 $ *(u(i,k)**2+v(i,k)**2-u_seri(i,k)**2-v_seri(i,k)**2) 3756 ENDDO 3757 ENDDO 3758 3759 DO k = 1, klev 3760 DO i = 1, klon 3761 t_seri(i,k)=t_seri(i,k)+d_t_ec(i,k) 3762 d_t_ec(i,k) = d_t_ec(i,k)/dtime 3763 END DO 3764 END DO 3765 c-jld ec_conser 3784 3785 !================================================================ 3786 ! Conversion of kinetic and potential energy into heat, for 3787 ! parameterisation of subgrid-scale motions 3788 !================================================================ 3789 3790 d_t_ec(:,:)=0. 3791 forall (k=1: llm) exner(:, k) = (pplay(:, k)/paprs(:,1))**RKAPPA 3792 CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx(:,:,ivap), 3793 s u_seri,v_seri,t_seri,q_seri,pbl_tke(:,:,is_ave)-tke0(:,:), 3794 s zmasse,exner,d_t_ec) 3795 t_seri(:,:)=t_seri(:,:)+d_t_ec(:,:) 3796 3766 3797 cIM 3767 3798 IF (ip_ebil_phy.ge.1) THEN … … 3833 3864 END IF 3834 3865 3835 c============================================================= 3866 3836 3867 c 3837 3868 c Convertir les incrementations en tendances … … 3946 3977 cJYG/IM theta en fin de pas de temps de physique 3947 3978 theta(i,k)=t_seri(i,k)*(100000./pplay(i,k))**(RD/RCPD) 3979 c thetal: 2 lignes suivantes a decommenter si vous avez les fichiers MPL 20130625 3980 c fth_fonctions.F90 et parkind1.F90 3981 c sinon thetal=theta 3982 c thetal(i,k)=fth_thetal(pplay(i,k),t_seri(i,k),q_seri(i,k), 3983 c : ql_seri(i,k)) 3984 thetal(i,k)=theta(i,k) 3948 3985 ENDDO 3949 3986 ENDDO … … 3962 3999 CALL fonte_neige_get_vars(pctsrf, 3963 4000 . zxfqcalving, zxfqfonte, zxffonte) 4001 3964 4002 3965 4003 … … 3993 4031 endif 3994 4032 3995 3996 #include "phys_output_write.h" 4033 #include "phys_output_write_new.h" 4034 4035 4036 3997 4037 3998 4038 #ifdef histISCCP … … 4072 4112 ENDIF !if callstats 4073 4113 4074 4075 4114 IF (lafin) THEN 4076 4115 itau_phy = itau_phy + itap
Note: See TracChangeset
for help on using the changeset viewer.