Ignore:
Timestamp:
Jun 15, 2024, 5:17:08 PM (11 days ago)
Author:
crisi
Message:

suppress isotope_params.def + update physiq_mod + proof of concept of 3rd dimension with reevap routine

File:
1 edited

Legend:

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

    r4920 r4982  
    1414      REAL, SAVE, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
    1515      !$OMP THREADPRIVATE(ql_seri,qs_seri)
     16      REAL, SAVE, ALLOCATABLE :: qx_seri(:,:,:)
     17      !$OMP THREADPRIVATE(qx_seri)
    1618      REAL, SAVE, ALLOCATABLE :: qbs_seri(:,:)
    1719      !$OMP THREADPRIVATE(qbs_seri)
     
    6466      REAL, SAVE, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:),d_ql_eva(:,:),d_qi_eva(:,:)
    6567      !$OMP THREADPRIVATE(d_t_eva,d_q_eva,d_ql_eva,d_qi_eva)
     68      REAL, SAVE, ALLOCATABLE :: d_qx_eva(:,:,:)
     69      !$OMP THREADPRIVATE(d_qx_eva)
    6670      REAL, SAVE, ALLOCATABLE :: d_t_lscst(:,:),d_q_lscst(:,:)
    6771      !$OMP THREADPRIVATE(d_t_lscst,d_q_lscst)
     
    124128      REAL, SAVE, ALLOCATABLE :: xts_seri(:,:,:)
    125129      !$OMP THREADPRIVATE( xts_seri)
     130      REAL, SAVE, ALLOCATABLE :: xtbs_seri(:,:,:)
     131      !$OMP THREADPRIVATE( xtbs_seri)
    126132      REAL, SAVE, ALLOCATABLE :: d_xt_eva(:,:,:)
    127133      !$OMP THREADPRIVATE( d_xt_eva)
     
    134140      REAL, SAVE, ALLOCATABLE :: d_xt_dyn(:,:,:)
    135141      !$OMP THREADPRIVATE( d_xt_dyn)
    136       REAL, SAVE, ALLOCATABLE :: d_xtl_dyn(:,:,:), d_xts_dyn(:,:,:)
    137       !$OMP THREADPRIVATE(d_xtl_dyn, d_xts_dyn)
     142      REAL, SAVE, ALLOCATABLE :: d_xtl_dyn(:,:,:), d_xts_dyn(:,:,:), d_xtbs_dyn(:,:,:)
     143      !$OMP THREADPRIVATE(d_xtl_dyn, d_xts_dyn, d_xtbs_dyn)
    138144      REAL, SAVE, ALLOCATABLE :: d_xt_con(:,:,:)
    139145      !$OMP THREADPRIVATE( d_xt_con)
     
    292298!$OMP THREADPRIVATE(toplwad0_aerop, sollwad0_aerop)
    293299
     300!AI 08 2023 ajout pour Ecrad
     301      REAL,ALLOCATABLE,SAVE :: topswad_aero_s2(:), solswad_aero_s2(:)
     302!$OMP THREADPRIVATE(topswad_aero_s2, solswad_aero_s2)
     303      REAL,ALLOCATABLE,SAVE :: topswai_aero_s2(:), solswai_aero_s2(:)
     304!$OMP THREADPRIVATE(topswai_aero_s2, solswai_aero_s2)
     305      REAL,ALLOCATABLE,SAVE :: topswad0_aero_s2(:), solswad0_aero_s2(:)
     306!$OMP THREADPRIVATE(topswad0_aero_s2, solswad0_aero_s2)
     307      REAL,ALLOCATABLE,SAVE :: topsw_aero_s2(:,:), topsw0_aero_s2(:,:)
     308!$OMP THREADPRIVATE(topsw_aero_s2, topsw0_aero_s2)
     309      REAL,ALLOCATABLE,SAVE :: solsw_aero_s2(:,:), solsw0_aero_s2(:,:)
     310!$OMP THREADPRIVATE(solsw_aero_s2, solsw0_aero_s2)
     311      REAL,ALLOCATABLE,SAVE :: topswcf_aero_s2(:,:), solswcf_aero_s2(:,:)
     312!$OMP THREADPRIVATE(topswcf_aero_s2, solswcf_aero_s2)
     313! additional LW variables CK
     314      REAL,ALLOCATABLE,SAVE :: toplwad_aero_s2(:), sollwad_aero_s2(:)
     315!$OMP THREADPRIVATE(toplwad_aero_s2, sollwad_aero_s2)
     316      REAL,ALLOCATABLE,SAVE :: toplwai_aero_s2(:), sollwai_aero_s2(:)
     317!$OMP THREADPRIVATE(toplwai_aero_s2, sollwai_aero_s2)
     318      REAL,ALLOCATABLE,SAVE :: toplwad0_aero_s2(:), sollwad0_aero_s2(:)
     319!$OMP THREADPRIVATE(toplwad0_aero_s2, sollwad0_aero_s2)
     320
    294321!Ajout de celles n??cessaires au phys_output_write_mod
    295322      REAL, SAVE, ALLOCATABLE :: tal1(:), pal1(:), pab1(:), pab2(:)
     
    300327!$OMP THREADPRIVATE(sens, flwp, fiwp)
    301328!!
    302 !FC
     329!FC 
    303330      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfluxt, zxfluxq
    304331!$OMP THREADPRIVATE(zxfluxt, zxfluxq)
     
    348375!$OMP THREADPRIVATE(cdragm, cdragh)
    349376      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m
    350 !$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m )
     377!$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m)
    351378!AS: cldhjn, cldljn, cldmjn,cldtjn pas utilisés en tant que variables, juste noms de diagnostics
    352379      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: JrNt
     
    573600!$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD, rhwriteSTD)
    574601
     602
    575603! ug et d'autres encore:
    576604      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
     
    580608      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: pfraclr,pfracld
    581609!$OMP THREADPRIVATE(pfraclr,pfracld)
    582       REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: distcltop
    583 !$OMP THREADPRIVATE(distcltop)
    584       REAL, SAVE, ALLOCATABLE :: temp_cltop(:,:)
    585 !$OMP THREADPRIVATE(temp_cltop)
    586610
    587611! variables de sorties MM
     
    645669      REAL, SAVE, ALLOCATABLE :: fcontrP(:,:)
    646670      !$OMP THREADPRIVATE(fcontrP)
     671      REAL, SAVE, ALLOCATABLE :: distcltop(:,:)
     672      !$OMP THREADPRIVATE(distcltop)
     673      REAL, SAVE, ALLOCATABLE :: temp_cltop(:,:)
     674      !$OMP THREADPRIVATE(temp_cltop)
     675
    647676
    648677!--POPRECIP variables
     
    675704
    676705
    677 
     706     
    678707
    679708
     
    681710!
    682711! variables for stratospheric aerosol
     712      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: d_q_emiss
     713!$OMP THREADPRIVATE(d_q_emiss)
    683714      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: R2SO4
    684715!$OMP THREADPRIVATE(R2SO4)
     
    695726      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: SO2_lifetime
    696727!$OMP THREADPRIVATE(SO2_lifetime)
     728      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: H2SO4_lifetime
     729!$OMP THREADPRIVATE(H2SO4_lifetime)
     730      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: O3_clim
     731!$OMP THREADPRIVATE(O3_clim)
    697732      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: alpha_bin
    698733!$OMP THREADPRIVATE(alpha_bin)
     
    759794SUBROUTINE phys_local_var_init
    760795USE dimphy
    761 USE infotrac_phy, ONLY : nbtr
     796USE infotrac_phy, ONLY : nbtr,nqtot
    762797#ifdef ISO
    763798USE infotrac_phy, ONLY : ntraciso=>ntiso,niso
     
    770805IMPLICIT NONE
    771806      ALLOCATE(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev), qbs_seri(klon,klev))
     807      ALLOCATE(qx_seri(klon,klev,nqtot))
    772808      ALLOCATE(u_seri(klon,klev),v_seri(klon,klev))
    773809      ALLOCATE(l_mixmin(klon,klev+1,nbsrf),l_mix(klon,klev+1,nbsrf),wprime(klon,klev+1,nbsrf))
     810      ALLOCATE(pbl_eps(klon,klev+1,nbsrf+1))
     811      pbl_eps(:,:,:)=0.
    774812      l_mix(:,:,:)=0.;l_mixmin(:,:,:)=0.;wprime(:,:,:)=0. ! doit etre initialse car pas toujours remplis
    775       ALLOCATE(pbl_eps(klon,klev+1,nbsrf+1))     
     813      ALLOCATE(rhcl(klon,klev))
    776814      ALLOCATE(tr_seri(klon,klev,nbtr))
    777815      ALLOCATE(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
     
    795833      ALLOCATE(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
    796834      ALLOCATE(d_t_eva(klon,klev),d_q_eva(klon,klev))
     835      ALLOCATE(d_qx_eva(klon,klev,nqtot))
    797836      ALLOCATE(d_ql_eva(klon,klev),d_qi_eva(klon,klev))
    798837      ALLOCATE(d_t_lscst(klon,klev),d_q_lscst(klon,klev))
     
    808847      allocate(xtl_seri(ntraciso,klon,klev))
    809848      allocate(xts_seri(ntraciso,klon,klev))
     849      allocate(xtbs_seri(ntraciso,klon,klev))
    810850      allocate(d_xt_dyn(ntraciso,klon,klev))
    811851      allocate(d_xtl_dyn(ntraciso,klon,klev))
    812852      allocate(d_xts_dyn(ntraciso,klon,klev))
     853      allocate(d_xtbs_dyn(ntraciso,klon,klev))
    813854      allocate(d_xt_con(ntraciso,klon,klev))
    814855      allocate(d_xt_wake(ntraciso,klon,klev))
     
    841882      ALLOCATE(d_u_lif(klon,klev),d_v_lif(klon,klev))
    842883      ALLOCATE(d_ts(klon,nbsrf), d_tr(klon,klev,nbtr))
     884
     885! aerosols
     886      ALLOCATE(m_allaer(klon,klev,naero_tot))
    843887! Special RRTM
    844888      ALLOCATE(ZLWFT0_i(klon,klev+1),ZSWFT0_i(klon,klev+1),ZFLDN0(klon,klev+1))
     
    919963      ALLOCATE(toplwad0_aerop(klon), sollwad0_aerop(klon))
    920964
     965!AI Ajout Ecrad (3Deffect)
     966      ALLOCATE(topswad_aero_s2(klon), solswad_aero_s2(klon))
     967      ALLOCATE(topswai_aero_s2(klon), solswai_aero_s2(klon))
     968      ALLOCATE(topswad0_aero_s2(klon), solswad0_aero_s2(klon))
     969      ALLOCATE(topsw_aero_s2(klon,naero_grp), topsw0_aero_s2(klon,naero_grp))
     970      ALLOCATE(solsw_aero_s2(klon,naero_grp), solsw0_aero_s2(klon,naero_grp))
     971      ALLOCATE(topswcf_aero_s2(klon,naero_grp), solswcf_aero_s2(klon,naero_grp))
     972! additional LW variables CK
     973      ALLOCATE(toplwad_aero_s2(klon), sollwad_aero_s2(klon))
     974      ALLOCATE(toplwai_aero_s2(klon), sollwai_aero_s2(klon))
     975      ALLOCATE(toplwad0_aero_s2(klon), sollwad0_aero_s2(klon))
     976
    921977! FH Ajout de celles necessaires au phys_output_write_mod
    922978
     
    10381094      ALLOCATE(wfevap(klon, nbsrf))
    10391095      ALLOCATE(evap_pot(klon, nbsrf))
    1040 ! FC
     1096! FC 
    10411097      ALLOCATE(zxfluxq(klon,klev),zxfluxt(klon,klev))
    10421098!
     
    10451101      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1))
    10461102      ALLOCATE(wdtrainA(klon,klev),wdtrainS(klon,klev),wdtrainM(klon,klev))
    1047       ALLOCATE(dnwd(klon, klev), upwd(klon, klev) )
     1103      ALLOCATE(dnwd(klon, klev), upwd(klon, klev))
    10481104      ALLOCATE(ep(klon,klev))                          ! epmax_cape
    1049       ALLOCATE(da(klon,klev), mp(klon,klev) )
    1050       ALLOCATE(phi(klon,klev,klev) )
    1051       ALLOCATE(wght_cvfd(klon,klev) )
    1052       ALLOCATE(phi2(klon,klev,klev) )
     1105      ALLOCATE(da(klon,klev), mp(klon,klev))
     1106      ALLOCATE(phi(klon,klev,klev))
     1107      ALLOCATE(wght_cvfd(klon,klev))
     1108      ALLOCATE(phi2(klon,klev,klev))
    10531109      ALLOCATE(d1a(klon,klev), dam(klon,klev))
    1054       ALLOCATE(ev(klon,klev) )
    1055       ALLOCATE(elij(klon,klev,klev) )
    1056       ALLOCATE(qtaa(klon,klev) )
    1057       ALLOCATE(clw(klon,klev) )
    1058       ALLOCATE(epmlmMm(klon,klev,klev), eplaMm(klon,klev) )
    1059       ALLOCATE(sij(klon,klev,klev) )
     1110      ALLOCATE(ev(klon,klev))
     1111      ALLOCATE(elij(klon,klev,klev))
     1112      ALLOCATE(qtaa(klon,klev))
     1113      ALLOCATE(clw(klon,klev))
     1114      ALLOCATE(epmlmMm(klon,klev,klev), eplaMm(klon,klev))
     1115      ALLOCATE(sij(klon,klev,klev))
    10601116#ifdef ISO
    10611117      ALLOCATE(xtwdtrainA(ntraciso,klon,klev))
     
    11281184
    11291185!--POPRECIP variables
    1130       ALLOCATE(dqreva(klon,klev),dqssub(klon,klev))
    1131       ALLOCATE(qraindiag(klon,klev), qsnowdiag(klon,klev))
     1186      ALLOCATE(qraindiag(klon,klev), qsnowdiag(klon,klev))
     1187      ALLOCATE(dqreva(klon,klev), dqssub(klon,klev))
    11321188      ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev))
    11331189      ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev))
    11341190
    11351191#ifdef CPP_StratAer
     1192      ALLOCATE (d_q_emiss(klon,klev))
    11361193      ALLOCATE (R2SO4(klon,klev))
    11371194      ALLOCATE (DENSO4(klon,klev))
     
    11471204      ALLOCATE (OCS_lifetime(klon,klev))
    11481205      ALLOCATE (SO2_lifetime(klon,klev))
     1206      ALLOCATE (H2SO4_lifetime(klon,klev))
     1207      ALLOCATE (O3_clim(klon,klev))
    11491208      ALLOCATE (alpha_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave,nbtr))
    11501209      ALLOCATE (piz_bin(nbands_sw_rrtm+nbands_lw_rrtm+nwave,nbtr))
     
    11801239USE indice_sol_mod
    11811240IMPLICIT NONE
    1182       DEALLOCATE(t_seri,q_seri,ql_seri,qs_seri, qbs_seri)
     1241      DEALLOCATE(t_seri,q_seri,ql_seri,qs_seri, qbs_seri,qx_seri)
    11831242      DEALLOCATE(u_seri,v_seri)
    11841243      DEALLOCATE(l_mixmin,l_mix,wprime)
    11851244      DEALLOCATE(pbl_eps)
    1186 
     1245      DEALLOCATE(rhcl)
    11871246      DEALLOCATE(tr_seri)
    11881247      DEALLOCATE(d_t_dyn,d_q_dyn)
     
    12061265      DEALLOCATE(d_u_ajs,d_v_ajs)
    12071266      DEALLOCATE(d_t_eva,d_q_eva)
     1267      DEALLOCATE(d_qx_eva)
    12081268      DEALLOCATE(d_ql_eva,d_qi_eva)
    12091269      DEALLOCATE(d_t_lscst,d_q_lscst)
     
    12141274      DEALLOCATE(d_t_bs,d_q_bs,d_qbs_bs)
    12151275#ifdef ISO
    1216       deallocate(xt_seri,xtl_seri,xts_seri)
     1276      deallocate(xt_seri,xtl_seri,xts_seri,xtbs_seri)
    12171277      DEALLOCATE(d_xtl_eva,d_xti_eva)
    1218       deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn)
     1278      deallocate(d_xt_dyn,d_xtl_dyn,d_xts_dyn,d_xtbs_dyn)
    12191279      deallocate(d_xt_con)
    12201280      deallocate(d_xt_wake)
     
    13061366      DEALLOCATE(solsw_aerop, solsw0_aerop)
    13071367      DEALLOCATE(topswcf_aerop, solswcf_aerop)
    1308 
     1368!AI Aerosols
     1369      DEALLOCATE(m_allaer)
    13091370!CK LW diagnostics
    13101371      DEALLOCATE(toplwad_aerop, sollwad_aerop)
    13111372      DEALLOCATE(toplwai_aerop, sollwai_aerop)
    13121373      DEALLOCATE(toplwad0_aerop, sollwad0_aerop)
     1374
     1375!AI Ajout pour Ecrad (3Deffect)
     1376      DEALLOCATE(topswad_aero_s2, solswad_aero_s2)
     1377      DEALLOCATE(topswai_aero_s2, solswai_aero_s2)
     1378      DEALLOCATE(topswad0_aero_s2, solswad0_aero_s2)
     1379      DEALLOCATE(topsw_aero_s2, topsw0_aero_s2)
     1380      DEALLOCATE(solsw_aero_s2, solsw0_aero_s2)
     1381      DEALLOCATE(topswcf_aero_s2, solswcf_aero_s2)
     1382!CK LW diagnostics
     1383      DEALLOCATE(toplwad_aero_s2, sollwad_aero_s2)
     1384      DEALLOCATE(toplwai_aero_s2, sollwai_aero_s2)
     1385      DEALLOCATE(toplwad0_aero_s2, sollwad0_aero_s2)     
    13131386
    13141387! FH Ajout de celles necessaires au phys_output_write_mod
     
    13521425      DEALLOCATE(zxfqcalving, zxfluxlat)
    13531426      DEALLOCATE(zxrunofflic)
    1354       DEALLOCATE(zxustartlic, zxrhoslic)
     1427      DEALLOCATE(zxustartlic, zxrhoslic, zxqsaltlic)
    13551428      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
    13561429      DEALLOCATE(rain_lsc)
     
    14201493      DEALLOCATE(upwd, dnwd)
    14211494      DEALLOCATE(ep)
    1422       DEALLOCATE(da, mp )
    1423       DEALLOCATE(phi )
    1424       DEALLOCATE(wght_cvfd )
    1425       DEALLOCATE(phi2 )
     1495      DEALLOCATE(da, mp)
     1496      DEALLOCATE(phi)
     1497      DEALLOCATE(wght_cvfd)
     1498      DEALLOCATE(phi2)
    14261499      DEALLOCATE(d1a, dam)
    1427       DEALLOCATE(ev )
    1428       DEALLOCATE(elij )
    1429       DEALLOCATE(qtaa )
    1430       DEALLOCATE(clw )
    1431       DEALLOCATE(epmlmMm, eplaMm )
    1432       DEALLOCATE(sij )
     1500      DEALLOCATE(ev)
     1501      DEALLOCATE(elij)
     1502      DEALLOCATE(qtaa)
     1503      DEALLOCATE(clw)
     1504      DEALLOCATE(epmlmMm, eplaMm)
     1505      DEALLOCATE(sij)
    14331506#ifdef ISO
    14341507      DEALLOCATE(xtwdtrainA)
     
    14701543      DEALLOCATE(rneb)
    14711544      DEALLOCATE(pfraclr,pfracld)
     1545      DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
    14721546      DEALLOCATE(distcltop)
    14731547      DEALLOCATE(temp_cltop)
    1474       DEALLOCATE (zxsnow,snowhgt,qsnow,to_ice,sissnow,runoff,albsol3_lic)
    14751548#ifdef ISO
    14761549      DEALLOCATE (zxxtsnow,xtVprecip,xtVprecipi,pxtrfl,pxtsfl)
     
    14931566
    14941567!--POPRECIP variables
    1495       DEALLOCATE(qraindiag, qsnowdiag) 
    1496       DEALLOCATE(dqreva,dqssub)
    1497       DEALLOCATE(dqrauto,dqrcol,dqrmelt,dqrfreez)
    1498       DEALLOCATE(dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez)
     1568      DEALLOCATE(qraindiag, qsnowdiag)
     1569      DEALLOCATE(dqreva, dqssub)
     1570      DEALLOCATE(dqrauto, dqrcol, dqrmelt, dqrfreez)
     1571      DEALLOCATE(dqsauto, dqsagg, dqsrim, dqsmelt, dqsfreez)
    14991572
    15001573#ifdef CPP_StratAer
    15011574! variables for strat. aerosol CK
     1575      DEALLOCATE (d_q_emiss)
    15021576      DEALLOCATE (R2SO4)
    15031577      DEALLOCATE (DENSO4)
     
    15071581      DEALLOCATE (SO2_lifetime)
    15081582      DEALLOCATE (OCS_lifetime)
     1583      DEALLOCATE (H2SO4_lifetime)
     1584      DEALLOCATE (O3_clim)
    15091585      DEALLOCATE (alpha_bin)
    15101586      DEALLOCATE (piz_bin)
Note: See TracChangeset for help on using the changeset viewer.