Ignore:
Timestamp:
Dec 17, 2013, 1:02:44 PM (11 years ago)
Author:
slebonnois
Message:

SL: update of Titan photochemical module to include computation of chemistry up to 1300 km

Location:
trunk/LMDZ.COMMON/libf
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/dyn3d/calfis.F

    r1107 r1126  
    199199      REAL,allocatable,save :: tmpvarbar(:)
    200200      REAL,allocatable,save :: tmpvarbarp1(:)
     201      real :: zz1,zz2
    201202
    202203c-----------------------------------------------------------------------
     
    232233c----------------------------------------------
    233234c moyennes globales pour le profil de pression
    234       if(planet_type.eq."titan") then
     235       if(planet_type.eq."titan".or.planet_type.eq."venus") then
    235236        ALLOCATE(plevmoy(llm+1))
    236237        ALLOCATE(playmoy(llm))
     
    238239        ALLOCATE(tetamoy(llm))
    239240        ALLOCATE(pkmoy(llm))
     241        ALLOCATE(phimoy(0:llm))
     242        ALLOCATE(zlevmoy(llm+1))
     243        ALLOCATE(zlaymoy(llm))
    240244        plevmoy=0.
    241245        do l=1,llmp1
     
    248252        tetamoy=0.
    249253        pkmoy=0.
     254        phimoy=0.
     255        do i=1,iip1
     256         do j=1,jjp1
     257            phimoy(0)=phimoy(0)+pphis(i,j)/(iip1*jjp1)
     258         enddo
     259        enddo
    250260        do l=1,llm
    251261         do i=1,iip1
     
    253263            tetamoy(l)=tetamoy(l)+pteta(i,j,l)/(iip1*jjp1)
    254264            pkmoy(l)=pkmoy(l)+ppk(i,j,l)/(iip1*jjp1)
     265            phimoy(l)=phimoy(l)+pphi(i,j,l)/(iip1*jjp1)
    255266          enddo
    256267         enddo
    257268        enddo
    258         playmoy = preff * (pkmoy/cpp) ** unskap
     269        playmoy(:) = preff * (pkmoy(:)/cpp) ** unskap
    259270        call tpot2t(llm,tetamoy,tmoy,pkmoy)
     271c SI ON TIENT COMPTE DE LA VARIATION DE G AVEC L'ALTITUDE:
     272        zlaymoy(:) = g*rad*rad/(g*rad-phimoy(:))-rad
     273        zlevmoy(1) = phimoy(0)/g
     274        DO l=2,llm
     275            zz1=(playmoy(l-1)+plevmoy(l))/(playmoy(l-1)-plevmoy(l))
     276            zz2=(plevmoy(l)  +playmoy(l))/(plevmoy(l)  -playmoy(l))
     277            zlevmoy(l)=(zz1*zlaymoy(l-1)+zz2*zlaymoy(l))/(zz1+zz2)
     278        ENDDO
     279        zlevmoy(llmp1)=zlaymoy(llm)+(zlaymoy(llm)-zlevmoy(llm))
    260280c-------------------
    261281c + lat index
     
    265285        ig0  = 2
    266286        DO j = 2,jjm
    267            do i=0,iim-1
    268             klat(ig0+i) = j
    269            enddo
    270            ig0 = ig0+iim
     287         do i=0,iim-1
     288          klat(ig0+i) = j
     289         enddo
     290         ig0 = ig0+iim
    271291        ENDDO
    272292        klat(ngridmx)  = jjp1
    273       endif   ! planet_type=titan
     293       endif   ! planet_type=titan
    274294c----------------------------------------------
    275295      ELSE
  • trunk/LMDZ.COMMON/libf/dyn3d/moyzon_mod.F90

    r1107 r1126  
    1818! to be changed...
    1919      REAL,ALLOCATABLE,SAVE :: plevmoy(:),playmoy(:)
     20      REAL,ALLOCATABLE,SAVE :: zlevmoy(:),zlaymoy(:),phimoy(:)
    2021      REAL,ALLOCATABLE,SAVE :: tmoy(:),tetamoy(:),pkmoy(:)
    2122      INTEGER,ALLOCATABLE,SAVE :: klat(:)
  • trunk/LMDZ.COMMON/libf/dyn3dpar/calfis_p.F

    r1107 r1126  
    260260      REAL,allocatable,save :: tmpvarbar(:)
    261261      REAL,allocatable,save :: tmpvarbarp1(:)
     262      real :: zz1,zz2
    262263
    263264c-----------------------------------------------------------------------
     
    314315c------------------------------------------------------------------
    315316c moyennes globales pour les profils de pression et de temperature
    316       if(planet_type.eq."titan") then
     317      if(planet_type.eq."titan".or.planet_type.eq."venus") then
    317318        call AllGather_Field(pp,iip1*jjp1,llmp1)
    318319        call AllGather_Field(pteta,iip1*jjp1,llm)
    319320        call AllGather_Field(ppk,iip1*jjp1,llm)
     321        call AllGather_Field(pphi,iip1*jjp1,llm)
     322        call AllGather_Field(pphis,iip1*jjp1,1)
    320323        ALLOCATE(plevmoy(llm+1))
    321324        ALLOCATE(playmoy(llm))
     
    323326        ALLOCATE(tetamoy(llm))
    324327        ALLOCATE(pkmoy(llm))
     328        ALLOCATE(phimoy(0:llm))
     329        ALLOCATE(zlevmoy(llm+1))
     330        ALLOCATE(zlaymoy(llm))
    325331        plevmoy=0.
    326332        do l=1,llmp1
     
    333339        tetamoy=0.
    334340        pkmoy=0.
     341        phimoy=0.
     342        do i=1,iip1
     343         do j=1,jjp1
     344            phimoy(0)=phimoy(0)+pphis(i,j)/(iip1*jjp1)
     345         enddo
     346        enddo
    335347        do l=1,llm
    336348         do i=1,iip1
     
    338350            tetamoy(l)=tetamoy(l)+pteta(i,j,l)/(iip1*jjp1)
    339351            pkmoy(l)=pkmoy(l)+ppk(i,j,l)/(iip1*jjp1)
     352            phimoy(l)=phimoy(l)+pphi(i,j,l)/(iip1*jjp1)
    340353          enddo
    341354         enddo
    342355        enddo
    343         playmoy = preff * (pkmoy/cpp) ** unskap
     356        playmoy(:) = preff * (pkmoy(:)/cpp) ** unskap
    344357        call tpot2t_p(1,llm,tetamoy,tmoy,pkmoy)
     358c SI ON TIENT COMPTE DE LA VARIATION DE G AVEC L'ALTITUDE:
     359        zlaymoy(:) = g*rad*rad/(g*rad-phimoy(:))-rad
     360        zlevmoy(1) = phimoy(0)/g
     361        DO l=2,llm
     362            zz1=(playmoy(l-1)+plevmoy(l))/(playmoy(l-1)-plevmoy(l))
     363            zz2=(plevmoy(l)  +playmoy(l))/(plevmoy(l)  -playmoy(l))
     364            zlevmoy(l)=(zz1*zlaymoy(l-1)+zz2*zlaymoy(l))/(zz1+zz2)
     365        ENDDO
     366        zlevmoy(llmp1)=zlaymoy(llm)+(zlaymoy(llm)-zlevmoy(llm))
    345367c-------------------
    346368c + lat index
    347369        allocate(klat(klon))
    348370        do ig0=1,klon
    349            j=index_j(ig0)
    350            klat(ig0)=j
     371          j=index_j(ig0)
     372          klat(ig0)=j
    351373        enddo
    352374      endif   ! planet_type=titan
  • trunk/LMDZ.COMMON/libf/dyn3dpar/moyzon_mod.F90

    r1107 r1126  
    2424! to be changed...
    2525      REAL,ALLOCATABLE,SAVE :: plevmoy(:),playmoy(:)
     26      REAL,ALLOCATABLE,SAVE :: zlevmoy(:),zlaymoy(:),phimoy(:)
    2627      REAL,ALLOCATABLE,SAVE :: tmoy(:),tetamoy(:),pkmoy(:)
    2728      INTEGER,ALLOCATABLE,SAVE :: klat(:)
Note: See TracChangeset for help on using the changeset viewer.