Changeset 4523 for LMDZ6/trunk/libf/phylmd/physiq_mod.F90
- Timestamp:
- May 3, 2023, 6:21:08 PM (17 months ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk
- Property svn:mergeinfo changed
/LMDZ6/branches/blowing_snow (added) merged: 4485,4504,4506,4521
- Property svn:mergeinfo changed
-
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4519 r4523 84 84 USE atke_turbulence_ini_mod, ONLY : atke_ini 85 85 USE thermcell_ini_mod, ONLY : thermcell_ini 86 USE blowing_snow_ini_mod, ONLY : blowing_snow_ini , qbst_bs 86 87 USE lscp_ini_mod, ONLY : lscp_ini 87 88 … … 144 145 ! [Variables internes non sauvegardees de la physique] 145 146 ! Variables locales pour effectuer les appels en serie 146 t_seri,q_seri,ql_seri,qs_seri, u_seri,v_seri,tr_seri,rneb_seri, &147 t_seri,q_seri,ql_seri,qs_seri,qbs_seri,u_seri,v_seri,tr_seri,rneb_seri, & 147 148 rhcl, & 148 149 ! Dynamic tendencies (diagnostics) 149 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_ u_dyn,d_v_dyn,d_tr_dyn,d_rneb_dyn, &150 d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d, &150 d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_qbs_dyn,d_u_dyn,d_v_dyn,d_tr_dyn,d_rneb_dyn, & 151 d_q_dyn2d,d_ql_dyn2d,d_qs_dyn2d,d_qbs_dyn2d, & 151 152 ! Physic tendencies 152 153 d_t_con,d_q_con,d_u_con,d_v_con, & … … 165 166 plul_st,plul_th, & 166 167 ! 167 d_t_vdf,d_q_vdf, d_u_vdf,d_v_vdf,d_t_diss, &168 d_t_vdf,d_q_vdf, d_qbs_vdf, d_u_vdf,d_v_vdf,d_t_diss, & 168 169 d_t_vdf_x, d_t_vdf_w, & 169 170 d_q_vdf_x, d_q_vdf_w, & 170 171 d_ts, & 172 ! 173 d_t_bs,d_q_bs,d_qbs_bs, & 171 174 ! 172 175 ! d_t_oli,d_u_oli,d_v_oli, & … … 216 219 cldh, cldl,cldm, cldq, cldt, & 217 220 JrNt, & 218 dthmin, evap, fder, plcl, plfc, &219 prw, prlw, prsw, &221 dthmin, evap, snowerosion,fder, plcl, plfc, & 222 prw, prlw, prsw, prbsw, & 220 223 s_lcl, s_pblh, s_pblt, s_therm, & 221 224 cdragm, cdragh, & … … 305 308 fsolsw, wfbils, wfbilo, & 306 309 wfevap, wfrain, wfsnow, & 307 prfl, psfl, fraca, Vprecip, &310 prfl, psfl,bsfl, fraca, Vprecip, & 308 311 zw2, & 309 312 ! … … 461 464 !====================================================================== 462 465 ! 463 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional) 464 INTEGER,SAVE :: ivap, iliq, isol, irneb 465 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb )466 ! indices de traceurs eau vapeur, liquide, glace, fraction nuageuse LS (optional), blowing snow (optional) 467 INTEGER,SAVE :: ivap, iliq, isol, irneb, ibs 468 !$OMP THREADPRIVATE(ivap, iliq, isol, irneb, ibs) 466 469 ! 467 470 ! … … 834 837 !XXX PB 835 838 REAL fluxq(klon,klev, nbsrf) ! flux turbulent d'humidite 839 REAL fluxqbs(klon,klev, nbsrf) ! flux turbulent de neige soufflee 836 840 ! 837 841 REAL zxfluxt(klon, klev) 838 842 REAL zxfluxq(klon, klev) 843 REAL zxfluxqbs(klon,klev) 839 844 REAL zxfluxu(klon, klev) 840 845 REAL zxfluxv(klon, klev) … … 920 925 ! 921 926 ! tendance nulles 922 REAL, dimension(klon,klev):: du0, dv0, dt0, dq0, dql0, dqi0 927 REAL, dimension(klon,klev):: du0, dv0, dt0, dq0, dql0, dqi0, dqbs0 923 928 REAL, dimension(klon) :: dsig0, ddens0 924 929 INTEGER, dimension(klon) :: wkoccur1 … … 1066 1071 REAL ztsol(klon) 1067 1072 REAL q2m(klon,nbsrf) ! humidite a 2m 1068 1073 REAL fsnowerosion(klon,nbsrf) ! blowing snow flux at surface 1074 REAL qbsfra ! blowing snow fraction 1069 1075 !IM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels 1070 1076 CHARACTER*40 t2mincels, t2maxcels !t2m min., t2m max … … 1276 1282 isol = strIdx(tracers(:)%name, addPhase('H2O', 's')) 1277 1283 irneb= strIdx(tracers(:)%name, addPhase('H2O', 'r')) 1284 ibs = strIdx(tracers(:)%name, addPhase('H2O', 'b')) 1278 1285 CALL init_etat0_limit_unstruct 1279 1286 IF (.NOT. create_etat0_limit) CALL init_limit_read(days_elapsed) … … 1325 1332 ENDIF 1326 1333 1327 IF (ok_ice_sursat.AND.(nqo. NE.4)) THEN1334 IF (ok_ice_sursat.AND.(nqo.LT.4)) THEN 1328 1335 WRITE (lunout, *) ' ok_ice_sursat=y requires 4 H2O tracers ', & 1329 1336 '(H2O_g, H2O_l, H2O_s, H2O_r) but nqo=', nqo, '. Might as well stop here.' … … 1343 1350 CALL abort_physic(modname,abort_message,1) 1344 1351 ENDIF 1352 1353 IF (ok_bs) THEN 1354 IF ((ok_ice_sursat.AND.nqo .LT.5).OR.(.NOT.ok_ice_sursat.AND.nqo.LT.4)) THEN 1355 WRITE (lunout, *) 'activation of blowing snow needs a specific H2O tracer', & 1356 'but nqo=', nqo 1357 abort_message='see above' 1358 CALL abort_physic(modname,abort_message, 1) 1359 ENDIF 1360 ENDIF 1345 1361 1346 1362 Ncvpaseq1 = 0 … … 1761 1777 CALL lscp_ini(pdtphys,ok_ice_sursat) 1762 1778 endif 1779 CALL blowing_snow_ini(prt_level,lunout, & 1780 RCPD, RLSTT, RLVTT, RLMLT, & 1781 RVTMP2, RTT,RD,RG) 1782 1763 1783 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1764 1784 … … 1786 1806 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 1787 1807 pplay, lmax_th, aerosol_couple, & 1788 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, ok_sync,&1808 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, ibs, ok_sync,& 1789 1809 ptconv, read_climoz, clevSTD, & 1790 1810 ptconvth, d_u, d_t, qx, d_qx, zmasse, & … … 2257 2277 dql0(:,:)=0. 2258 2278 dqi0(:,:)=0. 2279 dqbs0(:,:)=0. 2259 2280 dsig0(:) = 0. 2260 2281 ddens0(:) = 0. … … 2309 2330 q_seri(i,k) = qx(i,k,ivap) 2310 2331 ql_seri(i,k) = qx(i,k,iliq) 2332 qbs_seri(i,k) = 0. 2311 2333 !CR: ATTENTION, on rajoute la variable glace 2312 2334 IF (nqo.EQ.2) THEN !--vapour and liquid only … … 2316 2338 qs_seri(i,k) = qx(i,k,isol) 2317 2339 rneb_seri(i,k) = 0. 2318 ELSE IF (nqo. EQ.4) THEN !--vapour, liquid, ice and rneb2340 ELSE IF (nqo.GE.4) THEN !--vapour, liquid, ice and rneb and blowing snow 2319 2341 qs_seri(i,k) = qx(i,k,isol) 2342 IF (ok_ice_sursat) THEN 2320 2343 rneb_seri(i,k) = qx(i,k,irneb) 2344 ENDIF 2345 IF (ok_bs) THEN 2346 qbs_seri(i,k)= qx(i,k,ibs) 2347 ENDIF 2348 2321 2349 ENDIF 2350 2351 2322 2352 ENDDO 2323 2353 ENDDO … … 2328 2358 qql1(:)=0.0 2329 2359 DO k = 1, klev 2330 qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k) )*zmasse(:,k)2360 qql1(:)=qql1(:)+(q_seri(:,k)+ql_seri(:,k)+qs_seri(:,k)+qbs_seri(:,k))*zmasse(:,k) 2331 2361 ENDDO 2332 2362 ENDIF … … 2384 2414 d_ql_dyn(:,:) = (ql_seri(:,:)-ql_ancien(:,:))/phys_tstep 2385 2415 d_qs_dyn(:,:) = (qs_seri(:,:)-qs_ancien(:,:))/phys_tstep 2416 d_qbs_dyn(:,:) = (qbs_seri(:,:)-qbs_ancien(:,:))/phys_tstep 2386 2417 CALL water_int(klon,klev,q_seri,zmasse,zx_tmp_fi2d) 2387 2418 d_q_dyn2d(:)=(zx_tmp_fi2d(:)-prw_ancien(:))/phys_tstep … … 2390 2421 CALL water_int(klon,klev,qs_seri,zmasse,zx_tmp_fi2d) 2391 2422 d_qs_dyn2d(:)=(zx_tmp_fi2d(:)-prsw_ancien(:))/phys_tstep 2423 CALL water_int(klon,klev,qbs_seri,zmasse,zx_tmp_fi2d) 2424 d_qbs_dyn2d(:)=(zx_tmp_fi2d(:)-prbsw_ancien(:))/phys_tstep 2392 2425 ! !! RomP >>> td dyn traceur 2393 2426 IF (nqtot > nqo) d_tr_dyn(:,:,:)=(tr_seri(:,:,:)-tr_ancien(:,:,:))/phys_tstep … … 2405 2438 d_ql_dyn2d(:) = 0.0 2406 2439 d_qs_dyn2d(:) = 0.0 2440 d_qbs_dyn2d(:)= 0.0 2407 2441 ! !! RomP >>> td dyn traceur 2408 2442 IF (nqtot > nqo) d_tr_dyn(:,:,:)= 0.0 2409 2443 ! !! RomP <<< 2410 2444 d_rneb_dyn(:,:)=0.0 2445 d_qbs_dyn(:,:)=0.0 2411 2446 ancien_ok = .TRUE. 2412 2447 ENDIF … … 2524 2559 2525 2560 CALL add_phys_tend & 2526 (du0,dv0,d_t_eva,d_q_eva,d_ql_eva,d_qi_eva, paprs,&2561 (du0,dv0,d_t_eva,d_q_eva,d_ql_eva,d_qi_eva,dqbs0,paprs,& 2527 2562 'eva',abortphy,flag_inhib_tend,itap,0) 2528 2563 CALL prt_enerbil('eva',itap) … … 2689 2724 longitude_deg, latitude_deg, rugoro, zrmu0, & 2690 2725 sollwdown, cldt, & 2691 rain_fall, snow_fall, solsw, solswfdiff, sollw, &2726 rain_fall, snow_fall, bs_fall, solsw, solswfdiff, sollw, & 2692 2727 gustiness, & 2693 t_seri, q_seri, u_seri, v_seri, &2728 t_seri, q_seri, qbs_seri, u_seri, v_seri, & 2694 2729 !nrlmd+jyg< 2695 2730 wake_deltat, wake_deltaq, wake_cstar, wake_s, & … … 2702 2737 !albedo SB >>> 2703 2738 ! albsol1, albsol2, sens, evap, & 2704 albsol_dir, albsol_dif, sens, evap, 2739 albsol_dir, albsol_dif, sens, evap, snowerosion, & 2705 2740 !albedo SB <<< 2706 2741 albsol3_lic,runoff, snowhgt, qsnow, to_ice, sissnow, & 2707 2742 zxtsol, zxfluxlat, zt2m, qsat2m, zn2mout, & 2708 d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_t_diss, &2743 d_t_vdf, d_q_vdf, d_qbs_vdf, d_u_vdf, d_v_vdf, d_t_diss, & 2709 2744 !nrlmd< 2710 2745 !jyg< … … 2732 2767 fluxt, fluxu, fluxv, & 2733 2768 dsens, devap, zxsnow, & 2734 zxfluxt, zxfluxq, q2m, fluxq, pbl_tke, &2769 zxfluxt, zxfluxq, zxfluxqbs, q2m, fluxq, fluxqbs, pbl_tke, & 2735 2770 !nrlmd+jyg< 2736 2771 wake_delta_pbl_TKE, & … … 2757 2792 IF (klon_glo==1) THEN 2758 2793 CALL add_pbl_tend & 2759 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0, paprs,&2794 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,d_qbs_vdf,paprs,& 2760 2795 'vdf',abortphy,flag_inhib_tend,itap) 2761 2796 ELSE 2762 2797 CALL add_phys_tend & 2763 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0, paprs,&2798 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,dqi0,d_qbs_vdf,paprs,& 2764 2799 'vdf',abortphy,flag_inhib_tend,itap,0) 2765 2800 ENDIF 2766 2801 CALL prt_enerbil('vdf',itap) 2802 2767 2803 !-------------------------------------------------------------------- 2768 2804 … … 2815 2851 2816 2852 ENDIF 2853 2854 ! ================================================================== 2855 ! Blowing snow sublimation and sedimentation 2856 2857 d_t_bs(:,:)=0. 2858 d_q_bs(:,:)=0. 2859 d_qbs_bs(:,:)=0. 2860 bsfl(:,:)=0. 2861 bs_fall(:)=0. 2862 IF (ok_bs) THEN 2863 2864 CALL call_blowing_snow_sublim_sedim(klon,klev,phys_tstep,t_seri,q_seri,qbs_seri,pplay,paprs, & 2865 d_t_bs,d_q_bs,d_qbs_bs,bsfl,bs_fall) 2866 2867 CALL add_phys_tend & 2868 (du0,dv0,d_t_bs,d_q_bs,dql0,dqi0,d_qbs_bs,paprs,& 2869 'bs',abortphy,flag_inhib_tend,itap,0) 2870 2871 ENDIF 2872 2817 2873 ! =================================================================== c 2818 2874 ! Calcul de Qsat … … 3239 3295 !! 3240 3296 !! 3241 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, &3297 CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, dqbs0, paprs, & 3242 3298 'convection',abortphy,flag_inhib_tend,itap,0) 3243 3299 CALL prt_enerbil('convection',itap) … … 3370 3426 !----------------------------------------------------------------------- 3371 3427 ! ajout des tendances des poches froides 3372 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0, paprs,'wake', &3428 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,dqi0,dqbs0,paprs,'wake', & 3373 3429 abortphy,flag_inhib_tend,itap,0) 3374 3430 CALL prt_enerbil('wake',itap) … … 3528 3584 ! 3529 3585 CALL add_phys_tend(d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs, & 3530 dql0,dqi0, paprs,'thermals', abortphy,flag_inhib_tend,itap,0)3586 dql0,dqi0,dqbs0,paprs,'thermals', abortphy,flag_inhib_tend,itap,0) 3531 3587 CALL prt_enerbil('thermals',itap) 3532 3588 ! … … 3590 3646 !-------------------------------------------------------------------- 3591 3647 ! ajout des tendances de l'ajustement sec ou des thermiques 3592 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0, paprs, &3648 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,dqi0,dqbs0,paprs, & 3593 3649 'ajsb',abortphy,flag_inhib_tend,itap,0) 3594 3650 CALL prt_enerbil('ajsb',itap) … … 3679 3735 ! write(*,9000) "rcpv","rcw",rcpv,rcw,rcs,t_seri(1,1) 3680 3736 !-JLD 3681 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc, paprs, &3737 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc,dqbs0,paprs, & 3682 3738 'lsc',abortphy,flag_inhib_tend,itap,0) 3683 3739 CALL prt_enerbil('lsc',itap) … … 3702 3758 ENDIF 3703 3759 3704 !--------------------------------------------------------------------------- 3760 3761 !--------------------------------------------------------------------------- 3705 3762 DO k = 1, klev 3706 3763 DO i = 1, klon 3707 3764 cldfra(i,k) = rneb(i,k) 3708 3765 !CR: a quoi ca sert? Faut-il ajouter qs_seri? 3766 !EV: en effet etrange, j'ajouterais aussi qs_seri 3767 ! plus largement, je nettoierais (enleverrais) ces lignes 3709 3768 IF (.NOT.new_oliq) radocond(i,k) = ql_seri(i,k) 3710 3769 ENDDO 3711 3770 ENDDO 3771 3772 3773 ! Option to activate the radiative effect of blowing snow (ok_rad_bs) 3774 ! makes sense only if the new large scale condensation scheme is active 3775 ! with the ok_icefra_lscp flag active as well 3776 3777 IF (ok_bs .AND. ok_rad_bs) THEN 3778 IF (ok_new_lscp .AND. ok_icefra_lscp) THEN 3779 DO k=1,klev 3780 DO i=1,klon 3781 radocond(i,k)=radocond(i,k)+qbs_seri(i,k) 3782 picefra(i,k)=(radocond(i,k)*picefra(i,k)+qbs_seri(i,k))/(radocond(i,k)) 3783 qbsfra=min(qbs_seri(i,k)/qbst_bs,1.0) 3784 cldfra(i,k)=max(cldfra(i,k),qbsfra) 3785 ENDDO 3786 ENDDO 3787 ELSE 3788 WRITE(lunout,*)"PAY ATTENTION, you try to activate the radiative effect of blowing snow" 3789 WRITE(lunout,*)"with ok_new_lscp=false and/or ok_icefra_lscp=false" 3790 abort_message='inconsistency in cloud phase for blowing snow' 3791 CALL abort_physic(modname,abort_message,1) 3792 ENDIF 3793 3794 ENDIF 3795 3712 3796 IF (check) THEN 3713 3797 za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area) … … 4510 4594 ENDDO 4511 4595 4512 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0, paprs,'SW',abortphy,flag_inhib_tend,itap,0)4596 CALL add_phys_tend(du0,dv0,d_t_swr,dq0,dql0,dqi0,dqbs0,paprs,'SW',abortphy,flag_inhib_tend,itap,0) 4513 4597 CALL prt_enerbil('SW',itap) 4514 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0, paprs,'LW',abortphy,flag_inhib_tend,itap,0)4598 CALL add_phys_tend(du0,dv0,d_t_lwr,dq0,dql0,dqi0,dqbs0,paprs,'LW',abortphy,flag_inhib_tend,itap,0) 4515 4599 CALL prt_enerbil('LW',itap) 4516 4600 … … 4587 4671 !----------------------------------------------------------------------- 4588 4672 ! ajout des tendances de la trainee de l'orographie 4589 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0, paprs,'oro', &4673 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,dqi0,dqbs0,paprs,'oro', & 4590 4674 abortphy,flag_inhib_tend,itap,0) 4591 4675 CALL prt_enerbil('oro',itap) … … 4638 4722 4639 4723 ! ajout des tendances de la portance de l'orographie 4640 CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, paprs, &4724 CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, dqbs0,paprs, & 4641 4725 'lif', abortphy,flag_inhib_tend,itap,0) 4642 4726 CALL prt_enerbil('lif',itap) … … 4663 4747 d_t_hin(:, :)=0. 4664 4748 CALL add_phys_tend(du_gwd_hines, dv_gwd_hines, d_t_hin, dq0, dql0, & 4665 dqi0, paprs, 'hin', abortphy,flag_inhib_tend,itap,0)4749 dqi0, dqbs0, paprs, 'hin', abortphy,flag_inhib_tend,itap,0) 4666 4750 CALL prt_enerbil('hin',itap) 4667 4751 ENDIF … … 4681 4765 ENDDO 4682 4766 4683 CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, &4767 CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, dqbs0, & 4684 4768 paprs, 'front_gwd_rando', abortphy,flag_inhib_tend,itap,0) 4685 4769 CALL prt_enerbil('front_gwd_rando',itap) … … 4690 4774 rain_fall + snow_fall, zustr_gwd_rando, zvstr_gwd_rando, & 4691 4775 du_gwd_rando, dv_gwd_rando, east_gwstress, west_gwstress) 4692 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, &4776 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, dqbs0, & 4693 4777 paprs, 'flott_gwd_rando', abortphy,flag_inhib_tend,itap,0) 4694 4778 CALL prt_enerbil('flott_gwd_rando',itap) … … 4742 4826 ! ajout de la tendance d'humidite due au methane 4743 4827 d_q_ch4_dtime(:,:) = d_q_ch4(:,:)*phys_tstep 4744 CALL add_phys_tend(du0, dv0, dt0, d_q_ch4_dtime, dql0, dqi0, paprs, &4828 CALL add_phys_tend(du0, dv0, dt0, d_q_ch4_dtime, dql0, dqi0, dqbs0, paprs, & 4745 4829 'q_ch4', abortphy,flag_inhib_tend,itap,0) 4746 4830 d_q_ch4(:,:) = d_q_ch4_dtime(:,:)/phys_tstep … … 5047 5131 5048 5132 CALL add_phys_tend & 5049 (du0,dv0,dt0,d_q_rep,d_ql_rep,d_qi_rep, paprs,&5133 (du0,dv0,dt0,d_q_rep,d_ql_rep,d_qi_rep,dqbs0,paprs,& 5050 5134 'rep',abortphy,flag_inhib_tend,itap,0) 5051 5135 IF (abortphy==1) Print*,'ERROR ABORT REP' … … 5124 5208 ! prlw = colonne eau liquide 5125 5209 ! prlw = colonne eau solide 5210 ! prbsw = colonne neige soufflee 5126 5211 prw(:) = 0. 5127 5212 prlw(:) = 0. 5128 5213 prsw(:) = 0. 5214 prbsw(:) = 0. 5129 5215 DO k = 1, klev 5130 5216 prw(:) = prw(:) + q_seri(:,k)*zmasse(:,k) 5131 5217 prlw(:) = prlw(:) + ql_seri(:,k)*zmasse(:,k) 5132 5218 prsw(:) = prsw(:) + qs_seri(:,k)*zmasse(:,k) 5219 prbsw(:)= prbsw(:) + qbs_seri(:,k)*zmasse(:,k) 5133 5220 ENDDO 5134 5221 ! … … 5189 5276 ENDIF 5190 5277 !--ice_sursat: nqo=4, on ajoute rneb 5191 IF (nqo == 4) THEN5278 IF (nqo.ge.4 .and. ok_ice_sursat) THEN 5192 5279 d_qx(i,k,irneb) = ( rneb_seri(i,k) - qx(i,k,irneb) ) / phys_tstep 5193 5280 ENDIF 5281 5282 IF (nqo.ge.4 .and. ok_bs) THEN 5283 d_qx(i,k,ibs) = ( qbs_seri(i,k) - qx(i,k,ibs) ) / phys_tstep 5284 ENDIF 5285 5194 5286 ENDDO 5195 5287 ENDDO … … 5238 5330 ql_ancien(:,:) = ql_seri(:,:) 5239 5331 qs_ancien(:,:) = qs_seri(:,:) 5332 qbs_ancien(:,:) = qbs_seri(:,:) 5240 5333 rneb_ancien(:,:) = rneb_seri(:,:) 5241 5334 CALL water_int(klon,klev,q_ancien,zmasse,prw_ancien) 5242 5335 CALL water_int(klon,klev,ql_ancien,zmasse,prlw_ancien) 5243 5336 CALL water_int(klon,klev,qs_ancien,zmasse,prsw_ancien) 5337 CALL water_int(klon,klev,qbs_ancien,zmasse,prbsw_ancien) 5244 5338 ! !! RomP >>> 5245 5339 IF (nqtot > nqo) tr_ancien(:,:,:) = tr_seri(:,:,:) … … 5366 5460 CALL phys_output_write(itap, pdtphys, paprs, pphis, & 5367 5461 pplay, lmax_th, aerosol_couple, & 5368 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, &5462 ok_ade, ok_aie, ok_volcan, ivap, iliq, isol, ibs, & 5369 5463 ok_sync, ptconv, read_climoz, clevSTD, & 5370 5464 ptconvth, d_u, d_t, qx, d_qx, zmasse, &
Note: See TracChangeset
for help on using the changeset viewer.