Changeset 2686 for trunk/LMDZ.VENUS


Ignore:
Timestamp:
Jun 2, 2022, 4:11:01 PM (2 years ago)
Author:
slebonnois
Message:

SL+AM : various corrections prior to VCD 2.0

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

Legend:

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

    r2464 r2686  
    2727        mu(1)=1.
    2828        do i=2,musize-1
    29               mu(i)=mu(i-1)-1./9.
     29              mu(i)=mu(i-1)-(2./(1.*musize-1.))
    3030        enddo
    31         mu(musize)=0.
     31        mu(musize)=-1.
    3232
    3333        z(1)=100.
  • trunk/LMDZ.VENUS/libf/phyvenus/concentrations2.F

    r2464 r2686  
    55      use cpdet_phy_mod, only: cpdet                       
    66      USE chemparam_mod
    7 
     7      USE infotrac_phy, ONLY: tname
    88      implicit none
    99
     
    104104            nbq = nbq + 1
    105105            niq(nbq) = i_h
    106             aki(nbq) = 0.0
     106            !aki(nbq) = 0.0      !! valeur d'origine
     107            aki(nbq) = 37.9e-4   !??? A verifier
    107108            cpi(nbq) = 20.780e3
    108109         end if
     
    167168c            cpi(nbq) = 0.0
    168169c         endif
     170         if (i_he /= 0) then
     171            nbq = nbq + 1
     172            niq(nbq) = i_he
     173            aki(nbq) = 29.9e-4
     174            cpi(nbq) = 5.2e3
     175         end if
    169176
    170177         ! tell the world about it:
    171178         write(*,*) "concentrations: firstcall, nbq=",nbq
     179!         write(*,*) "test M_tr(nbq)=",M_tr(nbq)
    172180!         write(*,*) "  niq(1:nbq)=",niq(1:nbq)
    173181!         write(*,*) "  aki(1:nbq)=",aki(1:nbq)
    174182!         write(*,*) "  cpi(1:nbq)=",cpi(1:nbq)
    175 
    176 
     183         do i = 1,nbq
     184            write(*,*) "tname(i)=",tname(i)
     185            write(*,*) "tname(niq(i))=",tname(niq(i))
     186         end do
    177187         firstcall = .false.
    178188      end if ! if (firstcall)
     
    207217      do l = 1,klev
    208218         do ig = 1,klon
    209             do i = 1,nqmx
     219            do i = 1,nqmx-nmicro
    210220c               iq = niq(i)
    211221               mmean(ig,l) = mmean(ig,l) + zq(ig,l,i)/M_tr(i)
     
    234244
    235245            do i = 1,nbq
    236 c               iq = niq(i)
    237                ni(i) = ntot*zq(ig,l,i)*mmean(ig,l)/M_tr(i)
    238                cpnew(ig,l) = cpnew(ig,l) + ni(i)*cpi(i)
     246               iq = niq(i)
     247               ni(i) = ntot*zq(ig,l,iq)*mmean(ig,l)/M_tr(iq)
     248!! On a une super formule pour calculer cp_co2 sur Venus
     249               if (iq == i_co2) then
     250                  cpnew(ig,l) = cpnew(ig,l) + ni(i)*cpdet(zt(ig,l))
     251               else
     252                  cpnew(ig,l) = cpnew(ig,l) + ni(i)*cpi(i)
     253               end if
    239254               akknew(ig,l) = akknew(ig,l) + ni(i)*aki(i)
    240255            end do
  • trunk/LMDZ.VENUS/libf/phyvenus/hrtherm.F

    r2622 r2686  
    8181         !Only if O3, N or ion chemistry requested
    8282c         if(euvmod.ge.1) then
    83 c            xabsi(7,i)  = rm(i,i_o)
     83c            xabsi(7,i)  = rm(i,i_o3)
    8484c         endif
    8585         !Only if N or ion chemistry requested
  • trunk/LMDZ.VENUS/libf/phyvenus/nonoro_gwd_ran_mod.F90

    r2622 r2686  
    157157     REAL vh(ngrid, nlayer + 1)      ! Meridional wind at 1/2 levels
    158158     REAL ph(ngrid, nlayer + 1)      ! Pressure at 1/2 levels
    159      REAL, parameter:: psec = 1.e-8  ! Security to avoid division by 0 pressure
     159     REAL, parameter:: psec = 1.e-9  ! Security to avoid division by 0 pressure
    160160     REAL bv(ngrid, nlayer + 1)      ! Brunt Vaisala freq. at 1/2 levels
    161161     REAL, parameter:: bvsec = 1.e-5 ! Security to avoid negative BV
  • trunk/LMDZ.VENUS/libf/phyvenus/param_v4_h.F90

    r2464 r2686  
    1010   real*8, parameter :: n_avog = 6.023e23
    1111   real*8, parameter :: gg = 6.67259e-8
    12    real*8, parameter :: masa = 6.4163e26
    13    real*8, parameter :: radio = 3390.
     12   real*8, parameter :: masa = 4.8675e27 !masa de Venus(g)
     13   real*8, parameter :: radio = 6051.848 !radio de Venus(km)
    1414   integer, parameter :: nreact=93
    1515   integer, parameter :: tapas=42
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r2683 r2686  
    287287      REAL zphi(klon,klev)
    288288      REAL zzlev(klon,klev+1),zzlay(klon,klev),z1,z2
     289      REAL tlaymean ! valeur temporaire pour calculer zzlay
    289290      real tsurf(klon)
    290291
     
    828829          do j=2,klev
    829830            flux_dyn(i,j) = flux_dyn(i,j-1)
    830      . +cpdet(t_seri(i,j-1))/RG*d_t_dyn(i,j-1)*(paprs(i,j-1)-paprs(i,j))
     831     . +cpnew(i,j-1)/RG*d_t_dyn(i,j-1)*(paprs(i,j-1)-paprs(i,j))
    831832          enddo
    832833         enddo
     
    883884c=====
    884885
    885 c   calcul du geopotentiel aux niveaux intercouches
     886c   calcul de l'altitude aux niveaux intercouches
    886887c   ponderation des altitudes au niveau des couches en dp/p
    887888
    888       DO k=1,klev
    889          DO i=1,klon
    890             zzlay(i,k)=zphi(i,k)/RG        ! [m]
    891          ENDDO
    892       ENDDO
    893889      DO i=1,klon
     890         zzlay(i,1)=zphi(i,1)/RG           ! [m]
    894891         zzlev(i,1)=pphis(i)/RG            ! [m]
    895892      ENDDO
     893      DO k=2,klev
     894        DO i=1,klon
     895          tlaymean=t_seri(i,k)
     896          IF (t_seri(i,k).ne.t_seri(i,k-1))
     897     &      tlaymean=(t_seri(i,k)-t_seri(i,k-1))
     898     &                /log(t_seri(i,k)/t_seri(i,k-1))
     899
     900          zzlay(i,k)=zzlay(i,k-1)
     901     &         -(log(pplay(i,k)/pplay(i,k-1))*rnew(i,k-1)*tlaymean
     902     &           /(RG*(RA/(RA+zzlay(i,k-1)))**2))
     903        ENDDO
     904      ENDDO
     905!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     906! Old : from geopotential. Problem when mu varies in the upper atm...
     907!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     908!      DO k=1,klev
     909!         DO i=1,klon
     910!            zzlay(i,k)=zphi(i,k)/RG        ! [m]
     911!         ENDDO
     912!      ENDDO
     913!      DO i=1,klon
     914!         zzlev(i,1)=pphis(i)/RG            ! [m]
     915!      ENDDO
     916!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    896917      DO k=2,klev
    897918         DO i=1,klon
     
    13751396          do j=2,klev
    13761397            flux_ajs(i,j) = flux_ajs(i,j-1)
    1377      .        + cpdet(t_seri(i,j-1))/RG*d_t_ajs(i,j-1)/dtime
     1398     .        + cpnew(i,j-1)/RG*d_t_ajs(i,j-1)/dtime
    13781399     .                                 *(paprs(i,j-1)-paprs(i,j))
    13791400          enddo
     
    16691690          ztlev(i,k)  = (t_seri(i,k)+t_seri(i,k-1))/2.
    16701691          zdtlev(i,k) =  t_seri(i,k)-t_seri(i,k-1)
    1671           zdzlev(i,k) = (zphi(i,k)-zphi(i,k-1))/RG
     1692          zdzlev(i,k) = (zzlay(i,k)-zzlay(i,k-1))
    16721693          zn2(i,k) = RG/ztlev(i,k) * ( zdtlev(i,k)/zdzlev(i,k)
    1673      .                                  + RG/cpdet(ztlev(i,k)) )
     1694     .                                  + RG/cpnew(i,k) )
    16741695          zn2(i,k) = max(zn2(i,k),1.e-12)  ! securite
    16751696        enddo
     
    18811902      DO k = 1, klev
    18821903      DO i = 1, klon
    1883         d_t_ec(i,k)=0.5/cpdet(t_seri(i,k))
     1904        d_t_ec(i,k)=0.5/cpnew(i,k)
    18841905     $      *(u(i,k)**2+v(i,k)**2-u_seri(i,k)**2-v_seri(i,k)**2)
    18851906        t_seri(i,k)=t_seri(i,k)+d_t_ec(i,k)
     
    18911912          do j=2,klev
    18921913            flux_ec(i,j) = flux_ec(i,j-1)
    1893      . +cpdet(t_seri(i,j-1))/RG*d_t_ec(i,j-1)*(paprs(i,j-1)-paprs(i,j))
     1914     . +cpnew(i,j-1)/RG*d_t_ec(i,j-1)*(paprs(i,j-1)-paprs(i,j))
    18941915          enddo
    18951916         enddo
Note: See TracChangeset for help on using the changeset viewer.