Changeset 5056


Ignore:
Timestamp:
Jul 16, 2024, 11:45:07 AM (4 months ago)
Author:
Sebastien Nguyen
Message:

convergence of phylmdiso and phylmd

Location:
LMDZ6/trunk/libf/phylmd
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r5050 r5056  
    1414      REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
    1515      !$OMP THREADPRIVATE(ql_seri,qs_seri)
     16! SN 15/07/2024 ISO 4D
     17      REAL, SAVE, ALLOCATABLE :: qx_seri(:,:,:)
     18      !$OMP THREADPRIVATE(qx_seri)
     19! SN
    1620      REAL, SAVE, ALLOCATABLE :: qbs_seri(:,:)
    1721      !$OMP THREADPRIVATE(qbs_seri)
     
    6670      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:),d_ql_eva(:,:),d_qi_eva(:,:)
    6771      !$OMP THREADPRIVATE(d_t_eva,d_q_eva,d_ql_eva,d_qi_eva)
     72! SN 15/07/2024 ISO 4D
     73      REAL, SAVE, ALLOCATABLE :: d_qx_eva(:,:,:)
     74      !$OMP THREADPRIVATE(d_qx_eva)
     75! SN
    6876      REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:)
    6977      !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
     
    119127      REAL, SAVE, ALLOCATABLE :: d_q_ch4(:,:)
    120128      !$OMP THREADPRIVATE(d_q_ch4)
     129#ifdef ISO
     130      REAL, SAVE, ALLOCATABLE :: xt_seri(:,:,:)
     131      !$OMP THREADPRIVATE( xt_seri)
     132      REAL, SAVE, ALLOCATABLE :: xtl_seri(:,:,:)
     133      !$OMP THREADPRIVATE( xtl_seri)
     134      REAL, SAVE, ALLOCATABLE :: xts_seri(:,:,:)
     135      !$OMP THREADPRIVATE( xts_seri)
     136      REAL, SAVE, ALLOCATABLE :: xtbs_seri(:,:,:)
     137      !$OMP THREADPRIVATE( xtbs_seri)
     138      REAL, SAVE, ALLOCATABLE :: d_xt_eva(:,:,:)
     139      !$OMP THREADPRIVATE( d_xt_eva)
     140      REAL, SAVE, ALLOCATABLE :: d_xtl_eva(:,:,:)
     141      !$OMP THREADPRIVATE( d_xtl_eva)
     142      REAL, SAVE, ALLOCATABLE :: d_xti_eva(:,:,:)
     143      !$OMP THREADPRIVATE( d_xti_eva)
     144      REAL, SAVE, ALLOCATABLE :: d_xt_vdf(:,:,:)
     145      !$OMP THREADPRIVATE( d_xt_vdf)
     146      REAL, SAVE, ALLOCATABLE :: d_xt_dyn(:,:,:)
     147      !$OMP THREADPRIVATE( d_xt_dyn)
     148      REAL, SAVE, ALLOCATABLE :: d_xtl_dyn(:,:,:), d_xts_dyn(:,:,:), d_xtbs_dyn(:,:,:)
     149      !$OMP THREADPRIVATE(d_xtl_dyn, d_xts_dyn, d_xtbs_dyn)
     150      REAL, SAVE, ALLOCATABLE :: d_xt_con(:,:,:)
     151      !$OMP THREADPRIVATE( d_xt_con)
     152      REAL, SAVE, ALLOCATABLE :: d_xt_wake(:,:,:)
     153      !$OMP THREADPRIVATE( d_xt_wake)
     154      REAL, SAVE, ALLOCATABLE :: d_xt_lsc(:,:,:),d_xtl_lsc(:,:,:),d_xti_lsc(:,:,:)
     155      !$OMP THREADPRIVATE( d_xt_lsc,d_xtl_lsc,d_xti_lsc)
     156      REAL, SAVE, ALLOCATABLE :: d_xt_ajsb(:,:,:)
     157      !$OMP THREADPRIVATE( d_xt_ajsb)
     158      REAL, SAVE, ALLOCATABLE :: d_xt_ajs(:,:,:)
     159      !$OMP THREADPRIVATE( d_xt_ajs)
     160      REAL, SAVE, ALLOCATABLE :: d_xt_ajs_w(:,:,:), d_xt_ajs_x(:,:,:)
     161      !$OMP THREADPRIVATE(d_xt_ajs_w, d_xt_ajs_x)
     162      REAL, SAVE, ALLOCATABLE :: d_xt_vdf_w(:,:,:), d_xt_vdf_x(:,:,:)
     163      !$OMP THREADPRIVATE(d_xt_vdf_w, d_xt_vdf_x)
     164      REAL, SAVE, ALLOCATABLE :: d_xt_ch4(:,:,:)
     165      !$OMP THREADPRIVATE( d_xt_ch4)
     166      REAL, SAVE, ALLOCATABLE :: d_xt_prod_nucl(:,:,:)
     167      !$OMP THREADPRIVATE( d_xt_prod_nucl)
     168      REAL, SAVE, ALLOCATABLE :: d_xt_cosmo(:,:,:)
     169      !$OMP THREADPRIVATE( d_xt_cosmo)
     170      REAL, SAVE, ALLOCATABLE :: d_xt_decroiss(:,:,:)
     171      !$OMP THREADPRIVATE( d_xt_decroiss)
     172#endif
    121173
    122174! tendance du a la conersion Ec -> E thermique
     
    306358!!!OMP THREADPRIVATE(d_s_the, d_dens_the)
    307359      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)           :: d_deltat_ajs_cv, d_deltaq_ajs_cv
    308 !$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)                       
     360!$OMP THREADPRIVATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
     361#ifdef ISO
     362    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          :: d_deltaxt_wk
     363!$OMP THREADPRIVATE(d_deltaxt_wk)
     364    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          :: d_deltaxt_wk_gw
     365!$OMP THREADPRIVATE(d_deltaxt_wk_gw)
     366    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          ::  d_deltaxt_the
     367!$OMP THREADPRIVATE(d_deltaxt_the)
     368    REAL, SAVE, ALLOCATABLE,DIMENSION(:,:,:)          ::  d_deltaxt_vdf
     369!$OMP THREADPRIVATE(d_deltaxt_vdf)
     370      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)           ::  d_deltaxt_ajs_cv
     371!$OMP THREADPRIVATE(d_deltaxt_ajs_cv)
     372#endif                       
    309373!!         End of Wake variables
    310374!!
     
    346410      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc, rain_num
    347411!$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
     412#ifdef ISO
     413      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap,xtprw
     414!$OMP THREADPRIVATE(xtevap,xtprw)
     415      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: h1_diag,runoff_diag
     416      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrunoff_diag
     417!$OMP THREADPRIVATE(h1_diag,runoff_diag,xtrunoff_diag)
     418      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfxtcalving
     419!$OMP THREADPRIVATE(zxfxtcalving)
     420      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtsnow_lsc, zxfxtfonte
     421!$OMP THREADPRIVATE(xtsnow_lsc, zxfxtfonte)
     422      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxxtrunofflic
     423!$OMP THREADPRIVATE(zxxtrunofflic)
     424      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrain_lsc
     425!$OMP THREADPRIVATE(xtrain_lsc)
     426#endif
    348427!
    349428!jyg+nrlmd<
     
    383462      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: kh, kh_x, kh_w
    384463!$OMP THREADPRIVATE(kh, kh_x, kh_w)
     464#ifdef ISO
     465      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: dxtvdf_x, dxtvdf_w
     466!$OMP THREADPRIVATE(dxtvdf_x, dxtvdf_w)
     467      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xt_therm
     468!$OMP THREADPRIVATE(xt_therm)
     469#endif
    385470!!!
    386471!!!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     
    445530      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:):: sij
    446531!$OMP THREADPRIVATE(sij)
     532#ifdef ISO
     533      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtwdtrainA
     534!$OMP THREADPRIVATE(xtwdtrainA)
     535      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtev
     536!$OMP THREADPRIVATE(xtev)
     537      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xttaa
     538!$OMP THREADPRIVATE(xttaa)
     539      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtclw
     540!$OMP THREADPRIVATE(xtclw)
     541#ifdef DIAGISO
     542      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qlp
     543!$OMP THREADPRIVATE(qlp)
     544      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: qvp
     545!$OMP THREADPRIVATE(qvp)
     546      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_detrainement
     547!$OMP THREADPRIVATE(fq_detrainement)
     548      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_ddft
     549!$OMP THREADPRIVATE(fq_ddft)
     550      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_fluxmasse
     551!$OMP THREADPRIVATE(fq_fluxmasse)
     552      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: fq_evapprecip
     553!$OMP THREADPRIVATE(fq_evapprecip)
     554      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: f_detrainement
     555!$OMP THREADPRIVATE(f_detrainement)
     556      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_detrainement
     557!$OMP THREADPRIVATE(q_detrainement)
     558      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_detrainement
     559!$OMP THREADPRIVATE(xt_detrainement)
     560      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtlp
     561!$OMP THREADPRIVATE(xtlp)
     562      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xtvp
     563!$OMP THREADPRIVATE(xtvp)
     564      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: q_the
     565!$OMP THREADPRIVATE(q_the)
     566      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: xt_the
     567!$OMP THREADPRIVATE(xt_the)
     568      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_detrainement
     569!$OMP THREADPRIVATE(fxt_detrainement)
     570      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_ddft
     571!$OMP THREADPRIVATE(fxt_ddft)
     572      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_fluxmasse
     573!$OMP THREADPRIVATE(fxt_fluxmasse)
     574      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:)  :: fxt_evapprecip
     575!$OMP THREADPRIVATE(fxt_evapprecip)
     576#endif
     577#endif
    447578!
    448579!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
     
    492623!$OMP THREADPRIVATE(zxsnow,snowhgt,qsnow,to_ice)
    493624!$OMP THREADPRIVATE(sissnow,runoff,albsol3_lic)
     625#ifdef ISO
     626      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zxxtsnow
     627!$OMP THREADPRIVATE(zxxtsnow)     
     628      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: xtVprecip,xtVprecipi
     629!$OMP THREADPRIVATE(xtVprecip,xtVprecipi)
     630      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: pxtrfl, pxtsfl
     631!$OMP THREADPRIVATE(pxtrfl, pxtsfl)
     632#endif
    494633
    495634      REAL, ALLOCATABLE, SAVE, DIMENSION(:) :: p_tropopause, z_tropopause, t_tropopause
     
    682821SUBROUTINE phys_local_var_init
    683822USE dimphy
    684 USE infotrac_phy, ONLY : nbtr
     823USE infotrac_phy, ONLY : nbtr,nqtot
     824#ifdef ISO
     825USE infotrac_phy, ONLY : ntraciso=>ntiso,niso
     826#endif
    685827USE aero_mod
    686828USE indice_sol_mod
     
    693835IMPLICIT NONE
    694836      ALLOCATE(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev), qbs_seri(klon,klev))
     837! SN 4D ISO
     838      ALLOCATE(qx_seri(klon,klev,nqtot))
     839! SN
    695840      ALLOCATE(u_seri(klon,klev),v_seri(klon,klev))
    696841      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
     
    722867      ALLOCATE(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
    723868      ALLOCATE(d_t_eva(klon,klev),d_q_eva(klon,klev))
     869! SN 4D ISO
     870      ALLOCATE(d_qx_eva(klon,klev,nqtot))
     871! SN
    724872      ALLOCATE(d_ql_eva(klon,klev),d_qi_eva(klon,klev))
    725873      ALLOCATE(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
     
    731879      ALLOCATE(d_t_vdf_w(klon,klev),d_q_vdf_w(klon,klev))
    732880      ALLOCATE(d_t_vdf_x(klon,klev),d_q_vdf_x(klon,klev))
     881#ifdef ISO
     882      allocate(xt_seri(ntraciso,klon,klev))
     883      allocate(xtl_seri(ntraciso,klon,klev))
     884      allocate(xts_seri(ntraciso,klon,klev))
     885      allocate(xtbs_seri(ntraciso,klon,klev))
     886      allocate(d_xt_dyn(ntraciso,klon,klev))
     887      allocate(d_xtl_dyn(ntraciso,klon,klev))
     888      allocate(d_xts_dyn(ntraciso,klon,klev))
     889      allocate(d_xtbs_dyn(ntraciso,klon,klev))
     890      allocate(d_xt_con(ntraciso,klon,klev))
     891      allocate(d_xt_wake(ntraciso,klon,klev))
     892      allocate(d_xt_lsc(ntraciso,klon,klev))
     893      allocate(d_xtl_lsc(ntraciso,klon,klev))
     894      allocate(d_xti_lsc(ntraciso,klon,klev))
     895      allocate(d_xt_ajsb(ntraciso,klon,klev))
     896      allocate(d_xt_ajs(ntraciso,klon,klev))
     897      allocate(d_xt_ajs_w(ntraciso,klon,klev))
     898      allocate(d_xt_ajs_x(ntraciso,klon,klev))
     899      allocate(d_xt_eva(ntraciso,klon,klev))
     900      allocate(d_xtl_eva(ntraciso,klon,klev))
     901      allocate(d_xti_eva(ntraciso,klon,klev))
     902      allocate(d_xt_vdf(ntraciso,klon,klev)) 
     903      allocate(d_xt_vdf_w(ntraciso,klon,klev))
     904      allocate(d_xt_vdf_x(ntraciso,klon,klev))
     905      allocate(d_xt_ch4(ntraciso,klon,klev))
     906      allocate(d_xt_prod_nucl(ntraciso,klon,klev))
     907      allocate(d_xt_cosmo(ntraciso,klon,klev))
     908      allocate(d_xt_decroiss(ntraciso,klon,klev))
     909#endif
    733910
    734911      ALLOCATE(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
     
    8491026!!      ALLOCATE( d_s_the(klon), d_dens_the(klon))
    8501027      ALLOCATE(d_deltat_ajs_cv(klon, klev), d_deltaq_ajs_cv(klon, klev))
     1028#ifdef ISO
     1029      ALLOCATE(d_deltaxt_wk(ntraciso,klon, klev))
     1030      ALLOCATE(d_deltaxt_wk_gw(ntraciso,klon, klev))
     1031      ALLOCATE(d_deltaxt_the(ntraciso,klon, klev))
     1032      ALLOCATE(d_deltaxt_vdf(ntraciso,klon, klev))
     1033      ALLOCATE(d_deltaxt_ajs_cv(ntraciso,klon, klev))
     1034#endif
    8511035!!         End of wake variables
    8521036!!
     
    8771061      ALLOCATE(qlth(klon,klev), qith(klon,klev), qsith(klon,klev), wiceth(klon,klev))
    8781062      !
     1063#ifdef ISO
     1064      ALLOCATE(xtevap(ntraciso,klon))
     1065      ALLOCATE(xtprw(ntraciso,klon))
     1066      ALLOCATE(zxfxtcalving(niso,klon))
     1067      ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon))
     1068      ALLOCATE(zxxtrunofflic(niso,klon))
     1069      ALLOCATE(xtrain_lsc(ntraciso,klon))
     1070      ALLOCATE(xtrunoff_diag(niso,klon))
     1071      ALLOCATE(h1_diag(klon),runoff_diag(klon))
     1072!SN
     1073      runoff_diag(:)=0. ; xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points
     1074#endif
     1075!
    8791076      ALLOCATE(sens_x(klon), sens_w(klon))
    8801077      ALLOCATE(zxfluxlat_x(klon), zxfluxlat_w(klon))
     
    8931090      ALLOCATE(cdragm_x(klon), cdragm_w(klon))
    8941091      ALLOCATE(kh(klon), kh_x(klon), kh_w(klon))
     1092#ifdef ISO
     1093      ALLOCATE(dxtvdf_x(ntraciso,klon,klev), dxtvdf_w(ntraciso,klon,klev))
     1094      ALLOCATE(xt_therm(ntraciso,klon,klev))
     1095#endif
    8951096!
    8961097      ALLOCATE(ptconv(klon,klev))
     
    9481149      ALLOCATE(epmlmMm(klon,klev,klev), eplaMm(klon,klev))
    9491150      ALLOCATE(sij(klon,klev,klev))
     1151#ifdef ISO
     1152      ALLOCATE(xtwdtrainA(ntraciso,klon,klev))
     1153      ALLOCATE(xtev(ntraciso,klon,klev) )
     1154      ALLOCATE(xttaa(ntraciso,klon,klev) )
     1155      ALLOCATE(xtclw(ntraciso,klon,klev) )
     1156#ifdef DIAGISO
     1157      ALLOCATE(qlp(klon,klev))
     1158      ALLOCATE(qvp(klon,klev))
     1159      ALLOCATE(fq_detrainement(klon,klev))
     1160      ALLOCATE(fq_ddft(klon,klev))
     1161      ALLOCATE(fq_fluxmasse(klon,klev))
     1162      ALLOCATE(fq_evapprecip(klon,klev))
     1163      ALLOCATE(f_detrainement(klon,klev), q_detrainement(klon,klev))
     1164      ALLOCATE(xtlp(ntraciso,klon,klev))
     1165      ALLOCATE(xtvp(ntraciso,klon,klev))
     1166      ALLOCATE(q_the(klon,klev), xt_the(ntraciso,klon,klev))
     1167      ALLOCATE(fxt_detrainement(ntraciso,klon,klev))
     1168      ALLOCATE(fxt_ddft(ntraciso,klon,klev))
     1169      ALLOCATE(fxt_fluxmasse(ntraciso,klon,klev))
     1170      ALLOCATE(fxt_evapprecip(ntraciso,klon,klev))
     1171      ALLOCATE(xt_detrainement(ntraciso,klon,klev))
     1172#endif
     1173#endif
    9501174
    9511175      ALLOCATE(prfl(klon, klev+1))
     
    9761200      ALLOCATE (zxsnow(klon),snowhgt(klon),qsnow(klon),to_ice(klon))
    9771201      ALLOCATE (sissnow(klon),runoff(klon),albsol3_lic(klon))
     1202#ifdef ISO
     1203      ALLOCATE (zxxtsnow(niso,klon))
     1204      ALLOCATE(xtVprecip(ntraciso,klon, klev+1),xtVprecipi(ntraciso,klon, klev+1))
     1205      ALLOCATE(pxtsfl(ntraciso,klon, klev+1),pxtrfl(ntraciso,klon, klev+1))
     1206#endif
    9781207
    9791208      ALLOCATE (p_tropopause(klon))
     
    10571286IMPLICIT NONE
    10581287      DEALLOCATE(t_seri,q_seri,ql_seri,qs_seri, qbs_seri)
     1288! SN 4D ISO
     1289      DEALLOCATE(qx_seri)
     1290! SN
    10591291      DEALLOCATE(u_seri,v_seri)
    10601292      DEALLOCATE(l_mixmin,l_mix,wprime)
     
    10831315      DEALLOCATE(d_u_ajs,d_v_ajs)
    10841316      DEALLOCATE(d_t_eva,d_q_eva)
     1317! SN 4D ISO
     1318      DEALLOCATE(d_qx_eva)
     1319! SN
    10851320      DEALLOCATE(d_ql_eva,d_qi_eva)
    10861321      DEALLOCATE(d_t_lscst,d_q_lscst)
     
    10901325      DEALLOCATE(d_qbs_vdf)
    10911326      DEALLOCATE(d_t_bsss,d_q_bsss,d_qbs_bsss)
     1327#ifdef ISO
     1328      deallocate(xt_seri,xtl_seri,xts_seri,xtbs_seri)
     1329      DEALLOCATE(d_xtl_eva,d_xti_eva)
     1330      deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn,d_xtbs_dyn)
     1331      deallocate(d_xt_con)
     1332      deallocate(d_xt_wake)
     1333      deallocate(d_xt_lsc)
     1334      deallocate(d_xtl_lsc,d_xti_lsc)
     1335      deallocate(d_xt_ajsb)
     1336      deallocate(d_xt_ajs)
     1337      deallocate(d_xt_ajs_w,d_xt_ajs_x)
     1338      deallocate(d_xt_eva)
     1339      deallocate(d_xtl_eva)
     1340      deallocate(d_xti_eva)
     1341      deallocate(d_xt_vdf)
     1342      deallocate(d_xt_vdf_w,d_xt_vdf_x)
     1343      deallocate(d_xt_ch4)
     1344      deallocate(d_xt_prod_nucl)
     1345      deallocate(d_xt_cosmo)
     1346      deallocate(d_xt_decroiss)
     1347#endif
     1348
    10921349      DEALLOCATE(d_u_vdf,d_v_vdf)
    10931350      DEALLOCATE(d_t_oli,d_t_oro)
     
    11931450!!      DEALLOCATE( d_s_the, d_dens_the)
    11941451      DEALLOCATE(d_deltat_ajs_cv, d_deltaq_ajs_cv)
     1452#ifdef ISO
     1453      DEALLOCATE(d_deltaxt_wk)
     1454      DEALLOCATE(d_deltaxt_wk_gw)
     1455      DEALLOCATE(d_deltaxt_ajs_cv)
     1456      DEALLOCATE(d_deltaxt_vdf)
     1457#endif
    11951458!
    11961459      DEALLOCATE(bils)
     
    12321495      DEALLOCATE(cdragm_x, cdragm_w)
    12331496      DEALLOCATE(kh, kh_x, kh_w)
     1497#ifdef ISO
     1498      DEALLOCATE(xtevap,xtprw)
     1499      DEALLOCATE(zxfxtcalving)
     1500      DEALLOCATE(zxxtrunofflic)
     1501      DEALLOCATE(xtsnow_lsc, zxfxtfonte)
     1502      DEALLOCATE(xtrain_lsc)
     1503      DEALLOCATE(dxtvdf_x, dxtvdf_w)
     1504      DEALLOCATE(xt_therm)
     1505      DEALLOCATE(h1_diag,runoff_diag,xtrunoff_diag)
     1506#endif
    12341507!
    12351508      DEALLOCATE(ptconv)
     
    12811554      DEALLOCATE(epmlmMm, eplaMm)
    12821555      DEALLOCATE(sij)
     1556#ifdef ISO
     1557      DEALLOCATE(xtwdtrainA)
     1558      DEALLOCATE(xttaa )
     1559      DEALLOCATE(xtclw )
     1560      DEALLOCATE(xtev )
     1561#ifdef DIAGISO
     1562      DEALLOCATE(qlp)
     1563      DEALLOCATE(qvp)
     1564      DEALLOCATE(fq_detrainement)
     1565      DEALLOCATE(fq_ddft)
     1566      DEALLOCATE(fq_fluxmasse)
     1567      DEALLOCATE(fq_evapprecip)
     1568      DEALLOCATE(f_detrainement,q_detrainement)
     1569      DEALLOCATE(xtlp)
     1570      DEALLOCATE(xtvp)
     1571      DEALLOCATE(q_the,xt_the)
     1572      DEALLOCATE(fxt_detrainement)
     1573      DEALLOCATE(fxt_ddft)
     1574      DEALLOCATE(fxt_fluxmasse)
     1575      DEALLOCATE(fxt_evapprecip)
     1576      DEALLOCATE(xt_detrainement)
     1577#endif
     1578#endif
    12831579
    12841580
     
    13031599      DEALLOCATE(distcltop)
    13041600      DEALLOCATE(temp_cltop)
     1601#ifdef ISO
     1602      DEALLOCATE (zxxtsnow,xtVprecip,xtVprecipi,pxtrfl,pxtsfl)
     1603#endif
     1604
    13051605      DEALLOCATE (p_tropopause)
    13061606      DEALLOCATE (z_tropopause)
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r5039 r5056  
    20032003  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dtr_dry(:)
    20042004
     2005#ifdef ISO
     2006  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtprecip(:)
     2007  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap(:)
     2008  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap_srf(:,:) ! ajout Camille 8 mai 2023
     2009  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtplul(:)
     2010  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtpluc(:)
     2011  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtovap(:)
     2012  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtoliq(:)
     2013  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtcond(:)
     2014  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtrunoff_diag(:)
     2015  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtdyn(:)
     2016  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtldyn(:)
     2017  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtvdf(:)
     2018  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtcon(:)
     2019  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtlsc(:)
     2020  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxteva(:)
     2021  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtajs(:)
     2022  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtthe(:)
     2023  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtch4(:)
     2024  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtprod_nucl(:)
     2025  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtcosmo(:)
     2026  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtdecroiss(:)
     2027#endif
     2028
    20052029  TYPE(ctrl_out), SAVE :: o_rsu = ctrl_out((/ 4, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    20062030    'rsu', 'SW upward radiation', 'W m-2', (/ ('', i=1, 10) /))
     
    20862110  TYPE(ctrl_out), SAVE :: o_runoff = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11, 11/), &
    20872111    'runoff', 'Run-off rate land ice', 'kg/m2/s', (/ ('', i=1, 10) /))
     2112#ifdef ISO
     2113  TYPE(ctrl_out), SAVE :: o_runoff_diag = ctrl_out((/ 1, 1, 10, 1, 10, 10, 11, 11, 11, 11/), &
     2114    'runoffland', 'Run-off rate land for bucket', 'kg/m2/s', (/ ('', i=1, 10) /))
     2115#endif
    20882116  TYPE(ctrl_out), SAVE :: o_albslw3 = ctrl_out((/ 1, 1, 1, 1, 10, 10, 11, 11, 11, 11/), &
    20892117    'albslw3', 'Surface albedo LW3', '-', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_mod.F90

    r4998 r5056  
    3535    USE iophy
    3636    USE dimphy
    37     USE infotrac_phy, ONLY: nqtot, tracers, niso
     37    USE infotrac_phy, ONLY: nqtot, tracers, niso, ntraciso=>ntiso
    3838    USE strings_mod,  ONLY: maxlen
    3939    USE ioipsl
     
    5252   USE infotrac_phy, ONLY: nbtr_bin
    5353#endif
    54    
     54#ifdef ISO
     55    USE isotopes_mod, ONLY: isoName,iso_HTO
     56#ifdef ISOTRAC
     57    use isotrac_mod, only: index_zone,index_iso,strtrac
     58#endif
     59#endif
     60
    5561    IMPLICIT NONE
    5662    include "clesphys.h"
     
    115121    LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
    116122
     123#ifdef ISO
     124    CHARACTER(LEN=maxlen) :: outiso
     125    CHARACTER(LEN=20) :: unit
     126#endif
    117127    CHARACTER(LEN=maxlen) :: tnam, lnam, dn
    118128    INTEGER :: flag(nfiles)
     
    164174    ALLOCATE(o_nd_mode(nbtr_bin),o_sulfmmr_mode(nbtr_bin))
    165175#endif
    166    
     176#ifdef ISO
     177    ALLOCATE(o_xtprecip(ntraciso))
     178    ALLOCATE(o_xtplul(ntraciso))
     179    ALLOCATE(o_xtpluc(ntraciso))
     180    ALLOCATE(o_xtevap(ntraciso))
     181    ALLOCATE(o_xtevap_srf(ntraciso,4))
     182    ALLOCATE(o_xtovap(ntraciso))
     183    ALLOCATE(o_xtoliq(ntraciso))
     184    ALLOCATE(o_xtcond(ntraciso))
     185    ALLOCATE(o_xtrunoff_diag(ntraciso))
     186    ALLOCATE(o_dxtdyn(ntraciso))
     187    ALLOCATE(o_dxtldyn(ntraciso))
     188    ALLOCATE(o_dxtcon(ntraciso))
     189    ALLOCATE(o_dxtlsc(ntraciso))
     190    ALLOCATE(o_dxteva(ntraciso))
     191    ALLOCATE(o_dxtajs(ntraciso))
     192    ALLOCATE(o_dxtvdf(ntraciso))
     193    ALLOCATE(o_dxtthe(ntraciso))
     194    ALLOCATE(o_dxtch4(ntraciso))
     195    if (iso_HTO.gt.0) then
     196      ALLOCATE(o_dxtprod_nucl(ntraciso))
     197      ALLOCATE(o_dxtcosmo(ntraciso))
     198      ALLOCATE(o_dxtdecroiss(ntraciso))
     199    endif
     200#endif
     201
    167202    levmax = [klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD, klev]
    168203
     
    524559   ENDDO !  iff
    525560
    526     ! Updated write frequencies due to phys_out_filetimesteps.
     561#ifdef ISO
     562    write(*,*) 'phys_output_mid 589'
     563    do ixt=1,ntraciso
     564      outiso = TRIM(isoName(ixt))
     565      i = INDEX(outiso, '_', .TRUE.)
     566      outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso))
     567
     568      flag = [1,  1,  1, 10,  5, 10, 11, 11, 11, 11]; unit = 'kg/(s*m2)'
     569      o_xtprecip(ixt)=ctrl_out(flag, 'precip'//TRIM(outiso), 'Precip Totale liq+sol', unit, [('',i=1,nfiles)])
     570      o_xtpluc  (ixt)=ctrl_out(flag,   'pluc'//TRIM(outiso),    'Convective Precip.', unit, [('',i=1,nfiles)])
     571
     572      flag = [1,  1,  1, 10, 10, 10, 11, 11, 11, 11]
     573      o_xtplul  (ixt)=ctrl_out(flag,   'plul'//TRIM(outiso),   'Large-scale Precip.', unit, [('',i=1,nfiles)])
     574      o_xtevap  (ixt)=ctrl_out(flag,   'evap'//TRIM(outiso),             'Evaporat.', unit, [('',i=1,nfiles)])
     575
     576      ! ajout Camille 8 mai 2023
     577      flag = [1, 6, 10, 10, 10, 10, 11, 11, 11, 11]
     578      o_xtevap_srf (ixt,1)=ctrl_out(flag,   'evap_ter'//TRIM(outiso), 'Evap sfc'//clnsurf(1), unit, [('',i=1,nfiles)])
     579      o_xtevap_srf (ixt,2)=ctrl_out(flag,   'evap_lic'//TRIM(outiso), 'Evap sfc'//clnsurf(2), unit, [('',i=1,nfiles)])
     580      o_xtevap_srf (ixt,3)=ctrl_out(flag,   'evap_oce'//TRIM(outiso), 'Evap sfc'//clnsurf(3), unit, [('',i=1,nfiles)])
     581      o_xtevap_srf (ixt,4)=ctrl_out(flag,   'evap_sic'//TRIM(outiso), 'Evap sfc'//clnsurf(4), unit, [('',i=1,nfiles)])
     582
     583      flag = [2,  3,  4, 10, 10, 10, 11, 11, 11, 11]; unit = 'kg/kg'
     584      o_xtovap  (ixt)=ctrl_out(flag,   'ovap'//TRIM(outiso),     'Specific humidity', unit, [('',i=1,nfiles)])
     585      o_xtoliq  (ixt)=ctrl_out(flag,   'oliq'//TRIM(outiso),          'Liquid water', unit, [('',i=1,nfiles)])
     586      o_xtcond  (ixt)=ctrl_out(flag,  'ocond'//TRIM(outiso),       'Condensed water', unit, [('',i=1,nfiles)])
     587
     588      flag = [1,  1,  1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/m2/s'
     589      o_xtrunoff_diag  (ixt)=ctrl_out(flag, 'runoffland'//TRIM(outiso), 'Run-off rate land for bucket', unit, [('',i=1,nfiles)])
     590
     591      flag = [4, 10, 10, 10, 10, 10, 11, 11, 11, 11]; unit = '(kg/kg)/s'
     592      o_dxtdyn  (ixt)=ctrl_out(flag,  'dqdyn'//TRIM(outiso),           'Dynamics dQ', unit, [('',i=1,nfiles)])
     593      o_dxtldyn (ixt)=ctrl_out(flag, 'dqldyn'//TRIM(outiso),          'Dynamics dQL', unit, [('',i=1,nfiles)])
     594      o_dxtcon  (ixt)=ctrl_out(flag,  'dqcon'//TRIM(outiso),         'Convection dQ', unit, [('',i=1,nfiles)])
     595      o_dxteva  (ixt)=ctrl_out(flag,  'dqeva'//TRIM(outiso),      'Reevaporation dQ', unit, [('',i=1,nfiles)])
     596      o_dxtlsc  (ixt)=ctrl_out(flag,  'dqlsc'//TRIM(outiso),       'Condensation dQ', unit, [('',i=1,nfiles)])
     597      o_dxtajs  (ixt)=ctrl_out(flag,  'dqajs'//TRIM(outiso),        'Dry adjust. dQ', unit, [('',i=1,nfiles)])
     598      o_dxtvdf  (ixt)=ctrl_out(flag,  'dqvdf'//TRIM(outiso),     'Boundary-layer dQ', unit, [('',i=1,nfiles)])
     599      o_dxtthe  (ixt)=ctrl_out(flag,  'dqthe'//TRIM(outiso),            'Thermal dQ', unit, [('',i=1,nfiles)])
     600
     601      IF(ok_qch4) o_dxtch4(ixt)=ctrl_out(flag, 'dqch4'//TRIM(outiso), 'H2O due to CH4 oxidation & photolysis', &
     602                                                                                      unit, [('',i=1,nfiles)])
     603      IF(ixt == iso_HTO) THEN
     604      o_dxtprod_nucl(ixt)=ctrl_out(flag, 'dqprodnucl'//TRIM(outiso), 'dHTO/dt due to nuclear production',      &
     605                                                                                      unit, [('',i=1,nfiles)])
     606      o_dxtcosmo    (ixt)=ctrl_out(flag,    'dqcosmo'//TRIM(outiso), 'dHTO/dt due to cosmogenic production',   &
     607                                                                                      unit, [('',i=1,nfiles)])
     608      o_dxtdecroiss (ixt)=ctrl_out(flag, 'dqdecroiss'//TRIM(outiso), 'dHTO/dt due to radiative destruction',   &
     609                                                                                      unit, [('',i=1,nfiles)])
     610      END IF
     611    enddo !do ixt=1,niso
     612    write(*,*) 'phys_output_mid 596'
     613#endif
     614
     615   ! Updated write frequencies due to phys_out_filetimesteps.
    527616    ! Write frequencies are now in seconds. 
    528617    ecrit_mth = ecrit_files(1)
Note: See TracChangeset for help on using the changeset viewer.