Changeset 2799 for LMDZ5/trunk/libf/phylmd/physiq_mod.F90
- Timestamp:
- Feb 24, 2017, 7:50:33 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/phylmd/physiq_mod.F90
r2795 r2799 242 242 243 243 USE cmp_seri_mod 244 USE add_phys_tend_mod, only : add_pbl_tend, add_phys_tend, prt_enerbil, & 245 & fl_ebil, fl_cor_ebil 244 246 245 247 !IM stations CFMIP … … 406 408 REAL pphis(klon) 407 409 REAL presnivs(klev) 408 REAL znivsig(klev)409 real pir410 !JLD REAL znivsig(klev) 411 !JLD real pir 410 412 411 413 REAL u(klon,klev) … … 467 469 ! jmin_debut : indice minimum de j; nbptj : nombre de points en 468 470 ! direction j (latitude) 469 INTEGER imin_debut, nbpti470 INTEGER jmin_debut, nbptj471 !JLD INTEGER imin_debut, nbpti 472 !JLD INTEGER jmin_debut, nbptj 471 473 !IM: region='3d' <==> sorties en global 472 474 CHARACTER*3 region … … 617 619 real env_tke_max0(klon) ! TKE dans l'environnement au LCL 618 620 619 !---D\'eclenchement stochastique620 integer :: tau_trig(klon)621 !JLD !---D\'eclenchement stochastique 622 !JLD integer :: tau_trig(klon) 621 623 622 624 REAL,SAVE :: random_notrig_max=1. … … 652 654 REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt) 653 655 ! RomP <<< 654 655 REAL :: calday656 656 657 657 !IM cf FH pour Tiedtke 080604 … … 751 751 REAL conv_t(klon,klev) ! convergence de la temperature(K/s) 752 752 ! 753 #ifdef INCA 753 754 REAL zxsnow_dummy(klon) 755 #endif 754 756 REAL zsav_tsol(klon) 755 757 ! … … 762 764 LOGICAL zx_ajustq 763 765 ! 764 REAL za , zb765 REAL zx_t, zx_qs, zdelta, zcor , zlvdcp, zlsdcp766 REAL za 767 REAL zx_t, zx_qs, zdelta, zcor 766 768 real zqsat(klon,klev) 767 769 ! 768 INTEGER i, k, iq, j, nsrf, ll, l770 INTEGER i, k, iq, nsrf, l 769 771 ! 770 772 REAL t_coup … … 874 876 875 877 ! 876 integer itau_w ! pas de temps ecriture = itap + itau_phy878 !JLD integer itau_w ! pas de temps ecriture = itap + itau_phy 877 879 ! 878 880 ! … … 886 888 REAL tabcntr0( length ) 887 889 ! 888 INTEGER ndex2d(nbp_lon*nbp_lat)890 !JLD INTEGER ndex2d(nbp_lon*nbp_lat) 889 891 !IM 890 892 ! 891 893 !IM AMIP2 BEG 892 REAL moyglo, mountor894 !JLD REAL moyglo, mountor 893 895 !IM 141004 BEG 894 896 REAL zustrdr(klon), zvstrdr(klon) … … 904 906 ! REAL airedyn(nbp_lon+1,nbp_lat) 905 907 !IM 190504 END 906 LOGICAL ok_msk907 REAL msk(klon)908 !JLD LOGICAL ok_msk 909 !JLD REAL msk(klon) 908 910 !ym A voir plus tard 909 911 !ym REAL zm_wo(jjmp1, klev) … … 912 914 REAL zx_tmp_fi2d(klon) ! variable temporaire grille physique 913 915 REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D 914 REAL zx_tmp_2d(nbp_lon,nbp_lat)915 REAL zx_lon(nbp_lon,nbp_lat)916 REAL zx_lat(nbp_lon,nbp_lat)916 !JLD REAL zx_tmp_2d(nbp_lon,nbp_lat) 917 !JLD REAL zx_lon(nbp_lon,nbp_lat) 918 !JLD REAL zx_lat(nbp_lon,nbp_lat) 917 919 ! 918 920 INTEGER nid_ctesGCM … … 930 932 REAL uq_lay(klon,klev) ! transport zonal de l'eau a chaque niveau vert. 931 933 ! 932 REAL zjulian933 SAVE zjulian934 ! $OMP THREADPRIVATE(zjulian)935 936 INTEGER nhori, nvert937 REAL zsto938 REAL zstophy, zout934 !JLD REAL zjulian 935 !JLD SAVE zjulian 936 !JLD!$OMP THREADPRIVATE(zjulian) 937 938 !JLD INTEGER nhori, nvert 939 !JLD REAL zsto 940 !JLD REAL zstophy, zout 939 941 940 942 character*20 modname … … 950 952 parameter (prof2d_on = 1, prof3d_on = 2, & 951 953 prof2d_av = 3, prof3d_av = 4) 952 ! Variables liees au bilan d'energie et d'enthalpi953 954 REAL ztsol(klon) 954 REAL d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec955 REAL d_h_vcol_phy956 REAL fs_bound, fq_bound957 SAVE d_h_vcol_phy958 !$OMP THREADPRIVATE(d_h_vcol_phy)959 REAL zero_v(klon)960 CHARACTER*40 ztit961 INTEGER ip_ebil ! PRINT level for energy conserv. diag.962 SAVE ip_ebil963 DATA ip_ebil/0/964 !$OMP THREADPRIVATE(ip_ebil)965 955 REAL q2m(klon,nbsrf) ! humidite a 2m 966 956 967 957 !IM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 968 958 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max 969 CHARACTER*40 tinst, tave , typeval959 CHARACTER*40 tinst, tave 970 960 REAL cldtaupi(klon,klev) ! Cloud optical thickness for 971 961 ! pre-industrial (pi) aerosols … … 1025 1015 ! vars_climoz(1:read_climoz): variables names in climoz file. 1026 1016 1027 INTEGER ierr1028 1017 include "YOMCST.h" 1029 1018 include "YOETHF.h" … … 1039 1028 ! Declarations pour Simulateur COSP 1040 1029 !============================================================ 1030 #ifdef CPP_COSP 1041 1031 real :: mr_ozone(klon,klev) 1042 1032 #endif 1043 1033 !IM stations CFMIP 1044 1034 INTEGER, SAVE :: nCFMIP … … 1089 1079 !--OB variables for mass fixer (hard coded for now) 1090 1080 logical, parameter :: mass_fixer=.false. 1091 real qql1(klon),qql2(klon), zdz,corrqql1081 real qql1(klon),qql2(klon),corrqql 1092 1082 1093 1083 ! Ehouarn: set value of jjmp1 since it is no longer a "fixed parameter" … … 1193 1183 1194 1184 modname = 'physiq' 1195 !IM1196 IF (ip_ebil_phy.ge.1) THEN1197 DO i=1,klon1198 zero_v(i)=0.1199 ENDDO1200 ENDIF1201 1185 1202 1186 IF (debut) THEN … … 1210 1194 iflag_wake_tend = 0 1211 1195 CALL getin_p('iflag_wake_tend',iflag_wake_tend) 1196 ok_bad_ecmwf_thermo=.TRUE. ! By default thermodynamical constants are set 1197 ! in rrtm/suphec.F90 (and rvtmp2 is set to 0). 1198 CALL getin_p('ok_bad_ecmwf_thermo',ok_bad_ecmwf_thermo) 1199 fl_ebil = 0 ! by default, conservation diagnostics are desactivated 1200 CALL getin_p('fl_ebil',fl_ebil) 1201 fl_cor_ebil = 0 ! by default, no correction to ensure energy conservation 1202 CALL getin_p('fl_cor_ebil',fl_cor_ebil) 1212 1203 ENDIF 1213 1204 … … 1273 1264 clwcon(:,:) = 0.0 1274 1265 1275 !IM1276 IF (ip_ebil_phy.ge.1) d_h_vcol_phy=0.1277 1266 ! 1278 1267 print*,'iflag_coupl,iflag_clos,iflag_wake', & … … 2008 1997 CALL add_phys_tend & 2009 1998 (du0,dv0,d_t_eva,d_q_eva,d_ql_eva,d_qi_eva,paprs,& 2010 'eva',abortphy,flag_inhib_tend) 1999 'eva',abortphy,flag_inhib_tend,itap) 2000 call prt_enerbil('eva',itap) 2011 2001 2012 2002 !========================================================================= … … 2230 2220 CALL add_pbl_tend & 2231 2221 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2232 'vdf',abortphy,flag_inhib_tend )2222 'vdf',abortphy,flag_inhib_tend,itap) 2233 2223 ELSE 2234 2224 CALL add_phys_tend & 2235 2225 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,paprs,& 2236 'vdf',abortphy,flag_inhib_tend) 2237 ENDIF 2226 'vdf',abortphy,flag_inhib_tend,itap) 2227 ENDIF 2228 call prt_enerbil('vdf',itap) 2238 2229 !-------------------------------------------------------------------- 2239 2230 … … 2616 2607 2617 2608 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, & 2618 'convection',abortphy,flag_inhib_tend) 2609 'convection',abortphy,flag_inhib_tend,itap) 2610 call prt_enerbil('convection',itap) 2619 2611 2620 2612 !------------------------------------------------------------------------- … … 2745 2737 ! ajout des tendances des poches froides 2746 2738 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,paprs,'wake', & 2747 abortphy,flag_inhib_tend) 2739 abortphy,flag_inhib_tend,itap) 2740 call prt_enerbil('wake',itap) 2748 2741 !------------------------------------------------------------------------ 2749 2742 … … 2754 2747 (d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk, wake_k, & 2755 2748 'wake', abortphy) 2756 2749 call prt_enerbil('wake',itap) 2757 2750 ENDIF ! (iflag_wake_tend .GT. 0.) 2758 2751 … … 2875 2868 CALL add_wake_tend & 2876 2869 (d_deltat_the, d_deltaq_the, dsig0, ddens0, wkoccur1, 'the', abortphy) 2870 call prt_enerbil('the',itap) 2877 2871 ! 2878 2872 ENDIF ! (mod(iflag_pbl_split/2,2) .EQ. 1) 2879 2873 ! 2880 2874 CALL add_phys_tend(d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs, & 2881 dql0,dqi0,paprs,'thermals', abortphy,flag_inhib_tend) 2875 dql0,dqi0,paprs,'thermals', abortphy,flag_inhib_tend,itap) 2876 call prt_enerbil('thermals',itap) 2882 2877 ! 2883 2878 ! … … 2941 2936 ! ajout des tendances de l'ajustement sec ou des thermiques 2942 2937 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,paprs, & 2943 'ajsb',abortphy,flag_inhib_tend) 2938 'ajsb',abortphy,flag_inhib_tend,itap) 2939 call prt_enerbil('ajsb',itap) 2944 2940 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2945 2941 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) … … 2984 2980 WHERE (snow_lsc < 0) snow_lsc = 0. 2985 2981 2982 !+JLD 2983 ! write(*,9000) 'phys lsc',"enerbil: bil_q, bil_e,",rain_lsc+snow_lsc & 2984 ! & ,((rcw-rcpd)*rain_lsc + (rcs-rcpd)*snow_lsc)*t_seri(1,1)-rlvtt*rain_lsc+rlstt*snow_lsc & 2985 ! & ,rain_lsc,snow_lsc 2986 ! write(*,9000) "rcpv","rcw",rcpv,rcw,rcs,t_seri(1,1) 2987 !-JLD 2986 2988 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,paprs, & 2987 'lsc',abortphy,flag_inhib_tend) 2989 'lsc',abortphy,flag_inhib_tend,itap) 2990 call prt_enerbil('lsc',itap) 2988 2991 rain_num(:)=0. 2989 2992 DO k = 1, klev … … 3764 3767 ENDDO 3765 3768 3766 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy,flag_inhib_tend) 3767 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy,flag_inhib_tend) 3769 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,paprs,'SW',abortphy,flag_inhib_tend,itap) 3770 call prt_enerbil('SW',itap) 3771 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,paprs,'LW',abortphy,flag_inhib_tend,itap) 3772 call prt_enerbil('LW',itap) 3768 3773 3769 3774 ! … … 3835 3840 ! ajout des tendances de la trainee de l'orographie 3836 3841 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,paprs,'oro', & 3837 abortphy,flag_inhib_tend) 3842 abortphy,flag_inhib_tend,itap) 3843 call prt_enerbil('oro',itap) 3838 3844 !---------------------------------------------------------------------- 3839 3845 ! … … 3881 3887 ! ajout des tendances de la portance de l'orographie 3882 3888 CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, paprs, & 3883 'lif', abortphy,flag_inhib_tend) 3889 'lif', abortphy,flag_inhib_tend,itap) 3890 call prt_enerbil('lif',itap) 3884 3891 ENDIF ! fin de test sur ok_orolf 3885 3892 … … 3904 3911 d_t_hin(:, :)=0. 3905 3912 CALL add_phys_tend(du_gwd_hines, dv_gwd_hines, d_t_hin, dq0, dql0, & 3906 dqi0, paprs, 'hin', abortphy,flag_inhib_tend) 3913 dqi0, paprs, 'hin', abortphy,flag_inhib_tend,itap) 3914 call prt_enerbil('hin',itap) 3907 3915 ENDIF 3908 3916 … … 3921 3929 3922 3930 CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, & 3923 paprs, 'front_gwd_rando', abortphy,flag_inhib_tend) 3931 paprs, 'front_gwd_rando', abortphy,flag_inhib_tend,itap) 3932 call prt_enerbil('front_gwd_rando',itap) 3924 3933 ENDIF 3925 3934 … … 3929 3938 du_gwd_rando, dv_gwd_rando, east_gwstress, west_gwstress) 3930 3939 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, & 3931 paprs, 'flott_gwd_rando', abortphy,flag_inhib_tend) 3940 paprs, 'flott_gwd_rando', abortphy,flag_inhib_tend,itap) 3941 call prt_enerbil('flott_gwd_rando',itap) 3932 3942 zustr_gwd_rando=0. 3933 3943 zvstr_gwd_rando=0. … … 3979 3989 ! ajout de la tendance d'humidite due au methane 3980 3990 CALL add_phys_tend(du0, dv0, dt0, d_q_ch4*dtime, dql0, dqi0, paprs, & 3981 'q_ch4', abortphy,flag_inhib_tend )3991 'q_ch4', abortphy,flag_inhib_tend,itap) 3982 3992 ENDIF 3983 3993 !
Note: See TracChangeset
for help on using the changeset viewer.