Changeset 1452 for trunk/LMDZ.VENUS/libf


Ignore:
Timestamp:
Jun 16, 2015, 1:26:46 PM (10 years ago)
Author:
slebonnois
Message:

SL: converging photochemistry/high atm, with bug corrections and rho output

Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/conc.F90

    r1310 r1452  
    66      REAL, ALLOCATABLE, SAVE :: mmean(:,:)
    77!$OMP THREADPRIVATE(mmean)
     8      REAL, ALLOCATABLE, SAVE :: rho(:,:)
     9!$OMP THREADPRIVATE(rho)
    810      REAL, ALLOCATABLE, SAVE :: Akknew(:,:)
    911!$OMP THREADPRIVATE(Akknew)
     
    7072#include"param.h"
    7173
    72      ALLOCATE(mmean(klon,klev)) 
     74     ALLOCATE(mmean(klon,klev))
     75     ALLOCATE(rho(klon,klev))       
    7376     ALLOCATE(Akknew(klon,klev)) 
    7477     ALLOCATE(rnew(klon,klev)) 
     
    102105
    103106  end module conc
    104                
     107
  • trunk/LMDZ.VENUS/libf/phyvenus/concentrations2.F

    r1442 r1452  
    1       SUBROUTINE concentrations2(pplay,t_seri,pdt,tr_seri, nqmx,
    2      $                        ptimestep)
     1      SUBROUTINE concentrations2(pplay,t_seri,pdt,tr_seri, nqmx)
    32
    43      use dimphy
    5       use conc,  only: mmean, Akknew, rnew, cpnew
     4      use conc,  only: mmean, rho, Akknew, rnew, cpnew
    65      use cpdet_mod, only: cpdet                       
    76      USE chemparam_mod
     
    213212
    214213!     mmean : mean molecular mass
     214!     rho   : mass density [kg/m3]
    215215!     rnew  : specific gas constant
    216 
     216   
    217217      mmean(:,:)  = 0.
     218      rho(:,:) = 0.     
    218219
    219220      do l = 1,klev
    220221         do ig = 1,klon
    221222            do i = 1,nqmx
    222                iq = niq(i)
     223c               iq = niq(i)
    223224               mmean(ig,l) = mmean(ig,l) + zq(ig,l,i)/M_tr(i)
    224225            end do
    225 c            mmean(ig,l) = RMD
    226226            mmean(ig,l) = 1./mmean(ig,l)
    227227            rnew(ig,l) = 8.314/mmean(ig,l)*1.e3     ! J/kg K           
    228228 
    229 c            write(*,*),'Mmean: ',ig, l, mmean(0,l)
     229c            write(*,*),'Mmean: ',ig, l, mmean(ig,l)
    230230         end do
    231231      end do
     
    241241
    242242            ntot = pplay(ig,l)/(RKBOL*zt(ig,l))*1.e-6  ! in #/cm3
     243            rho(ig,l) = (ntot * mmean(ig,l))/RNAVO*1.e3     ! in kg/m3
     244
     245c            write(*,*),'Air density: ',ig, l, rho(0,l)           
    243246
    244247!!! --- INSERT N2 values ----
  • trunk/LMDZ.VENUS/libf/phyvenus/ini_histins.h

    r1442 r1452  
    101101c    .                "ins(X)", zsto,zout)
    102102c
    103 c plusieurs traceurs
    104           if (ok_chem) THEN
     103         CALL histdef(nid_mth, "mmean", "Mean molecular mass", "g/mol",
     104     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     105     .                "ave(X)", zsto,zout)
     106
     107         CALL histdef(nid_mth, "rho", "Air density [mass/Vol]", "kg/m3",
     108     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     109     .                "ave(X)", zsto,zout)
     110
     111
     112c plusieurs traceurs  !!!outputs in [vmr]
     113       IF (iflag_trac.eq.1) THEN
    105114            DO iq=1,nqmax
    106 c            DO iq=1,10
    107115             IF (iq.LE.99) THEN
    108116          WRITE(str2,'(i2.2)') iq
     
    115123             ENDIF
    116124            ENDDO
     125       ENDIF
     126
     127       IF (callthermos .and. ok_chem) THEN
    117128          CALL histdef(nid_mth, "d_qmoldif CO2", "Dif molec" , "kg/kg",
    118129     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     
    124135     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    125136     .                "ave(X)", zsto,zout)
    126 
    127           endif
     137       ENDIF
    128138c
    129139         CALL histdef(nid_ins, "tops", "Solar rad. at TOA", "W/m2",
  • trunk/LMDZ.VENUS/libf/phyvenus/ini_histmth.h

    r1301 r1452  
    101101c    .                "ave(X)", zsto,zout)
    102102c
    103 c plusieurs traceurs
    104           if (iflag_trac.eq.1) THEN
     103         CALL histdef(nid_mth, "mmean", "Mean molecular mass", "g/mol",
     104     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     105     .                "ave(X)", zsto,zout)
     106
     107         CALL histdef(nid_mth, "rho", "Air density [mass/Vol]", "kg/m3",
     108     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     109     .                "ave(X)", zsto,zout)
     110
     111
     112c plusieurs traceurs  !!!outputs in [vmr]
     113       IF (iflag_trac.eq.1) THEN
    105114            DO iq=1,nqmax
    106115             IF (iq.LE.99) THEN
    107116          WRITE(str2,'(i2.2)') iq
    108           CALL histdef(nid_mth, tname(iq), ttext(iq), "ppm",
     117          CALL histdef(nid_mth, tname(iq), ttext(iq), "mol/mol",
    109118     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    110119     .                "ave(X)", zsto,zout)
     
    114123             ENDIF
    115124            ENDDO
    116           endif
     125       ENDIF
     126
     127       IF (callthermos .and. ok_chem) THEN
     128          CALL histdef(nid_mth, "d_qmoldifCO2", "Dif molec" , "kg/kg",
     129     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     130     .                "ave(X)", zsto,zout)
     131          CALL histdef(nid_mth, "d_qmoldifO3p", "Dif molec" , "kg/kg",
     132     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     133     .                "ave(X)", zsto,zout)
     134          CALL histdef(nid_mth, "d_qmoldifN2", "Dif molec" , "kg/kg",
     135     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     136     .                "ave(X)", zsto,zout)
     137       ENDIF
    117138c
    118139         CALL histdef(nid_mth, "tops", "Solar rad. at TOA", "W/m2",
     
    192213     .                "ave(X)", zsto,zout)
    193214c
    194          CALL histdef(nid_mth, "dtlwr", "LW radiation dT", "K/s",
    195      .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    196      .                "ave(X)", zsto,zout)
     215         CALL histdef(nid_mth,"dtswrNLTE", "SWNLTE radiation dT",
     216     .                "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     217     .                "ave(X)", zsto,zout)
     218c
     219         CALL histdef(nid_mth,"dtswrDCrisp","SWDCrisp radiation dT",
     220     .                "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     221     .                "ave(X)", zsto,zout)
     222c
     223         CALL histdef(nid_mth, "dtlwr", "LW radiation dT", "K/s",
     224     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     225     .                "ave(X)", zsto,zout)
     226c
     227         CALL histdef(nid_mth,"dtlwrNLTE", "LWNLTE radiation dT",
     228     .                "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     229     .                "ave(X)", zsto,zout)
     230c
     231         CALL histdef(nid_mth,"dtlwrLTE","LW_LTE radiation dT",
     232     .                "K/s", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     233     .                "ave(X)", zsto,zout)
     234c
     235         CALL histdef(nid_mth, "dteuv", "UV radiation dT", "K/s",
     236     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     237     .                "ave(X)", zsto,zout)
     238         CALL histdef(nid_mth, "dtcond", "Therm conduction", "K/s",
     239     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     240     .                "ave(X)", zsto,zout)
     241         CALL histdef(nid_mth, "dumolvis", "molec viscosity (u)"
     242     .                ,"m/s2", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     243     .                "ave(X)", zsto,zout)
     244         CALL histdef(nid_mth, "dvmolvis", "molec viscosity (v)",
     245     .                "m/s2", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     246     .                "ave(X)", zsto,zout)
     247
    197248c
    198249c        CALL histdef(nid_mth, "dtec", "Cinetic dissip dT", "K/s",
     
    211262     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    212263     .                "ave(X)", zsto,zout)
     264
     265c         CALL histdef(nid_mth, "co2_vmr", "volume mixture ratio co2",
     266c     .         "cm-3",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     267c     .                "ave(X)", zsto,zout)
     268
     269c         CALL histdef(nid_mth, "o_vmr", "volume mixture ratio o",
     270c     .                "cm-3", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     271c     .                "ave(X)", zsto,zout)
     272c         CALL histdef(nid_mth, "co_vmr", "volume mixture ratio co",
     273c     .         "cm-3",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     274c     .                "ave(X)", zsto,zout)
     275
     276c         CALL histdef(nid_mth, "n2_vmr", "volume mixture ratio n2",
     277c     .                "cm-3", iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     278c     .                "ave(X)", zsto,zout)
    213279c
    214280c        CALL histdef(nid_mth, "dvvdf", "Boundary-layer dV", "m/s2",
     
    246312
    247313      ENDIF ! fin de test sur ok_mensuel
     314
  • trunk/LMDZ.VENUS/libf/phyvenus/new_photochemistry_venus.F90

    r1442 r1452  
    22! Reprise du modèle de photochimie 1D de Frank Lefèvre.
    33! Couplage avec le LMDZ_VENUS
    4  SUBROUTINE new_photochemistry_venus(nz, n_lon, ptimestep, p, t ,tr, sza_input, nesp)
     4 SUBROUTINE new_photochemistry_venus(nz, n_lon, ptimestep, p, t ,tr, mumean, sza_input, nesp)
    55
    66! USE ioipsl
    7 ! USE infotrac
    87! USE control_mod
    98! USE dimphy
     
    2120
    2221real, dimension(nz)  ::  conc
     22real, dimension(nz)  :: mumean  ! [g/mol]
    2323real, dimension(nz)  :: surfice1d, surfdust1d
    2424
     
    9090! ctimestep : pas de temps chimique nominal (s)
    9191
    92 phychemrat = 3
     92phychemrat = 1
    9393ctimestep  = ptimestep/real(phychemrat)
    9494
     
    138138!   PRINT*,'sza_input avant phot: ',sza_input
    139139
    140 call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, tr(:,i_co2), tr(:,i_so2),         &
     140call phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean,tr(:,i_co2), tr(:,i_so2),         &
    141141          jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
    142142
     
    436436         end do
    437437      end do
    438       print*, "sza_input = ", table_sza(isza)
     438!      print*, "sza_input = ", table_sza(isza)
    439439   end do
    440440end do
     
    24232423!===========================================================
    24242424
    2425 subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, rmco2, rmso2,                     &
     2425subroutine phot(nj, nztable, nsza, nso2, sza_input, dist_sol, mumean, rmco2, rmso2,                     &
    24262426                jphot, table_colair, table_colso2, table_sza, nz, nb_phot_max, t, p, v_phot)
    24272427
     
    24342434
    24352435real, INTENT(IN), dimension(nz) :: t, p
     2436real, INTENT(IN), dimension(nz) :: mumean        ! [g/mol]
    24362437real, INTENT(IN), dimension(nso2,nsza,nztable,nj) :: jphot
    24372438real, INTENT(IN), dimension(nso2,nztable) :: table_colso2
     
    24422443
    24432444real, dimension(nz,nj) :: j
    2444 real, dimension(nz) :: col, colso2
     2445real, dimension(nz) :: coef, col, colso2
    24452446real, dimension(nso2) :: colref
    24462447real, dimension(2,2,2) :: poids
    24472448real :: cicol, cisza, ciso2
    2448 real :: mugaz, avogadro, gvenus, coef, dp
     2449real :: avogadro, gvenus, dp
    24492450
    24502451integer :: indcol, indsza, indso2
     
    24542455real, dimension(nz,nb_phot_max), INTENT(INOUT) :: v_phot
    24552456
    2456 mugaz    = 43.44E-3
     2457!mugaz    = 43.44E-3
    24572458avogadro = 6.022E+23
    24582459gvenus   = 8.87
    2459 
    2460 coef = avogadro/(gvenus*mugaz)*1.E-4
    24612460
    24622461! day/night test
     
    24832482! co2 and so2 columns
    24842483
    2485 col(nz)    = coef*rmco2(nz)*p(nz)*100.
    2486 colso2(nz) = coef*rmso2(nz)*p(nz)*100.
     2484coef(nz)   = avogadro/(gvenus*mumean(nz)*1.E-3)*1.E-4
     2485col(nz)    = coef(nz)*rmco2(nz)*p(nz)*100.
     2486colso2(nz) = coef(nz)*rmso2(nz)*p(nz)*100.
    24872487
    24882488do iz = nz-1, 1, -1
     2489!   print*,"L2490 new_photochemistry", iz,mumean(iz)
    24892490   dp = (p(iz) - p(iz+1))*100.
    2490    col(iz)    = col(iz+1) + coef*(rmco2(iz+1) + rmco2(iz))*0.5*dp
     2491   coef(iz)   = avogadro/(gvenus*mumean(iz)*1.E-3)*1.E-4
     2492   col(iz)    = col(iz+1) + coef(iz)*(rmco2(iz+1) + rmco2(iz))*0.5*dp
    24912493   col(iz)    = min(col(iz), table_colair(1))
    2492    colso2(iz) = colso2(iz+1) + coef*(rmso2(iz+1) + rmso2(iz))*0.5*dp
     2494   colso2(iz) = colso2(iz+1) + coef(iz)*(rmso2(iz+1) + rmso2(iz))*0.5*dp
    24932495   colso2(iz) = min(colso2(iz), table_colso2(nso2,1))
    24942496end do
  • trunk/LMDZ.VENUS/libf/phyvenus/param_read.F

    r1310 r1452  
    11      subroutine param_read
    22
    3         use dimphy
    4         use conc
     3      use dimphy
     4      use conc
    55      implicit none
    66
     
    1818      integer ierr
    1919      real       nada
    20 c      character (len=100) :: datafile="/u/forget/WWW/datagcm/datafile" 
    21       character (len=100) ::
    22      $            datafile="/san/home/ggilmd/COMMON/LMDZ.MARS/datafile"
     20      character (len=100) :: datafile="HIGHATM"
    2321     
    2422c*************************+PROGRAM STARTS**************************
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq.F

    r1443 r1452  
    881881         endif
    882882
     883!         Pas appel concentrations car BUG ... comprend pas
     884!         valeur de mmean trop hautes 5,25E+29
     885!         call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax)
     886
    883887         if (ok_deltatemp) then
    884888! Utilisation du champ de temperature modifie         
     
    12241228
    12251229      if(callthermos) then
    1226          call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax,
    1227      &                        pdtphys)
     1230         call concentrations2(pplay,t_seri,d_t,tr_seri, nqmax)
    12281231
    12291232      endif
  • trunk/LMDZ.VENUS/libf/phyvenus/phytrac_chimie.F

    r1442 r1452  
    272272     e                         temp(ilon,:),
    273273     e                         trac(ilon,:,:),
     274     e                         mmean(ilon,:),
    274275     e                         sza_local, nqmax)
    275276c       =============================================================
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h

    r1442 r1452  
    4141c     call histwrite_phy(nid_ins,.false.,"mang",itau_w,mang)
    4242c     call histwrite_phy(nid_ins,.false.,"Kz",itau_w,ycoefh)
     43      call histwrite_phy(nid_mth,.false.,"mmean",itau_w,mmean)
     44      call histwrite_phy(nid_mth,.false.,"rho",itau_w,rho)
    4345
    4446c plusieurs traceurs  !!!outputs in [vmr]
    45        IF (ok_chem) THEN
     47       IF (iflag_trac.eq.1) THEN
    4648         DO iq=1,nqmax
    4749       call histwrite_phy(nid_ins,.false.,tname(iq),itau_w,qx(:,:,iq)*
    4850     &                    mmean(:,:)/M_tr(iq))
    4951         ENDDO
     52       ENDIF
     53
     54       IF (callthermos .and. ok_chem) THEN
     55       call histwrite_phy(nid_mth,.false.,"d_qmoldifCO2",itau_w,
     56     .                 d_q_moldif(:,:,i_co2))
     57       call histwrite_phy(nid_mth,.false.,"d_qmoldifO3p",itau_w,
     58     .                  d_q_moldif(:,:,i_o))
     59       call histwrite_phy(nid_mth,.false.,"d_qmoldifN2",itau_w,
     60     .                  d_q_moldif(:,:,i_n2))
    5061       ENDIF
    5162     
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h

    r1310 r1452  
    1616      call histwrite_phy(nid_mth,.false.,"psol",itau_w,paprs(:,1))
    1717c     call histwrite_phy(nid_mth,.false.,"ue",itau_w,ue)
    18 c VENUS: regardee a l'envers!!!!!!!!!!!!!!!
     18c VENUS: regardee a l envers!!!!!!!!!!!!!!!
    1919c     call histwrite_phy(nid_mth,.false.,"ve",itau_w,-1.*ve)
    2020c     call histwrite_phy(nid_mth,.false.,"cdragh",itau_w,cdragh)
     
    3232      call histwrite_phy(nid_mth,.false.,"geop",itau_w,zphi)
    3333      call histwrite_phy(nid_mth,.false.,"vitu",itau_w,u_seri)
    34 c VENUS: regardee a l'envers!!!!!!!!!!!!!!!
     34c VENUS: regardee a l envers!!!!!!!!!!!!!!!
    3535      call histwrite_phy(nid_mth,.false.,"vitv",itau_w,-1.*v_seri)
    3636      call histwrite_phy(nid_mth,.false.,"vitw",itau_w,omega)
     
    4141c     call histwrite_phy(nid_mth,.false.,"mang",itau_w,mang)
    4242c     call histwrite_phy(nid_mth,.false.,"Kz",itau_w,ycoefh)
     43      call histwrite_phy(nid_mth,.false.,"mmean",itau_w,mmean)
     44      call histwrite_phy(nid_mth,.false.,"rho",itau_w,rho)
    4345
    44 c plusieurs traceurs
     46c plusieurs traceurs  !!!outputs in [vmr]
    4547       IF (iflag_trac.eq.1) THEN
    4648         DO iq=1,nqmax
    47        call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq))
     49       call histwrite_phy(nid_mth,.false.,tname(iq),itau_w,qx(:,:,iq)
     50     &                   *mmean(:,:)/M_tr(iq))
    4851         ENDDO
     52       ENDIF
     53
     54       IF (callthermos .and. ok_chem) THEN
     55       call histwrite_phy(nid_mth,.false.,"d_qmoldifCO2",itau_w,
     56     .                 d_q_moldif(:,:,i_co2))
     57       call histwrite_phy(nid_mth,.false.,"d_qmoldifO3p",itau_w,
     58     .                  d_q_moldif(:,:,i_o))
     59       call histwrite_phy(nid_mth,.false.,"d_qmoldifN2",itau_w,
     60     .                  d_q_moldif(:,:,i_n2))
    4961       ENDIF
    5062
     
    88100c en K/s     
    89101      call histwrite_phy(nid_mth,.false.,"dtswr",itau_w,dtsw)
     102      call histwrite_phy(nid_mth,.false.,"dtswrNLTE",itau_w,d_t_nirco2)
     103      call histwrite_phy(nid_mth,.false.,"dtswrDCrisp",itau_w,heat)
    90104c en K/s     
    91105      call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w,dtlw)
    92106c en K/s     
     107      call histwrite_phy(nid_mth,.false.,"dtlwrNLTE",itau_w,d_t_nlte)
     108      call histwrite_phy(nid_mth,.false.,"dtlwrLTE",itau_w,-1.*cool)
     109      call histwrite_phy(nid_mth,.false.,"dteuv",itau_w,d_t_euv)
     110      call histwrite_phy(nid_mth,.false.,"dtcond",itau_w,d_t_conduc)
     111      call histwrite_phy(nid_mth,.false.,"dumolvis",itau_w,d_u_molvis)
     112      call histwrite_phy(nid_mth,.false.,"dvmolvis",itau_w,d_v_molvis)
     113
    93114c     call histwrite_phy(nid_mth,.false.,"dtec",itau_w,d_t_ec)
    94115c en (m/s)/s     
     
    99120      call histwrite_phy(nid_mth,.false.,"dugwno",itau_w,d_u_hin)
    100121c en (m/s)/s     
    101 c VENUS: regardee a l'envers!!!!!!!!!!!!!!!
     122
     123   
     124c     VENUS: regardee a l envers!!!!!!!!!!!!!!!
    102125c     call histwrite_phy(nid_mth,.false.,"dvvdf",itau_w,-1.*d_v_vdf)
    103126
     
    120143
    121144      ENDIF
     145
Note: See TracChangeset for help on using the changeset viewer.