Changeset 1654 for LMDZ5


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
Files:
4 added
9 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)
  • LMDZ5/trunk/libf/dyn3dpar/calfis_p.F

    r1617 r1654  
    242242      integer :: k,kstart,kend
    243243      INTEGER :: offset 
     244
     245      LOGICAL tracerdyn
    244246c
    245247c-----------------------------------------------------------------------
     
    636638      zdqfic_omp(:,:,:)=0.
    637639
    638       if (planet_type=="earth") then
    639640#ifdef CPP_PHYS
    640641      do isplit=1,nsplit_phys
     
    644645         lafin_split=lafin.and.isplit==nsplit_phys
    645646
     647      if (planet_type=="earth") then
    646648
    647649      CALL physiq (klon,
     
    674676     .             PVteta)
    675677
     678      else if ( planet_type=="generic" ) then
     679
     680      CALL physiq (klon,     !! ngrid
     681     .             llm,            !! nlayer
     682     .             nqtot,          !! nq
     683     .             tname,          !! tracer names from dynamical core (given in infotrac)
     684     .             debut_split,    !! firstcall
     685     .             lafin_split,    !! lastcall
     686     .             float(day_ini), !! pday <-- day_ini (dans temps.h)
     687     .             jH_cur_split,   !! ptime "fraction of day"
     688     .             zdt_split,      !! ptimestep
     689     .             zplev_omp,  !! pplev
     690     .             zplay_omp,  !! pplay
     691     .             zphi_omp,   !! pphi
     692     .             zufi_omp,   !! pu
     693     .             zvfi_omp,   !! pv
     694     .             ztfi_omp,   !! pt
     695     .             zqfi_omp,   !! pq
     696     .             flxwfi_omp, !! pw !! or 0. anyway this is for diagnostic. not used in physiq.
     697     .             zdufi_omp,  !! pdu
     698     .             zdvfi_omp,  !! pdv
     699     .             zdtfi_omp,  !! pdt
     700     .             zdqfi_omp,  !! pdq
     701     .             zdpsrf_omp, !! pdpsrf
     702     .             tracerdyn)      !! tracerdyn <-- utilite ???
     703
     704      endif ! of if (planet_type=="earth")
     705
     706
    676707         zufi_omp(:,:)=zufi_omp(:,:)+zdufi_omp(:,:)*zdt_split
    677708         zvfi_omp(:,:)=zvfi_omp(:,:)+zdvfi_omp(:,:)*zdt_split
     
    688719#endif
    689720! of #ifdef CPP_PHYS
    690       endif !of if (planet_type=="earth")
    691721
    692722      zdufi_omp(:,:)=zdufic_omp(:,:)/nsplit_phys
  • LMDZ5/trunk/libf/dyn3dpar/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/dyn3dpar/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/dyn3dpar/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)
  • LMDZ5/trunk/libf/phylmd/inistats.F

    r1492 r1654  
    1818      real, dimension(istime) :: lt
    1919      integer :: nvarid
    20       real, dimension(llm) :: pseudoalt
    2120
    2221      write (*,*)
Note: See TracChangeset for help on using the changeset viewer.