4 SUBROUTINE physiq (nlon,nlev, &
5 debut,lafin,jd_cur_,jh_cur_,pdtphys_, &
9 d_u, d_v, d_t, d_qx, d_ps &
13 histwrite, ju2ymds,
ymds2ju, getin
54 USE wxios
, ONLY: missing_val, missing_val_omp
55 USE xios
, ONLY: xios_get_field_attr
58 USE chem_rep
, ONLY : init_chem_rep_xjour
126 include
"thermcell.h"
146 INTEGER iflag_cycle_diurne
199 REAL tau_overturning_th(
klon)
201 integer lmax_th(
klon)
222 REAL,
intent(in):: jD_cur_, jH_cur_
224 REAL,
INTENT(IN) :: pdtphys_
257 REAL,
SAVE :: missing_val
272 include
"declare_STDlev.h"
292 INTEGER imin_debut, nbpti
293 INTEGER jmin_debut, nbptj
302 INTEGER,
PARAMETER :: longcles=20
303 REAL,
SAVE :: clesphy0(longcles)
311 INTEGER,
SAVE :: abortphy=0
314 REAL,
save :: solarlong0
348 REAL wape_prescr, fip_prescr
349 INTEGER it_wape_prescr
350 SAVE wape_prescr, fip_prescr, it_wape_prescr
357 real,
save :: alp_bl_prescr=0.
358 real,
save :: ale_bl_prescr=0.
360 real,
save :: ale_max=1000.
361 real,
save :: alp_max=2.
363 real,
save :: wake_s_min_lsp=0.1
418 LOGICAL,
SAVE :: ok_adjwk=.
false.
420 REAL,
dimension(klon) :: www
421 REAL,
SAVE :: alp_offset
450 real therm_tke_max0(
klon)
451 real env_tke_max0(
klon)
454 integer :: tau_trig(
klon)
456 REAL,
SAVE :: random_notrig_max=1.
492 REAL rain_tiedtke(
klon),snow_tiedtke(
klon)
502 REAL :: day_since_equinox
504 INTEGER,
parameter :: mth_eq=3, day_eq=21
507 LOGICAL,
parameter :: new_orbit = .
true.
515 real,
parameter:: dobson_u = 2.1415e-05
588 REAL zxsnow_dummy(
klon)
593 REAL zdtime, zdtime1, zdtime2, zlongi
600 REAL zx_t, zx_qs, zdelta, zcor, zlvdcp, zlsdcp
603 INTEGER i, k, iq, ig, j, nsrf, ll, l, iiq
621 CHARACTER*40 capemaxcels
624 INTEGER iflagctrl(
klon)
645 REAL,
dimension(klon,klev):: du0, dv0, dt0, dq0, dql0, dqi0
659 real ratqsbas,ratqshaut,tau_ratqs
660 save ratqsbas,ratqshaut,tau_ratqs
670 save fact_cldcon,facttemps
697 REAL tabcntr0( length )
729 REAL zx_tmp_fi2d(
klon)
735 INTEGER nid_day_seri, nid_ctesGCM
736 SAVE nid_day_seri, nid_ctesgcm
758 character*80 abort_message
759 logical,
save :: ok_sync, ok_sync_omp
765 integer fid_day, fid_mth, fid_ins
766 parameter(fid_ins = 1, fid_day = 2, fid_mth = 3)
767 integer prof2d_on, prof3d_on, prof2d_av, prof3d_av
768 parameter(prof2d_on = 1, prof3d_on = 2, &
769 prof2d_av = 3, prof3d_av = 4)
772 REAL d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec
774 REAL fs_bound, fq_bound
789 CHARACTER*40 t2mincels, t2maxcels
790 CHARACTER*40 tinst, tave, typeval
795 CHARACTER*4,
DIMENSION(naero_grp) :: rfname
796 REAL,
DIMENSION(klon,klev) :: mass_solu_aero
797 REAL,
DIMENSION(klon,klev) :: mass_solu_aero_pi
800 LOGICAL ok_ade, ok_aie
802 REAL bl95_b0, bl95_b1
803 SAVE ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1
805 LOGICAL,
SAVE :: aerosol_couple
808 INTEGER,
SAVE :: flag_aerosol
810 LOGICAL,
SAVE :: new_aod
814 LOGICAL,
SAVE :: flag_aerosol_strat
820 LOGICAL,
SAVE :: first=.
true.
823 integer,
save:: read_climoz
831 integer,
save:: ncid_climoz
834 real,
pointer,
save:: press_climoz(:)
839 integer,
save:: co3i = 0
864 REAL :: zx_tmp_0d(1,1)
865 INTEGER,
PARAMETER :: np=1
866 REAL,
dimension(klon_glo) :: rlat_glo
867 REAL,
dimension(klon_glo) :: rlon_glo
868 REAL gbils(1), gevap(1), gevapt(1), glat(1), gnet0(1), gnet(1)
869 REAL grain(1), gtsol(1), gt2m(1), gprw(1)
872 INTEGER,
SAVE :: nCFMIP
874 INTEGER,
PARAMETER :: npCFMIP=120
875 INTEGER,
ALLOCATABLE,
SAVE :: tabCFMIP(:)
876 REAL,
ALLOCATABLE,
SAVE :: lonCFMIP(:), latCFMIP(:)
878 INTEGER,
ALLOCATABLE,
SAVE :: tabijGCM(:)
879 REAL,
ALLOCATABLE,
SAVE :: lonGCM(:), latGCM(:)
881 INTEGER,
ALLOCATABLE,
SAVE :: iGCM(:), jGCM(:)
883 logical,
dimension(nfiles) :: phys_out_filestations
884 logical,
parameter :: lNMC=.
false.
887 REAL,
SAVE :: pfree, beta_pbl, beta_free
889 REAL,
SAVE :: lon1_beta, lon2_beta, lat1_beta, lat2_beta
891 LOGICAL,
SAVE :: mskocean_beta
893 REAL,
dimension(klon, klev) :: beta
894 REAL,
dimension(klon, klev) :: cldtaurad
895 REAL,
dimension(klon, klev) :: cldtaupirad
896 REAL,
dimension(klon, klev) :: cldemirad
897 REAL,
dimension(klon, klev) :: cldfrarad
900 REAL,
dimension(klon,klev) :: sh_in
905 real,
dimension(6),
save :: SFRWL
926 write(
lunout,*)
'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
929 'nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys'
933 write(
lunout,*)
'paprs, play, phi, u, v, t'
935 write(
lunout,*) paprs(igout,k),pplay(igout,k),pphi(igout,k), &
936 u(igout,k),v(igout,k),t(igout,k)
938 write(
lunout,*)
'ovap (g/kg), oliq (g/kg)'
940 write(
lunout,*) qx(igout,k,1)*1000,qx(igout,k,2)*1000.
950 print*,
'================================================='
951 print*,
'Allocation des variables locales et sauvegardees'
960 solarlong0,seuil_inversion, &
961 fact_cldcon, facttemps,ok_newmicro,iflag_radia, &
962 iflag_cld_th,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
963 ok_ade, ok_aie, ok_cdnc, aerosol_couple, &
964 flag_aerosol, flag_aerosol_strat, new_aod, &
971 print*,
'================================================='
974 if ((iflag_ice_thermo.gt.0).and.(
nqo==2))
then
975 WRITE (
lunout, *)
' iflag_ice_thermo==1 requires 3 H2O tracers (H2Ov, H2Ol, H2Oi)',
' but nqo=',
nqo, &
976 '. Might as well stop here.'
1006 forall (k=1:
nbp_lev) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) /
rg
1012 IF (ip_ebil_phy.ge.1)
THEN
1020 CALL getin_p(
'random_notrig_max',random_notrig_max)
1021 CALL getin_p(
'ok_adjwk',ok_adjwk)
1024 if(
prt_level.ge.1) print*,
'CONVERGENCE PHYSIQUE THERM 1 '
1054 tau_overturning_th(:)=0.
1074 IF (ip_ebil_phy.ge.1) d_h_vcol_phy=0.
1076 print*,
'iflag_coupl,iflag_clos,iflag_wake', &
1078 print*,
'iflag_CYCLE_DIURNE', iflag_cycle_diurne
1080 IF (
iflag_con.EQ.2.AND.iflag_cld_th.GT.-1)
THEN
1081 abort_message =
'Tiedtke needs iflag_cld_th=-2 or -1'
1096 print*,
"Using method MELLOR&YAMADA"
1109 WRITE(
lunout,*)
'le nombre de pas de temps physique doit etre un multiple de nbapp_rad'
1110 WRITE(
lunout,*)
'changer nbapp_rad ou alors commenter ce test mais 1+1<>2'
1111 abort_message=
'nbre de pas de temps physique n est pas multiple de nbapp_rad'
1116 CALL phyetat0 (
"startphy.nc",clesphy0,tabcntr0)
1120 print*,
'FH WARNING : lignes a supprimer'
1123 print*,
'physiq: clwcon rnebcon ratqs',
clwcon(1,1),
rnebcon(1,1) &
1138 ok_instan, ok_region )
1141 WRITE(
lunout,*)
'Pas physique n est pas correct',
dtime, &
1143 abort_message=
'Pas physique n est pas correct '
1147 IF (nlon .NE.
klon)
THEN
1148 WRITE(
lunout,*)
'nlon et klon ne sont pas coherents', nlon, &
1150 abort_message=
'nlon et klon ne sont pas coherents'
1153 IF (nlev .NE.
klev)
THEN
1154 WRITE(
lunout,*)
'nlev et klev ne sont pas coherents', nlev, &
1156 abort_message=
'nlev et klev ne sont pas coherents'
1160 IF (
dtime*
REAL(
radpas).GT.21600..AND.iflag_cycle_diurne.GE.1) then
1161 WRITE(
lunout,*)
'Nbre d appels au rayonnement insuffisant'
1162 WRITE(
lunout,*)
"Au minimum 4 appels par jour si cycle diurne"
1163 abort_message=
'Nbre d appels au rayonnement insuffisant'
1167 WRITE(
lunout,*)
"Clef pour le driver de la convection, ok_cvl=", &
1174 WRITE(
lunout,*)
"*** Convection de Kerry Emanuel 4.3 "
1176 "On va utiliser le melange convectif des traceurs qui"
1177 WRITE(
lunout,*)
"est calcule dans convect4.3"
1178 WRITE(
lunout,*)
" !!! penser aux logical flags de phytrac"
1195 if (iflag_wake>=1)
then
1196 CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr &
1197 ,alp_bl_prescr, ale_bl_prescr)
1210 OPEN(98,file=
'npCFMIP_param.data',status=
'old', &
1211 form=
'formatted',iostat=iostat)
1212 if (iostat == 0)
then
1213 READ(98,*,end=998) ncfmip
1217 IF(ncfmip.GT.npcfmip)
THEN
1218 print*,
'nCFMIP > npCFMIP : augmenter npCFMIP et recompiler'
1221 print*,
'physiq npCFMIP=',npcfmip,
'nCFMIP=',ncfmip
1225 ALLOCATE(tabcfmip(ncfmip))
1226 ALLOCATE(loncfmip(ncfmip), latcfmip(ncfmip))
1227 ALLOCATE(tabijgcm(ncfmip))
1228 ALLOCATE(longcm(ncfmip), latgcm(ncfmip))
1229 ALLOCATE(igcm(ncfmip), jgcm(ncfmip))
1243 tabijgcm, longcm, latgcm, igcm, jgcm)
1246 ALLOCATE(tabijgcm(0))
1247 ALLOCATE(longcm(0), latgcm(0))
1248 ALLOCATE(igcm(0), jgcm(0))
1251 ALLOCATE(tabijgcm(0))
1252 ALLOCATE(longcm(0), latgcm(0))
1253 ALLOCATE(igcm(0), jgcm(0))
1281 if(
zstd(i).gt.10.)
then
1289 lmt_pas = nint(86400./
dtime * 1.0)
1290 WRITE(
lunout,*)
'La frequence de lecture surface est de ', &
1293 capemaxcels =
't_max(X)'
1294 t2mincels =
't_min(X)'
1295 t2maxcels =
't_max(X)'
1312 CALL getin(
'ok_sync',ok_sync_omp)
1314 igcm,jgcm,longcm,latgcm, &
1317 ok_hf,ok_instan,ok_les,ok_ade,ok_aie, &
1318 read_climoz, phys_out_filestations, &
1319 new_aod, aerosol_couple, &
1320 flag_aerosol_strat,
pdtphys, paprs, pphis, &
1321 pplay, lmax_th, ptconv, ptconvth, ivap, &
1322 d_t, qx, d_qx, zmasse, ok_sync_omp)
1330 WRITE(
lunout,*)
'OK freq_outNMC(1)=',freq_outnmc(1)
1331 WRITE(
lunout,*)
'OK freq_outNMC(2)=',freq_outnmc(2)
1332 WRITE(
lunout,*)
'OK freq_outNMC(3)=',freq_outnmc(3)
1334 include
"ini_histday_seri.h"
1336 include
"ini_paramLMDZ_phy.h"
1339 ecrit_reg = ecrit_reg * un_jour
1340 ecrit_tra = ecrit_tra * un_jour
1344 WRITE(*,*)
'physiq date0 : ',date0
1361 calday =
REAL(days_elapsed) + jH_cur
1395 if (read_climoz >= 1)
then
1408 mskocean_beta=.
false.
1419 sfrwl(4)=3.02191470e-02
1421 sfrwl(1)=1.28432794e-03
1426 sfrwl(6)=3.02191470e-02
1432 OPEN(99,file=
'beta_crf.data',status=
'old', &
1433 form=
'formatted',
err=9999)
1434 READ(99,*,end=9998) pfree
1435 READ(99,*,end=9998) beta_pbl
1436 READ(99,*,end=9998) beta_free
1437 READ(99,*,end=9998) lon1_beta
1438 READ(99,*,end=9998) lon2_beta
1439 READ(99,*,end=9998) lat1_beta
1440 READ(99,*,end=9998) lat2_beta
1441 READ(99,*,end=9998) mskocean_beta
1445 WRITE(*,*)
'pfree=',pfree
1446 WRITE(*,*)
'beta_pbl=',beta_pbl
1447 WRITE(*,*)
'beta_free=',beta_free
1448 WRITE(*,*)
'lon1_beta=',lon1_beta
1449 WRITE(*,*)
'lon2_beta=',lon2_beta
1450 WRITE(*,*)
'lat1_beta=',lat1_beta
1451 WRITE(*,*)
'lat2_beta=',lat2_beta
1452 WRITE(*,*)
'mskocean_beta=',mskocean_beta
1514 beta_prec_fisrt(:,:)=0.
1532 q_seri(i,k) = qx(i,k,ivap)
1537 else if (
nqo.eq.3)
then
1568 ztsol(i) = ztsol(i) +
ftsol(i,nsrf)*
pctsrf(i,nsrf)
1572 IF (ip_ebil_phy.ge.1)
THEN
1573 ztit=
'after dynamic'
1576 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
1582 , zero_v, zero_v, zero_v, zero_v, zero_v &
1583 , zero_v, zero_v, zero_v, ztsol &
1584 , d_h_vcol+d_h_vcol_phy, d_qt, 0. &
1585 , fs_bound, fq_bound )
1647 zphi(i,k) = pphi(i,k) + pphis(i)
1662 print*,
' debut avant hgardfou min max ftsol',itap,amn,amx
1667 IF (abortphy==1) print*,
'ERROR ABORT hgardfou debutphy'
1679 print*,
' debut apres hgardfou min max ftsol',itap,amn,amx
1686 if (read_climoz >= 1)
then
1690 if (ro3i == 361) ro3i = 360
1693 if (ro3i /= co3i)
then
1695 if (read_climoz == 1)
then
1696 call regr_pr_av(ncid_climoz, (/
"tro3"/), julien=ro3i, &
1697 press_in_edg=press_climoz, paprs=paprs, v3=
wo)
1700 call regr_pr_av(ncid_climoz, (/
"tro3 ",
"tro3_daylight"/), &
1701 julien=ro3i, press_in_edg=press_climoz, paprs=paprs, v3=
wo)
1705 forall (l = 1: read_climoz)
wo(:, :, l) =
wo(:, :, l) * rmo3 / rmd &
1706 * zmasse / dobson_u / 1e3
1713 ELSEIF (mod(itap-1,lmt_pas) == 0)
THEN
1716 IF (solarlong0<-999.)
then
1719 ELSE IF (abs(solarlong0-1000.)<1.e-4)
then
1722 IF (read_climoz/=-1)
THEN
1723 abort_message =
'read_climoz=-1 is recommended when solarlong0=1000.'
1737 zlvdcp=rlvtt/rcpd/(1.0+rvtmp2*
q_seri(i,k))
1741 zlsdcp=rlstt/rcpd/(1.0+rvtmp2*
q_seri(i,k))
1742 IF (iflag_ice_thermo .EQ. 0)
THEN
1747 if (iflag_ice_thermo.eq.0)
then
1750 zdelta = max(0.,sign(1.,rtt-
t_seri(i,k)))
1752 za = - max(0.0,
ql_seri(i,k)) &
1753 * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
1769 za = - max(0.0,
ql_seri(i,k))*zlvdcp &
1770 - max(0.0,
qs_seri(i,k))*zlsdcp
1783 IF (ip_ebil_phy.ge.2)
THEN
1787 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
1789 , zero_v, zero_v, zero_v, zero_v, zero_v &
1790 , zero_v, zero_v, zero_v, ztsol &
1791 , d_h_vcol, d_qt, d_ec &
1792 , fs_bound, fq_bound )
1804 day_since_equinox = (
jd_cur + jh_cur) - jd_eq
1808 if (solarlong0<-999.)
then
1811 call solarlong(day_since_equinox, zlongi, dist)
1814 CALL orbite(
REAL(days_elapsed+1),zlongi,dist)
1821 write(
lunout,*)
'Longitude solaire ',zlongi,solarlong0,dist
1831 IF (abs(solarlong0-1000.)<1.e-4)
then
1836 SELECT CASE (iflag_cycle_diurne)
1847 zdtime=
dtime*
REAL(radpas)
1853 WHERE (fract.GT.0.0)
jrnt = 1.0
1861 zdtime1=
dtime*
REAL(-MOD(itaprad,radpas)-1)
1862 zdtime2=
dtime*
REAL(radpas-MOD(itaprad,radpas)-1)
1869 CALL zenang(zlongi,jh_cur,zdtime1,zdtime2,
rlat,
rlon,zrmu0,zfract)
1871 WHERE (rmu0.GE.1.e-10 .OR. fract.GE.1.e-10)
swradcorr=zfract/fract*zrmu0/rmu0
1874 WHERE (zfract.GT.0.0)
jrnt = 1.0
1912 IF (
prt_level .ge. 2 .and. mod(iflag_pbl_split,2) .eq. 1)
THEN
1913 print *,
'debut du splitting de la PBL'
1984 s_capcl, s_oliqcl, s_cteicl,
s_pblt, &
1985 s_therm, s_trmb1, s_trmb2, s_trmb3, &
1992 zxfluxt, zxfluxq, q2m, fluxq,
pbl_tke, &
2007 IF (mod(iflag_pbl_split,2) .NE. 0)
THEN
2067 IF (ip_ebil_phy.ge.2)
THEN
2068 ztit=
'after surface_main'
2071 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2073 , zero_v, zero_v, zero_v, zero_v,
sens &
2074 ,
evap , zero_v, zero_v, ztsol &
2075 , d_h_vcol, d_qt, d_ec &
2076 , fs_bound, fq_bound )
2087 zdelta = max(0.,sign(1.,rtt-zx_t))
2088 zx_qs = r2es * foeew(zx_t,zdelta)/pplay(i,k)
2089 zx_qs = min(0.5,zx_qs)
2090 zcor = 1./(1.-retv*zx_qs)
2093 IF (zx_t.LT.t_coup)
THEN
2094 zx_qs = qsats(zx_t)/pplay(i,k)
2096 zx_qs = qsatl(zx_t)/pplay(i,k)
2104 write(
lunout,*)
'L qsat (g/kg) avant clouds_gno'
2105 write(
lunout,
'(i4,f15.4)') (k,1000.*zqsat(igout,k),k=1,
klev)
2120 WRITE(
lunout,*)
"avantcon=", za
2131 *(paprs(i,k)-paprs(i,k+1))/
rg
2146 abort_message =
'reactiver le call conlmd dans physiq.F'
2155 pmfu,
pmfd, pen_u, pde_u, pen_d, pde_d, &
2178 if (iflag_wake>=1)
then
2179 t_wake(i,k) =
t_seri(i,k) &
2181 q_wake(i,k) =
q_seri(i,k) &
2183 t_undi(i,k) =
t_seri(i,k) &
2185 q_undi(i,k) =
q_seri(i,k) &
2188 t_wake(i,k) =
t_seri(i,k)
2189 q_wake(i,k) =
q_seri(i,k)
2190 t_undi(i,k) =
t_seri(i,k)
2191 q_undi(i,k) =
q_seri(i,k)
2200 IF (iflag_wake>=1)
then
2203 CALL ajsec(paprs, pplay, t_wake, q_wake, limbas, &
2204 d_t_adjwk, d_q_adjwk)
2209 IF (
wake_s(i) .GT. 1.e-3)
THEN
2210 t_wake(i,k) = t_wake(i,k) + d_t_adjwk(i,k)
2211 q_wake(i,k) = q_wake(i,k) + d_q_adjwk(i,k)
2231 if (iflag_wake>=1)
then
2232 if (itap .le. it_wape_prescr)
then
2255 WRITE(
lunout,*)
'ALE et ALP imposes'
2284 www(i)=max(www(i),-
omega(i,k)*rd*
t_seri(i,k)/(
rg*paprs(i,k)) &
2294 if (www(i)>0. .and.
ale_bl(i)>0. ) www(i)=www(i)/
ale_bl(i)
2306 if (alp_offset>=0.)
then
2309 abort_message =
'Ne pas passer la car www non calcule'
2332 if (
alp(i)>alp_max)
then
2334 'WARNING SUPER ALP (seuil=',alp_max, &
2338 if (
ale(i)>ale_max)
then
2340 'WARNING SUPER ALE (seuil=',ale_max, &
2363 IF (pphi(izero,k) > 22.e4) k_upper_cv = k
2366 print *,
'upmost level of deep convection loops: k_upper_cv = ',k_upper_cv
2378 dtime, paprs, pplay, k_upper_cv, t_undi,q_undi, &
2391 pmflxr,
pmflxs,da,phi,mp,phi2,d1a,dam,sij,clw,elij, &
2393 ev, ep,epmlmmm,eplamm, &
2412 IF (iflag_wake>=1)
THEN
2436 ,
bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr &
2447 IF (.NOT. ok_gust)
THEN
2485 write(
lunout,*)
'La convection monte trop haut '
2491 write(
lunout,*)
'On n appelle pas la convection'
2511 'convection',abortphy)
2523 IF (ip_ebil_phy.ge.2)
THEN
2524 ztit=
'after convect'
2527 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2529 , zero_v, zero_v, zero_v, zero_v, zero_v &
2531 , d_h_vcol, d_qt, d_ec &
2532 , fs_bound, fq_bound )
2537 WRITE(
lunout,*)
"aprescon=", za
2545 zx_t = zx_t/za*
dtime
2546 WRITE(
lunout,*)
"Precip=", zx_t
2555 *(paprs(i,k)-paprs(i,k+1))/
rg
2564 IF (z_factor(i).GT.(1.0+1.0e-08) .OR. &
2565 z_factor(i).LT.(1.0-1.0e-08))
THEN
2582 if (iflag_wake>=1)
then
2585 dt_dwn(i,k) =
ftd(i,k)
2586 dq_dwn(i,k) =
fqd(i,k)
2587 m_dwn(i,k) =
dnwd0(i,k)
2588 m_up(i,k) =
upwd(i,k)
2603 IF (mod(iflag_pbl_split,2) .EQ. 1)
THEN
2617 IF (mod(iflag_pbl_split/2,2) .EQ. 1)
THEN
2631 IF (iflag_wake==2)
THEN
2632 ok_wk_lsp(:)=max(sign(1.,
wake_s(:)-wake_s_min_lsp),0.)
2634 dt_dwn(:,k)= dt_dwn(:,k)+ &
2636 dq_dwn(:,k)= dq_dwn(:,k)+ &
2639 ELSEIF (iflag_wake==3)
THEN
2640 ok_wk_lsp(:)=max(sign(1.,
wake_s(:)-wake_s_min_lsp),0.)
2643 IF (
rneb(i,k)==0.)
THEN
2646 dt_dwn(i,k)= dt_dwn(i,k)+ &
2648 dq_dwn(i,k)= dq_dwn(i,k)+ &
2659 ,dt_dwn,dq_dwn,m_dwn,m_up &
2667 ,wake_k, t_undi,q_undi &
2668 ,wake_omgbdth,wake_dp_omgb &
2669 ,wake_dtke,wake_dqke &
2670 ,wake_dtpbl,wake_dqpbl &
2673 ,wake_ddeltat,wake_ddeltaq)
2688 IF (ip_ebil_phy.ge.2)
THEN
2692 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2694 , zero_v, zero_v, zero_v, zero_v, zero_v &
2695 , zero_v, zero_v, zero_v, ztsol &
2696 , d_h_vcol, d_qt, d_ec &
2697 , fs_bound, fq_bound )
2724 'AVANT LA CONVECTION SECHE , iflag_thermals=' &
2753 IF (mod(iflag_pbl_split/2,2) .EQ. 1)
THEN
2778 ,ratqsdiff,zqsatth &
2781 ,ztv,zpspsk,ztla,zthl &
2784 ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &
2786 ,therm_tke_max,env_tke_max &
2793 IF (mod(iflag_pbl_split/2,2) .EQ. 1)
THEN
2826 print *,
'cin, ale_bl_stat, alp_bl_stat ', &
2839 tau_trig(i)=tau_trig_deep
2844 print *,
'random_notrig, tau_trig ', &
2846 print *,
's_trig,s2,n2 ', &
2874 if ( (
ale_bl(i) .gt. abs(
cin(i))+1.e-10) )
then
2894 print *,
'proba_notrig, ale_bl_trig ', &
2901 if (iflag_clos_bl.eq.1)
then
2910 else if (iflag_clos_bl.eq.2)
then
2941 print*,
'Couplage Thermiques/Emanuel seulement si T<0'
2944 if (
t_seri(i,lmax_th(i))>273.)
then
2972 limbas(:)=lmax_th(:)
3005 IF (ip_ebil_phy.ge.2)
THEN
3006 ztit=
'after dry_adjust'
3009 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3011 , zero_v, zero_v, zero_v, zero_v, zero_v &
3012 , zero_v, zero_v, zero_v, ztsol &
3013 , d_h_vcol, d_qt, d_ec &
3014 , fs_bound, fq_bound )
3023 ratqsbas,ratqshaut,tau_ratqs,fact_cldcon, &
3034 print *,
'itap, ->fisrtilp ',itap
3042 frac_impa, frac_nucl, beta_prec_fisrt, &
3044 zqasc,
fraca,ztv,zpspsk,ztla,zthl,iflag_cld_th, &
3061 WRITE(
lunout,*)
"apresilp=", za
3069 zx_t = zx_t/za*
dtime
3070 WRITE(
lunout,*)
"Precip=", zx_t
3073 IF (ip_ebil_phy.ge.2)
THEN
3077 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3079 , zero_v, zero_v, zero_v, zero_v, zero_v &
3081 , d_h_vcol, d_qt, d_ec &
3082 , fs_bound, fq_bound )
3101 IF (iflag_cld_th.le.-1)
THEN
3105 if (iflag_cld_th.eq.-1)
then
3115 *(paprs(i,k)-paprs(i,k+1))/
rg
3131 IF (diafra(i,k).GT.
cldfra(i,k))
THEN
3132 cldliq(i,k) = dialiq(i,k)
3133 cldfra(i,k) = diafra(i,k)
3138 ELSE IF (iflag_cld_th.ge.3)
THEN
3157 IF (flag_aerosol .gt. 0)
THEN
3158 IF (iflag_rrtm .EQ. 0)
THEN
3159 IF (.NOT. aerosol_couple)
THEN
3164 mass_solu_aero, mass_solu_aero_pi, &
3169 IF (aerosol_couple .AND.
config_inca ==
'aero' )
THEN
3170 abort_message=
'config_inca=aero et rrtm=1 impossible'
3181 tr_seri, mass_solu_aero, mass_solu_aero_pi, &
3185 ELSE IF (nsw.EQ.2)
THEN
3191 mass_solu_aero, mass_solu_aero_pi, &
3204 abort_message=
'Only NSW=2 or 6 are possible with aerosols and iflag_rrtm=1'
3211 abort_message=
'You should compile with -rrtm if running with iflag_rrtm=1'
3219 IF (iflag_rrtm .EQ. 0)
THEN
3233 IF (flag_aerosol_strat)
THEN
3235 print *,
'appel a readaerosolstrat',
mth_cur
3237 IF (iflag_rrtm.EQ.0)
THEN
3244 abort_message=
'You should compile with -rrtm if running with iflag_rrtm=1'
3254 if (iflag_cld_th>=5)
then
3267 if (ptconv(i,k).and.ptconvth(i,k))
then
3270 else if (ptconv(i,k))
then
3296 if (ptconv(i,k).and. .not. ptconvth(i,k))
then
3324 IF (ok_stratus)
THEN
3328 IF (diafra(i,k).GT.
cldfra(i,k))
THEN
3329 cldliq(i,k) = dialiq(i,k)
3330 cldfra(i,k) = diafra(i,k)
3343 IF (ip_ebil_phy.ge.2)
THEN
3344 ztit=
"after diagcld"
3347 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3349 , zero_v, zero_v, zero_v, zero_v, zero_v &
3350 , zero_v, zero_v, zero_v, ztsol &
3351 , d_h_vcol, d_qt, d_ec &
3352 , fs_bound, fq_bound )
3361 if (iflag_ice_thermo.eq.0)
then
3362 zdelta = max(0.,sign(1.,rtt-zx_t))
3366 zx_qs = r2es * foeew(zx_t,zdelta)/pplay(i,k)
3367 zx_qs = min(0.5,zx_qs)
3368 zcor = 1./(1.-retv*zx_qs)
3371 IF (zx_t.LT.t_coup)
THEN
3372 zx_qs = qsats(zx_t)/pplay(i,k)
3374 zx_qs = qsatl(zx_t)/pplay(i,k)
3386 tpot(i)=
zt2m(i)*(100000./paprs(i,1))**rkappa
3388 IF(
zt2m(i).LT.rtt)
then
3394 IF (
zt2m(i).LT.rtt)
THEN
3408 calday =
REAL(days_elapsed + 1) + jH_cur
3412 CALL aerosol_meteo_calc( &
3417 zxsnow_dummy(:) = 0.0
3419 CALL chemhook_begin (calday, &
3464 IF (aerosol_couple)
THEN
3465 mass_solu_aero(:,:) =
ccm(:,:,1)
3466 mass_solu_aero_pi(:,:) =
ccm(:,:,2)
3469 if (ok_newmicro)
then
3470 IF (iflag_rrtm.NE.0)
THEN
3472 IF (ok_cdnc.AND.
nradlp.NE.3)
THEN
3473 abort_message=
'RRTM choix incoherent NRADLP doit etre egal a 3 pour ok_cdnc'
3478 abort_message=
'You should compile with -rrtm if running with iflag_rrtm=1'
3482 CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, &
3486 mass_solu_aero, mass_solu_aero_pi, &
3490 CALL nuage (paprs, pplay, &
3494 mass_solu_aero, mass_solu_aero_pi, &
3502 cldtaupirad = cldtaupi
3507 if(lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND. &
3508 lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.)
THEN
3514 if (pplay(i,k).GE.pfree)
THEN
3515 beta(i,k) = beta_pbl
3517 beta(i,k) = beta_free
3519 if (mskocean_beta)
THEN
3522 cldtaurad(i,k) =
cldtau(i,k) * beta(i,k)
3523 cldtaupirad(i,k) = cldtaupi(i,k) * beta(i,k)
3524 cldemirad(i,k) =
cldemi(i,k) * beta(i,k)
3525 cldfrarad(i,k) =
cldfra(i,k) * beta(i,k)
3536 if (
rlon(i).ge.lon1_beta.AND.
rlon(i).le.lon2_beta.AND. &
3537 rlat(i).le.lat1_beta.AND.
rlat(i).ge.lat2_beta)
THEN
3538 if (pplay(i,k).GE.pfree)
THEN
3539 beta(i,k) = beta_pbl
3541 beta(i,k) = beta_free
3543 if (mskocean_beta)
THEN
3546 cldtaurad(i,k) =
cldtau(i,k) * beta(i,k)
3547 cldtaupirad(i,k) = cldtaupi(i,k) * beta(i,k)
3548 cldemirad(i,k) =
cldemi(i,k) * beta(i,k)
3549 cldfrarad(i,k) =
cldfra(i,k) * beta(i,k)
3559 IF (mod(itaprad,
radpas).EQ.0)
THEN
3562 if(ok_chlorophyll)
then
3563 print*,
"-- reading chlorophyll"
3583 IF (iflag_radia .ge. 2)
THEN
3588 IF (aerosol_couple)
THEN
3594 cldfrarad, cldemirad, cldtaurad, &
3622 print *,
' ->radlwsw, number 1 '
3626 (dist, rmu0, fract, &
3632 cldfrarad, cldemirad, cldtaurad, &
3633 ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, &
3634 flag_aerosol_strat, &
3638 cldtaupirad,new_aod, &
3666 if (ok_4xco2atm)
then
3667 if (rco2_per.NE.rco2_act.OR.rch4_per.NE.rch4_act.OR. &
3668 rn2o_per.NE.rn2o_act.OR.rcfc11_per.NE.rcfc11_act.OR. &
3669 rcfc12_per.NE.rcfc12_act)
THEN
3678 print *,
' ->radlwsw, number 2 '
3682 (dist, rmu0, fract, &
3689 ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, &
3690 flag_aerosol_strat, &
3724 IF (iflag_radia .ge. 2)
THEN
3728 itaprad = itaprad + 1
3730 IF (iflag_radia.eq.0)
THEN
3732 print *,
'--------------------------------------------------'
3733 print *,
'>>>> ATTENTION rayonnement desactive pour ce cas'
3734 print *,
'>>>> heat et cool mis a zero '
3735 print *,
'--------------------------------------------------'
3756 if (ok_4xco2atm)
then
3784 IF (ip_ebil_phy.ge.2)
THEN
3788 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3791 , zero_v, zero_v, zero_v, ztsol &
3792 , d_h_vcol, d_qt, d_ec &
3793 , fs_bound, fq_bound )
3817 print *,
' call orography ? ',
ok_orodr
3827 IF (((
zpic(i)-
zmea(i)).GT.100.).AND.(
zstd(i).GT.10.0))
THEN
3841 zulow, zvlow, zustrdr, zvstrdr, &
3849 zulow, zvlow, zustrdr, zvstrdr, &
3874 IF ((
zpic(i)-
zmea(i)).GT.100.)
THEN
3888 zulow, zvlow, zustrli, zvstrli, &
3896 zulow, zvlow, zustrli, zvstrli, &
3918 * (paprs(:, k)-paprs(:, k+1))/
rg
3920 * (paprs(:, k)-paprs(:, k+1))/
rg
3925 paprs,
'hin', abortphy)
3928 IF (.not. ok_hines .and. ok_gwd_rando)
then
3936 * (paprs(:, k)-paprs(:, k+1))/
rg
3938 * (paprs(:, k)-paprs(:, k+1))/
rg
3942 paprs,
'front_gwd_rando', abortphy)
3945 if (ok_gwd_rando)
then
3950 paprs,
'flott_gwd_rando', abortphy)
3955 * (paprs(:, k)-paprs(:, k+1))/
rg
3957 * (paprs(:, k)-paprs(:, k+1))/
rg
3976 zustrph(i)=zustrph(i)+(
u_seri(i,k)-u(i,k))/
dtime* &
3977 (paprs(i,k)-paprs(i,k+1))/
rg
3978 zvstrph(i)=zvstrph(i)+(
v_seri(i,k)-v(i,k))/
dtime* &
3979 (paprs(i,k)-paprs(i,k+1))/
rg
3989 zustrdr,zustrli,zustrph, &
3990 zvstrdr,zvstrli,zvstrph, &
3996 IF (ip_ebil_phy.ge.2)
THEN
3997 ztit=
'after orography'
4000 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
4002 , zero_v, zero_v, zero_v, zero_v, zero_v &
4003 , zero_v, zero_v, zero_v, ztsol &
4004 , d_h_vcol, d_qt, d_ec &
4005 , fs_bound, fq_bound )
4025 IF (itap.eq.1.or.mod(itap,nint(freq_cosp/
dtime)).EQ.0)
THEN
4028 print*,
'freq_cosp',freq_cosp
4030 mr_ozone=
wo(:, :, 1) * dobson_u * 1e3 / zmasse
4034 ok_mensuelcosp,ok_journecosp,ok_hfcosp, &
4035 ecrit_mth,ecrit_day,ecrit_hf, ok_all_xml, &
4068 sh_in(:,:) = qx(:,:,ivap)
4073 lafin,
dtime, u, v, t, &
4075 pen_u, pde_u, pen_d, pde_d, &
4081 frac_impa,frac_nucl, beta_prec_fisrt,
beta_prec, &
4082 presnivs, pphis, pphi,
albsol1, &
4086 da, phi, mp,
upwd, &
4087 phi2, d1a, dam, sij, wght_cvfd, &
4089 ev, ep, epmlmmm, eplamm, &
4090 dnwd, aerosol_couple, flxmass_w, &
4099 print*,
'Attention on met a 0 les thermiques pour phystoke'
4102 t,
pmfu,
pmfd, pen_u, pde_u, pen_d, pde_d, &
4105 frac_impa, frac_nucl, &
4124 ve_lay, vq_lay, ue_lay, uq_lay)
4137 forall (k=1:
nbp_lev) exner(:, k) = (pplay(:, k)/paprs(:,1))**rkappa
4144 IF (ip_ebil_phy.ge.1)
THEN
4148 , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
4157 , d_h_vcol, d_qt, d_ec &
4158 , fs_bound, fq_bound )
4160 d_h_vcol_phy=d_h_vcol
4170 include
"calcul_divers.h"
4177 CALL xios_get_field_attr(
"t850",default_value=missing_val_omp)
4181 missing_val=missing_val_omp
4187 include
"calcul_STDlev.h"
4197 q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/
rg
4206 CALL chemhook_end ( &
4229 print *,
'Convertir les incrementations en tendances '
4244 d_qx(i,k,ivap) = (
q_seri(i,k) - qx(i,k,ivap) ) /
dtime
4245 d_qx(i,k,iliq) = (
ql_seri(i,k) - qx(i,k,iliq) ) /
dtime
4248 d_qx(i,k,isol) = (
qs_seri(i,k) - qx(i,k,isol) ) /
dtime
4306 write(
lunout,*)
'FIN DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
4308 'nlon,klev,nqtot,debut,lafin,jD_cur, jH_cur, pdtphys pct tlos'
4313 write(
lunout,*)
'd_t_dyn,d_t_con,d_t_lsc,d_t_ajsb,d_t_ajs,d_t_eva'
4319 write(
lunout,*)
'cool,heat'
4330 write(
lunout,*)
'd_t_vdf,d_t_oro,d_t_lif,d_t_ec'
4337 write(
lunout,*)
'd_ps ',d_ps(igout)
4338 write(
lunout,*)
'd_u, d_v, d_t, d_qx1, d_qx2 '
4340 write(
lunout,*) d_u(igout,k),d_v(igout,k),d_t(igout,k), &
4341 d_qx(igout,k,1),d_qx(igout,k,2)
4355 theta(i,k)=
t_seri(i,k)*(100000./pplay(i,k))**(rd/rcpd)
4361 thetal(i,k)=
theta(i,k)
4394 if (ptconvth(i,k))
then
4414 pplay, lmax_th, aerosol_couple, &
4415 ok_ade, ok_aie, ivap, new_aod, ok_sync, &
4416 ptconv, read_climoz, clevstd, &
4417 ptconvth, d_t, qx, d_qx, zmasse, &
4418 flag_aerosol, flag_aerosol_strat, ok_cdnc)
4422 include
"write_histday_seri.h"
4424 include
"write_paramLMDZ_phy.h"
4434 IF (abortphy==1)
THEN
4435 abort_message =
'Plantage hgardfou'
4454 if (read_climoz >= 1)
then
4456 call nf95_close(ncid_climoz)
4458 deallocate(press_climoz)
4467 FUNCTION qcheck(klon,klev,paprs,q,ql,aire)
4475 REAL paprs(klon,klev+1), q(klon,klev), ql(klon,klev)
4477 REAL qtotal, zx, qcheck
4487 qtotal = qtotal + (q(i,k)+ql(i,k)) * aire(i) &
4488 *(paprs(i,k)-paprs(i,k+1))/
rg
4496 SUBROUTINE gr_fi_ecrit(nfield,nlon,iim,jjmp1,fi,ecrit)
4502 INTEGER nfield,nlon,iim,jjmp1, jjm
4503 REAL fi(nlon,nfield), ecrit(iim*jjmp1,nfield)
4510 ecrit(i,n) = fi(1,n)
4511 ecrit(i+jjm*iim,n) = fi(nlon,n)
4514 ecrit(iim+ig,n) = fi(1+ig,n)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le & swdn0
subroutine zenang_an(cycle_diurne, gmtime, rlat, rlon, rmu0, fract)
real, dimension(:,:), allocatable, save d_q_ch4
real, dimension(:,:), allocatable, save fsollw
!$Header!c include clesph0 h c COMMON clesph0 ok_orolf
real, dimension(:,:), allocatable, save d_t_con
real, dimension(:,:), allocatable, save q_ancien
real, dimension(:), allocatable, save rh2m
real, dimension(:), allocatable, save ale_bl_stat
real, dimension(:), allocatable, save sollwp
real, dimension(:), allocatable, save ema_pcb
real, dimension(:), allocatable, save zustar
real, dimension(:), allocatable, save zuthe
real, dimension(:,:), allocatable, save topsw_aero
real, dimension(:,:), allocatable, save w01
real, dimension(:), allocatable, save proba_notrig
real, dimension(:), allocatable, save zxfluxlat_w
real, dimension(:), allocatable, save alp_bl_conv
subroutine hines_gwd(nlon, nlev, dtime, paphm1x, papm1x, rlat, tx, ux, vx, zustrhi, zvstrhi, d_t_hin, d_u_hin, d_v_hin)
real, dimension(:,:), allocatable, save clwcon
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au f_cdrag_oce REAL f_gust_wk
real, dimension(:), allocatable, save topsw
real, dimension(:), allocatable, save cdragm_w
real, dimension(:,:), allocatable, save fiwc
subroutine fonte_neige_get_vars(pctsrf, fqcalving_out, fqfonte_out, ffonte_out)
real, dimension(:,:), allocatable, save du_gwd_front
real, dimension(:), allocatable, save zxsnow
integer, parameter is_ter
real, dimension(:), allocatable, save snow_lsc
real, dimension(:,:), allocatable, save albsol_dif
real, dimension(:), allocatable, save sollwad0_aerop
character(len=4), save config_inca
real, dimension(:,:), allocatable, save d_u_oro
real, dimension(:,:), allocatable, save d_q_lscth
real, dimension(:), allocatable, save kh
real, dimension(:,:,:), allocatable, save tr_seri
real, dimension(:), allocatable, save f0
real, dimension(:), allocatable, save topswai_aerop
real, dimension(:,:), allocatable, save heat0
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_wake iflag_thermals_closure common ctherm1 iflag_thermals_closure common ctherm2 fact_thermals_ed_dz common ctherm4 iflag_coupl
real, dimension(:), allocatable, save io_lat
subroutine drag_noro(nlon, nlev, dtime, paprs, pplay, pmea, pstd, psig, pgam, pthe, ppic, pval, kgwd, kdx, ktest, t, u, v, pulow, pvlow, pustr, pvstr, d_t, d_u, d_v)
real, dimension(:,:), allocatable, save qcondc
subroutine ajsec(paprs, pplay, t, q, limbas, d_t, d_q)
real, dimension(:), allocatable, save bils
real, dimension(:), allocatable, save sens
real, dimension(:), allocatable, save zxfqcalving
real, dimension(:), allocatable, save s_pblh_w
real, dimension(:), allocatable, save zval
real, dimension(:), allocatable, save zsig
real, dimension(:,:), allocatable, save wfbils
!$Header!c include clesph0 h c COMMON clesph0 ok_orodr
real, dimension(:,:), allocatable, save d_q_lsc
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom iflag_cld_cv
real, dimension(:), allocatable, save ale_wake
real, dimension(:), allocatable, save snow_fall
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_con
subroutine fisrtilp(dtime, paprs, pplay, t, q, ptconv, ratqs, d_t, d_q, d_ql, d_qi, rneb, radliq, rain, snow, pfrac_impa, pfrac_nucl, pfrac_1nucl, frac_impa, frac_nucl, beta, prfl, psfl, rhcl, zqta, fraca, ztv, zpspsk, ztla, zthl, iflag_cld_th, iflag_ice_thermo)
real, dimension(:,:,:,:), allocatable, save piz_aero_sw_rrtm
real, dimension(:), allocatable, save alp_bl_det
real, dimension(:), allocatable, save cldl
real, dimension(:,:), allocatable, save fl
subroutine diag_slp(nlon, t, pab, pal, pphis, tasfc, tastd, pmer)
subroutine evappot(klon, nbsrf, ftsol, pplay, cdragh, t_seri, q_seri, u_seri, v_seri, evap_pot)
real, dimension(:), allocatable, save sens_w
real, dimension(:,:,:), allocatable, save falb_dir
real, dimension(:,:), allocatable, save wake_deltaq
real, dimension(:,:), allocatable, save d_qi_lsc
real, dimension(:,:), allocatable, save heat
real, dimension(:,:), allocatable, save rnebcon0
real, dimension(:), allocatable, save alp_wake
integer, dimension(:), allocatable, save ibas_con
real, dimension(:,:), allocatable, save west_gwstress
subroutine conlmd(dtime, paprs, pplay, t, q, conv_q, d_t, d_q, rain, snow, ibas, itop)
real, dimension(:), allocatable, save albsol3_lic
real, dimension(:,:), allocatable, save d_t_ajsb
subroutine conf_phys(ok_journe, ok_mensuel, ok_instan, ok_hf, ok_LES, callstats, solarlong0, seuil_inversion, fact_cldcon, facttemps, ok_newmicro, iflag_radia, iflag_cld_th, iflag_ratqs, ratqsbas, ratqshaut, tau_ratqs, ok_ade, ok_aie, ok_cdnc, aerosol_couple, flag_aerosol, flag_aerosol_strat, new_aod, bl95_b0, bl95_b1, read_climoz, alp_offset)
real, dimension(:,:), allocatable, save lwup0p
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_wake iflag_thermals_closure common ctherm1 iflag_thermals_closure common ctherm2 fact_thermals_ed_dz common ctherm4 iflag_wake common ctherm5 iflag_thermals_optflux!nrlmd le common ctherm6 iflag_trig_bl
real, dimension(:,:), allocatable, save falb1
subroutine methox(KIDIA, KFDIA, KLON, KLEV, PQ, PTENQ, PAP)
real, dimension(:), allocatable, save rain_fall
real, dimension(:), allocatable, save tpot
real, dimension(:,:), allocatable, save dv_gwd_rando
real, dimension(:,:), allocatable, save sig1
real, dimension(:,:), allocatable, save topswcf_aero
real, dimension(:,:), allocatable, save dnwd
integer, dimension(:), allocatable, save itau_con
real, dimension(:,:), allocatable, save solsw0_aerop
real, dimension(:), allocatable, save weak_inversion
real, dimension(:,:), allocatable, save swdn0p
real, dimension(:,:), allocatable, save t_ancien
real, dimension(:,:), allocatable, save d_t_ajs
real, dimension(:), allocatable, save sollwad_aero
real, dimension(:), allocatable, save kh_x
real, dimension(:), allocatable, save jrnt
subroutine regr_pr_av(ncid, name, julien, press_in_edg, paprs, v3)
real, dimension(:), allocatable, save solswad0_aerop
real, dimension(:,:), allocatable, save ftd
subroutine readaerosolstrato_rrtm(debut)
real, dimension(:), allocatable, save s2
real, dimension(:), allocatable, save cdragm
real, dimension(:,:), allocatable, save vprecip
real, dimension(:), allocatable, save latitude_deg
real, dimension(:,:), allocatable, save d_t_ec
integer, save day_step_phy
!$Header!integer nvarmx dtime
real, dimension(:), allocatable, save bbase
integer, parameter is_ave
real, dimension(:), allocatable, save slp
real, dimension(:,:), allocatable, save dv_gwd_hines
real, dimension(:,:), allocatable, save d_t_sw0
real, dimension(:,:), allocatable, save dq_wake
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom && t_glace_min
subroutine clouds_gno(klon, nd, r, rs, qsub, ptconv, ratqsc, cldf)
real, dimension(:), allocatable, save s_pblh_x
real, dimension(:), allocatable, save solsw0
real, dimension(:), allocatable, save qsnow
real, dimension(:), allocatable, save n2
real, dimension(:,:), allocatable, save dt_wake
real, dimension(:), allocatable, save cdragh
real, dimension(:,:), allocatable, save d_t_lif
!$Header!c include clesph0 h c COMMON clesph0 new_oliq
real, dimension(:), allocatable, save zt2m
real, dimension(:,:), allocatable, save zphi
subroutine sugwd(nlon, nlev, paprs, pplay)
real, parameter missing_val_nf90
subroutine read_cfmip_point_locations(npCFMIP, tab, lonCFMIP, latCFMIP)
real, dimension(:), allocatable, save zmea
real, dimension(:,:,:,:), allocatable, save tau_aero
subroutine phys_output_open(rlon, rlat, pim, tabij, ipt, jpt, plon, plat, jjmp1, nlevSTD, clevSTD, rlevSTD, dtime, ok_veget, type_ocean, iflag_pbl, iflag_pbl_split, ok_mensuel, ok_journe, ok_hf, ok_instan, ok_LES, ok_ade, ok_aie, read_climoz, phys_out_filestations, new_aod, aerosol_couple, flag_aerosol_strat, pdtphys, paprs, pphis, pplay, lmax_th, ptconv, ptconvth, ivap, d_t, qx, d_qx, zmasse, ok_sync)
real, dimension(:,:), allocatable, save d_t_dyn
real, dimension(:,:), allocatable, save d_t_lw0
real, dimension(:,:), allocatable, save rnebcon0th
real, dimension(:,:), allocatable, save pfrac_impa
jyg
real, dimension(:,:), allocatable, save zswft0_i
integer, parameter vtinca
real, dimension(:), allocatable, save topswad_aerop
real, dimension(:), allocatable, save solswad0_aero
real, dimension(:,:), allocatable, save cool
real, dimension(:), allocatable, save pbase
real, dimension(:,:), allocatable, save zw2
subroutine phyredem(fichnom)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL SWup200clr CALL LWdn200clr CALL & lwup0
real, dimension(:), allocatable, save solswad_aero
real, dimension(:,:), allocatable, save pctsrf
real, dimension(:,:), allocatable, save swup0p
real, dimension(:), allocatable, save wbeff
real, dimension(:,:), allocatable, save falb2
real, dimension(:), allocatable, save cldm
real, dimension(:), allocatable, save radsol
real, dimension(:,:), allocatable, save entr_therm
real, dimension(:), allocatable, save solsw0p
subroutine transp(paprs, tsol, t, q, u, v, geom, vtran_e, vtran_q, utran_e, utran_q)
subroutine phys_local_var_init
real, dimension(:), allocatable, save sollwdownp
real, dimension(:,:,:), allocatable, save ccm
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au f_cdrag_oce REAL f_z0qh_oce REAL z0h_seaice INTEGER iflag_gusts
real, dimension(:,:), allocatable, save ref_ice
real, dimension(:), allocatable, save vq
real, dimension(:,:,:,:), allocatable, save cg_aero
real, dimension(:,:), allocatable, save d_t_diss
!$Id iflag_pbl_split common compbl iflag_pbl
real, dimension(:), allocatable, save topswad
real, dimension(:), allocatable, save qsol
real, dimension(:), allocatable zustr_gwd_hines
real, dimension(:,:), allocatable, save d_q_wake
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au f_cdrag_oce REAL f_z0qh_oce REAL z0h_seaice INTEGER iflag_z0_oce!Rugoro Real f_rugoro
real, dimension(:), allocatable, save ve
real, dimension(:,:), allocatable, save heatp
subroutine readchlorophyll(debut)
subroutine radlwsw(dist, rmu0, fract,
real, dimension(:,:,:,:), allocatable, save tau3d_aero
real, dimension(:,:), allocatable, save lwdnp
real, dimension(:,:), allocatable, save ref_liq_pi
real, dimension(:,:), allocatable, save cldtau
real, dimension(:,:), allocatable, save cldfra
subroutine angle(longi, lati, frac, muzero)
subroutine flott_gwd_rando(DTIME, pp, tt, uu, vv, prec, zustr, zvstr, d_u, d_v, east_gwstress, west_gwstress)
integer, dimension(:), allocatable, save itop_con
real, dimension(:,:,:), allocatable, save pbl_tke
real, dimension(:), allocatable, save sollw
real, dimension(:), allocatable, save cape
subroutine sugwd_strato(nlon, nlev, paprs, pplay)
real, dimension(:,:,:,:), allocatable, save tau_aero_lw_rrtm
real, dimension(:,:), allocatable, save d_t_wake
real, dimension(:,:), allocatable, save rnebcon
real, dimension(:), allocatable, save sollwad_aerop
real, dimension(:,:), allocatable, save t_therm
real, dimension(:), allocatable, save albsol1
subroutine lift_noro_strato(nlon, nlev, dtime, paprs, pplay, plat, pmea, pstd, psig, pgam, pthe, ppic, pval, kgwd, kdx, ktest, t, u, v, pulow, pvlow, pustr, pvstr, d_t, d_u, d_v)
!$Header!c include clesph0 h c COMMON clesph0 nbapp_rad
integer, dimension(:), allocatable, save lalim_conv
real, dimension(:,:), allocatable, save topswcf_aerop
real, dimension(:,:), allocatable, save beta_prec
real, dimension(:), allocatable, save dthmin
subroutine acama_gwd_rando(DTIME, pp, plat, tt, uu, vv, rot, zustr, zvstr, d_u, d_v, east_gwstress, west_gwstress)
real, dimension(:), allocatable, save snowhgt
real, dimension(:), allocatable, save toplwad_aerop
real, dimension(:,:), allocatable, save qs_seri
real, dimension(:,:), allocatable, save d_v_con
real, dimension(:), allocatable, save rain_con
real, dimension(:,:), allocatable, save solsw_aerop
real, dimension(:), allocatable, save solswp
real, dimension(:), allocatable, save plul_th
real, dimension(:,:), allocatable, save solsw0_aero
real, dimension(:), allocatable, save sissnow
real, dimension(:,:), allocatable, save d_q_ajs
real, dimension(:), allocatable, save sollwdown
real, dimension(:,:), allocatable, save pmfd
real, dimension(:,:), allocatable, save cool0
subroutine phys_cosp(itap, dtime, freq_cosp, ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP, ecrit_mth, ecrit_day, ecrit_hf, ok_all_xml, Nptslmdz, Nlevlmdz, lon, lat, presnivs, overlaplmdz, sunlit, ref_liq, ref_ice, fracTerLic, u_wind, v_wind, phis, phi, ph, p, skt, t, sh, rh, tca, cca, mr_lsliq, mr_lsice, fl_lsrainI, fl_lssnowI, fl_ccrainI, fl_ccsnowI, mr_ozone, dtau_s, dem_s)
real, dimension(:), allocatable, save cldh
real, dimension(:), allocatable, save slab_wfbils
nrlmd+jyg
real, dimension(:), allocatable, save wake_s
real, dimension(:,:), allocatable, save pmflxs
real, dimension(:,:), allocatable, save zx_rh
real, dimension(:,:,:), allocatable, save fluxu
real, dimension(:,:), allocatable, save pmflxr
real, dimension(:), allocatable, save ale_bl
real, dimension(:), allocatable, save wake_cstar
real, dimension(:), allocatable, save pt0
real, dimension(:,:), allocatable, save d_u_lif
real function qcheck(klon, klev, paprs, q, ql, aire)
real, dimension(:), allocatable, save toplwad0_aero
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL SWup200clr CALL & lwdn0
real, dimension(:), allocatable, save topsw0
subroutine lift_noro(nlon, nlev, dtime, paprs, pplay, plat, pmea, pstd, ppic, ktest, t, u, v, pulow, pvlow, pustr, pvstr, d_t, d_u, d_v)
real, dimension(:), allocatable, save snow_con
subroutine err(ierr, typ, nam)
real, dimension(:), allocatable, save rain_lsc
real, dimension(:,:), allocatable, save fluxlat
real, dimension(:,:), allocatable, save evap_pot
real, dimension(:,:), allocatable, save lwdn0p
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
real, dimension(:), allocatable zvstr_gwd_front
real, dimension(:,:), allocatable, save d_q_dyn
real, dimension(:), allocatable, save s_lcl
real, dimension(:), allocatable, save zvthe
subroutine add_phys_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text, abortphy)
real, dimension(:,:), allocatable, save t2m
real, dimension(:,:), allocatable, save solswcf_aerop
subroutine orbite(xjour, longi, dist)
real, dimension(:,:), allocatable, save q_therm
real, dimension(:,:), allocatable, save delta_tsurf
real function, dimension(klon, klev) ozonecm(rlat, paprs, read_climoz, rjour)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le SWdn200clr CALL & swup0
real, dimension(:), allocatable, save zxfqfonte
real, dimension(:,:), allocatable, save topsw0_aerop
real, dimension(:), allocatable, save zxtsol
real, dimension(:), allocatable, save albplap
real, dimension(:), allocatable zvstr_gwd_hines
real, dimension(:,:,:), allocatable, save pbl_tke_input
real, dimension(:,:,:), allocatable, save wake_delta_pbl_tke
real, dimension(:), allocatable, save alp_bl
real, dimension(:), allocatable, save ema_cbmf
real, dimension(:,:), allocatable, save heat0p
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL nid_tra CALL histvert(nid_tra,"presnivs","Vertical levels","Pa", klev, presnivs, nvert,"down") zsto
real, dimension(:), allocatable, save plul_st
real, dimension(:), allocatable, save toplw
real, dimension(:,:,:), allocatable, save coefh
real, dimension(:,:), allocatable, save z0m
real, dimension(:), allocatable, save solswai_aero
real, dimension(:), allocatable, save qsat2m
real, dimension(:), allocatable, save cdragh_w
real, dimension(:,:), allocatable, save upwd
real, dimension(:), allocatable, save topswad0_aerop
real, dimension(:,:,:), allocatable, save tr_ancien
subroutine ajsec_convv2(paprs, pplay, t, q, d_t, d_q)
subroutine transp_lay(paprs, tsol, t, q, u, v, geom, vtran_e, vtran_q, utran_e, utran_q)
real, dimension(:,:), allocatable, save pfrac_1nucl
real, dimension(:,:), allocatable, save rneb
subroutine solarlong(pday, psollong, pdist_sol)
real, dimension(:,:), allocatable, save d_t_lwr
real, dimension(:), allocatable, save zv10m
real, dimension(:,:), allocatable, save d_u_con
real, dimension(:), allocatable, save uq
real, dimension(:,:,:,:), allocatable, save piz_aero
real, dimension(:), allocatable, save plcl
real, dimension(:,:), allocatable, save lwdn
real, dimension(:,:), allocatable, save cldemi
subroutine physiq(nlon, nlev, debut, lafin, jD_cur, jH_cur, pdtphys, paprs, pplay, pphi, pphis, presnivs, u, v, rot, t, qx, flxmass_w, d_u, d_v, d_t, d_qx, d_ps, dudyn)
real, dimension(:), allocatable, save zxffonte
real, dimension(:,:,:), allocatable, save fluxv
real, dimension(:,:,:,:), allocatable, save tau_aero_sw_rrtm
real, dimension(:), allocatable, save evap
real, dimension(:), allocatable, save toplwai_aerop
real, dimension(:,:), allocatable, save zflup0
real, dimension(:), allocatable, save rugoro
integer, parameter is_lic
real, dimension(:), allocatable, save zpic
real, dimension(:,:), allocatable, save re
real, dimension(:,:), allocatable, save wfbilo
real, dimension(:,:), allocatable, save topsw0_aero
subroutine calwake(paprs, pplay, dtime, t, q, omgb, dt_dwn, dq_dwn, m_dwn, m_up, dt_a, dq_a, sigd, wdt_pbl, wdq_pbl, udt_pbl, udq_pbl, wake_deltat, wake_deltaq, wake_dth, wake_h, wake_s, wake_dens, wake_pe, wake_fip, wake_gfl, dt_wake, dq_wake, wake_k, undi_t, undi_q, wake_omgbdth, wake_dp_omgb, wake_dtke, wake_dqke, wake_dtpbl, wake_dqpbl, wake_omg, wake_dp_deltomg, wake_spread, wake_cstar, wake_d_deltat_gw, wake_ddeltat, wake_ddeltaq)
real, dimension(:), allocatable, save swradcorr
subroutine aaam_bud(iam, nlon, nlev, rjour, rsec, rea, rg, ome, plat, plon, phis, dragu, liftu, phyu, dragv, liftv, phyv, p, u, v, aam, torsfc)
real, dimension(:,:), allocatable, save d_v_ajs
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_wake iflag_thermals_closure common ctherm1 iflag_thermals_closure common ctherm2 fact_thermals_ed_dz common ctherm4 iflag_wake common ctherm5 iflag_thermals_optflux!nrlmd le common ctherm6 iflag_clos_bl common ctherm7 tau_trig_shallow
real, dimension(:,:), allocatable, save d_q_lscst
real, dimension(:,:), allocatable, save d_t_hin
real, dimension(:,:), allocatable, save wdtraina
real, dimension(:), allocatable, save rlon
real, dimension(:,:), allocatable, save wght_th
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL pplay
real, dimension(:,:), allocatable, save fm_therm
real, dimension(:), allocatable, save topsw0p
real, dimension(:), allocatable, save solsw
real, dimension(:), allocatable, save zgam
subroutine diagetpq(airephy, tit, iprt, idiag, idiag2, dtime, t, q, ql, qs, u, v, paprs, pplay, d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
real, dimension(:), allocatable, save flwp
real, dimension(:), allocatable, save alp_bl_fluct_m
subroutine phys_output_write(itap, pdtphys, paprs, pphis, pplay, lmax_th, aerosol_couple, ok_ade, ok_aie, ivap, new_aod, ok_sync, ptconv, read_climoz, clevSTD, ptconvth, d_t, qx, d_qx, zmasse, flag_aerosol, flag_aerosol_strat, ok_cdnc)
real, dimension(:,:,:), allocatable, save wo
subroutine phystokenc(nlon, nlev, pdtphys, rlon, rlat, pt, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, pfm_therm, pentr_therm, cdragh, pcoefh, yu1, yv1, ftsol, pctsrf, frac_impa, frac_nucl, pphis, paire, dtime, itap, psh, pda, pphi, pmp, pupwd, pdnwd)
real, dimension(:), allocatable, save sollwai_aero
real, dimension(:,:), allocatable, save d_q_vdf_w
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
subroutine printflag(tabcntr0, radpas, ok_journe, ok_instan, ok_region)
subroutine phys_cal_update(jD_cur, jH_cur)
real, dimension(:), allocatable, save wake_fip
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL &zphi geo500!IM on interpole a chaque pas de temps le paprs
real, dimension(:), allocatable, save toplwad_aero
integer, parameter nlevstd
real, dimension(:), allocatable, save toplw0
real, dimension(:), allocatable, save alp_bl_stat
real, dimension(:,:), allocatable, save d_v_lif
real, dimension(:,:), allocatable, save pfrac_nucl
real, dimension(:), allocatable, save gustiness
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
real, dimension(:,:), allocatable, save u10m
real, dimension(:), allocatable, save s_therm
real, dimension(:), allocatable, save runoff
real, dimension(:), allocatable, save topswad0_aero
real, dimension(:,:), allocatable, save q_seri
real, dimension(:,:), allocatable, save v10m
real, dimension(:), allocatable, save io_lon
real, dimension(:,:), allocatable, save clwcon0
real, dimension(:), allocatable, save zxfluxlat_x
real, dimension(:,:), allocatable, save swdn
real, dimension(:), allocatable, save zu10m
real, dimension(:), allocatable, save ema_pct
real, dimension(:,:), allocatable, save lwupp
subroutine undefstd(itap, read_climoz)
real, dimension(:), allocatable, save toplwai_aero
real, dimension(:,:), allocatable, save qtc_cv
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine zenang(longi, gmtime, pdtrad1, pdtrad2, lat, long, pmu0, frac)
real, dimension(:), allocatable, save solswai_aerop
real, dimension(:), allocatable, save zmax_th
subroutine hgardfou(t, tsol, text, abortphy)
real, dimension(:,:), allocatable, save d_q_con
real, dimension(:,:,:), allocatable, save coefm
subroutine perturb_radlwsw(zxtsol, iflag_radia)
real, dimension(:,:), allocatable, save d_ql_lsc
real, dimension(:,:), allocatable, save sigt_cv
real, dimension(:), allocatable, save sollwad0_aero
character(len=6), save type_ocean
real, dimension(:,:,:), allocatable, save falb_dif
real, dimension(:), allocatable, save albsol2
real, dimension(:,:), allocatable, save ref_liq
real, dimension(:,:), allocatable, save d_v_oro
real, dimension(:), allocatable, save ue
subroutine diagphy(airephy, tit, iprt, tops, topl, sols, soll, sens, evap, rain_fall, snow_fall, ts, d_etp_tot, d_qt_tot, d_ec_tot, fs_bound, fq_bound)
real, dimension(:), allocatable, save cdragm_x
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_wake iflag_thermals_closure common ctherm1 iflag_thermals
real, dimension(:,:), allocatable, save d_q_vdf
real, dimension(:,:,:), allocatable, save tausum_aero
real, dimension(:,:), allocatable, save prfl
real, dimension(:,:), allocatable, save d_t_eva
nrlmd
real, dimension(:), allocatable, save rlat
real, dimension(:), allocatable, save topswai_aero
real, dimension(:,:), allocatable, save wstar
real, dimension(:,:), allocatable, save ustar
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL pdtphys
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL coefw_cld_cv REAL tmax_fonte_cv INTEGER iflag_cld_cv common nuagecom coefw_cld_cv
real, dimension(:,:), allocatable, save fraca
!$Id t_glace_min REAL exposant_glace REAL rei_max REAL tau_cld_cv
real, dimension(:,:), allocatable, save solsw_aero
subroutine add_pbl_tend(zdu, zdv, zdt, zdq, zdql, zdqi, paprs, text, abortphy)
real, dimension(:,:), allocatable, save d_t_lscth
real, dimension(:), allocatable, save ale
real, dimension(:), allocatable, save solswai
subroutine nuage(paprs, pplay, t, pqlwp, pclc, pcltau, pclemi, pch, pcl, pcm, pct, pctlwp, ok_aie, mass_solu_aero, mass_solu_aero_pi, bl95_b0, bl95_b1, cldtaupi, re, fl)
real, dimension(:,:), allocatable, save cool0p
real, dimension(:,:), allocatable, save zfldn0
real, dimension(:,:), allocatable, save du_gwd_rando
real, dimension(:), allocatable, save wake_pe
real, dimension(:,:), allocatable, save d_t_swr
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au f_cdrag_oce REAL f_gust_bl
real, dimension(:,:,:), allocatable, save fluxt
real, dimension(:), allocatable, save s_lcl_x
real, dimension(:,:), allocatable, save coolp
real, dimension(nfiles), save ecrit_files
real, dimension(:), allocatable, save cin
real, dimension(:), allocatable, save cldt
subroutine readaerosolstrato(debut)
integer(kind=jpim) nradlp
real, dimension(:,:), allocatable, save clwcon0th
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL & u_seri
real, dimension(:), allocatable, save toplwp
real, dimension(:), allocatable, save plfc
real, dimension(:,:), allocatable, save agesno
real, dimension(:,:), allocatable, save east_gwstress
subroutine phys_state_var_init()
real, dimension(:,:), allocatable, save d_u_vdf
real, dimension(:,:), allocatable, save swup
real, dimension(:), allocatable, save alp_bl_fluct_tke
real, dimension(:,:), allocatable, save d_u_ajs
real, dimension(:,:), allocatable, save d_t_vdf_x
real, dimension(:,:,:,:), allocatable, save cg_aero_sw_rrtm
subroutine phys_output_var_init
real, dimension(:,:), allocatable, save ratqs
subroutine ini_undefstd(itap, itapm1)
real, dimension(:), allocatable zvstr_gwd_rando
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_wake iflag_thermals_closure common ctherm1 nsplit_thermals
real, dimension(:), allocatable, save ale_bl_trig
real, dimension(:,:), allocatable, save psfl
real, dimension(:), allocatable zustr_gwd_front
subroutine writefield_phy(name, Field, ll)
real, dimension(:), allocatable, save sollwai_aerop
real, dimension(:), allocatable, save zstd
subroutine gr_fi_ecrit(nfield, nlon, iim, jjmp1, fi, ecrit)
real, dimension(:,:), allocatable, save t_seri
real, dimension(:), allocatable, save wake_h
jyg+nrlmd
real, dimension(:,:), allocatable, save du_gwd_hines
character(len=4), save type_trac
real, dimension(:), allocatable, save longitude_deg
real, dimension(:,:), allocatable, save d_t_oro
nrlmd+jyg
real, dimension(:,:), allocatable, save d_v_vdf
real, dimension(:,:), allocatable, save pmfu
real, dimension(:,:), allocatable, save swdnp
logical, save is_mpi_root
real, dimension(:,:), allocatable, save wdtrainm
real, dimension(:,:), allocatable, save ql_seri
real, dimension(:), allocatable, save toplw0p
real, dimension(:,:), allocatable, save dnwd0
real, dimension(:), allocatable, save zxqsurf
real, dimension(:), allocatable, save prw
integer, parameter is_sic
real, dimension(:,:), allocatable, save solswcf_aero
real, dimension(:), allocatable, save fiwp
real, dimension(:,:), allocatable, save flwc
subroutine abort_physic(modname, message, ierr)
real, dimension(:), allocatable, save s_pblh
real, dimension(:,:), allocatable, save fevap
subroutine calcratqs(klon, klev, prt_level, lunout, iflag_ratqs, iflag_con, iflag_cld_th, pdtphys, ratqsbas, ratqshaut, tau_ratqs, fact_cldcon, ptconv, ptconvth, clwcon0th, rnebcon0th, paprs, pplay, q_seri, zqsat, fm_therm, ratqs, ratqsc)
real, dimension(:), allocatable, save to_ice
real, dimension(:), allocatable, save zmax0
nrlmd
subroutine phyetat0(fichnom)
subroutine open_climoz(ncid, press_in_edg)
real, dimension(:), allocatable, save kh_w
real, dimension(:), allocatable, save albpla
real, dimension(:), allocatable, save wd
real, dimension(:,:), allocatable, save z0h
real, dimension(:,:), allocatable, save d_t_lscst
subroutine readaerosol_optic(debut, new_aod, flag_aerosol, itap, rjourvrai, pdtphys, pplay, paprs, t_seri, rhcl, presnivs, mass_solu_aero, mass_solu_aero_pi, tau_aero, piz_aero, cg_aero, tausum_aero, tau3d_aero)
real, dimension(:), allocatable, save sollw0p
real, dimension(:), allocatable, save topswad_aero
real, dimension(:), allocatable, save s_lcl_w
real, dimension(:), allocatable, save toplwad0_aerop
real, dimension(:,:), allocatable, save d_t_vdf
real, dimension(:,:), allocatable, save zfsdn0
real, dimension(:), allocatable, save cldq
real, dimension(:), allocatable, save solswad_aerop
subroutine clouds_bigauss(klon, nd, r, rs, qtc, sigt, ptconv, ratqsc, cldf)
c c zjulian c cym CALL iim cym klev iim cym jjmp1 cym On stoke le fichier bilKP instantanne s jmax_ins print On stoke le fichier bilKP instantanne s s cym cym nid_bilKPins ENDIF c cIM BEG c cIM cf AM BEG region cym CALL histbeg("histbilKP_ins", iim, zx_lon(:, 1), cym.jjmp1, zx_lat(1,:), cym.imin_ins, imax_ins-imin_ins+1, cym.jmin_ins, jmax_ins-jmin_ins+1, cym.itau_phy, zjulian, dtime, cym.nhori, nid_bilKPins) CALL histbeg_phy("histbilKP_ins"
real, dimension(:,:), allocatable, save d_q_eva
real, dimension(:,:), allocatable, save ftsol
real, dimension(:), allocatable, save random_notrig
real, dimension(:), allocatable, save sens_x
real, dimension(:,:), allocatable, save d_u_dyn
real, dimension(:,:), allocatable, save ma
real, dimension(:,:), allocatable, save wake_omg
integer, save days_elapsed
real, dimension(:), allocatable, save ptstar
real, dimension(:), allocatable zustr_gwd_rando
real, dimension(:), allocatable, save solswad
real, dimension(:,:), allocatable, save omega
real, dimension(:,:,:), allocatable, save d_tr_dyn
real, dimension(:), allocatable, save fder
real, dimension(:,:), allocatable, save zqasc
subroutine diagcld2(paprs, pplay, t, q, diafra, dialiq)
logical, save is_sequential
real, dimension(:,:,:), allocatable, save d_tr
real, dimension(:,:), allocatable, save swupp
real, dimension(:,:), allocatable, save lwup
real, dimension(:,:), allocatable, save u_ancien
real, dimension(:,:), allocatable, save d_v_dyn
subroutine lmdz_cfmip_point_locations(npCFMIP, lonCFMIP, latCFMIP, tabijGCM, lonGCM, latGCM, ipt, jpt)
real, dimension(:,:), allocatable, save theta
subroutine diagcld1(paprs, pplay, rain, snow, kbot, ktop, diafra, dialiq)
subroutine concvl(iflag_clos,dtime, paprs, pplay, k_upper_cv,t, q, t_wake, q_wake, s_wake, u, v, tra, ntra,Ale, Alp, sig1, w01,d_t, d_q, d_u, d_v, d_tra,rain, snow, kbas, ktop, sigd,cbmf, plcl, plfc, wbeff, upwd, dnwd, dnwdbis,Ma, mip, Vprecip,cape, cin, tvp, Tconv, iflag,pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr,qcondc, wd, pmflxr, pmflxs,
real, dimension(:,:), allocatable, save d_ts
subroutine phytrac(nstep, julien, gmtime, debutphy, lafin, pdtphys, u, v, t_seri, paprs, pplay, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, cdragh, coefh, fm_therm, entr_therm, yu1, yv1, ftsol, pctsrf, ustar, u10m, v10m, wstar, ale_bl, ale_wake, xlat, xlon, frac_impa, frac_nucl, beta_fisrt, beta_v1, presnivs, pphis, pphi, albsol, sh, rh, cldfra, rneb, diafra, cldliq, itop_con, ibas_con, pmflxr, pmflxs, prfl, psfl, da, phi, mp, upwd, phi2, d1a, dam, sij, wght_cvfd, wdtrainA, wdtrainM, sigd, clw, elij, evap, ep, epmlmMm, eplaMm, dnwd, aerosol_couple, flxmass_w, tau_aero, piz_aero, cg_aero, ccm, rfname, d_tr_dyn, tr_seri)
subroutine newmicro(ok_cdnc, bl95_b0, bl95_b1, paprs, pplay, t, pqlwp, pclc, pcltau, pclemi, pch, pcl, pcm, pct, pctlwp, xflwp, xfiwp, xflwc, xfiwc, mass_solu_aero, mass_solu_aero_pi, pcldtaupi, re, fl, reliq, reice, reliq_pi, reice_pi)
real, dimension(:,:), allocatable, save d_q_vdf_x
real, dimension(:), allocatable, save zthe
subroutine drag_noro_strato(nlon, nlev, dtime, paprs, pplay, pmea, pstd, psig, pgam, pthe, ppic, pval, kgwd, kdx, ktest, t, u, v, pulow, pvlow, pustr, pvstr, d_t, d_u, d_v)
subroutine conflx(dtime, pres_h, pres_f, t, q, con_t, con_q, pqhfl, w, d_t, d_q, rain, snow, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, kcbot, kctop, kdtop, pmflxr, pmflxs)
real, dimension(:,:), allocatable, save d_q_ajsb
subroutine ini_wake(wape, fip, it_wape_prescr, wape_prescr, fip_prescr, alp_bl_prescr, ale_bl_prescr)
real, dimension(:,:), allocatable, save topsw_aerop
subroutine calltherm(dtime, pplay, paprs, pphi, weak_inversion, u_seri, v_seri, t_seri, q_seri, zqsat, debut, d_u_ajs, d_v_ajs, d_t_ajs, d_q_ajs, fm_therm, entr_therm, detr_therm, zqasc, clwcon0, lmax, ratqscth, ratqsdiff, zqsatth, Ale_bl, Alp_bl, lalim_conv, wght_th, zmax0, f0, zw2, fraca, ztv, zpspsk, ztla, zthl, pbl_tke, pctsrf, omega, airephy, zlcl_th, fraca0, w0, w_conv, therm_tke_max0, env_tke_max0, n2, s2, ale_bl_stat, therm_tke_max, env_tke_max, alp_bl_det, alp_bl_fluct_m, alp_bl_fluct_tke, alp_bl_conv, alp_bl_stat, zqla, ztva)
subroutine conema3(dtime, paprs, pplay, t, q, u, v, tra, ntra, work1, work2, d_t, d_q, d_u, d_v, d_tra, rain, snow, kbas, ktop, upwd, dnwd, dnwdbis, bas, top, ma, cape, tvp, rflag, pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, qcond_incld)
integer, parameter is_oce
real, dimension(:,:), allocatable, save v_seri
!$Id!Parameters for nlm real sigd
subroutine iniradia(klon, klev, pres)
real, dimension(:), allocatable, save cdragh_x
real, dimension(:), allocatable, save alp
real, dimension(:,:), allocatable, save detr_therm
real, dimension(:), allocatable, save cell_area
real, dimension(:,:), allocatable, save d_t_vdf_w
real, dimension(:), allocatable, save zxfluxlat
subroutine readaerosol_optic_rrtm(debut, aerosol_couple, new_aod, flag_aerosol, itap, rjourvrai, pdtphys, pplay, paprs, t_seri, rhcl, presnivs, tr_seri, mass_solu_aero, mass_solu_aero_pi, tau_aero, piz_aero, cg_aero, tausum_aero, tau3d_aero)
real, dimension(:,:), allocatable, save fqd
real, dimension(:,:), allocatable, save ref_ice_pi
real, dimension(:,:), allocatable, save v_ancien
subroutine haut2bas(klon, klev, varb2h, varh2b)
real, dimension(:), allocatable, save topswp
subroutine stratocu_if(klon, klev, pctsrf, paprs, pplay, t, seuil_inversion, weak_inversion, dthmin)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout
real, dimension(:,:), allocatable, save dv_gwd_front
real, dimension(:), allocatable, save sollw0
real, dimension(:,:), allocatable, save d_t_lsc
subroutine pbl_surface(dtime,date0,itap,jour,debut,lafin,rlon,rlat,rugoro,rmu0,zsig,lwdown_m,pphi,cldt,rain_f,snow_f,solsw_m,sollw_m,gustiness,t,q,u,v,
subroutine aeropt_lw_rrtm
real, dimension(:,:), allocatable, save zfsup0
subroutine ener_conserv(klon, klev, pdtphys, puo, pvo, pto, pqo, pun, pvn, ptn, pqn, dtke, masse, exner, d_t_ec)
real, dimension(:), allocatable, save s_pblt
subroutine change_srf_frac(itime, dtime, jour, pctsrf, evap, z0m, z0h, agesno, alb_dir, alb_dif, tsurf, ustar, u10m, v10m, pbl_tke)
real, dimension(:,:), allocatable, save fsolsw
integer, parameter vtphysiq
nsplit_thermals!nrlmd le iflag_clos_bl tau_trig_deep real::s_trig!fin nrlmd le fact_thermals_ed_dz iflag_clos
real, dimension(:,:), allocatable, save zlwft0_i
real, dimension(:), allocatable, save tpote
real, dimension(:), allocatable, save radsolp
real, dimension(:), allocatable, save topswai
real, dimension(:,:), allocatable, save wake_deltat
real, dimension(:,:), allocatable, save albsol_dir
real, dimension(:), allocatable, save zq2m