Changeset 1665 for LMDZ5/branches/testing/libf/phylmd/physiq.F
- Timestamp:
- Oct 9, 2012, 3:35:26 PM (12 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1576-1580,1582,1584,1591-1593,1597-1598,1600,1604-1620,1622-1628
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/physiq.F
r1664 r1665 614 614 REAL dd_t(klon,klev),dd_q(klon,klev) 615 615 616 real, save :: alp_bl_prescr=0. 617 real, save :: ale_bl_prescr= 0.616 real, save :: alp_bl_prescr=0.1 617 real, save :: ale_bl_prescr=4. 618 618 619 619 real, save :: ale_max=1000. … … 791 791 cIM 792 792 EXTERNAL haut2bas !variables de haut en bas 793 INTEGER lnblnk1794 EXTERNAL lnblnk1 !enleve les blancs a la fin d'une variable de type795 !caracter796 793 EXTERNAL ini_undefSTD !initialise a 0 une variable a 1 niveau de pression 797 794 EXTERNAL undefSTD !somme les valeurs definies d'1 var a 1 niveau de pression … … 1220 1217 INTEGER :: nbtr_tmp ! Number of tracer inside concvl 1221 1218 REAL, dimension(klon,klev) :: sh_in ! Specific humidity entering in phytrac 1219 integer iostat 1222 1220 1223 1221 cIM for NMC files … … 1492 1490 cCR:04.12.07: initialisations poches froides 1493 1491 c Controle de ALE et ALP pour la fermeture convective (jyg) 1494 if (iflag_wake>=1) then 1495 CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr 1492 CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr 1496 1493 s ,alp_bl_prescr, ale_bl_prescr) 1497 1494 c 11/09/06 rajout initialisation ALE et ALP du wake et PBL(YU) 1498 1495 c print*,'apres ini_wake iflag_cldcon=', iflag_cldcon 1499 endif1500 1496 1501 1497 do i = 1,klon … … 1508 1504 nCFMIP=npCFMIP 1509 1505 OPEN(98,file='npCFMIP_param.data',status='old', 1510 $ form='formatted',err=999) 1506 $ form='formatted',iostat=iostat) 1507 if (iostat == 0) then 1511 1508 READ(98,*,end=998) nCFMIP 1512 1509 998 CONTINUE … … 1540 1537 $tabijGCM, lonGCM, latGCM, iGCM, jGCM) 1541 1538 c 1542 999 CONTINUE 1539 else 1540 ALLOCATE(tabijGCM(0)) 1541 ALLOCATE(lonGCM(0), latGCM(0)) 1542 ALLOCATE(iGCM(0), jGCM(0)) 1543 end if 1543 1544 ENDIF !debut 1544 1545 … … 2041 2042 c 2042 2043 2043 CALL pbl_surface( 2044 e dtime, date0, itap, days_elapsed+1, 2045 e debut, lafin, 2046 e rlon, rlat, rugoro, rmu0, 2047 e rain_fall, snow_fall, solsw, sollw, 2048 e t_seri, q_seri, u_seri, v_seri, 2049 e pplay, paprs, pctsrf, 2050 + ftsol, falb1, falb2, u10m, v10m, 2051 s sollwdown, cdragh, cdragm, u1, v1, 2052 s albsol1, albsol2, sens, evap, 2053 s zxtsol, zxfluxlat, zt2m, qsat2m, 2054 s d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, 2055 s coefh, coefm, slab_wfbils, 2056 d qsol, zq2m, s_pblh, s_lcl, 2057 d s_capCL, s_oliqCL, s_cteiCL,s_pblT, 2058 d s_therm, s_trmb1, s_trmb2, s_trmb3, 2059 d zxrugs, zu10m, zv10m, fder, 2060 d zxqsurf, rh2m, zxfluxu, zxfluxv, 2061 d frugs, agesno, fsollw, fsolsw, 2062 d d_ts, fevap, fluxlat, t2m, 2063 d wfbils, wfbilo, fluxt, fluxu, fluxv, 2064 - dsens, devap, zxsnow, 2065 - zxfluxt, zxfluxq, q2m, fluxq, pbl_tke ) 2044 if (iflag_pbl/=0) then 2045 2046 CALL pbl_surface( 2047 e dtime, date0, itap, days_elapsed+1, 2048 e debut, lafin, 2049 e rlon, rlat, rugoro, rmu0, 2050 e rain_fall, snow_fall, solsw, sollw, 2051 e t_seri, q_seri, u_seri, v_seri, 2052 e pplay, paprs, pctsrf, 2053 + ftsol, falb1, falb2, u10m, v10m, 2054 s sollwdown, cdragh, cdragm, u1, v1, 2055 s albsol1, albsol2, sens, evap, 2056 s zxtsol, zxfluxlat, zt2m, qsat2m, 2057 s d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, 2058 s coefh, coefm, slab_wfbils, 2059 d qsol, zq2m, s_pblh, s_lcl, 2060 d s_capCL, s_oliqCL, s_cteiCL,s_pblT, 2061 d s_therm, s_trmb1, s_trmb2, s_trmb3, 2062 d zxrugs, zu10m, zv10m, fder, 2063 d zxqsurf, rh2m, zxfluxu, zxfluxv, 2064 d frugs, agesno, fsollw, fsolsw, 2065 d d_ts, fevap, fluxlat, t2m, 2066 d wfbils, wfbilo, fluxt, fluxu, fluxv, 2067 - dsens, devap, zxsnow, 2068 - zxfluxt, zxfluxq, q2m, fluxq, pbl_tke ) 2066 2069 2067 2070 2068 2071 !----------------------------------------------------------------------------------------- 2069 2072 ! ajout des tendances de la diffusion turbulente 2070 CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')2073 CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf') 2071 2074 !----------------------------------------------------------------------------------------- 2072 2075 2073 if (mydebug) then2074 call writefield_phy('u_seri',u_seri,llm)2075 call writefield_phy('v_seri',v_seri,llm)2076 call writefield_phy('t_seri',t_seri,llm)2077 call writefield_phy('q_seri',q_seri,llm)2078 endif2079 2080 2081 IF (ip_ebil_phy.ge.2) THEN2082 ztit='after surface_main'2083 CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime2076 if (mydebug) then 2077 call writefield_phy('u_seri',u_seri,llm) 2078 call writefield_phy('v_seri',v_seri,llm) 2079 call writefield_phy('t_seri',t_seri,llm) 2080 call writefield_phy('q_seri',q_seri,llm) 2081 endif 2082 2083 2084 IF (ip_ebil_phy.ge.2) THEN 2085 ztit='after surface_main' 2086 CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime 2084 2087 e , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay 2085 2088 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec) 2086 call diagphy(airephy,ztit,ip_ebil_phy2089 call diagphy(airephy,ztit,ip_ebil_phy 2087 2090 e , zero_v, zero_v, zero_v, zero_v, sens 2088 2091 e , evap , zero_v, zero_v, ztsol 2089 2092 e , d_h_vcol, d_qt, d_ec 2090 2093 s , fs_bound, fq_bound ) 2091 END IF 2094 END IF 2095 2096 ENDIF 2092 2097 2093 2098 c =================================================================== c … … 2239 2244 cdans le thermique sinon 2240 2245 if (iflag_coupl.eq.0) then 2241 if (debut.and.prt_level.gt.9) 2242 $ WRITE(lunout,*)'ALE et ALP imposes' 2243 do i = 1,klon 2244 con ne couple que ale 2245 c ALE(i) = max(ale_wake(i),Ale_bl(i)) 2246 ALE(i) = max(ale_wake(i),ale_bl_prescr) 2247 con ne couple que alp 2248 c ALP(i) = alp_wake(i) + Alp_bl(i) 2249 ALP(i) = alp_wake(i) + alp_bl_prescr 2250 enddo 2246 if (debut.and.prt_level.gt.9)WRITE(lunout,*) 'ALE&ALP imposes' 2247 Ale_bl(1:klon) = ale_bl_prescr 2248 Alp_bl(1:klon) = alp_bl_prescr 2251 2249 else 2252 2250 IF(prt_level>9)WRITE(lunout,*)'ALE et ALP couples au thermique' 2253 ! do i = 1,klon 2254 ! ALE(i) = max(ale_wake(i),Ale_bl(i)) 2255 ! avant ALP(i) = alp_wake(i) + Alp_bl(i) 2256 ! ALP(i) = alp_wake(i) + Alp_bl(i) + alp_offset ! modif sb 2257 ! write(20,*)'ALE',ALE(i),Ale_bl(i),ale_wake(i) 2258 ! write(21,*)'ALP',ALP(i),Alp_bl(i),alp_wake(i) 2259 ! enddo 2251 endif 2260 2252 2261 2253 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 2264 2256 ! w si <0 2265 2257 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2258 2266 2259 do i = 1,klon 2267 2260 ALE(i) = max(ale_wake(i),Ale_bl(i)) … … 2276 2269 endif 2277 2270 enddo 2271 2278 2272 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2279 2273 2280 endif2281 2274 do i=1,klon 2282 2275 if (alp(i)>alp_max) then … … 2634 2627 c ============== 2635 2628 2636 ! Dans le cas o ùon active les thermiques, on fait partir l'ajustement2629 ! Dans le cas o\`u on active les thermiques, on fait partir l'ajustement 2637 2630 ! a partir du sommet des thermiques. 2638 2631 ! Dans le cas contraire, on demarre au niveau 1. … … 2821 2814 ! FH 22/09/2009 2822 2815 ! La ligne ci-dessous faisait osciller le modele et donnait une solution 2823 ! as symptotique bidon et dépendant fortement du pas de temps.2816 ! asymptotique bidon et d\'ependant fortement du pas de temps. 2824 2817 ! ratqs(:,:)=sqrt(ratqs(:,:)**2+ratqss(:,:)**2) 2825 2818 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 3576 3569 3577 3570 IF (ok_hines) then 3578 3579 3571 CALL hines_gwd(klon,klev,dtime,paprs,pplay, 3580 3572 i rlat,t_seri,u_seri,v_seri, … … 3584 3576 c ajout des tendances 3585 3577 CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,'hin') 3586 3587 3578 ENDIF 3588 c 3589 3590 c 3591 cIM cf. FLott BEG 3579 3592 3580 C STRESS NECESSAIRES: TOUTE LA PHYSIQUE 3593 3581 … … 3614 3602 cIM calcul composantes axiales du moment angulaire et couple des montagnes 3615 3603 c 3616 IF (is_sequential ) THEN3604 IF (is_sequential .and. ok_orodr) THEN 3617 3605 3618 3606 CALL aaam_bud (27,klon,klev,jD_cur-jD_ref,jH_cur,
Note: See TracChangeset
for help on using the changeset viewer.