Changeset 109 for trunk/libf/dyn3d


Ignore:
Timestamp:
Apr 14, 2011, 11:47:04 AM (14 years ago)
Author:
slebonnois
Message:

SLebonnois: discretisation verticale: cohabitation entre
la methode Terre et les autres.

Location:
trunk/libf/dyn3d
Files:
1 added
6 edited
1 copied
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/libf/dyn3d/comvert.h

    r1 r109  
    66
    77      COMMON/comvert/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm),      &
    8      &               pa,preff,nivsigs(llm),nivsig(llm+1)
     8     &               pa,preff,nivsigs(llm),nivsig(llm+1),               &
     9     &               aps(llm),bps(llm)
    910
    10       REAL ap,bp,presnivs,dpres,pa,preff,nivsigs,nivsig
     11      REAL ap,bp,presnivs,dpres,pa,preff,nivsigs,nivsig,aps,bps
    1112
    1213 !-----------------------------------------------------------------------
  • trunk/libf/dyn3d/disvert_terre.F90

    r107 r109  
    11! $Id: disvert.F90 1480 2011-01-31 21:29:58Z jghattas $
    22
    3 SUBROUTINE disvert(pa, preff, ap, bp, dpres, presnivs, nivsigs, nivsig)
     3SUBROUTINE disvert_terre(pa, preff, ap, bp, dpres, presnivs, nivsigs, nivsig)
    44
    55  ! Auteur : P. Le Van
  • trunk/libf/dyn3d/exner_milieu.F

    r107 r109  
    1       SUBROUTINE  exner_hyb ( ngrid, ps, p,beta, pks, pk, pkf )
     1      SUBROUTINE  exner_milieu ( ngrid, ps, p,beta, pks, pk, pkf )
    22c
    33c     Auteurs :  F. Forget , Y. Wanherdrick
     
    1717c
    1818c     WARNING : CECI est une version speciale de exner_hyb originale
    19 c               Utilis‰ dans la version martienne pour pouvoir
    20 c               tourner avec des coordonn‰es verticales complexe
    21 c              => Il ne verifie PAS la condition la proportionalit‰ en
    22 c              ‰nergie totale/ interne / potentielle (F.Forget 2001)
     19c               Utilise dans la version martienne pour pouvoir
     20c               tourner avec des coordonnees verticales complexe
     21c              => Il ne verifie PAS la condition la proportionalite en
     22c              energie totale/ interne / potentielle (F.Forget 2001)
    2323c    ( voir note de Fr.Hourdin )  ,
    2424c
  • trunk/libf/dyn3d/iniconst.F

    r1 r109  
    5353c-----------------------------------------------------------------------
    5454
    55        CALL disvert(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig)
    56 c
     55      if (planet_type.eq."earth") then
     56       CALL disvert_terre(pa,preff,ap,bp,dpres,presnivs,nivsigs,nivsig)
     57      else
     58       CALL disvert_noterre
     59      endif
    5760c
    5861       RETURN
  • trunk/libf/dyn3d/leapfrog.F

    r108 r109  
    238238      dq(:,:,:)=0.
    239239      CALL pression ( ip1jmp1, ap, bp, ps, p       )
    240       CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     240      if (planet_type.eq."earth") then
     241        CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     242      else
     243        CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
     244      endif
     245
    241246c------------------
    242247c TEST PK MONOTONE
     
    404409
    405410         CALL pression (  ip1jmp1, ap, bp, ps,  p      )
    406          CALL exner_hyb(  ip1jmp1, ps, p,alpha,beta,pks, pk, pkf )
     411         if (planet_type.eq."earth") then
     412           CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     413         else
     414           CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
     415         endif
    407416
    408417!           rdaym_ini  = itau * dtvr / daysec
     
    519528
    520529        CALL pression ( ip1jmp1, ap, bp, ps, p                  )
    521         CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     530        if (planet_type.eq."earth") then
     531          CALL exner_hyb( ip1jmp1, ps, p,alpha,beta, pks, pk, pkf )
     532        else
     533          CALL exner_milieu( ip1jmp1, ps, p, beta, pks, pk, pkf )
     534        endif
    522535
    523536
  • trunk/libf/dyn3d/limy.F

    r1 r109  
    4040      REAL qbyv(ip1jm,llm)
    4141
    42       REAL qpns,qpsn,apn,aps,dyn1,dys1,dyn2,dys2
     42      REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2
    4343      Logical extremum,first
    4444      save first
     
    117117
    118118c     print*,dyqv(iip1+1)
    119 c     apn=abs(dyq(1)/dyqv(iip1+1))
     119c     appn=abs(dyq(1)/dyqv(iip1+1))
    120120c     print*,dyq(ip1jm+1)
    121121c     print*,dyqv(ip1jm-iip1+1)
    122 c     aps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
     122c     apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
    123123c     do ij=2,iim
    124 c        apn=amax1(abs(dyq(ij)/dyqv(ij)),apn)
    125 c        aps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)
     124c        appn=amax1(abs(dyq(ij)/dyqv(ij)),appn)
     125c        apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps)
    126126c     enddo
    127 c     apn=min(pente_max/apn,1.)
    128 c     aps=min(pente_max/aps,1.)
     127c     appn=min(pente_max/appn,1.)
     128c     apps=min(pente_max/apps,1.)
    129129
    130130
     
    132132
    133133c     if(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.)
    134 c    &   apn=0.
     134c    &   appn=0.
    135135c     if(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)*
    136136c    &   dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.)
    137 c    &   aps=0.
     137c    &   apps=0.
    138138
    139139c   limitation des pentes aux poles
    140140c     do ij=1,iip1
    141 c        dyq(ij)=apn*dyq(ij)
    142 c        dyq(ip1jm+ij)=aps*dyq(ip1jm+ij)
     141c        dyq(ij)=appn*dyq(ij)
     142c        dyq(ip1jm+ij)=apps*dyq(ip1jm+ij)
    143143c     enddo
    144144
  • trunk/libf/dyn3d/vlsplt.F

    r1 r109  
    478478      REAL qbyv(ip1jm,llm)
    479479
    480       REAL qpns,qpsn,apn,aps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
     480      REAL qpns,qpsn,appn,apps,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
    481481c     REAL newq,oldmasse
    482482      Logical extremum,first,testcpu
     
    602602C     PRINT*,dyq(1)
    603603C     PRINT*,dyqv(iip1+1)
    604 C     apn=abs(dyq(1)/dyqv(iip1+1))
     604C     appn=abs(dyq(1)/dyqv(iip1+1))
    605605C     PRINT*,dyq(ip1jm+1)
    606606C     PRINT*,dyqv(ip1jm-iip1+1)
    607 C     aps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
     607C     apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
    608608C     DO ij=2,iim
    609 C        apn=amax1(abs(dyq(ij)/dyqv(ij)),apn)
    610 C        aps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)
     609C        appn=amax1(abs(dyq(ij)/dyqv(ij)),appn)
     610C        apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps)
    611611C     ENDDO
    612 C     apn=min(pente_max/apn,1.)
    613 C     aps=min(pente_max/aps,1.)
     612C     appn=min(pente_max/appn,1.)
     613C     apps=min(pente_max/apps,1.)
    614614C
    615615C
     
    617617C
    618618C     IF(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.)
    619 C    &   apn=0.
     619C    &   appn=0.
    620620C     IF(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)*
    621621C    &   dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.)
    622 C    &   aps=0.
     622C    &   apps=0.
    623623C
    624624C   limitation des pentes aux poles
    625625C     DO ij=1,iip1
    626 C        dyq(ij)=apn*dyq(ij)
    627 C        dyq(ip1jm+ij)=aps*dyq(ip1jm+ij)
     626C        dyq(ij)=appn*dyq(ij)
     627C        dyq(ip1jm+ij)=apps*dyq(ip1jm+ij)
    628628C     ENDDO
    629629C
  • trunk/libf/dyn3d/vlspltqs.F

    r5 r109  
    635635C     PRINT*,dyq(1)
    636636C     PRINT*,dyqv(iip1+1)
    637 C     apn=abs(dyq(1)/dyqv(iip1+1))
     637C     appn=abs(dyq(1)/dyqv(iip1+1))
    638638C     PRINT*,dyq(ip1jm+1)
    639639C     PRINT*,dyqv(ip1jm-iip1+1)
    640 C     aps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
     640C     apps=abs(dyq(ip1jm+1)/dyqv(ip1jm-iip1+1))
    641641C     DO ij=2,iim
    642 C        apn=amax1(abs(dyq(ij)/dyqv(ij)),apn)
    643 C        aps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),aps)
     642C        appn=amax1(abs(dyq(ij)/dyqv(ij)),appn)
     643C        apps=amax1(abs(dyq(ip1jm+ij)/dyqv(ip1jm-iip1+ij)),apps)
    644644C     ENDDO
    645 C     apn=min(pente_max/apn,1.)
    646 C     aps=min(pente_max/aps,1.)
     645C     appn=min(pente_max/appn,1.)
     646C     apps=min(pente_max/apps,1.)
    647647C
    648648C
     
    650650C
    651651C     IF(dyqv(ismin(iim,dyqv,1))*dyqv(ismax(iim,dyqv,1)).le.0.)
    652 C    &   apn=0.
     652C    &   appn=0.
    653653C     IF(dyqv(ismax(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1)*
    654654C    &   dyqv(ismin(iim,dyqv(ip1jm-iip1+1),1)+ip1jm-iip1+1).le.0.)
    655 C    &   aps=0.
     655C    &   apps=0.
    656656C
    657657C   limitation des pentes aux poles
    658658C     DO ij=1,iip1
    659 C        dyq(ij)=apn*dyq(ij)
    660 C        dyq(ip1jm+ij)=aps*dyq(ip1jm+ij)
     659C        dyq(ij)=appn*dyq(ij)
     660C        dyq(ip1jm+ij)=apps*dyq(ip1jm+ij)
    661661C     ENDDO
    662662C
Note: See TracChangeset for help on using the changeset viewer.