5 . debut,lafin,jd_cur, jh_cur,
pdtphys,
9 . d_u, d_v, d_t, d_qx, d_ps
13 USE ioipsl
, only: histbeg, histvert, histdef, histend, histsync,
14 $ histwrite, ju2ymds,
ymds2ju, ioget_year_len
37 use netcdf
, only: nf90_fill_real
45 USE chem_rep
, ONLY : Init_chem_rep_xjour
98 #include "dimensions.h"
105 #include "indicesol.h"
107 #include "clesphys.h"
109 #include "iniprint.h"
110 #include "thermcell.h"
173 real weak_inversion(klon),dthmin(klon)
185 REAL tau_overturning_th(klon)
187 integer lmax_th(klon)
189 real ratqscth(klon,
klev)
190 real ratqsdiff(klon,
klev)
191 real zqsatth(klon,
klev)
206 REAL,
intent(in):: jd_cur, jh_cur
210 REAL paprs(klon,
klev+1)
221 REAL qx(klon,
klev,nqtot)
222 REAL flxmass_w(klon,
klev)
223 REAL omega(klon,
klev)
227 REAL d_qx(klon,
klev,nqtot)
238 real wdtraina(klon,
klev),wdtrainm(klon,
klev)
247 CHARACTER*3 ctetastd(nbteta)
248 DATA ctetastd/
'350',
'380',
'405'/
251 REAL rtetastd(nbteta)
252 DATA rtetastd/350., 380., 405./
256 REAL pvteta(klon,nbteta)
269 #include "declare_STDlev.h"
280 REAL convliq(klon,
klev)
283 REAL cldl_c(klon),cldm_c(klon),cldh_c(klon)
284 REAL cldt_c(klon),cldq_c(klon)
285 REAL cldl_s(klon),cldm_s(klon),cldh_s(klon)
286 REAL cldt_s(klon),cldq_s(klon)
291 REAL flwp(klon), fiwp(klon)
292 REAL flwc(klon,
klev), fiwc(klon,
klev)
293 REAL flwp_c(klon), fiwp_c(klon)
294 REAL flwc_c(klon,
klev), fiwc_c(klon,
klev)
295 REAL flwp_s(klon), fiwp_s(klon)
296 REAL flwc_s(klon,
klev), fiwc_s(klon,
klev)
298 REAL evap_pot(klon,nbsrf)
303 INTEGER debug, debugcol
315 INTEGER imin_debut, nbpti
316 INTEGER jmin_debut, nbptj
323 INTEGER ifreq_isccp(napisccp), freqin_pdt(napisccp)
327 CHARACTER*5 typinout(napisccp)
328 DATA typinout/
'i3od'/
332 CHARACTER*1 verticaxe(napisccp)
337 INTEGER nvlev(napisccp)
340 REAL seed_re(klon,napisccp)
348 INTEGER,
SAVE ::
ncol(napisccp)
351 REAL nbsunlit(nregisctot,klon,napisccp)
356 REAL vertlev(
ncolmx,napisccp)
359 REAL,
SAVE :: tautab_omp(0:255),tautab(0:255)
360 INTEGER,
SAVE :: invtau_omp(-20:45000),invtau(-20:45000)
366 REAL cldtot(klon,
klev)
368 REAL dtau_s(klon,
klev)
369 REAL dtau_c(klon,
klev)
370 REAL dem_s(klon,
klev)
371 REAL dem_c(klon,
klev)
374 REAL pfull(klon,
klev)
375 REAL phalf(klon,
klev+1)
379 REAL dtau_sh2b(klon,
klev)
380 REAL dtau_ch2b(klon,
klev)
382 REAL dem_sh2b(klon,
klev)
383 REAL dem_ch2b(klon,
klev)
385 INTEGER kmax, lmax,
lmax3
389 INTEGER iimx7, jjmx7, jjmp1x7
394 REAL fq_isccp(klon,kmaxm1,
lmaxm1,napisccp)
396 REAL totalcldarea(klon,napisccp)
397 REAL meanptop(klon,napisccp)
398 REAL meantaucld(klon,napisccp)
399 REAL boxtau(klon,
ncolmx,napisccp)
400 REAL boxptop(klon,
ncolmx,napisccp)
401 REAL zx_tmp_fi3d_bx(klon,
ncolmx)
422 DATA zx_tau/0.0, 0.3, 1.3, 3.6, 9.4, 23., 60./
424 DATA zx_pc/180., 310., 440., 560., 680., 800., 1000./
429 DATA cldtopres/180., 310., 440., 560., 680., 800., 1000./
434 INTEGER komega, nhorird
437 CHARACTER *4 taulev(kmaxm1)
439 DATA taulev/
'tau0',
'tau1',
'tau2',
'tau3',
'tau4',
'tau5',
'tau6'/
440 CHARACTER *3 pclev(
lmaxm1)
441 DATA pclev/
'pc1',
'pc2',
'pc3',
'pc4',
'pc5',
'pc6',
'pc7'/
446 CHARACTER *29 cnameisccp(
lmaxm1,kmaxm1)
448 DATA cnameisccp/
'pc= 50-180hPa, tau< 0.3',
449 .
'pc= 180-310hPa, tau< 0.3',
450 .
'pc= 310-440hPa, tau< 0.3',
451 .
'pc= 440-560hPa, tau< 0.3',
452 .
'pc= 560-680hPa, tau< 0.3',
453 .
'pc= 680-800hPa, tau< 0.3',
454 .
'pc= 800-1000hPa, tau< 0.3',
455 .
'pc= 50-180hPa, tau= 0.3-1.3',
456 .
'pc= 180-310hPa, tau= 0.3-1.3',
457 .
'pc= 310-440hPa, tau= 0.3-1.3',
458 .
'pc= 440-560hPa, tau= 0.3-1.3',
459 .
'pc= 560-680hPa, tau= 0.3-1.3',
460 .
'pc= 680-800hPa, tau= 0.3-1.3',
461 .
'pc= 800-1000hPa, tau= 0.3-1.3',
462 .
'pc= 50-180hPa, tau= 1.3-3.6',
463 .
'pc= 180-310hPa, tau= 1.3-3.6',
464 .
'pc= 310-440hPa, tau= 1.3-3.6',
465 .
'pc= 440-560hPa, tau= 1.3-3.6',
466 .
'pc= 560-680hPa, tau= 1.3-3.6',
467 .
'pc= 680-800hPa, tau= 1.3-3.6',
468 .
'pc= 800-1000hPa, tau= 1.3-3.6',
469 .
'pc= 50-180hPa, tau= 3.6-9.4',
470 .
'pc= 180-310hPa, tau= 3.6-9.4',
471 .
'pc= 310-440hPa, tau= 3.6-9.4',
472 .
'pc= 440-560hPa, tau= 3.6-9.4',
473 .
'pc= 560-680hPa, tau= 3.6-9.4',
474 .
'pc= 680-800hPa, tau= 3.6-9.4',
475 .
'pc= 800-1000hPa, tau= 3.6-9.4',
476 .
'pc= 50-180hPa, tau= 9.4-23',
477 .
'pc= 180-310hPa, tau= 9.4-23',
478 .
'pc= 310-440hPa, tau= 9.4-23',
479 .
'pc= 440-560hPa, tau= 9.4-23',
480 .
'pc= 560-680hPa, tau= 9.4-23',
481 .
'pc= 680-800hPa, tau= 9.4-23',
482 .
'pc= 800-1000hPa, tau= 9.4-23',
483 .
'pc= 50-180hPa, tau= 23-60',
484 .
'pc= 180-310hPa, tau= 23-60',
485 .
'pc= 310-440hPa, tau= 23-60',
486 .
'pc= 440-560hPa, tau= 23-60',
487 .
'pc= 560-680hPa, tau= 23-60',
488 .
'pc= 680-800hPa, tau= 23-60',
489 .
'pc= 800-1000hPa, tau= 23-60',
490 .
'pc= 50-180hPa, tau> 60.',
491 .
'pc= 180-310hPa, tau> 60.',
492 .
'pc= 310-440hPa, tau> 60.',
493 .
'pc= 440-560hPa, tau> 60.',
494 .
'pc= 560-680hPa, tau> 60.',
495 .
'pc= 680-800hPa, tau> 60.',
496 .
'pc= 800-1000hPa, tau> 60.'/
510 integer nid_hf, nid_hf3d
511 save ok_hf, nid_hf, nid_hf3d
517 REAL clesphy0( longcles )
526 REAL fevap(klon,nbsrf)
527 REAL fluxlat(klon,nbsrf)
530 REAL,
save :: solarlong0
537 REAL zulow(klon),zvlow(klon)
539 INTEGER igwd,idx(klon),itest(klon)
541 REAL agesno(klon,nbsrf)
554 REAL wdn(klon), tdn(klon), qdn(klon)
561 REAL vprecip(klon,
klev+1)
563 REAL wape_prescr, fip_prescr
564 INTEGER it_wape_prescr
565 SAVE wape_prescr, fip_prescr, it_wape_prescr
569 REAL tconv(klon,
klev)
571 REAL dd_t(klon,
klev),dd_q(klon,
klev)
573 real,
save :: alp_bl_prescr=0.
574 real,
save :: ale_bl_prescr=0.
576 real,
save :: ale_max=1000.
577 real,
save :: alp_max=2.
579 real,
save :: wake_s_min_lsp=0.1
594 REAL t_wake(klon,
klev),q_wake(klon,
klev)
596 REAL wake_dth(klon,
klev)
598 REAL wake_d_deltat_gw(klon,
klev)
599 REAL wake_omgbdth(klon,
klev)
600 REAL wake_dp_omgb(klon,
klev)
601 REAL wake_dtke(klon,
klev)
602 REAL wake_dqke(klon,
klev)
603 REAL wake_dtpbl(klon,
klev)
604 REAL wake_dqpbl(klon,
klev)
605 REAL wake_omg(klon,
klev)
606 REAL wake_ddeltat(klon,
klev),wake_ddeltaq(klon,
klev)
607 REAL wake_dp_deltomg(klon,
klev)
608 REAL wake_spread(klon,
klev)
615 REAL t_undi(klon,
klev)
616 REAL q_undi(klon,
klev)
625 REAL dt_dwn(klon,
klev)
626 REAL dq_dwn(klon,
klev)
627 REAL wdt_pbl(klon,
klev)
628 REAL udt_pbl(klon,
klev)
629 REAL wdq_pbl(klon,
klev)
630 REAL udq_pbl(klon,
klev)
631 REAL m_dwn(klon,
klev)
635 REAL,
SAVE :: alp_offset
645 REAL zpspsk(klon,
klev)
657 real tke0(klon,
klev+1)
658 real therm_tke_max0(klon)
659 real env_tke_max0(klon)
662 real n2(klon),s2(klon)
663 real ale_bl_stat(klon)
666 integer :: tau_trig(klon)
667 real proba_notrig(klon)
668 real random_notrig(klon)
672 real pbl_tke_input(klon,
klev+1,nbsrf)
673 real therm_tke_max(klon,
klev)
674 real env_tke_max(klon,
klev)
677 real alp_bl_det(klon)
678 real alp_bl_fluct_m(klon)
679 real alp_bl_fluct_tke(klon)
680 real alp_bl_conv(klon)
681 real alp_bl_stat(klon)
700 REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)
705 REAL frac_impa(klon,
klev)
706 REAL frac_nucl(klon,
klev)
708 REAL beta_prec_fisrt(klon,
klev)
709 REAL beta_prec(klon,
klev)
715 REAL rain_tiedtke(klon),snow_tiedtke(klon)
718 REAL evap(klon), devap(klon)
719 REAL sens(klon), dsens(klon)
723 REAL wfbilo(klon,nbsrf)
725 REAL wfbils(klon,nbsrf)
727 REAL slab_wfbils(klon)
735 REAL frugs(klon,nbsrf)
741 REAL :: day_since_equinox
743 INTEGER,
parameter :: mth_eq=3, day_eq=21
746 LOGICAL,
parameter :: new_orbit = .true.
752 real zmasse(klon, llm),exner(klon, llm)
754 real,
parameter:: dobson_u = 2.1415e-05
797 REAL dialiq(klon,
klev)
798 REAL diafra(klon,
klev)
799 REAL cldliq(klon,
klev)
800 REAL cldfra(klon,
klev)
801 REAL cldtau(klon,
klev)
802 REAL cldemi(klon,
klev)
805 REAL fluxq(klon,
klev, nbsrf)
806 REAL fluxt(klon,
klev, nbsrf)
807 REAL fluxu(klon,
klev, nbsrf)
808 REAL fluxv(klon,
klev, nbsrf)
810 REAL zxfluxt(klon,
klev)
811 REAL zxfluxq(klon,
klev)
812 REAL zxfluxu(klon,
klev)
813 REAL zxfluxv(klon,
klev)
816 REAL fsollw(klon, nbsrf)
817 REAL fsolsw(klon, nbsrf)
828 REAL conv_q(klon,
klev)
829 REAL conv_t(klon,
klev)
831 REAL cldl(klon),cldm(klon),cldh(klon)
832 REAL cldt(klon),cldq(klon)
834 REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon)
835 REAL zxsnow_dummy(klon)
837 REAL dist, rmu0(klon), fract(klon)
844 REAL z_avant(klon), z_apres(klon), z_factor(klon)
848 REAL zx_t, zx_qs, zdelta, zcor, zfra, zlvdcp, zlsdcp
850 INTEGER i,
k, iq, ig,
j,
nsrf,
ll,
l, iiq, iff
860 REAL s_pblh(klon), s_lcl(klon), s_capcl(klon)
861 REAL s_oliqcl(klon), s_cteicl(klon), s_pblt(klon)
862 REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon)
869 REAL dnwd0(klon,
klev)
874 CHARACTER*40 capemaxcels
877 INTEGER iflagctrl(klon)
882 REAL dtma_con(klon),dtlcl_con(klon)
883 REAL dtvpdt1(klon,
klev), dtvpdq1(klon,
klev)
884 REAL dplcldt(klon), dplcldr(klon)
910 REAL pmfu(klon,
klev), pmfd(klon,
klev)
911 REAL pen_u(klon,
klev), pen_d(klon,
klev)
912 REAL pde_u(klon,
klev), pde_d(klon,
klev)
913 INTEGER kcbot(klon), kctop(klon), kdtop(klon)
914 REAL pmflxr(klon,
klev+1), pmflxs(klon,
klev+1)
915 REAL prfl(klon,
klev+1), psfl(klon,
klev+1)
920 REAL ratqsc(klon,
klev)
921 real ratqsbas,ratqshaut,tau_ratqs
922 save ratqsbas,ratqshaut,tau_ratqs
924 real zpt_conv(klon,
klev)
931 real ref_liq(klon,
klev), ref_ice(klon,
klev)
933 save fact_cldcon,facttemps
939 logical ptconv(klon,
klev)
941 logical ptconvth(klon,
klev)
969 REAL zx_rh(klon,
klev)
971 REAL rh2m(klon), qsat2m(klon)
972 REAL tpot(klon), tpote(klon)
977 REAL tabcntr0( length )
981 INTEGER ndex2d1(iwmax)
986 REAL zustrdr(klon), zvstrdr(klon)
987 REAL zustrli(klon), zvstrli(klon)
988 REAL zustrph(klon), zvstrph(klon)
989 REAL zustrhi(klon), zvstrhi(klon)
1011 REAL zx_tmp_fi3d1(klon,
klev+1)
1012 REAL(KIND=8) zx_tmp2_fi3d(klon,
klev)
1016 INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
1017 INTEGER nid_hfnmc, nid_day_seri, nid_ctesgcm
1018 SAVE nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
1019 SAVE nid_hfnmc, nid_day_seri, nid_ctesgcm
1025 INTEGER nid_bilkpins, nid_bilkpave
1026 SAVE nid_bilkpins, nid_bilkpave
1029 REAL ve_lay(klon,
klev)
1030 REAL vq_lay(klon,
klev)
1031 REAL ue_lay(klon,
klev)
1032 REAL uq_lay(klon,
klev)
1035 REAL zsto, zsto1, zsto2
1046 character*20 modname
1047 character*80 abort_message
1053 integer fid_day, fid_mth, fid_ins
1054 parameter(fid_ins = 1, fid_day = 2, fid_mth = 3)
1055 integer prof2d_on, prof3d_on, prof2d_av, prof3d_av
1057 . prof2d_av = 3, prof3d_av = 4)
1058 character*30 nom_fichier
1059 character*10 varname
1060 character*40 vartitle
1061 character*20 varunits
1064 REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
1065 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
1066 SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
1067 $ , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
1070 REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
1072 REAL fs_bound, fq_bound
1087 REAL t2m(klon,nbsrf)
1088 REAL q2m(klon,nbsrf)
1091 REAL zt2m(klon), zq2m(klon)
1092 REAL zustar(klon),zu10m(klon), zv10m(klon)
1093 CHARACTER*40 t2mincels, t2maxcels
1094 CHARACTER*40 tinst, tave, typeval
1095 REAL cldtaupi(klon,
klev)
1100 REAL re_top(klon), fl_top(klon)
1103 CHARACTER*4,
DIMENSION(naero_grp) :: rfname
1104 REAL,
DIMENSION(klon) :: aerindex
1105 REAL,
DIMENSION(klon,klev) :: mass_solu_aero
1106 REAL,
DIMENSION(klon,klev) :: mass_solu_aero_pi
1110 LOGICAL ok_ade, ok_aie
1112 REAL bl95_b0, bl95_b1
1113 SAVE ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1
1115 LOGICAL,
SAVE :: aerosol_couple
1118 INTEGER,
SAVE :: flag_aerosol
1120 LOGICAL,
SAVE :: new_aod
1124 LOGICAL,
SAVE :: flag_aerosol_strat
1130 LOGICAL,
SAVE :: first=.true.
1135 integer,
save:: read_climoz
1143 integer,
save:: ncid_climoz
1146 real,
pointer,
save:: press_climoz(:)
1151 integer,
save:: co3i = 0
1164 #include "conema3.h"
1165 #include "fisrtilp.h"
1173 real :: mr_ozone(klon,
klev)
1176 REAL :: zx_tmp_0d(1,1)
1177 INTEGER,
PARAMETER :: np=1
1178 REAL,
dimension(klon_glo) :: rlat_glo
1179 REAL,
dimension(klon_glo) :: rlon_glo
1180 REAL gbils(1), gevap(1), gevapt(1), glat(1), gnet0(1), gnet(1)
1181 REAL grain(1), gtsol(1), gt2m(1), gprw(1)
1184 INTEGER,
SAVE :: ncfmip
1186 INTEGER,
PARAMETER :: npcfmip=120
1187 INTEGER,
ALLOCATABLE,
SAVE :: tabcfmip(:)
1188 REAL,
ALLOCATABLE,
SAVE :: loncfmip(:), latcfmip(:)
1190 INTEGER,
ALLOCATABLE,
SAVE :: tabijgcm(:)
1191 REAL,
ALLOCATABLE,
SAVE :: longcm(:), latgcm(:)
1193 INTEGER,
ALLOCATABLE,
SAVE :: igcm(:), jgcm(:)
1195 logical,
dimension(nfiles) :: phys_out_filestations
1196 logical,
parameter :: lnmc=.false.
1199 REAL,
SAVE :: pfree, beta_pbl, beta_free
1201 REAL,
SAVE :: lon1_beta, lon2_beta, lat1_beta, lat2_beta
1203 LOGICAL,
SAVE :: mskocean_beta
1205 REAL,
dimension(klon, klev) ::
beta
1206 REAL,
dimension(klon, klev) :: cldtaurad
1207 REAL,
dimension(klon, klev) :: cldtaupirad
1208 REAL,
dimension(klon, klev) :: cldemirad
1209 REAL,
dimension(klon, klev) :: cldfrarad
1212 REAL,
dimension(klon,klev) :: sh_in
1228 write(
lunout,*)
'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
1230 s
'nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys'
1232 s nlon,
klev,nqtot,debut,lafin, jd_cur, jh_cur,
pdtphys
1234 write(
lunout,*)
'paprs, play, phi, u, v, t'
1237 s
u(igout,
k),
v(igout,
k),t(igout,
k)
1239 write(
lunout,*)
'ovap (g/kg), oliq (g/kg)'
1241 write(
lunout,*) qx(igout,
k,1)*1000,qx(igout,
k,2)*1000.
1256 forall (
k=1: llm)
zmasse(:,
k) = (paprs(:,
k)-paprs(:,
k+1)) / rg
1262 print*,
'================================================='
1263 print*,
'Allocation des variables locales et sauvegardees'
1272 . solarlong0,seuil_inversion,
1273 . fact_cldcon, facttemps,ok_newmicro,iflag_radia,
1274 . iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,
1275 . ok_ade, ok_aie, ok_cdnc, aerosol_couple,
1276 . flag_aerosol, flag_aerosol_strat, new_aod,
1283 print*,
'================================================='
1300 IF (ip_ebil_phy.ge.1)
THEN
1311 if(
prt_level.ge.1) print*,
'CONVERGENCE PHYSIQUE THERM 1 '
1341 tau_overturning_th(:)=0.
1343 IF (type_trac ==
'inca')
THEN
1346 tau_aero(:,:,:,:) = 0.
1347 piz_aero(:,:,:,:) = 0.
1348 cg_aero(:,:,:,:) = 0.
1357 IF (ip_ebil_phy.ge.1) d_h_vcol_phy=0.
1359 print*,
'iflag_coupl,iflag_clos,iflag_wake',
1363 IF (
iflag_con.EQ.2.AND.iflag_cldcon.GT.-1)
THEN
1364 abort_message =
'Tiedtke needs iflag_cldcon=-2 or -1'
1370 'ISCCP-like outputs may be available for KE .(iflag_con >= 3); for Tiedtke (iflag_con=-2) put ok_isccp=n'
1383 if (iflag_pbl>1)
then
1384 print*,
"Using method MELLOR&YAMADA"
1397 CALL
phyetat0(
"startphy.nc",clesphy0,tabcntr0)
1398 IF (klon_glo==1)
THEN
1399 coefh=0. ; coefm=0. ; pbl_tke=0.
1400 coefh(:,2,:)=1.e-2 ; coefm(:,2,:)=1.e-2 ; pbl_tke(:,2,:)=1.e-2
1401 print*,
'FH WARNING : lignes a supprimer'
1404 print*,
'physiq: clwcon rnebcon ratqs',clwcon(1,1),rnebcon(1,1)
1414 IF (raz_date .eq. 1)
THEN
1422 CALL
printflag( tabcntr0,radpas,ok_journe,
1423 , ok_instan, ok_region )
1426 WRITE(
lunout,*)
'Pas physique n est pas correct',
dtime,
1428 abort_message=
'Pas physique n est pas correct '
1432 IF (nlon .NE. klon)
THEN
1433 WRITE(
lunout,*)
'nlon et klon ne sont pas coherents', nlon,
1435 abort_message=
'nlon et klon ne sont pas coherents'
1438 IF (nlev .NE.
klev)
THEN
1439 WRITE(
lunout,*)
'nlev et klev ne sont pas coherents', nlev,
1441 abort_message=
'nlev et klev ne sont pas coherents'
1446 WRITE(
lunout,*)
'Nbre d appels au rayonnement insuffisant'
1447 WRITE(
lunout,*)
"Au minimum 4 appels par jour si cycle diurne"
1448 abort_message=
'Nbre d appels au rayonnement insuffisant'
1452 WRITE(
lunout,*)
"Clef pour le driver de la convection, ok_cvl=",
1459 WRITE(
lunout,*)
"*** Convection de Kerry Emanuel 4.3 "
1461 .
"On va utiliser le melange convectif des traceurs qui"
1462 WRITE(
lunout,*)
"est calcule dans convect4.3"
1463 WRITE(
lunout,*)
" !!! penser aux logical flags de phytrac"
1480 if (iflag_wake>=1)
then
1481 CALL
ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr
1482 s ,alp_bl_prescr, ale_bl_prescr)
1495 OPEN(98,file=
'npCFMIP_param.data',status=
'old',
1496 $ form=
'formatted',iostat=iostat)
1497 if (iostat == 0)
then
1498 READ(98,*,end=998) ncfmip
1502 IF(ncfmip.GT.npcfmip)
THEN
1503 print*,
'nCFMIP > npCFMIP : augmenter npCFMIP et recompiler'
1506 print*,
'physiq npCFMIP=',npcfmip,
'nCFMIP=',ncfmip
1510 ALLOCATE(tabcfmip(ncfmip))
1511 ALLOCATE(loncfmip(ncfmip), latcfmip(ncfmip))
1512 ALLOCATE(tabijgcm(ncfmip))
1513 ALLOCATE(longcm(ncfmip), latgcm(ncfmip))
1514 ALLOCATE(igcm(ncfmip), jgcm(ncfmip))
1520 $loncfmip, latcfmip)
1528 $tabijgcm, longcm, latgcm, igcm, jgcm)
1531 ALLOCATE(tabijgcm(0))
1532 ALLOCATE(longcm(0), latgcm(0))
1533 ALLOCATE(igcm(0), jgcm(0))
1536 ALLOCATE(tabijgcm(0))
1537 ALLOCATE(longcm(0), latgcm(0))
1538 ALLOCATE(igcm(0), jgcm(0))
1542 rugoro(
i) = f_rugoro * max(1.0e-05, zstd(
i)*zsig(
i)/2.0)
1566 if(zstd(
i).gt.10.)
then
1567 zuthe(
i)=(1.-zgam(
i))*cos(zthe(
i))
1568 zvthe(
i)=(1.-zgam(
i))*sin(zthe(
i))
1574 lmt_pas = nint(86400./
dtime * 1.0)
1575 WRITE(
lunout,*)
'La frequence de lecture surface est de ',
1578 capemaxcels =
't_max(X)'
1579 t2mincels =
't_min(X)'
1580 t2maxcels =
't_max(X)'
1595 & igcm,jgcm,longcm,latgcm,
1596 &
jjmp1,nlevstd,clevstd,
1597 & nbteta, ctetastd,
dtime,ok_veget,
1598 & type_ocean,iflag_pbl,ok_mensuel,ok_journe,
1599 & ok_hf,ok_instan,ok_les,ok_ade,ok_aie,
1600 & read_climoz, phys_out_filestations,
1601 & new_aod, aerosol_couple,
1602 & flag_aerosol_strat )
1607 #include "ini_histISCCP.h"
1611 #include "ini_histhfNMC.h"
1612 #include "ini_histdayNMC.h"
1613 #include "ini_histmthNMC.h"
1616 #include "ini_histday_seri.h"
1618 #include "ini_paramLMDZ_phy.h"
1621 ecrit_reg = ecrit_reg * un_jour
1622 ecrit_tra = ecrit_tra * un_jour
1626 WRITE(*,*)
'physiq date0 : ',date0
1639 IF (type_trac ==
'inca')
THEN
1645 calday =
REAL(days_elapsed) + jh_cur
1646 WRITE(
lunout,*)
'initial time chemini', days_elapsed, calday
1676 if (read_climoz >= 1)
then
1689 mskocean_beta=.false.
1691 OPEN(99,file=
'beta_crf.data',status=
'old',
1692 $ form=
'formatted',err=9999)
1693 READ(99,*,end=9998) pfree
1694 READ(99,*,end=9998) beta_pbl
1695 READ(99,*,end=9998) beta_free
1696 READ(99,*,end=9998) lon1_beta
1697 READ(99,*,end=9998) lon2_beta
1698 READ(99,*,end=9998) lat1_beta
1699 READ(99,*,end=9998) lat2_beta
1700 READ(99,*,end=9998) mskocean_beta
1704 WRITE(*,*)
'pfree=',pfree
1705 WRITE(*,*)
'beta_pbl=',beta_pbl
1706 WRITE(*,*)
'beta_free=',beta_free
1707 WRITE(*,*)
'lon1_beta=',lon1_beta
1708 WRITE(*,*)
'lon2_beta=',lon2_beta
1709 WRITE(*,*)
'lat1_beta=',lat1_beta
1710 WRITE(*,*)
'lat2_beta=',lat2_beta
1711 WRITE(*,*)
'mskocean_beta=',mskocean_beta
1727 * pctsrf, falb1, falb2, ftsol, ustar, u10m, v10m, pbl_tke)
1731 IF (type_trac ==
'repr')
THEN
1733 CALL init_chem_rep_xjour(jd_cur-jd_ref+
day_ref)
1734 print*,
'xjour equivalent rjourvrai',jd_cur-jd_ref+
day_ref
1771 beta_prec_fisrt(:,:)=0.
1786 t_seri(
i,
k) = t(
i,
k)
1788 v_seri(
i,
k) =
v(
i,
k)
1789 q_seri(
i,
k) = qx(
i,
k,ivap)
1790 ql_seri(
i,
k) = qx(
i,
k,iliq)
1794 tke0(:,:)=pbl_tke(:,:,is_ave)
1795 IF (nqtot.GE.3)
THEN
1799 tr_seri(
i,
k,iq-2) = qx(
i,
k,iq)
1806 tr_seri(
i,
k,1) = 0.0
1820 IF (ip_ebil_phy.ge.1)
THEN
1821 ztit=
'after dynamic'
1823 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
1824 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
1830 e , zero_v, zero_v, zero_v, zero_v, zero_v
1831 e , zero_v, zero_v, zero_v, ztsol
1832 e , d_h_vcol+d_h_vcol_phy, d_qt, 0.
1833 s , fs_bound, fq_bound )
1848 IF (nqtot.GE.3)
THEN
1853 $ (tr_seri(
i,
k,iq-2)-tr_ancien(
i,
k,iq-2))/
dtime
1871 IF (nqtot.GE.3)
THEN
1875 d_tr_dyn(
i,
k,iq-2)= 0.0
1888 zphi(
i,
k) = pphi(
i,
k) + pphis(
i)
1896 amn=min(ftsol(1,is_ter),1000.)
1897 amx=max(ftsol(1,is_ter),-1000.)
1899 amn=min(ftsol(
i,is_ter),amn)
1900 amx=max(ftsol(
i,is_ter),amx)
1903 print*,
' debut avant hgardfou min max ftsol',itap,amn,amx
1907 CALL
hgardfou(t_seri,ftsol,
'debutphy')
1911 amn=min(ftsol(1,is_ter),1000.)
1912 amx=max(ftsol(1,is_ter),-1000.)
1914 amn=min(ftsol(
i,is_ter),amn)
1915 amx=max(ftsol(
i,is_ter),amx)
1918 print*,
' debut apres hgardfou min max ftsol',itap,amn,amx
1925 if (read_climoz >= 1)
then
1928 ro3i = int((days_elapsed + jh_cur - jh_1jan)
1929 $ / ioget_year_len(year_cur) * 360.) + 1
1930 if (ro3i == 361) ro3i = 360
1933 if (ro3i /= co3i)
then
1935 if (read_climoz == 1)
then
1936 call
regr_pr_av(ncid_climoz, (/
"tro3"/), julien=ro3i,
1937 $ press_in_edg=press_climoz, paprs=paprs, v3=wo)
1941 $ (/
"tro3 ",
"tro3_daylight"/),
1942 $ julien=ro3i, press_in_edg=press_climoz, paprs=paprs,
1947 forall (
l = 1: read_climoz) wo(:, :,
l) = wo(:, :,
l)
1948 $ * rmo3 / rmd *
zmasse / dobson_u / 1e3
1955 elseif (mod(itap-1,lmt_pas) == 0)
THEN
1957 wo(:, :, 1) =
ozonecm(
rlat, paprs, rjour=
real(days_elapsed+1))
1964 zlvdcp=rlvtt/rcpd/(1.0+rvtmp2*q_seri(
i,
k))
1966 zlsdcp=rlvtt/rcpd/(1.0+rvtmp2*q_seri(
i,
k))
1967 zdelta = max(0.,sign(1.,rtt-t_seri(
i,
k)))
1968 zb = max(0.0,ql_seri(
i,
k))
1969 za = - max(0.0,ql_seri(
i,
k))
1970 . * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
1971 t_seri(
i,
k) = t_seri(
i,
k) + za
1972 q_seri(
i,
k) = q_seri(
i,
k) + zb
1979 IF (ip_ebil_phy.ge.2)
THEN
1982 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
1983 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
1985 e , zero_v, zero_v, zero_v, zero_v, zero_v
1986 e , zero_v, zero_v, zero_v, ztsol
1987 e , d_h_vcol, d_qt, d_ec
1988 s , fs_bound, fq_bound )
1999 call
ymds2ju(year_cur, mth_eq, day_eq,0., jd_eq)
2000 day_since_equinox = (jd_cur + jh_cur) - jd_eq
2004 if (solarlong0<-999.)
then
2007 call
solarlong(day_since_equinox, zlongi, dist)
2010 CALL
orbite(
REAL(days_elapsed+1),zlongi,dist)
2017 &
write(
lunout,*)
'Longitude solaire ',zlongi,solarlong0,dist
2027 IF (abs(solarlong0-1000.)<1.e-4)
then
2032 zdtime=
dtime*
REAL(radpas)
2070 if (iflag_pbl/=0)
then
2073 e
dtime, date0, itap, days_elapsed+1,
2076 e rain_fall, snow_fall, solsw, sollw,
2077 e t_seri, q_seri,
u_seri, v_seri,
2078 e
pplay, paprs, pctsrf,
2079 + ftsol, falb1, falb2, ustar, u10m, v10m,
2080 s sollwdown, cdragh, cdragm, u1, v1,
2081 s albsol1, albsol2, sens, evap,
2082 s zxtsol, zxfluxlat, zt2m, qsat2m,
2083 s d_t_vdf, d_q_vdf, d_u_vdf, d_v_vdf, d_t_diss,
2084 s coefh, coefm, slab_wfbils,
2085 d
qsol, zq2m, s_pblh, s_lcl,
2086 d s_capcl, s_oliqcl, s_cteicl,s_pblt,
2087 d s_therm, s_trmb1, s_trmb2, s_trmb3,
2088 d zxrugs, zustar, zu10m, zv10m, fder,
2089 d zxqsurf, rh2m, zxfluxu, zxfluxv,
2090 d frugs, agesno, fsollw, fsolsw,
2091 d d_ts, fevap, fluxlat, t2m,
2092 d wfbils, wfbilo, fluxt, fluxu, fluxv,
2093 - dsens, devap, zxsnow,
2094 - zxfluxt, zxfluxq, q2m, fluxq, pbl_tke )
2100 s(d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,
'vdf')
2111 e t_seri(:,1),q_seri(:,1),
u_seri(:,1),v_seri(:,1),evap_pot)
2114 IF (ip_ebil_phy.ge.2)
THEN
2115 ztit=
'after surface_main'
2117 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
2118 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2120 e , zero_v, zero_v, zero_v, zero_v, sens
2121 e , evap , zero_v, zero_v, ztsol
2122 e , d_h_vcol, d_qt, d_ec
2123 s , fs_bound, fq_bound )
2134 zdelta = max(0.,sign(1.,rtt-zx_t))
2135 zx_qs = r2es * foeew(zx_t,zdelta)/
pplay(
i,
k)
2136 zx_qs = min(0.5,zx_qs)
2137 zcor = 1./(1.-retv*zx_qs)
2140 IF (zx_t.LT.t_coup)
THEN
2141 zx_qs = qsats(zx_t)/
pplay(
i,
k)
2143 zx_qs = qsatl(zx_t)/
pplay(
i,
k)
2151 write(
lunout,*)
'L qsat (g/kg) avant clouds_gno'
2159 conv_q(
i,
k) = d_q_dyn(
i,
k)
2161 conv_t(
i,
k) = d_t_dyn(
i,
k)
2167 WRITE(
lunout,*)
"avantcon=", za
2177 z_avant(
i) = z_avant(
i) + (q_seri(
i,
k)+ql_seri(
i,
k))
2178 . *(paprs(
i,
k)-paprs(
i,
k+1))/rg
2193 abort_message =
'reactiver le call conlmd dans physiq.F'
2200 e conv_t, conv_q, -evap, omega,
2201 s d_t_con, d_q_con, rain_con, snow_con,
2202 s pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
2203 s kcbot, kctop, kdtop, pmflxr, pmflxs)
2207 WHERE (rain_con < 0.) rain_con = 0.
2208 WHERE (snow_con < 0.) snow_con = 0.
2210 ibas_con(
i) =
klev+1 - kcbot(
i)
2211 itop_con(
i) =
klev+1 - kctop(
i)
2225 if (iflag_wake>=1)
then
2226 t_wake(
i,
k) = t_seri(
i,
k)
2227 . +(1-wake_s(
i))*wake_deltat(
i,
k)
2228 q_wake(
i,
k) = q_seri(
i,
k)
2229 . +(1-wake_s(
i))*wake_deltaq(
i,
k)
2230 t_undi(
i,
k) = t_seri(
i,
k)
2231 . -wake_s(
i)*wake_deltat(
i,
k)
2232 q_undi(
i,
k) = q_seri(
i,
k)
2233 . -wake_s(
i)*wake_deltaq(
i,
k)
2235 t_wake(
i,
k) = t_seri(
i,
k)
2236 q_wake(
i,
k) = q_seri(
i,
k)
2237 t_undi(
i,
k) = t_seri(
i,
k)
2238 q_undi(
i,
k) = q_seri(
i,
k)
2252 if (iflag_wake>=1)
then
2253 if (itap .le. it_wape_prescr)
then
2255 ale_wake(
i) = wape_prescr
2256 alp_wake(
i) = fip_prescr
2262 ale_wake(
i) = wake_pe(
i)
2263 alp_wake(
i) = wake_fip(
i)
2276 $
WRITE(
lunout,*)
'ALE et ALP imposes'
2280 ale(
i) = max(ale_wake(
i),ale_bl_prescr)
2283 alp(
i) = alp_wake(
i) + alp_bl_prescr
2301 ale(
i) = max(ale_wake(
i),ale_bl(
i))
2304 ale(
i) = max(ale_wake(
i),ale_bl_trig(
i))
2307 if (alp_offset>=0.)
then
2308 alp(
i) = alp_wake(
i) + alp_bl(
i) + alp_offset
2310 alp(
i)=alp_wake(
i)+alp_bl(
i)+alp_offset*min(omega(
i,6),0.)
2312 print*,
'ALP ',alp(
i),alp_wake(
i)
2313 s ,alp_bl(
i),alp_offset*min(omega(
i,6),0.)
2321 if (alp(
i)>alp_max)
then
2323 &
'WARNING SUPER ALP (seuil=',alp_max,
2324 ,
'): i, alp, alp_wake,ale',
i,alp(
i),alp_wake(
i),ale(
i)
2327 if (ale(
i)>ale_max)
then
2329 &
'WARNING SUPER ALE (seuil=',ale_max,
2330 ,
'): i, alp, alp_wake,ale',
i,ale(
i),ale_wake(
i),alp(
i)
2345 IF (type_trac ==
'repr')
THEN
2352 . t_wake,q_wake,wake_s,
2353 .
u_seri,v_seri,tr_seri,nbtr_tmp,
2355 . ema_work1,ema_work2,
2356 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr,
2357 . rain_con, snow_con, ibas_con, itop_con,
sigd,
2358 . ema_cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwd0,
2359 . ma,mip,vprecip,cape,cin,tvp,tconv,iflagctrl,
2360 . pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,qcondc,wd,
2364 . pmflxr,pmflxs,da,phi,mp,phi2,d1a,dam,sij,clw,elij,
2365 . ftd,fqd,lalim_conv,wght_th,
2366 . ev, ep,epmlmmm,eplamm,
2367 . wdtraina,wdtrainm)
2376 pmfu(:,:)=upwd(:,:)+dnwd(:,:)
2379 if (iflagctrl(
i).le.1) itau_con(
i)=itau_con(
i)+1
2386 . paprs,
pplay,t_seri,q_seri,
2387 .
u_seri,v_seri,tr_seri,ntra,
2388 . ema_work1,ema_work2,
2389 . d_t_con,d_q_con,d_u_con,d_v_con,d_tr,
2390 . rain_con, snow_con, ibas_con, itop_con,
2391 . upwd,dnwd,dnwd0,bas,top,
2392 . ma,cape,tvp,rflag,
2394 . ,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr
2401 rain_con = rain_con * cvl_corr
2402 snow_con = snow_con * cvl_corr
2405 IF (.NOT. ok_gust)
THEN
2416 clwcon0(:,:)=fact_cldcon*clwcon0(:,:)
2418 s(klon,
klev,q_seri,
zqsat,clwcon0,ptconv,ratqsc,rnebcon0)
2423 itop_con(
i) = min(max(itop_con(
i),1),
klev)
2424 ibas_con(
i) = min(max(ibas_con(
i),1),itop_con(
i))
2428 ema_pcb(
i) = paprs(
i,ibas_con(
i))
2433 ema_pct(
i) = paprs(
i,itop_con(
i)+1)
2435 if (itop_con(
i).gt.
klev-3)
then
2437 write(
lunout,*)
'La convection monte trop haut '
2438 write(
lunout,*)
'itop_con(,',
i,
',)=',itop_con(
i)
2443 write(
lunout,*)
'On n appelle pas la convection'
2464 CALL
add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,
'con')
2475 IF (ip_ebil_phy.ge.2)
THEN
2476 ztit=
'after convect'
2478 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
2479 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2481 e , zero_v, zero_v, zero_v, zero_v, zero_v
2482 e , zero_v, rain_con, snow_con, ztsol
2483 e , d_h_vcol, d_qt, d_ec
2484 s , fs_bound, fq_bound )
2489 WRITE(
lunout,*)
"aprescon=", za
2494 zx_t = zx_t + (rain_con(
i)+
2497 zx_t = zx_t/za*
dtime
2498 WRITE(
lunout,*)
"Precip=", zx_t
2506 z_apres(
i) = z_apres(
i) + (q_seri(
i,
k)+ql_seri(
i,
k))
2507 . *(paprs(
i,
k)-paprs(
i,
k+1))/rg
2511 z_factor(
i) = (z_avant(
i)-(rain_con(
i)+snow_con(
i))*
dtime)
2516 IF (z_factor(
i).GT.(1.0+1.0e-08) .OR.
2517 . z_factor(
i).LT.(1.0-1.0e-08))
THEN
2518 q_seri(
i,
k) = q_seri(
i,
k) * z_factor(
i)
2530 if (iflag_wake>=1)
then
2533 dt_dwn(
i,
k) = ftd(
i,
k)
2535 dq_dwn(
i,
k) = fqd(
i,
k)
2537 m_dwn(
i,
k) = dnwd0(
i,
k)
2538 m_up(
i,
k) = upwd(
i,
k)
2546 if (iflag_wake==2)
then
2547 ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.)
2549 dt_dwn(:,
k)= dt_dwn(:,
k)+
2550 : ok_wk_lsp(:)*(d_t_eva(:,
k)+d_t_lsc(:,
k))/
dtime
2551 dq_dwn(:,
k)= dq_dwn(:,
k)+
2552 : ok_wk_lsp(:)*(d_q_eva(:,
k)+d_q_lsc(:,
k))/
dtime
2558 : ,t_seri,q_seri,omega
2559 : ,dt_dwn,dq_dwn,m_dwn,m_up
2563 o ,wake_deltat,wake_deltaq,wake_dth
2564 o ,wake_h,wake_s,wake_dens
2565 o ,wake_pe,wake_fip,wake_gfl
2567 o ,wake_k, t_undi,q_undi
2568 o ,wake_omgbdth,wake_dp_omgb
2569 o ,wake_dtke,wake_dqke
2570 o ,wake_dtpbl,wake_dqpbl
2571 o ,wake_omg,wake_dp_deltomg
2572 o ,wake_spread,wake_cstar,wake_d_deltat_gw
2573 o ,wake_ddeltat,wake_ddeltaq)
2579 d_t_wake(:,:)=dt_wake(:,:)*
dtime
2580 d_q_wake(:,:)=dq_wake(:,:)*
dtime
2588 IF (ip_ebil_phy.ge.2)
THEN
2591 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
2592 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2594 e , zero_v, zero_v, zero_v, zero_v, zero_v
2595 e , zero_v, zero_v, zero_v, ztsol
2596 e , d_h_vcol, d_qt, d_ec
2597 s , fs_bound, fq_bound )
2607 s ,seuil_inversion,weak_inversion,dthmin)
2624 .
'AVANT LA CONVECTION SECHE , iflag_thermals='
2643 pbl_tke_input(
i,
k,is_oce)=pbl_tke(
i,
k,is_oce)
2644 pbl_tke_input(
i,
k,is_ter)=pbl_tke(
i,
k,is_ter)
2645 pbl_tke_input(
i,
k,is_lic)=pbl_tke(
i,
k,is_lic)
2646 pbl_tke_input(
i,
k,is_sic)=pbl_tke(
i,
k,is_sic)
2653 s ,
pplay,paprs,pphi,weak_inversion
2655 s ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs
2656 s ,fm_therm,entr_therm,detr_therm
2657 s ,zqasc,clwcon0th,lmax_th,ratqscth
2658 s ,ratqsdiff,zqsatth
2660 s ,ale_bl,alp_bl,lalim_conv,wght_th, zmax0, f0,
zw2,
fraca
2661 s ,
ztv,zpspsk,ztla,zthl
2663 e ,pbl_tke_input,pctsrf,omega,
airephy
2664 s ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0
2665 s ,n2,s2,ale_bl_stat
2666 s ,therm_tke_max,env_tke_max
2667 s ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke
2668 s ,alp_bl_conv,alp_bl_stat
2677 print *,
'cin, ale_bl_stat, alp_bl_stat ',
2678 $ cin, ale_bl_stat, alp_bl_stat
2684 random_notrig(
i)=1e6*ale_bl_stat(
i)-int(1e6*ale_bl_stat(
i))
2685 if ( ale_bl_trig(
i) .lt. abs(cin(
i))+1.e-10 )
then
2688 tau_trig(
i)=tau_trig_deep
2693 print *,
'random_notrig, tau_trig ',
2694 $ random_notrig, tau_trig
2695 print *,
's_trig,s2,n2 ',
2701 if ( (ale_bl_stat(
i) .gt. abs(cin(
i))+1.e-10) )
then
2702 proba_notrig(
i)=(1.-exp(-s_trig/s2(
i)))**
2705 if (random_notrig(
i) .ge. proba_notrig(
i))
then
2706 ale_bl_trig(
i)=ale_bl_stat(
i)
2718 print *,
'proba_notrig, ale_bl_trig ',
2719 $ proba_notrig, ale_bl_trig
2725 if (iflag_clos_bl.ge.1)
then
2728 alp_bl(
i)=alp_bl_stat(
i)
2738 print *,
'ale_bl_trig, alp_bl_stat ',ale_bl_trig, alp_bl_stat
2754 print*,
'Couplage Thermiques/Emanuel seulement si T<0'
2756 if (t_seri(
i,lmax_th(
i))>273.)
then
2763 zmax_th(
i)=pphi(
i,lmax_th(
i))/rg
2782 limbas(:)=lmax_th(:)
2793 s , d_t_ajsb, d_q_ajsb)
2795 CALL
ajsec(paprs,
pplay, t_seri,q_seri,limbas
2796 s , d_t_ajsb, d_q_ajsb)
2802 d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:)
2803 d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:)
2813 IF (ip_ebil_phy.ge.2)
THEN
2814 ztit=
'after dry_adjust'
2816 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
2817 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2819 e , zero_v, zero_v, zero_v, zero_v, zero_v
2820 e , zero_v, zero_v, zero_v, ztsol
2821 e , d_h_vcol, d_qt, d_ec
2822 s , fs_bound, fq_bound )
2831 s ratqsbas,ratqshaut,tau_ratqs,fact_cldcon,
2832 s ptconv,ptconvth,clwcon0th, rnebcon0th,
2842 print *,
' ->fisrtilp '
2846 . t_seri, q_seri,ptconv,ratqs,
2847 . d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq,
2848 . rain_lsc, snow_lsc,
2849 . pfrac_impa, pfrac_nucl, pfrac_1nucl,
2850 . frac_impa, frac_nucl, beta_prec_fisrt,
2852 . zqasc,
fraca,
ztv,zpspsk,ztla,zthl,iflag_cldcon )
2854 WHERE (rain_lsc < 0) rain_lsc = 0.
2855 WHERE (snow_lsc < 0) snow_lsc = 0.
2862 cldfra(
i,
k) = rneb(
i,
k)
2868 WRITE(
lunout,*)
"apresilp=", za
2873 zx_t = zx_t + (rain_lsc(
i)
2876 zx_t = zx_t/za*
dtime
2877 WRITE(
lunout,*)
"Precip=", zx_t
2880 IF (ip_ebil_phy.ge.2)
THEN
2883 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
2884 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
2886 e , zero_v, zero_v, zero_v, zero_v, zero_v
2887 e , zero_v, rain_lsc, snow_lsc, ztsol
2888 e , d_h_vcol, d_qt, d_ec
2889 s , fs_bound, fq_bound )
2908 IF (iflag_cldcon.le.-1)
THEN
2912 if (iflag_cldcon.eq.-1)
then
2913 rain_tiedtke=rain_con
2920 if (d_q_con(
i,
k).lt.0.)
then
2921 rain_tiedtke(
i)=rain_tiedtke(
i)-d_q_con(
i,
k)/
pdtphys
2922 s *(paprs(
i,
k)-paprs(
i,
k+1))/rg
2934 . rain_tiedtke,snow_tiedtke,ibas_con,itop_con,
2938 IF (diafra(
i,
k).GT.cldfra(
i,
k))
THEN
2939 cldliq(
i,
k) = dialiq(
i,
k)
2940 cldfra(
i,
k) = diafra(
i,
k)
2945 ELSE IF (iflag_cldcon.ge.3)
THEN
2952 rnebcon(
i,
k)=rnebcon(
i,
k)*facteur
2953 if (rnebcon0(
i,
k)*clwcon0(
i,
k).gt.rnebcon(
i,
k)*clwcon(
i,
k))
2955 rnebcon(
i,
k)=rnebcon0(
i,
k)
2956 clwcon(
i,
k)=clwcon0(
i,
k)
2964 IF (flag_aerosol .gt. 0)
THEN
2965 IF (.NOT. aerosol_couple)
2967 & debut, new_aod, flag_aerosol, itap, jd_cur-jd_ref,
2969 & mass_solu_aero, mass_solu_aero_pi,
2970 & tau_aero, piz_aero, cg_aero,
2971 & tausum_aero, tau3d_aero)
2973 tausum_aero(:,:,:) = 0.
2974 tau_aero(:,:,:,:) = 0.
2975 piz_aero(:,:,:,:) = 0.
2976 cg_aero(:,:,:,:) = 0.
2981 IF (flag_aerosol_strat)
THEN
2982 print *,
'appel a readaerosolstrat', mth_cur
2997 open(99,file=
'tautab.formatted', form=
'FORMATTED')
2998 read(99,
'(f30.20)') tautab_omp
3001 open(99,file=
'invtau.formatted',form=
'FORMATTED')
3002 read(99,
'(i10)') invtau_omp
3016 IF (mod(itap,nint(freq_isccp/
dtime)).EQ.0)
THEN
3017 #include "calcul_simulISCCP.h"
3024 if (iflag_cldcon>=5)
then
3027 ptconvth(:,
k)=fm_therm(:,
k+1)>0.
3037 if (ptconv(
i,
k).and.ptconvth(
i,
k))
then
3038 cldliq(
i,
k)=cldliq(
i,
k)+rnebcon(
i,
k)*clwcon(
i,
k)
3039 cldfra(
i,
k)=min(cldfra(
i,
k)+rnebcon(
i,
k),1.)
3040 else if (ptconv(
i,
k))
then
3041 cldfra(
i,
k)=rnebcon(
i,
k)
3042 cldliq(
i,
k)=rnebcon(
i,
k)*clwcon(
i,
k)
3050 cldfra(
i,
k)=min(cldfra(
i,
k)+rnebcon(
i,
k),1.)
3051 cldliq(
i,
k)=cldliq(
i,
k)+rnebcon(
i,
k)*clwcon(
i,
k)
3066 if (ptconv(
i,
k).and. .not. ptconvth(
i,
k))
then
3067 cldfra(
i,
k)=rnebcon(
i,
k)
3068 cldliq(
i,
k)=rnebcon(
i,
k)*clwcon(
i,
k)
3078 cldfra(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
3079 cldliq(:,:)=cldliq(:,:)+rnebcon(:,:)*clwcon(:,:)
3094 IF (ok_stratus)
THEN
3098 IF (diafra(
i,
k).GT.cldfra(
i,
k))
THEN
3099 cldliq(
i,
k) = dialiq(
i,
k)
3100 cldfra(
i,
k) = diafra(
i,
k)
3109 rain_fall(
i) = rain_con(
i) + rain_lsc(
i)
3110 snow_fall(
i) = snow_con(
i) + snow_lsc(
i)
3113 IF (ip_ebil_phy.ge.2)
THEN
3114 ztit=
"after diagcld"
3116 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
3117 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3119 e , zero_v, zero_v, zero_v, zero_v, zero_v
3120 e , zero_v, zero_v, zero_v, ztsol
3121 e , d_h_vcol, d_qt, d_ec
3122 s , fs_bound, fq_bound )
3131 zdelta = max(0.,sign(1.,rtt-zx_t))
3132 zx_qs = r2es * foeew(zx_t,zdelta)/
pplay(
i,
k)
3133 zx_qs = min(0.5,zx_qs)
3134 zcor = 1./(1.-retv*zx_qs)
3137 IF (zx_t.LT.t_coup)
THEN
3138 zx_qs = qsats(zx_t)/
pplay(
i,
k)
3140 zx_qs = qsatl(zx_t)/
pplay(
i,
k)
3143 zx_rh(
i,
k) = q_seri(
i,
k)/zx_qs
3152 tpot(
i)=zt2m(
i)*(100000./paprs(
i,1))**rkappa
3154 IF(zt2m(
i).LT.rtt)
then
3160 IF (zt2m(
i).LT.rtt)
THEN
3167 . exp((lheat *qsat2m(
i))/(rcpd*zt2m(
i)))
3170 IF (type_trac ==
'inca')
THEN
3174 calday =
REAL(days_elapsed + 1) + jh_cur
3177 IF (config_inca ==
'aero')
THEN
3178 CALL aerosol_meteo_calc(
3183 zxsnow_dummy(:) = 0.0
3185 CALL chemhook_begin(calday,
3194 $ coefh(:,:,is_ave),
3230 IF (aerosol_couple)
THEN
3231 mass_solu_aero(:,:) = ccm(:,:,1)
3232 mass_solu_aero_pi(:,:) = ccm(:,:,2)
3235 if (ok_newmicro)
then
3236 CALL
newmicro(ok_cdnc, bl95_b0, bl95_b1,
3237 . paprs,
pplay, t_seri, cldliq, cldfra,
3238 . cldtau, cldemi, cldh, cldl, cldm, cldt, cldq,
3239 e flwp, fiwp, flwc, fiwc,
3240 e mass_solu_aero, mass_solu_aero_pi,
3241 s cldtaupi, re, fl, ref_liq, ref_ice)
3244 . t_seri, cldliq, cldfra, cldtau, cldemi,
3245 . cldh, cldl, cldm, cldt, cldq,
3247 e mass_solu_aero, mass_solu_aero_pi,
3255 cldtaupirad = cldtaupi
3259 if(lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND.
3260 $lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.)
THEN
3271 if (mskocean_beta)
THEN
3288 if (
rlon(
i).ge.lon1_beta.AND.
rlon(
i).le.lon2_beta.AND.
3289 $
rlat(
i).le.lat1_beta.AND.
rlat(
i).ge.lat2_beta)
THEN
3295 if (mskocean_beta)
THEN
3311 IF (mod(itaprad,radpas).EQ.0)
THEN
3314 albsol1(
i) = falb1(
i,is_oce) * pctsrf(
i,is_oce)
3315 . + falb1(
i,is_lic) * pctsrf(
i,is_lic)
3316 . + falb1(
i,is_ter) * pctsrf(
i,is_ter)
3317 . + falb1(
i,is_sic) * pctsrf(
i,is_sic)
3318 albsol2(
i) = falb2(
i,is_oce) * pctsrf(
i,is_oce)
3319 . + falb2(
i,is_lic) * pctsrf(
i,is_lic)
3320 . + falb2(
i,is_ter) * pctsrf(
i,is_ter)
3321 . + falb2(
i,is_sic) * pctsrf(
i,is_sic)
3331 IF (aerosol_couple)
THEN
3334 e(
kdlon,kflev,dist, rmu0, fract, solaire,
3335 e paprs,
pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
3337 e cldfrarad, cldemirad, cldtaurad,
3338 s heat,heat0,cool,cool0,radsol,albpla,
3339 s topsw,toplw,solsw,sollw,
3341 s topsw0,toplw0,solsw0,sollw0,
3342 s lwdn0, lwdn, lwup0, lwup,
3343 s swdn0, swdn, swup0, swup,
3345 e tau_aero, piz_aero, cg_aero,
3346 s topswad_aero, solswad_aero,
3347 s topswad0_aero, solswad0_aero,
3348 s topsw_aero, topsw0_aero,
3349 s solsw_aero, solsw0_aero,
3351 s topswai_aero, solswai_aero)
3365 print *,
' ->radlwsw, number 1 '
3369 e(dist, rmu0, fract,
3370 e paprs,
pplay,zxtsol,albsol1, albsol2,
3372 e cldfrarad, cldemirad, cldtaurad,
3373 e ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
3374 e flag_aerosol_strat,
3375 e tau_aero, piz_aero, cg_aero,
3376 e cldtaupirad,new_aod,
3377 e
zqsat, flwc, fiwc,
3378 s heat,heat0,cool,cool0,radsol,albpla,
3379 s topsw,toplw,solsw,sollw,
3381 s topsw0,toplw0,solsw0,sollw0,
3382 s lwdn0, lwdn, lwup0, lwup,
3383 s swdn0, swdn, swup0, swup,
3384 s topswad_aero, solswad_aero,
3385 s topswai_aero, solswai_aero,
3386 o topswad0_aero, solswad0_aero,
3387 o topsw_aero, topsw0_aero,
3388 o solsw_aero, solsw0_aero,
3389 o topswcf_aero, solswcf_aero)
3396 if (ok_4xco2atm)
then
3397 if (rco2_per.NE.rco2_act.OR.rch4_per.NE.rch4_act.OR.
3398 $rn2o_per.NE.rn2o_act.OR.rcfc11_per.NE.rcfc11_act.OR.
3399 $rcfc12_per.NE.rcfc12_act)
THEN
3408 print *,
' ->radlwsw, number 2 '
3412 e(dist, rmu0, fract,
3413 e paprs,
pplay,zxtsol,albsol1, albsol2,
3415 e cldfra, cldemi, cldtau,
3416 e ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
3417 e flag_aerosol_strat,
3418 e tau_aero, piz_aero, cg_aero,
3420 e
zqsat, flwc, fiwc,
3421 s heatp,heat0p,coolp,cool0p,radsolp,albplap,
3422 s topswp,toplwp,solswp,sollwp,
3424 s topsw0p,toplw0p,solsw0p,sollw0p,
3425 s lwdn0p, lwdnp, lwup0p, lwupp,
3426 s swdn0p, swdnp, swup0p, swupp,
3427 s topswad_aerop, solswad_aerop,
3428 s topswai_aerop, solswai_aerop,
3429 o topswad0_aerop, solswad0_aerop,
3430 o topsw_aerop, topsw0_aerop,
3431 o solsw_aerop, solsw0_aerop,
3432 o topswcf_aerop, solswcf_aerop)
3439 itaprad = itaprad + 1
3441 IF (iflag_radia.eq.0)
THEN
3443 print *,
'--------------------------------------------------'
3444 print *,
'>>>> ATTENTION rayonnement desactive pour ce cas'
3445 print *,
'>>>> heat et cool mis a zero '
3446 print *,
'--------------------------------------------------'
3460 t_seri(
i,
k) = t_seri(
i,
k)
3473 IF (ip_ebil_phy.ge.2)
THEN
3476 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
3477 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3479 e , topsw, toplw, solsw, sollw, zero_v
3480 e , zero_v, zero_v, zero_v, ztsol
3481 e , d_h_vcol, d_qt, d_ec
3482 s , fs_bound, fq_bound )
3498 bils(
i) = radsol(
i) - sens(
i) + zxfluxlat(
i)
3506 print *,
' call orography ? ',
ok_orodr
3516 IF (((zpic(
i)-zmea(
i)).GT.100.).AND.(zstd(
i).GT.10.0))
THEN
3527 e zmea,zstd, zsig, zgam, zthe,zpic,zval,
3529 e t_seri,
u_seri, v_seri,
3530 s zulow, zvlow, zustrdr, zvstrdr,
3531 s d_t_oro, d_u_oro, d_v_oro)
3535 e zmea,zstd, zsig, zgam, zthe,zpic,zval,
3537 e t_seri,
u_seri, v_seri,
3538 s zulow, zvlow, zustrdr, zvstrdr,
3539 s d_t_oro, d_u_oro, d_v_oro)
3563 IF ((zpic(
i)-zmea(
i)).GT.100.)
THEN
3574 e
rlat,zmea,zstd,zpic,zgam,zthe,zpic,zval,
3576 e t_seri,
u_seri, v_seri,
3577 s zulow, zvlow, zustrli, zvstrli,
3578 s d_t_lif, d_u_lif, d_v_lif )
3582 e
rlat,zmea,zstd,zpic,
3584 e t_seri,
u_seri, v_seri,
3585 s zulow, zvlow, zustrli, zvstrli,
3586 s d_t_lif, d_u_lif, d_v_lif)
3602 o d_t_hin, d_u_hin, d_v_hin)
3628 c(paprs(
i,
k)-paprs(
i,
k+1))/rg
3630 c(paprs(
i,
k)-paprs(
i,
k+1))/rg
3636 IF (is_sequential .and.
ok_orodr)
THEN
3640 c zustrdr,zustrli,zustrph,
3641 c zvstrdr,zvstrli,zvstrph,
3647 IF (ip_ebil_phy.ge.2)
THEN
3648 ztit=
'after orography'
3650 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
3651 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3653 e , zero_v, zero_v, zero_v, zero_v, zero_v
3654 e , zero_v, zero_v, zero_v, ztsol
3655 e , d_h_vcol, d_qt, d_ec
3656 s , fs_bound, fq_bound )
3668 IF (mod(itap,nint(freq_cosp/
dtime)).EQ.0)
THEN
3670 print*,
'freq_cosp',freq_cosp
3671 mr_ozone=wo(:, :, 1) * dobson_u * 1e3 /
zmasse
3675 $ ok_mensuelcosp,ok_journecosp,ok_hfcosp,
3676 $ ecrit_mth,ecrit_day,ecrit_hf,
3679 $ pctsrf(:,is_ter)+pctsrf(:,is_lic),
3680 $ zu10m,zv10m,pphis,
3681 $ zphi,paprs(:,1:
klev),
pplay,zxtsol,t_seri,
3682 $ qx(:,:,ivap),zx_rh,cldfra,rnebcon,flwc,fiwc,
3684 $ pmflxr(:,1:
klev),pmflxs(:,1:
klev),
3685 $ mr_ozone,cldtau, cldemi)
3706 IF (type_trac==
'repr')
THEN
3707 sh_in(:,:) = q_seri(:,:)
3709 sh_in(:,:) = qx(:,:,ivap)
3713 i itap, days_elapsed+1, jh_cur, debut,
3715 i paprs,
pplay, pmfu, pmfd,
3716 i pen_u, pde_u, pen_d, pde_d,
3717 i cdragh, coefh(:,:,is_ave), fm_therm, entr_therm,
3718 i u1, v1, ftsol, pctsrf,
3719 i ustar, u10m, v10m,
3721 i frac_impa,frac_nucl, beta_prec_fisrt,beta_prec,
3723 i sh_in, rhcl, cldfra, rneb,
3724 i diafra, cldliq, itop_con, ibas_con,
3725 i pmflxr, pmflxs, prfl, psfl,
3726 i da, phi, mp, upwd,
3727 i phi2, d1a, dam, sij,
3728 i wdtraina, wdtrainm,
sigd, clw,elij,
3729 i ev, ep, epmlmmm, eplamm,
3730 i dnwd, aerosol_couple, flxmass_w,
3731 i tau_aero, piz_aero, cg_aero, ccm,
3739 $ print*,
'Attention on met a 0 les thermiques pour phystoke'
3742 i t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
3743 i fm_therm,entr_therm,
3744 i cdragh,coefh(:,:,is_ave),u1,v1,ftsol,pctsrf,
3745 i frac_impa, frac_nucl,
3747 i qx(:,:,ivap),da,phi,mp,upwd,dnwd)
3755 CALL
transp(paprs,zxtsol,
3756 e t_seri, q_seri,
u_seri, v_seri, zphi,
3763 e t_seri, q_seri,
u_seri, v_seri, zphi,
3764 s ve_lay, vq_lay, ue_lay, uq_lay)
3777 forall (
k=1: llm) exner(:,
k) = (
pplay(:,
k)/paprs(:,1))**rkappa
3779 s
u_seri,v_seri,t_seri,q_seri,pbl_tke(:,:,is_ave)-tke0(:,:),
3781 t_seri(:,:)=t_seri(:,:)+d_t_ec(:,:)
3784 IF (ip_ebil_phy.ge.1)
THEN
3787 e , t_seri,q_seri,ql_seri,qs_seri,
u_seri,v_seri,paprs,
pplay
3788 s , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
3795 e , topsw, toplw, solsw, sollw, sens
3796 e , evap, rain_fall, snow_fall, ztsol
3797 e , d_h_vcol, d_qt, d_ec
3798 s , fs_bound, fq_bound )
3800 d_h_vcol_phy=d_h_vcol
3811 #include "calcul_STDlev.h"
3814 slp(:) = paprs(:,1)*exp(pphis(:)/(rd*t_seri(:,1)))
3821 . q_seri(
i,
k)*(paprs(
i,
k)-paprs(
i,
k+1))/rg
3827 #include "calcul_divers.h"
3829 IF (type_trac ==
'inca')
THEN
3857 print *,
'Convertir les incrementations en tendances '
3872 d_qx(
i,
k,ivap) = ( q_seri(
i,
k) - qx(
i,
k,ivap) ) /
dtime
3873 d_qx(
i,
k,iliq) = ( ql_seri(
i,
k) - qx(
i,
k,iliq) ) /
dtime
3877 IF (nqtot.GE.3)
THEN
3881 d_qx(
i,
k,iq) = ( tr_seri(
i,
k,iq-2) - qx(
i,
k,iq) ) /
dtime
3897 v_ancien(
i,
k) = v_seri(
i,
k)
3898 t_ancien(
i,
k) = t_seri(
i,
k)
3899 q_ancien(
i,
k) = q_seri(
i,
k)
3904 IF (nqtot.GE.3)
THEN
3908 tr_ancien(
i,
k,iq-2) = tr_seri(
i,
k,iq-2)
3922 write(
lunout,*)
'FIN DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
3924 s
'nlon,klev,nqtot,debut,lafin,jD_cur, jH_cur, pdtphys pct tlos'
3926 s nlon,
klev,nqtot,debut,lafin, jd_cur, jh_cur ,
pdtphys,
3927 s pctsrf(igout,is_ter), pctsrf(igout,is_lic),pctsrf(igout,is_oce),
3928 s pctsrf(igout,is_sic)
3929 write(
lunout,*)
'd_t_dyn,d_t_con,d_t_lsc,d_t_ajsb,d_t_ajs,d_t_eva'
3931 write(
lunout,*) d_t_dyn(igout,
k),d_t_con(igout,
k),
3932 s d_t_lsc(igout,
k),d_t_ajsb(igout,
k),d_t_ajs(igout,
k),
3935 write(
lunout,*)
'cool,heat'
3937 write(
lunout,*) cool(igout,
k),heat(igout,
k)
3940 write(
lunout,*)
'd_t_oli,d_t_vdf,d_t_oro,d_t_lif,d_t_ec'
3942 write(
lunout,*) d_t_oli(igout,
k),d_t_vdf(igout,
k),
3943 s d_t_oro(igout,
k),d_t_lif(igout,
k),d_t_ec(igout,
k)
3946 write(
lunout,*)
'd_ps ',d_ps(igout)
3947 write(
lunout,*)
'd_u, d_v, d_t, d_qx1, d_qx2 '
3949 write(
lunout,*) d_u(igout,
k),d_v(igout,
k),d_t(igout,
k),
3950 s d_qx(igout,
k,1),d_qx(igout,
k,2)
3964 theta(
i,
k)=t_seri(
i,
k)*(100000./
pplay(
i,
k))**(rd/rcpd)
3980 . zxfqcalving, zxfqfonte, zxffonte)
3997 if (ptconvth(
i,
k))
then
3998 d_t_lscth(
i,
k)=d_t_eva(
i,
k)+d_t_lsc(
i,
k)
3999 d_q_lscth(
i,
k)=d_q_eva(
i,
k)+d_q_lsc(
i,
k)
4001 d_t_lscst(
i,
k)=d_t_eva(
i,
k)+d_t_lsc(
i,
k)
4002 d_q_lscst(
i,
k)=d_q_eva(
i,
k)+d_q_lsc(
i,
k)
4008 plul_st(
i)=prfl(
i,lmax_th(
i)+1)+psfl(
i,lmax_th(
i)+1)
4009 plul_th(
i)=prfl(
i,1)+psfl(
i,1)
4013 #include "phys_output_write.h"
4016 #include "write_histISCCP.h"
4020 #include "write_histhfNMC.h"
4021 #include "write_histdayNMC.h"
4022 #include "write_histmthNMC.h"
4025 #include "write_histday_seri.h"
4027 #include "write_paramLMDZ_phy.h"
4048 call
wstats(klon,o_psol%name,
"Surface pressure",
"Pa"
4050 call
wstats(klon,o_tsol%name,
"Surface temperature",
"K",
4053 call
wstats(klon,o_precip%name,
"Precip Totale liq+sol",
4056 call
wstats(klon,o_plul%name,
"Large-scale Precip",
4059 call
wstats(klon,o_pluc%name,
"Convective Precip",
4061 call
wstats(klon,o_sols%name,
"Solar rad. at surf.",
4063 call
wstats(klon,o_soll%name,
"IR rad. at surf.",
4066 call
wstats(klon,o_nettop%name,
"Net dn radiatif flux at TOA",
4071 call
wstats(klon,o_temp%name,
"Air temperature",
"K",
4073 call
wstats(klon,o_vitu%name,
"Zonal wind",
"m.s-1",
4075 call
wstats(klon,o_vitv%name,
"Meridional wind",
4077 call
wstats(klon,o_vitw%name,
"Vertical wind",
4079 call
wstats(klon,o_ovap%name,
"Specific humidity",
"kg/kg",
4085 write (*,*)
"Writing stats..."
4098 if (read_climoz >= 1)
then
4099 if (is_mpi_root)
then
4102 deallocate(press_climoz)
4132 . *(paprs(
i,
k)-paprs(
i,
k+1))/rg
4147 REAL fi(nlon,nfield), ecrit(
iim*
jjmp1,nfield)
4154 ecrit(
i,
n) = fi(1,
n)
4155 ecrit(
i+jjm*
iim,
n) = fi(nlon,
n)
4158 ecrit(
iim+ig,
n) = fi(1+ig,
n)