Ignore:
Timestamp:
Sep 24, 2012, 5:07:18 PM (12 years ago)
Author:
aslmd
Message:

  • Changements dans calfis pour appeler la physique generique planetaire NB: dans le futur il faudrait un appel commun mais actuellement differences dans les arguments...
  • Changements dans dynetat0 pour s'accommoder des tableaux "controle" terrestre et planeto
  • Passage de la variable pseudoalt dans comvert.h (compatibilite planeto)
  • arch : ajout des fichiers pour faire fonctionner sur ciclad avec ifort

verifie : compatibilite bit-par-bit des resultats et initialisations, ainsi que 1+1=2 avec unpun.sh


  • Changes in calfis so that generic physics for planets could be interfaced NB: ideally a common call should be implemented but for now there are differences in arguments...
  • Changes in dynetat0 to cope with difference in "controle" between earth and planeto
  • Transfer of variable pseudoalt into comvert.h (this is only used by planeto and done for compatibility)
  • arch: added files to allow use of ifort compiler on ciclad cluster

checked : bit-by-bit compatibility of results and starts, as well as 1+1=2 with unpun.sh


Author : AS equipe planeto

Location:
LMDZ5/trunk/libf/dyn3d
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dyn3d/calfis.F

    r1617 r1654  
    179179!      REAL rdayvrai
    180180      REAL, intent(in):: jD_cur, jH_cur
     181
     182      LOGICAL tracerdyn
     183
    181184c
    182185c-----------------------------------------------------------------------
     
    459462      zdqfic(:,:,:)=0.
    460463
    461       if (planet_type=="earth") then
    462464#ifdef CPP_PHYS
    463465
     
    467469         debut_split=debut.and.isplit==1
    468470         lafin_split=lafin.and.isplit==nsplit_phys
     471
     472      if (planet_type=="earth") then
    469473
    470474         CALL physiq (ngridmx,
     
    495499     .             PVteta)
    496500
     501      else if ( planet_type=="generic" ) then
     502
     503         CALL physiq (ngridmx,     !! ngrid
     504     .             llm,            !! nlayer
     505     .             nqtot,          !! nq
     506     .             tname,          !! tracer names from dynamical core (given in infotrac)
     507     .             debut_split,    !! firstcall
     508     .             lafin_split,    !! lastcall
     509     .             float(day_ini), !! pday <-- day_ini (dans temps.h)
     510     .             jH_cur_split,   !! ptime "fraction of day"
     511     .             zdt_split,      !! ptimestep
     512     .             zplev,          !! pplev
     513     .             zplay,          !! pplay
     514     .             zphi,           !! pphi
     515     .             zufi,           !! pu
     516     .             zvfi,           !! pv
     517     .             ztfi,           !! pt
     518     .             zqfi,           !! pq
     519     .             flxwfi,         !! pw !! or 0. anyway this is for diagnostic. not used in physiq.
     520     .             zdufi,          !! pdu
     521     .             zdvfi,          !! pdv
     522     .             zdtfi,          !! pdt
     523     .             zdqfi,          !! pdq
     524     .             zdpsrf,         !! pdpsrf
     525     .             tracerdyn)      !! tracerdyn <-- utilite ???
     526
     527      endif ! of if (planet_type=="earth")
     528
    497529         zufi(:,:)=zufi(:,:)+zdufi(:,:)*zdt_split
    498530         zvfi(:,:)=zvfi(:,:)+zdvfi(:,:)*zdt_split
     
    509541#endif
    510542! of #ifdef CPP_PHYS
    511       endif ! of if (planet_type=="earth")
    512543
    513544      zdufi(:,:)=zdufic(:,:)/nsplit_phys
  • LMDZ5/trunk/libf/dyn3d/comvert.h

    r1625 r1654  
    77      COMMON/comvertr/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm),     &
    88     &               pa,preff,nivsigs(llm),nivsig(llm+1),               &
    9      &               aps(llm),bps(llm),scaleheight
     9     &               aps(llm),bps(llm),scaleheight,pseudoalt(llm)
    1010
    1111      common/comverti/disvert_type, pressure_exner
     
    2323      real bps    ! hybrid sigma contribution at mid-layers
    2424      real scaleheight ! atmospheric (reference) scale height (km)
     25      real pseudoalt ! for planets
    2526
    2627      integer disvert_type ! type of vertical discretization:
  • LMDZ5/trunk/libf/dyn3d/disvert_noterre.F

    r1520 r1654  
    4646      real tt,rr,gg, prevz
    4747      real s(llm),dsig(llm)
    48       real pseudoalt(llm)
    4948
    5049      integer iz
  • LMDZ5/trunk/libf/dyn3d/dynetat0.F

    r1635 r1654  
    77      USE infotrac
    88      use netcdf, only: nf90_get_var
     9
     10      use control_mod, only : planet_type
     11
    912      IMPLICIT NONE
    1013
     
    5457      INTEGER ierr, nid, nvarid
    5558
     59      INTEGER idecal
     60
    5661c-----------------------------------------------------------------------
    5762
     
    7782      ENDIF
    7883
     84      !!! AS: idecal is a hack to be able to read planeto starts...
     85      !!!     .... while keeping everything OK for LMDZ EARTH
     86      if (planet_type.eq."generic") then
     87          print*,'NOTE NOTE NOTE : Planeto-like start files'
     88          idecal = 4
     89          annee_ref  = 2000
     90      else
     91          print*,'NOTE NOTE NOTE : Earth-like start files'
     92          idecal = 5
     93          annee_ref  = tab_cntrl(5)
     94      endif
     95
     96
    7997      im         = tab_cntrl(1)
    8098      jm         = tab_cntrl(2)
    8199      lllm       = tab_cntrl(3)
    82100      day_ref    = tab_cntrl(4)
    83       annee_ref  = tab_cntrl(5)
    84       rad        = tab_cntrl(6)
    85       omeg       = tab_cntrl(7)
    86       g          = tab_cntrl(8)
    87       cpp        = tab_cntrl(9)
    88       kappa      = tab_cntrl(10)
    89       daysec     = tab_cntrl(11)
    90       dtvr       = tab_cntrl(12)
    91       etot0      = tab_cntrl(13)
    92       ptot0      = tab_cntrl(14)
    93       ztot0      = tab_cntrl(15)
    94       stot0      = tab_cntrl(16)
    95       ang0       = tab_cntrl(17)
    96       pa         = tab_cntrl(18)
    97       preff      = tab_cntrl(19)
    98 c
    99       clon       = tab_cntrl(20)
    100       clat       = tab_cntrl(21)
    101       grossismx  = tab_cntrl(22)
    102       grossismy  = tab_cntrl(23)
    103 c
    104       IF ( tab_cntrl(24).EQ.1. )  THEN
     101      rad        = tab_cntrl(idecal+1)
     102      omeg       = tab_cntrl(idecal+2)
     103      g          = tab_cntrl(idecal+3)
     104      cpp        = tab_cntrl(idecal+4)
     105      kappa      = tab_cntrl(idecal+5)
     106      daysec     = tab_cntrl(idecal+6)
     107      dtvr       = tab_cntrl(idecal+7)
     108      etot0      = tab_cntrl(idecal+8)
     109      ptot0      = tab_cntrl(idecal+9)
     110      ztot0      = tab_cntrl(idecal+10)
     111      stot0      = tab_cntrl(idecal+11)
     112      ang0       = tab_cntrl(idecal+12)
     113      pa         = tab_cntrl(idecal+13)
     114      preff      = tab_cntrl(idecal+14)
     115c
     116      clon       = tab_cntrl(idecal+15)
     117      clat       = tab_cntrl(idecal+16)
     118      grossismx  = tab_cntrl(idecal+17)
     119      grossismy  = tab_cntrl(idecal+18)
     120c
     121      IF ( tab_cntrl(idecal+19).EQ.1. )  THEN
    105122        fxyhypb  = . TRUE .
    106123c        dzoomx   = tab_cntrl(25)
     
    111128        fxyhypb = . FALSE .
    112129        ysinus  = . FALSE .
    113         IF( tab_cntrl(27).EQ.1. ) ysinus = . TRUE.
     130        IF( tab_cntrl(idecal+22).EQ.1. ) ysinus = . TRUE.
    114131      ENDIF
    115132
     
    225242      IF (ierr .NE. NF_NOERR) THEN
    226243         write(lunout,*)"dynetat0: Le champ <temps> est absent"
    227          CALL abort
     244         write(lunout,*)"dynetat0: J essaie <Time>"
     245         ierr = NF_INQ_VARID (nid, "Time", nvarid)
     246         IF (ierr .NE. NF_NOERR) THEN
     247            write(lunout,*)"dynetat0: Le champ <Time> est absent"
     248            CALL abort
     249         ENDIF
    228250      ENDIF
    229251      ierr = nf90_get_var(nid, nvarid, time)
Note: See TracChangeset for help on using the changeset viewer.