Changeset 2056 for LMDZ5/branches/testing/libf/phylmd/physiq.F90
- Timestamp:
- Jun 11, 2014, 3:46:46 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1998,2000-2023,2025-2029,2032,2034,2036-2049,2051-2055
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/physiq.F90
r1999 r2056 8 8 flxmass_w, & 9 9 d_u, d_v, d_t, d_qx, d_ps & 10 , dudyn & 11 , PVteta) 10 , dudyn) 12 11 13 12 USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, & … … 52 51 USE indice_sol_mod 53 52 USE phytrac_mod, ONLY : phytrac 53 54 #ifdef CPP_RRTM 55 USE YOERAD , ONLY : NRADLP 56 #endif 54 57 55 58 !IM stations CFMIP … … 100 103 !! d_qx----output-R-tendance physique de "qx" (kg/kg/s) 101 104 !! d_ps----output-R-tendance physique de la pression au sol 102 !!IM103 !! PVteta--output-R-vorticite potentielle a des thetas constantes104 105 !!====================================================================== 105 106 include "dimensions.h" … … 235 236 ! Variables pour le transport convectif 236 237 real da(klon,klev),phi(klon,klev,klev),mp(klon,klev) 238 real wght_cvfd(klon,klev) 237 239 ! Variables pour le lessivage convectif 238 240 ! RomP >>> … … 245 247 !IM definition dynamique o_trac dans phys_output_open 246 248 ! type(ctrl_out) :: o_trac(nqtot) 247 ! 248 !IM Amip2 PV a theta constante 249 ! 250 INTEGER nbteta 251 PARAMETER(nbteta=3) 252 CHARACTER*3 ctetaSTD(nbteta) 253 DATA ctetaSTD/'350','380','405'/ 254 SAVE ctetaSTD 255 !$OMP THREADPRIVATE(ctetaSTD) 256 REAL rtetaSTD(nbteta) 257 DATA rtetaSTD/350., 380., 405./ 258 SAVE rtetaSTD 259 !$OMP THREADPRIVATE(rtetaSTD) 260 ! 261 REAL PVteta(klon,nbteta) 262 ! 263 !MI Amip2 PV a theta constante 264 265 !ym INTEGER klevp1, klevm1 266 !ym PARAMETER(klevp1=klev+1,klevm1=klev-1) 267 !ym include "raddim.h" 268 ! 269 ! 270 !IM Amip2 249 271 250 ! variables a une pression donnee 272 251 ! … … 510 489 EXTERNAL fisrtilp ! schema de condensation a grande echelle (pluie) 511 490 !AA 512 EXTERNAL fisrtilp_tr ! schema de condensation a grande echelle (pluie) 491 ! JBM (3/14) fisrtilp_tr not loaded 492 ! EXTERNAL fisrtilp_tr ! schema de condensation a grande echelle (pluie) 513 493 ! ! stockage des coefficients necessaires au 514 494 ! ! lessivage OFF-LINE et ON-LINE … … 1250 1230 call phys_output_open(rlon,rlat,nCFMIP,tabijGCM, & 1251 1231 iGCM,jGCM,lonGCM,latGCM, & 1252 jjmp1,nlevSTD,clevSTD,rlevSTD, & 1253 nbteta, ctetaSTD, dtime,ok_veget, & 1232 jjmp1,nlevSTD,clevSTD,rlevSTD, dtime,ok_veget, & 1254 1233 type_ocean,iflag_pbl,ok_mensuel,ok_journe, & 1255 1234 ok_hf,ok_instan,ok_LES,ok_ade,ok_aie, & … … 1785 1764 IF (klon_glo==1) THEN 1786 1765 CALL add_pbl_tend & 1787 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0, 'vdf')1766 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,paprs,'vdf') 1788 1767 ELSE 1789 1768 CALL add_phys_tend & 1790 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0, 'vdf')1769 (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,paprs,'vdf') 1791 1770 ENDIF 1792 1771 !-------------------------------------------------------------------- … … 2058 2037 ftd,fqd,lalim_conv,wght_th, & 2059 2038 ev, ep,epmlmMm,eplaMm, & 2060 wdtrainA,wdtrainM )2039 wdtrainA,wdtrainM,wght_cvfd) 2061 2040 ! RomP <<< 2062 2041 … … 2155 2134 !----------------------------------------------------------------------------------------- 2156 2135 ! ajout des tendances de la diffusion turbulente 2157 CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0, 'con')2136 CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,paprs,'con') 2158 2137 !----------------------------------------------------------------------------------------- 2159 2138 … … 2272 2251 d_t_wake(:,:)=dt_wake(:,:)*dtime 2273 2252 d_q_wake(:,:)=dq_wake(:,:)*dtime 2274 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0, 'wake')2253 CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,paprs,'wake') 2275 2254 !----------------------------------------------------------------------------------------- 2276 2255 … … 2372 2351 ENDIF 2373 2352 2353 2374 2354 !----Initialisations 2375 2355 do i=1,klon … … 2389 2369 s_trig,s2,n2 2390 2370 ENDIF 2371 2372 !Option pour re-activer l'ancien calcul de Ale_bl (iflag_trig_bl=2) 2373 IF (iflag_trig_bl.eq.1) then 2391 2374 2392 2375 !----Tirage al\'eatoire et calcul de ale_bl_trig … … 2407 2390 endif 2408 2391 enddo 2392 2393 ELSE IF (iflag_trig_bl.eq.2) then 2394 2395 do i=1,klon 2396 if ( (Ale_bl(i) .gt. abs(cin(i))+1.e-10) ) then 2397 proba_notrig(i)=(1.-exp(-s_trig/s2(i)))** & 2398 (n2(i)*dtime/tau_trig(i)) 2399 ! print *, 'proba_notrig(i) ',proba_notrig(i) 2400 if (random_notrig(i) .ge. proba_notrig(i)) then 2401 ale_bl_trig(i)=Ale_bl(i) 2402 else 2403 ale_bl_trig(i)=0. 2404 endif 2405 else 2406 proba_notrig(i)=1. 2407 random_notrig(i)=0. 2408 ale_bl_trig(i)=0. 2409 endif 2410 enddo 2411 2412 ENDIF 2413 2409 2414 ! 2410 2415 IF (prt_level .GE. 10) THEN … … 2416 2421 2417 2422 !-----------Statistical closure----------- 2418 if (iflag_clos_bl.ge.1) then 2419 2423 if (iflag_clos_bl.eq.1) then 2424 2425 do i=1,klon 2426 !CR: alp probabiliste 2427 if (ale_bl_trig(i).gt.0.) then 2428 alp_bl(i)=alp_bl(i)/(1.-min(proba_notrig(i),0.999)) 2429 endif 2430 enddo 2431 2432 else if (iflag_clos_bl.eq.2) then 2433 2434 !CR: alp calculee dans thermcell_main 2420 2435 do i=1,klon 2421 2436 alp_bl(i)=alp_bl_stat(i) … … 2454 2469 2455 2470 do i=1,klon 2456 zmax_th(i)=pphi(i,lmax_th(i))/rg 2471 ! zmax_th(i)=pphi(i,lmax_th(i))/rg 2472 !CR:04/05/12:correction calcul zmax 2473 zmax_th(i)=zmax0(i) 2457 2474 enddo 2458 2475 … … 2494 2511 !----------------------------------------------------------------------------------------- 2495 2512 ! ajout des tendances de l'ajustement sec ou des thermiques 2496 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0, 'ajsb')2513 CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,paprs,'ajsb') 2497 2514 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:) 2498 2515 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:) … … 2552 2569 !----------------------------------------------------------------------------------------- 2553 2570 ! ajout des tendances de la diffusion turbulente 2554 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc, 'lsc')2571 CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,paprs,'lsc') 2555 2572 !----------------------------------------------------------------------------------------- 2556 2573 DO k = 1, klev … … 2659 2676 !jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr) 2660 2677 IF (flag_aerosol .gt. 0) THEN 2661 IF (.NOT. aerosol_couple) & 2678 IF (.NOT. aerosol_couple) THEN 2679 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 2680 ! 2662 2681 CALL readaerosol_optic( & 2663 2682 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & … … 2666 2685 tau_aero, piz_aero, cg_aero, & 2667 2686 tausum_aero, tau3d_aero) 2687 ! 2688 ELSE ! RRTM radiation 2689 ! 2690 #ifdef CPP_RRTM 2691 CALL readaerosol_optic_rrtm( & 2692 debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, & 2693 pdtphys, pplay, paprs, t_seri, rhcl, presnivs, & 2694 mass_solu_aero, mass_solu_aero_pi, & 2695 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm, & 2696 tausum_aero, tau3d_aero) 2697 #else 2698 2699 abort_message='You should compile with -rrtm if running with iflag_rrtm=1' 2700 call abort_gcm(modname,abort_message,1) 2701 #endif 2702 ! 2703 ENDIF 2704 ENDIF 2668 2705 ELSE 2669 2706 tausum_aero(:,:,:) = 0. 2670 tau_aero(:,:,:,:) = 0. 2671 piz_aero(:,:,:,:) = 0. 2672 cg_aero(:,:,:,:) = 0. 2707 IF (iflag_rrtm .EQ. 0) THEN !--old radiation 2708 tau_aero(:,:,:,:) = 0. 2709 piz_aero(:,:,:,:) = 0. 2710 cg_aero(:,:,:,:) = 0. 2711 ELSE 2712 tau_aero_rrtm(:,:,:,:)=0.0 2713 piz_aero_rrtm(:,:,:,:)=0.0 2714 cg_aero_rrtm(:,:,:,:)=0.0 2715 ENDIF 2673 2716 ENDIF 2674 2717 ! … … 2677 2720 IF (flag_aerosol_strat) THEN 2678 2721 PRINT *,'appel a readaerosolstrat', mth_cur 2679 CALL readaerosolstrato(debut) 2722 IF (iflag_rrtm.EQ.0) THEN 2723 CALL readaerosolstrato(debut) 2724 ELSE 2725 #ifdef CPP_RRTM 2726 CALL readaerosolstrato_rrtm(debut) 2727 #else 2728 2729 abort_message='You should compile with -rrtm if running with iflag_rrtm=1' 2730 call abort_gcm(modname,abort_message,1) 2731 #endif 2732 ENDIF 2680 2733 ENDIF 2681 2734 !--fin STRAT AEROSOL … … 2896 2949 2897 2950 if (ok_newmicro) then 2951 IF (iflag_rrtm.NE.0) THEN 2952 #ifdef CPP_RRTM 2953 IF (ok_cdnc.AND.NRADLP.NE.3) THEN 2954 abort_message='RRTM choix incoherent NRADLP doit etre egal a 3 pour ok_cdnc' 2955 call abort_gcm(modname,abort_message,1) 2956 endif 2957 #else 2958 2959 abort_message='You should compile with -rrtm if running with iflag_rrtm=1' 2960 call abort_gcm(modname,abort_message,1) 2961 #endif 2962 ENDIF 2898 2963 CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, & 2899 2964 paprs, pplay, t_seri, cldliq, cldfra, & … … 3037 3102 flag_aerosol_strat, & 3038 3103 tau_aero, piz_aero, cg_aero, & 3104 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm,& ! Rajoute par OB pour RRTM 3039 3105 cldtaupirad,new_aod, & 3040 3106 zqsat, flwc, fiwc, & … … 3083 3149 flag_aerosol_strat, & 3084 3150 tau_aero, piz_aero, cg_aero, & 3151 tau_aero_rrtm, piz_aero_rrtm, cg_aero_rrtm,& ! Rajoute par OB pour RRTM 3085 3152 cldtaupi,new_aod, & 3086 3153 zqsat, flwc, fiwc, & … … 3220 3287 !----------------------------------------------------------------------------------------- 3221 3288 ! ajout des tendances de la trainee de l'orographie 3222 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0, 'oro')3289 CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,paprs,'oro') 3223 3290 !----------------------------------------------------------------------------------------- 3224 3291 ! … … 3266 3333 !----------------------------------------------------------------------------------------- 3267 3334 ! ajout des tendances de la portance de l'orographie 3268 CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0, 'lif')3335 CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,paprs,'lif') 3269 3336 !----------------------------------------------------------------------------------------- 3270 3337 ! … … 3280 3347 ! 3281 3348 ! ajout des tendances 3282 CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0, 'hin')3349 CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,paprs,'hin') 3283 3350 3284 3351 ENDIF … … 3288 3355 rain_fall + snow_fall, zustr_gwd_rando, zvstr_gwd_rando, & 3289 3356 du_gwd_rando, dv_gwd_rando) 3290 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, &3357 CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0,paprs, & 3291 3358 'flott_gwd_rando') 3292 3359 end if … … 3408 3475 pmflxr, pmflxs, prfl, psfl, & 3409 3476 da, phi, mp, upwd, & 3410 phi2, d1a, dam, sij, & !<<RomP3477 phi2, d1a, dam, sij, wght_cvfd, & !<<RomP+RL 3411 3478 wdtrainA, wdtrainM, sigd, clw,elij, & !<<RomP 3412 3479 ev, ep, epmlmMm, eplaMm, & !<<RomP … … 3708 3775 ptconv, read_climoz, clevSTD, & 3709 3776 ptconvth, d_t, qx, d_qx, zmasse, & 3710 flag_aerosol _strat)3777 flag_aerosol, flag_aerosol_strat, ok_cdnc) 3711 3778 3712 3779
Note: See TracChangeset
for help on using the changeset viewer.