Ignore:
Timestamp:
Mar 6, 2013, 1:50:54 PM (12 years ago)
Author:
slebonnois
Message:

SL: small modifications on rcm1d (Venus, Titan)

Location:
trunk/LMDZ.TITAN/libf/phytitan
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/profile.F

    r887 r894  
    1       SUBROUTINE profile(unit,nlev,dzst,temp)
     1      SUBROUTINE profile(unit,nlev,dzst,pres,temp)
    22      IMPLICIT NONE
    33c=======================================================================
     
    1010c   differents profils d'atmospheres. T=f(z)
    1111c   entree:
    12 c     unit    unite de lecture de "testphys1d.def"
     12c     unit    unite de lecture de "rcm1d.def"
    1313c     nlev    nombre de niveaux (nlev=llm+1, surf + couches 1 a llm)
    1414c     dzst    dz/T (avec dz = epaisseur de la couche en m)
     15c     pres    pressure profile
    1516c     ichoice choix de l'atmosphere:
    1617c             1 Temperature constante
     
    4041
    4142       INTEGER nlev, unit
    42        REAL dzst(nlev),temp(nlev)
     43       REAL dzst(nlev),pres(nlev),temp(nlev)
    4344
    4445c   local:
     
    5152      REAL hauteur,tmp
    5253      REAL zkm(nlev)    ! altitude en km
     54      real a1,b1,c1,a2,b2,c2
    5355
    5456      isin = 0
     
    8688
    8789      ELSE IF(ichoice.EQ.2) THEN
    88        print*,"Profil T a faire..."
    89        stop
    90 c        temp(1) = 735.
    91 c        zkm(1)  = 0.0
    92 c        DO il=2,nlev
    93 c           zkm(il) = zkm(il-1)+temp(il-1)*dzst(il)/1000. ! approx avec T(l-1)
    94 c           if(zkm(il).lt.60.) then
    95 c             temp(il)=735.-7.95*zkm(il)
    96 c           else
    97 c             temp(il)=AMAX1(258.-3.*(zkm(il)-60.),168.)
    98 c           endif
    99 c           zkm(il) = zkm(il-1)+(temp(il-1)+temp(il))/2.*dzst(il)/1000.
    100 c        ENDDO
     90       a1 =       142.1
     91       b1 =      -21.45
     92       c1 =       40.11
     93       a2 =       106.3
     94       b2 =       3183.
     95       c2 =       4737.
     96       DO il=1,nlev
     97         temp(il)=a1*exp(-((pres(il)-b1)/c1)^2)
     98     .          + a2*exp(-((pres(il)-b2)/c2)^2)
     99       ENDDO
     100       zkm(1)  = 0.0
     101       DO il=2,nlev
     102          zkm(il) = zkm(il-1)+(temp(il-1)+temp(il))/2.*dzst(il)/1000.
     103       ENDDO
    101104
    102105c-----------------------------------------------------------------------
  • trunk/LMDZ.TITAN/libf/phytitan/rcm1d.F

    r887 r894  
    7878      REAL pk(llm),pks, w(llm)
    7979      INTEGER l, ierr, aslun
    80       REAL tmp1(0:llm),tmp2(0:llm)                       
     80      REAL tmp1(0:llm),tmp2(0:llm),tmp3(0:llm)                       
    8181
    8282      character*2 str2
     
    8585      COMMON/cpdetvenus/cppdyn,nu_venus,t0_venus
    8686      REAL cppdyn,nu_venus,t0_venus
     87      real pi
    8788
    8889c=======================================================================
     
    279280        tmp1(ilayer)=-log(play(ilayer)/play(ilayer-1))*r/g
    280281      ENDDO
    281       call profile(unit,nlayer+1,tmp1,tmp2)
     282      DO ilayer=0,nlayer
     283        tmp2(ilayer)=plev(ilayer+1)
     284      ENDDO
     285      call profile(unit,nlayer+1,tmp1,tmp2,tmp3)
    282286      CLOSE(unit)
    283287
    284288      print*,"               Pression        Altitude     Temperature"
    285289      ilayer=1
    286       tsurf(1)=tmp2(0)
    287        temp(1)=tmp2(1)
    288        zlay(1)=tmp2(1)*tmp1(1)
     290      tsurf(1)=tmp3(0)
     291       temp(1)=tmp3(1)
     292       zlay(1)=tmp3(1)*tmp1(1)
    289293      print*,"           0",tsurf(1)
    290294      print*,ilayer,play(ilayer),zlay(ilayer),temp(ilayer)
    291295      DO ilayer=2,nlayer
    292         temp(ilayer)=tmp2(ilayer)
    293         zlay(ilayer)=zlay(ilayer-1)+tmp2(ilayer)*tmp1(ilayer)
     296        temp(ilayer)=tmp3(ilayer)
     297        zlay(ilayer)=zlay(ilayer-1)+tmp3(ilayer)*tmp1(ilayer)
    294298        print*,ilayer,play(ilayer),zlay(ilayer),temp(ilayer)
    295299      ENDDO
Note: See TracChangeset for help on using the changeset viewer.