Ignore:
Timestamp:
Mar 20, 2014, 10:57:19 AM (11 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes r1920:1997 into testing branch

Location:
LMDZ5/branches/testing
Files:
125 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dyn3dmem/addfi_loc.F

    r1910 r1999  
    5555c    -----------
    5656c
    57       REAL pdt
    58 c
    59       REAL pvcov(ijb_v:ije_v,llm),pucov(ijb_u:ije_u,llm)
    60       REAL pteta(ijb_u:ije_u,llm),pq(ijb_u:ije_u,llm,nqtot)
    61       REAL pps(ijb_u:ije_u)
    62 c
    63       REAL pdvfi(ijb_v:ije_v,llm),pdufi(ijb_u:ije_u,llm)
    64       REAL pdqfi(ijb_u:ije_u,llm,nqtot),pdhfi(ijb_u:ije_u,llm)
    65       REAL pdpfi(ijb_u:ije_u)
    66 c
    67       LOGICAL leapf,forward
     57      REAL,INTENT(IN) :: pdt ! time step for the integration (s)
     58c
     59      REAL,INTENT(INOUT) :: pvcov(ijb_v:ije_v,llm) ! covariant meridional wind
     60      REAL,INTENT(INOUT) :: pucov(ijb_u:ije_u,llm) ! covariant zonal wind
     61      REAL,INTENT(INOUT) :: pteta(ijb_u:ije_u,llm) ! potential temperature
     62      REAL,INTENT(INOUT) :: pq(ijb_u:ije_u,llm,nqtot) ! tracers
     63      REAL,INTENT(INOUT) :: pps(ijb_u:ije_u) ! surface pressure (Pa)
     64c respective tendencies (.../s) to add
     65      REAL,INTENT(IN) :: pdvfi(ijb_v:ije_v,llm)
     66      REAL,INTENT(IN) :: pdufi(ijb_u:ije_u,llm)
     67      REAL,INTENT(IN) :: pdqfi(ijb_u:ije_u,llm,nqtot)
     68      REAL,INTENT(IN) :: pdhfi(ijb_u:ije_u,llm)
     69      REAL,INTENT(IN) :: pdpfi(ijb_u:ije_u)
     70c
     71      LOGICAL,INTENT(IN) :: leapf,forward ! not used
    6872c
    6973c
     
    7377      REAL xpn(iim),xps(iim),tpn,tps
    7478      INTEGER j,k,iq,ij
    75       REAL qtestw, qtestt
    76       PARAMETER ( qtestw = 1.0e-15 )
    77       PARAMETER ( qtestt = 1.0e-40 )
     79      REAL,PARAMETER :: qtestw = 1.0e-15
     80      REAL,PARAMETER :: qtestt = 1.0e-40
    7881
    7982      REAL SSUM
  • LMDZ5/branches/testing/libf/dyn3dmem/advtrac_loc.F

    r1910 r1999  
    2424      USE Vampir
    2525      USE times
    26       USE infotrac
    27       USE control_mod
    28       USE advtrac_mod
     26      USE infotrac, ONLY: nqtot, iadv
     27      USE control_mod, ONLY: iapp_tracvl, day_step, planet_type
     28      USE advtrac_mod, ONLY: finmasse
    2929      IMPLICIT NONE
    3030c
  • LMDZ5/branches/testing/libf/dyn3dmem/caldyn_loc.F

    r1910 r1999  
    11!
    2 ! $Header$
     2! $Id: $
    33!
    4 c
    5 c
    64#undef DEBUG_IO
    75!#define DEBUG_IO
     
    1210      USE parallel_lmdz
    1311      USE Write_Field_loc
    14       USE caldyn_mod
     12      USE caldyn_mod, ONLY: vcont, ucont, ang, p, massebx, masseby,
     13     &                      vorpot, ecin, bern, massebxy, convm
    1514     
    1615      IMPLICIT NONE
    1716
    18 c=======================================================================
    19 c
    20 c  Auteur :  P. Le Van
    21 c
    22 c   Objet:
    23 c   ------
    24 c
    25 c   Calcul des tendances dynamiques.
    26 c
    27 c Modif 04/93 F.Forget
    28 c=======================================================================
     17!=======================================================================
     18!
     19!  Auteur :  P. Le Van
     20!
     21!   Objet:
     22!   ------
     23!
     24!   Calcul des tendances dynamiques.
     25!
     26! Modif 04/93 F.Forget
     27!=======================================================================
    2928
    30 c-----------------------------------------------------------------------
    31 c   0. Declarations:
    32 c   ----------------
     29!-----------------------------------------------------------------------
     30!   0. Declarations:
     31!   ----------------
    3332
    3433#include "dimensions.h"
     
    3837#include "comgeom.h"
    3938
    40 c   Arguments:
    41 c   ----------
     39!   Arguments:
     40!   ----------
    4241
    43       LOGICAL conser
     42      LOGICAL,INTENT(IN) :: conser ! triggers printing some diagnostics ! not used
     43      INTEGER,INTENT(IN) :: itau ! time step index ! not used
     44      REAL,INTENT(IN) :: vcov(ijb_v:ije_v,llm) ! covariant meridional wind
     45      REAL,INTENT(IN) :: ucov(ijb_u:ije_u,llm) ! covariant zonal wind
     46      REAL,INTENT(IN) :: teta(ijb_u:ije_u,llm) ! potential temperature
     47      REAL,INTENT(IN) :: ps(ijb_u:ije_u) ! surface pressure
     48      REAL,INTENT(IN) :: phis(ijb_u:ije_u) ! geopotential at the surface
     49      REAL,INTENT(IN) :: pk(iip1,jjb_u:jje_u,llm) ! Exner at mid-layer
     50      REAL,INTENT(IN) :: pkf(ijb_u:ije_u,llm) ! filtered Exner
     51      REAL,INTENT(IN) :: phi(ijb_u:ije_u,llm) ! geopotential
     52      REAL,INTENT(OUT) :: masse(ijb_u:ije_u,llm) ! air mass
     53      REAL,INTENT(OUT) :: dv(ijb_v:ije_v,llm) ! tendency on vcov
     54      REAL,INTENT(OUT) :: du(ijb_u:ije_u,llm) ! tendency on ucov
     55      REAL,INTENT(OUT) :: dteta(ijb_u:ije_u,llm) ! tenddency on teta
     56      REAL,INTENT(OUT) :: dp(ijb_u:ije_u) ! tendency on ps
     57      REAL,INTENT(OUT) :: w(ijb_u:ije_u,llm) ! vertical velocity
     58      REAL,INTENT(OUT) :: pbaru(ijb_u:ije_u,llm) ! mass flux in the zonal direction
     59      REAL,INTENT(OUT) :: pbarv(ijb_v:ije_v,llm) ! mass flux in the meridional direction
     60      REAL,INTENT(IN) :: time ! current time
    4461
    45       INTEGER itau
    46       REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm)
    47       REAL teta(ijb_u:ije_u,llm)
    48       REAL ps(ijb_u:ije_u),phis(ijb_u:ije_u)
    49       REAL pk(iip1,jjb_u:jje_u,llm),pkf(ijb_u:ije_u,llm)
    50       REAL phi(ijb_u:ije_u,llm),masse(ijb_u:ije_u,llm)
    51       REAL dv(ijb_v:ije_v,llm),du(ijb_u:ije_u,llm)
    52       REAL dteta(ijb_u:ije_u,llm),dp(ijb_u:ije_u)
    53       REAL w(ijb_u:ije_u,llm)
    54       REAL pbaru(ijb_u:ije_u,llm),pbarv(ijb_v:ije_v,llm)
    55       REAL time
    56 
    57 c   Local:
    58 c   ------
     62!   Local:
     63!   ------
    5964
    6065      INTEGER   ij,l,ijb,ije,ierr
    6166
    6267
    63 c-----------------------------------------------------------------------
    64 c   Calcul des tendances dynamiques:
    65 c   --------------------------------
     68!-----------------------------------------------------------------------
     69!   Compute dynamical tendencies:
     70!--------------------------------
     71
     72      ! compute contravariant winds ucont() and vcont
    6673      CALL covcont_loc  ( llm    , ucov    , vcov , ucont, vcont     )
     74      ! compute pressure p()
    6775      CALL pression_loc ( ip1jmp1, ap      , bp   ,  ps  , p         )
    6876cym      CALL psextbar (   ps   , psexbarxy                          )
    6977c$OMP BARRIER
     78      ! compute mass in each atmospheric mesh: masse()
    7079      CALL massdair_loc (    p   , masse                             )
     80      ! compute X and Y-averages of mass, massebx() and masseby()
    7181      CALL massbar_loc  (   masse, massebx , masseby                 )
     82      ! compute XY-average of mass, massebxy()
    7283      call massbarxy_loc(   masse, massebxy                          )
     84      ! compute mass fluxes pbaru() and pbarv()
    7385      CALL flumass_loc  ( massebx, masseby,vcont,ucont,pbaru,pbarv   )
     86      ! compute dteta() , horizontal converging flux of theta
    7487      CALL dteta1_loc   (   teta , pbaru   , pbarv, dteta            )
     88      ! compute convm(), horizontal converging flux of mass
    7589      CALL convmas1_loc  (   pbaru, pbarv   , convm                  )
    7690c$OMP BARRIER     
     
    95109      ijb=ij_begin
    96110      ije=ij_end
    97            
     111      ! compute pressure variation due to mass convergence
    98112      DO ij =ijb, ije
    99113         dp( ij ) = convm( ij,1 ) / airesurg( ij )
     
    101115c$OMP END MASTER
    102116c$OMP BARRIER
     117     
     118      ! compute vertical velocity w()
    103119      CALL vitvert_loc ( convm  , w                                )
     120      ! compute potential vorticity vorpot()
    104121      CALL tourpot_loc ( vcov   , ucov  , massebxy  , vorpot       )
     122      ! compute rotation induced du() and dv()
    105123      CALL dudv1_loc   ( vorpot , pbaru , pbarv     , du     , dv  )
    106124
     
    111129      call WriteField_v('dv',dv)
    112130#endif     
     131     
     132      ! compute kinetic energy ecin()
    113133      CALL enercin_loc ( vcov   , ucov  , vcont   , ucont  , ecin  )
     134      ! compute Bernouilli function bern()
    114135      CALL bernoui_loc ( ip1jmp1, llm   , phi       , ecin   , bern)
     136      ! compute and add du() and dv() contributions from Bernouilli and pressure
    115137      CALL dudv2_loc   ( teta   , pkf   , bern      , du     , dv  )
    116138
     
    137159c$OMP END DO
    138160
     161      ! compute vertical advection contributions to du(), dv() and dteta()
    139162      CALL advect_new_loc(ang,vcov,teta,w,massebx,masseby,du,dv,dteta)
    140163
     
    158181c$OMP END DO NOWAIT     
    159182
     183! Ehouarn: NB: output of control variables not implemented...
    160184
    161185      RETURN
  • LMDZ5/branches/testing/libf/dyn3dmem/calfis_loc.F

    r1910 r1999  
    4141      Use Write_field_p
    4242      USE Times
    43       USE infotrac
    44       USE control_mod
     43      USE infotrac, ONLY: nqtot, niadv, tname
     44      USE control_mod, ONLY: planet_type, nsplit_phys
    4545
    4646      IMPLICIT NONE
     
    115115c    Arguments :
    116116c    -----------
    117       LOGICAL  lafin
    118 !      REAL heure
    119       REAL, intent(in):: jD_cur, jH_cur
    120       REAL pvcov(iip1,jjb_v:jje_v,llm)
    121       REAL pucov(iip1,jjb_u:jje_u,llm)
    122       REAL pteta(iip1,jjb_u:jje_u,llm)
    123       REAL pmasse(iip1,jjb_u:jje_u,llm)
    124       REAL pq(iip1,jjb_u:jje_u,llm,nqtot)
    125       REAL pphis(iip1,jjb_u:jje_u)
    126       REAL pphi(iip1,jjb_u:jje_u,llm)
    127 c
    128       REAL pdvcov(iip1,jjb_v:jje_v,llm)
    129       REAL pducov(iip1,jjb_u:jje_u,llm)
    130       REAL pdteta(iip1,jjb_u:jje_u,llm)
    131       REAL pdq(iip1,jjb_u:jje_u,llm,nqtot)
    132       REAL flxw(iip1,jjb_u:jje_u,llm)  ! Flux de masse verticale sur la grille dynamique
    133 c
    134       REAL pps(iip1,jjb_u:jje_u)
    135       REAL pp(iip1,jjb_u:jje_u,llmp1)
    136       REAL ppk(iip1,jjb_u:jje_u,llm)
    137 c
    138       REAL pdvfi(iip1,jjb_v:jje_v,llm)
    139       REAL pdufi(iip1,jjb_u:jje_u,llm)
    140       REAL pdhfi(iip1,jjb_u:jje_u,llm)
    141       REAL pdqfi(iip1,jjb_u:jje_u,llm,nqtot)
    142       REAL pdpsfi(iip1,jjb_u:jje_u)
    143 
    144       INTEGER        longcles
    145       PARAMETER    ( longcles = 20 )
    146       REAL clesphy0( longcles )
     117      LOGICAL,INTENT(IN) ::  lafin ! .true. for the very last call to physics
     118      REAL,INTENT(IN):: jD_cur, jH_cur
     119      REAL,INTENT(IN):: pvcov(iip1,jjb_v:jje_v,llm) ! covariant meridional velocity
     120      REAL,INTENT(IN):: pucov(iip1,jjb_u:jje_u,llm) ! covariant zonal velocity
     121      REAL,INTENT(IN):: pteta(iip1,jjb_u:jje_u,llm) ! potential temperature
     122      REAL,INTENT(IN):: pmasse(iip1,jjb_u:jje_u,llm) ! mass in each cell ! not used
     123      REAL,INTENT(IN):: pq(iip1,jjb_u:jje_u,llm,nqtot) ! tracers
     124      REAL,INTENT(IN):: pphis(iip1,jjb_u:jje_u) ! surface geopotential
     125      REAL,INTENT(IN):: pphi(iip1,jjb_u:jje_u,llm) ! geopotential
     126
     127      REAL,INTENT(IN) :: pdvcov(iip1,jjb_v:jje_v,llm) ! dynamical tendency on vcov ! not used
     128      REAL,INTENT(IN) :: pducov(iip1,jjb_u:jje_u,llm) ! dynamical tendency on ucov
     129      REAL,INTENT(IN) :: pdteta(iip1,jjb_u:jje_u,llm) ! dynamical tendency on teta ! not used
     130      REAL,INTENT(IN) :: pdq(iip1,jjb_u:jje_u,llm,nqtot) ! dynamical tendency on tracers ! not used
     131
     132      REAL,INTENT(IN) :: pps(iip1,jjb_u:jje_u) ! surface pressure (Pa)
     133      REAL,INTENT(IN) :: pp(iip1,jjb_u:jje_u,llmp1) ! pressure at mesh interfaces (Pa)
     134      REAL,INTENT(IN) :: ppk(iip1,jjb_u:jje_u,llm) ! Exner at mid-layer
     135      REAL,INTENT(IN) :: flxw(iip1,jjb_u:jje_u,llm)  ! Vertical mass flux on dynamics grid
     136
     137      ! tendencies (in */s) from the physics
     138      REAL,INTENT(OUT) :: pdvfi(iip1,jjb_v:jje_v,llm) ! tendency on covariant meridional wind
     139      REAL,INTENT(OUT) :: pdufi(iip1,jjb_u:jje_u,llm) ! tendency on covariant zonal wind
     140      REAL,INTENT(OUT) :: pdhfi(iip1,jjb_u:jje_u,llm) ! tendency on potential temperature (K/s)
     141      REAL,INTENT(OUT) :: pdqfi(iip1,jjb_u:jje_u,llm,nqtot) ! tendency on tracers
     142      REAL,INTENT(OUT) :: pdpsfi(iip1,jjb_u:jje_u) ! tendency on surface pressure (Pa/s)
     143
     144      INTEGER,PARAMETER :: longcles = 20
     145      REAL,INTENT(IN) :: clesphy0( longcles ) ! unused
    147146
    148147
     
    221220c
    222221cIM diagnostique PVteta, Amip2
    223       INTEGER ntetaSTD
    224       PARAMETER(ntetaSTD=3)
    225       REAL rtetaSTD(ntetaSTD)
    226       DATA rtetaSTD/350., 380., 405./ ! Earth-specific values, beware !!
     222      INTEGER,PARAMETER :: ntetaSTD=3
     223      REAL,SAVE :: rtetaSTD(ntetaSTD)=(/350.,380.,405./) ! Earth-specific, beware !!
    227224      REAL PVteta(klon,ntetaSTD)
    228225     
     
    230227      REAL SSUM
    231228
    232       LOGICAL firstcal, debut
    233       DATA firstcal/.true./
    234       SAVE firstcal,debut
     229      LOGICAL,SAVE :: firstcal=.true., debut=.true.
    235230c$OMP THREADPRIVATE(firstcal,debut)
    236231     
  • LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90

    r1910 r1999  
    9191    INCLUDE "iniprint.h"
    9292
    93     REAL    :: clesphy0( : )   
    94     INTEGER :: itau
    95     LOGICAL :: lafin
    96     REAL :: ucov_dyn(ijb_u:ije_u,llm)
    97     REAL :: vcov_dyn(ijb_v:ije_v,llm)
    98     REAL :: teta_dyn(ijb_u:ije_u,llm)
    99     REAL :: masse_dyn(ijb_u:ije_u,llm)
    100     REAL :: ps_dyn(ijb_u:ije_u)
    101     REAL :: phis_dyn(ijb_u:ije_u)
    102     REAL :: q_dyn(ijb_u:ije_u,llm,nqtot)
    103     REAL :: flxw_dyn(ijb_u:ije_u,llm)
     93    INTEGER,INTENT(IN) :: itau ! (time) iteration step number
     94    LOGICAL,INTENT(IN) :: lafin ! .true. if final time step
     95    REAL,INTENT(IN) :: clesphy0( : ) ! not used   
     96    REAL,INTENT(INOUT) :: ucov_dyn(ijb_u:ije_u,llm) ! covariant zonal wind
     97    REAL,INTENT(INOUT) :: vcov_dyn(ijb_v:ije_v,llm) ! covariant meridional wind
     98    REAL,INTENT(INOUT) :: teta_dyn(ijb_u:ije_u,llm) ! potential temperature
     99    REAL,INTENT(INOUT) :: masse_dyn(ijb_u:ije_u,llm) ! air mass
     100    REAL,INTENT(INOUT) :: ps_dyn(ijb_u:ije_u) ! surface pressure
     101    REAL,INTENT(INOUT) :: phis_dyn(ijb_u:ije_u) ! surface geopotential
     102    REAL,INTENT(INOUT) :: q_dyn(ijb_u:ije_u,llm,nqtot) ! advected tracers
     103    REAL,INTENT(INOUT) :: flxw_dyn(ijb_u:ije_u,llm) ! vertical mass flux
    104104
    105105    REAL :: dufi_tmp(iip1,llm)   
     
    134134  !$OMP MASTER
    135135    CALL suspend_timer(timer_caldyn)
    136     WRITE(lunout,*) 'leapfrog_p: Entree dans la physique : Iteration No ',itau
     136    IF (prt_level >= 10) THEN
     137      WRITE(lunout,*) 'leapfrog_p: Entree dans la physique : Iteration No ',itau
     138    ENDIF
    137139  !$OMP END MASTER
    138140   
     
    335337                    ucov, vcov, teta , q   ,ps ,            &
    336338                    dufi, dvfi, dtetafi , dqfi ,dpfi  )
     339    ! since addfi updates ps(), also update p(), masse() and pk()
     340    CALL pression_loc(ip1jmp1,ap,bp,ps,p)
     341!$OMP BARRIER
     342    CALL massdair_loc(p,masse)
     343!$OMP BARRIER
     344    if (pressure_exner) then
     345      CALL exner_hyb_loc(ijnb_u,ps,p,alpha,beta,pks,pk,pkf)
     346    else
     347      CALL exner_milieu_loc(ijnb_u,ps,p,beta,pks,pk,pkf)
     348    endif
     349!$OMP BARRIER
    337350
    338351#ifdef DEBUG_IO   
  • LMDZ5/branches/testing/libf/dyn3dmem/call_dissip_mod.F90

    r1910 r1999  
    8787  IMPLICIT NONE
    8888    INCLUDE 'comgeom.h'
    89     REAL :: ucov_dyn(ijb_u:ije_u,llm)
    90     REAL :: vcov_dyn(ijb_v:ije_v,llm)
    91     REAL :: teta_dyn(ijb_u:ije_u,llm)
    92     REAL :: p_dyn(ijb_u:ije_u,llmp1 )
    93     REAL :: pk_dyn(ijb_u:ije_u,llm)
    94     REAL :: ps_dyn(ijb_u:ije_u)
     89    REAL,INTENT(INOUT) :: ucov_dyn(ijb_u:ije_u,llm) ! covariant zonal wind
     90    REAL,INTENT(INOUT) :: vcov_dyn(ijb_v:ije_v,llm) ! covariant meridional wind
     91    REAL,INTENT(INOUT) :: teta_dyn(ijb_u:ije_u,llm) ! covariant meridional wind
     92    REAL,INTENT(INOUT) :: p_dyn(ijb_u:ije_u,llmp1 ) ! pressure at interlayer
     93    REAL,INTENT(INOUT) :: pk_dyn(ijb_u:ije_u,llm) ! Exner at midlayer
     94    REAL,INTENT(INOUT) :: ps_dyn(ijb_u:ije_u) ! surface pressure
    9595    REAL :: tppn(iim),tpps(iim)
    9696    REAL :: tpn,tps
  • LMDZ5/branches/testing/libf/dyn3dmem/ce0l.F90

    r1910 r1999  
    115115  END IF
    116116
    117   IF (grilles_gcm_netcdf) THEN
    118      WRITE(lunout,'(//)')
    119      WRITE(lunout,*) '  ***************************  '
    120      WRITE(lunout,*) '  ***  grilles_gcm_netcdf ***  '
    121      WRITE(lunout,*) '  ***************************  '
    122      WRITE(lunout,'(//)')
    123      CALL grilles_gcm_netcdf_sub(masque,phis)
    124   END IF
     117  WRITE(lunout,'(//)')
     118  WRITE(lunout,*) '  ***************************  '
     119  WRITE(lunout,*) '  ***  grilles_gcm_netcdf ***  '
     120  WRITE(lunout,*) '  ***************************  '
     121  WRITE(lunout,'(//)')
     122  CALL grilles_gcm_netcdf_sub(masque,phis)
    125123 
    126124#ifdef CPP_MPI
  • LMDZ5/branches/testing/libf/dyn3dmem/conf_gcm.F

    r1910 r1999  
    944944      ok_etat0 = .TRUE.
    945945      CALL getin('ok_etat0',ok_etat0)
    946 
    947 !Config  Key  = grilles_gcm_netcdf
    948 !Config  Desc = creation de fichier grilles_gcm.nc dans create_etat0_limit
    949 !Config  Def  = n
    950       grilles_gcm_netcdf = .FALSE.
    951       CALL getin('grilles_gcm_netcdf',grilles_gcm_netcdf)
    952946
    953947      write(lunout,*)' #########################################'
     
    999993      write(lunout,*)' ok_limit = ', ok_limit
    1000994      write(lunout,*)' ok_etat0 = ', ok_etat0
    1001       write(lunout,*)' grilles_gcm_netcdf = ', grilles_gcm_netcdf
    1002995c
    1003996      RETURN
  • LMDZ5/branches/testing/libf/dyn3dmem/dissip_loc.F

    r1910 r1999  
     1!
     2! $Id: $
     3!
    14      SUBROUTINE dissip_loc( vcov,ucov,teta,p, dv,du,dh )
    25c
    36      USE parallel_lmdz
    47      USE write_field_loc
    5       USE dissip_mod
     8      USE dissip_mod, ONLY: dissip_allocate
    69      IMPLICIT NONE
    710
     
    3538c   ----------
    3639
    37       REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm)
    38       REAL teta(ijb_u:ije_u,llm)
    39       REAL  p( ijb_u:ije_u,llmp1 )
    40       REAL dv(ijb_v:ije_v,llm),du(ijb_u:ije_u,llm),dh(ijb_u:ije_u,llm)
     40      REAL,INTENT(IN) :: vcov(ijb_v:ije_v,llm) ! covariant meridional wind
     41      REAL,INTENT(IN) :: ucov(ijb_u:ije_u,llm) ! covariant zonal wind
     42      REAL,INTENT(IN) :: teta(ijb_u:ije_u,llm) ! potential temperature
     43      REAL,INTENT(IN) :: p(ijb_u:ije_u,llmp1) ! interlayer pressure
     44      ! tendencies (.../s) on covariant winds and potential temperature
     45      REAL,INTENT(OUT) :: dv(ijb_v:ije_v,llm)
     46      REAL,INTENT(OUT) :: du(ijb_u:ije_u,llm)
     47      REAL,INTENT(OUT) :: dh(ijb_u:ije_u,llm)
    4148
    4249c   Local:
  • LMDZ5/branches/testing/libf/dyn3dmem/dynetat0_loc.F

    r1910 r1999  
    6868     &  'dynetat0_loc: Pb d''ouverture du fichier start.nc'
    6969        write(lunout,*)' ierr = ', ierr
    70         CALL ABORT
     70        CALL ABORT_GCM("DYNETAT0", "", 1)
    7171      ENDIF
    7272
     
    7575      IF (ierr .NE. NF_NOERR) THEN
    7676         write(lunout,*)"dynetat0_loc: Le champ <controle> est absent"
    77          CALL abort
     77         CALL abort_gcm("dynetat0", "", 1)
    7878      ENDIF
    7979#ifdef NC_DOUBLE
     
    8484      IF (ierr .NE. NF_NOERR) THEN
    8585         write(lunout,*)"dynetat0_loc: Lecture echoue pour <controle>"
    86          CALL abort
     86         CALL abort_gcm("dynetat0", "", 1)
    8787      ENDIF
    8888
     
    158158      IF (ierr .NE. NF_NOERR) THEN
    159159         write(lunout,*)"dynetat0_loc: Le champ <rlonu> est absent"
    160          CALL abort
     160         CALL abort_gcm("dynetat0", "", 1)
    161161      ENDIF
    162162#ifdef NC_DOUBLE
     
    167167      IF (ierr .NE. NF_NOERR) THEN
    168168         write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlonu>"
    169          CALL abort
     169         CALL abort_gcm("dynetat0", "", 1)
    170170      ENDIF
    171171
     
    173173      IF (ierr .NE. NF_NOERR) THEN
    174174         write(lunout,*)"dynetat0_loc: Le champ <rlatu> est absent"
    175          CALL abort
     175         CALL abort_gcm("dynetat0", "", 1)
    176176      ENDIF
    177177#ifdef NC_DOUBLE
     
    182182      IF (ierr .NE. NF_NOERR) THEN
    183183         write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlatu>"
    184          CALL abort
     184         CALL abort_gcm("dynetat0", "", 1)
    185185      ENDIF
    186186
     
    188188      IF (ierr .NE. NF_NOERR) THEN
    189189         write(lunout,*)"dynetat0_loc: Le champ <rlonv> est absent"
    190          CALL abort
     190         CALL abort_gcm("dynetat0", "", 1)
    191191      ENDIF
    192192#ifdef NC_DOUBLE
     
    197197      IF (ierr .NE. NF_NOERR) THEN
    198198         write(lunout,*)"dynetat0_loc: Lecture echouee pour <rlonv>"
    199          CALL abort
     199         CALL abort_gcm("dynetat0", "", 1)
    200200      ENDIF
    201201
     
    203203      IF (ierr .NE. NF_NOERR) THEN
    204204         write(lunout,*)"dynetat0_loc: Le champ <rlatv> est absent"
    205          CALL abort
     205         CALL abort_gcm("dynetat0", "", 1)
    206206      ENDIF
    207207#ifdef NC_DOUBLE
     
    212212      IF (ierr .NE. NF_NOERR) THEN
    213213         write(lunout,*)"dynetat0_loc: Lecture echouee pour rlatv"
    214          CALL abort
     214         CALL abort_gcm("dynetat0", "", 1)
    215215      ENDIF
    216216
     
    218218      IF (ierr .NE. NF_NOERR) THEN
    219219         write(lunout,*)"dynetat0_loc: Le champ <cu> est absent"
    220          CALL abort
     220         CALL abort_gcm("dynetat0", "", 1)
    221221      ENDIF
    222222#ifdef NC_DOUBLE
     
    227227      IF (ierr .NE. NF_NOERR) THEN
    228228         write(lunout,*)"dynetat0_loc: Lecture echouee pour <cu>"
    229          CALL abort
     229         CALL abort_gcm("dynetat0", "", 1)
    230230      ENDIF
    231231
     
    233233      IF (ierr .NE. NF_NOERR) THEN
    234234         write(lunout,*)"dynetat0_loc: Le champ <cv> est absent"
    235          CALL abort
     235         CALL abort_gcm("dynetat0", "", 1)
    236236      ENDIF
    237237#ifdef NC_DOUBLE
     
    242242      IF (ierr .NE. NF_NOERR) THEN
    243243         write(lunout,*)"dynetat0_loc: Lecture echouee pour <cv>"
    244          CALL abort
     244         CALL abort_gcm("dynetat0", "", 1)
    245245      ENDIF
    246246
     
    248248      IF (ierr .NE. NF_NOERR) THEN
    249249         write(lunout,*)"dynetat0_loc: Le champ <aire> est absent"
    250          CALL abort
     250         CALL abort_gcm("dynetat0", "", 1)
    251251      ENDIF
    252252#ifdef NC_DOUBLE
     
    257257      IF (ierr .NE. NF_NOERR) THEN
    258258         write(lunout,*)"dynetat0_loc: Lecture echouee pour <aire>"
    259          CALL abort
     259         CALL abort_gcm("dynetat0", "", 1)
    260260      ENDIF
    261261     
     
    265265      IF (ierr .NE. NF_NOERR) THEN
    266266         write(lunout,*)"dynetat0_loc: Le champ <phisinit> est absent"
    267          CALL abort
     267         CALL abort_gcm("dynetat0", "", 1)
    268268      ENDIF
    269269#ifdef NC_DOUBLE
     
    274274      IF (ierr .NE. NF_NOERR) THEN
    275275         write(lunout,*)"dynetat0_loc: Lecture echouee pour <phisinit>"
    276          CALL abort
     276         CALL abort_gcm("dynetat0", "", 1)
    277277      ENDIF
    278278      phis(ijb_u:ije_u)=phis_glo(ijb_u:ije_u)
     
    286286         IF (ierr .NE. NF_NOERR) THEN
    287287            write(lunout,*)"dynetat0: Le champ <Time> est absent"
    288             CALL abort
     288            CALL abort_gcm("dynetat0", "", 1)
    289289         ENDIF
    290290      ENDIF
     
    296296      IF (ierr .NE. NF_NOERR) THEN
    297297         write(lunout,*)"dynetat0_loc: Lecture echouee <temps>"
    298          CALL abort
     298         CALL abort_gcm("dynetat0", "", 1)
    299299      ENDIF
    300300
     
    302302      IF (ierr .NE. NF_NOERR) THEN
    303303         write(lunout,*)"dynetat0_loc: Le champ <ucov> est absent"
    304          CALL abort
     304         CALL abort_gcm("dynetat0", "", 1)
    305305      ENDIF
    306306     
     
    314314      IF (ierr .NE. NF_NOERR) THEN
    315315         write(lunout,*)"dynetat0_loc: Lecture echouee pour <ucov>"
    316          CALL abort
     316         CALL abort_gcm("dynetat0", "", 1)
    317317      ENDIF
    318318
     
    324324      IF (ierr .NE. NF_NOERR) THEN
    325325         write(lunout,*)"dynetat0_loc: Le champ <vcov> est absent"
    326          CALL abort
     326         CALL abort_gcm("dynetat0", "", 1)
    327327      ENDIF
    328328#ifdef NC_DOUBLE
     
    333333      IF (ierr .NE. NF_NOERR) THEN
    334334         write(lunout,*)"dynetat0_loc: Lecture echouee pour <vcov>"
    335          CALL abort
     335         CALL abort_gcm("dynetat0", "", 1)
    336336      ENDIF
    337337      vcov(ijb_v:ije_v,:)=vcov_glo(ijb_v:ije_v,:)
     
    342342      IF (ierr .NE. NF_NOERR) THEN
    343343         write(lunout,*)"dynetat0_loc: Le champ <teta> est absent"
    344          CALL abort
     344         CALL abort_gcm("dynetat0", "", 1)
    345345      ENDIF
    346346#ifdef NC_DOUBLE
     
    351351      IF (ierr .NE. NF_NOERR) THEN
    352352         write(lunout,*)"dynetat0_loc: Lecture echouee pour <teta>"
    353          CALL abort
     353         CALL abort_gcm("dynetat0", "", 1)
    354354      ENDIF
    355355
     
    375375            write(lunout,*)
    376376     &      "dynetat0_loc: Lecture echouee pour "//tname(iq)
    377             CALL abort
     377            CALL abort_gcm("dynetat0", "", 1)
    378378          ENDIF
    379379        q(ijb_u:ije_u,:,iq)=q_glo(ijb_u:ije_u,:)
     
    388388      IF (ierr .NE. NF_NOERR) THEN
    389389         write(lunout,*)"dynetat0_loc: Le champ <masse> est absent"
    390          CALL abort
     390         CALL abort_gcm("dynetat0", "", 1)
    391391      ENDIF
    392392#ifdef NC_DOUBLE
     
    397397      IF (ierr .NE. NF_NOERR) THEN
    398398         write(lunout,*)"dynetat0_loc: Lecture echouee pour <masse>"
    399          CALL abort
     399         CALL abort_gcm("dynetat0", "", 1)
    400400      ENDIF
    401401      masse(ijb_u:ije_u,:)=masse_glo(ijb_u:ije_u,:)
     
    406406      IF (ierr .NE. NF_NOERR) THEN
    407407         write(lunout,*)"dynetat0_loc: Le champ <ps> est absent"
    408          CALL abort
     408         CALL abort_gcm("dynetat0", "", 1)
    409409      ENDIF
    410410#ifdef NC_DOUBLE
     
    415415      IF (ierr .NE. NF_NOERR) THEN
    416416         write(lunout,*)"dynetat0_loc: Lecture echouee pour <ps>"
    417          CALL abort
     417         CALL abort_gcm("dynetat0", "", 1)
    418418      ENDIF
    419419
  • LMDZ5/branches/testing/libf/dyn3dmem/dynredem_loc.F

    r1910 r1999  
    138138     &                  //trim(fichnom)
    139139         write(lunout,*)' ierr = ', ierr
    140          CALL ABORT
     140         CALL ABORT_GCM("DYNREDEM0", "", 1)
    141141      ENDIF
    142142c
     
    588588      IF (ierr .NE. NF_NOERR) THEN
    589589         write(lunout,*)"dynredem1: Pb. d ouverture "//trim(fichnom)
    590          CALL abort
     590         CALL abort_gcm("dynredem1", "", 1)
    591591      ENDIF
    592592
  • LMDZ5/branches/testing/libf/dyn3dmem/fxhyp.F

    r1910 r1999  
    4848c
    4949       REAL   dzoom
    50        REAL*8 xlon(iip1),xprimm(iip1),xuv
    51        REAL*8 xtild(0:nmax2)
    52        REAL*8 fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)
    53        REAL*8 Xf(0:nmax2),xxpr(0:nmax2)
    54        REAL*8 xvrai(iip1),xxprim(iip1)
    55        REAL*8 pi,depi,epsilon,xzoom,fa,fb
    56        REAL*8 Xf1, Xfi , a0,a1,a2,a3,xi2
     50       REAL(KIND=8) xlon(iip1),xprimm(iip1),xuv
     51       REAL(KIND=8) xtild(0:nmax2)
     52       REAL(KIND=8) fhyp(0:nmax2),ffdx,beta,Xprimt(0:nmax2)
     53       REAL(KIND=8) Xf(0:nmax2),xxpr(0:nmax2)
     54       REAL(KIND=8) xvrai(iip1),xxprim(iip1)
     55       REAL(KIND=8) pi,depi,epsilon,xzoom,fa,fb
     56       REAL(KIND=8) Xf1, Xfi , a0,a1,a2,a3,xi2
    5757       INTEGER i,it,ik,iter,ii,idif,ii1,ii2
    58        REAL*8 xi,xo1,xmoy,xlon2,fxm,Xprimin
    59        REAL*8 champmin,champmax,decalx
     58       REAL(KIND=8) xi,xo1,xmoy,xlon2,fxm,Xprimin
     59       REAL(KIND=8) champmin,champmax,decalx
    6060       INTEGER is2
    6161       SAVE is2
    6262
    63        REAL*8 heavyside
     63       REAL(KIND=8) heavyside
    6464
    6565       pi       = 2. * ASIN(1.)
     
    157157        WRITE(6,*)'Modifier les valeurs de  grossismx ,tau ou dzoomx ',
    158158     , ' et relancer ! ***  '
    159         CALL ABORT
     159        CALL ABORT_GCM("FXHYP", "", 1)
    160160       ENDIF
    161161c
     
    290290         xxprim(1)   = xxprim(iip1)
    291291       ENDIF
     292
    292293       DO i = 1 , iim
    293294        xlon(i)     = xvrai(i)
  • LMDZ5/branches/testing/libf/dyn3dmem/gcm.F

    r1910 r1999  
    548548c$OMP END PARALLEL
    549549
    550       OPEN(unit=5487,file='ok_lmdz',status='replace')
    551       WRITE(5487,*) 'ok_lmdz'
    552       CLOSE(5487)
     550!      OPEN(unit=5487,file='ok_lmdz',status='replace')
     551!      WRITE(5487,*) 'ok_lmdz'
     552!      CLOSE(5487)
    553553      END
    554554
  • LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F

    r1910 r1999  
    8080!      include "mpif.h"
    8181     
    82       INTEGER         longcles
    83       PARAMETER     ( longcles = 20 )
    84       REAL  clesphy0( longcles )
     82      INTEGER,PARAMETER :: longcles = 20
     83      REAL,INTENT(IN) :: clesphy0( longcles ) ! not used
     84      REAL,INTENT(IN) :: time_0 ! not used
     85
     86c   dynamical variables:
     87      REAL,INTENT(IN) :: ucov0(ijb_u:ije_u,llm)    ! zonal covariant wind
     88      REAL,INTENT(IN) :: vcov0(ijb_v:ije_v,llm)    ! meridional covariant wind
     89      REAL,INTENT(IN) :: teta0(ijb_u:ije_u,llm)    ! potential temperature
     90      REAL,INTENT(IN) :: q0(ijb_u:ije_u,llm,nqtot) ! advected tracers
     91      REAL,INTENT(IN) :: ps0(ijb_u:ije_u)          ! surface pressure (Pa)
     92      REAL,INTENT(IN) :: masse0(ijb_u:ije_u,llm)   ! air mass
     93      REAL,INTENT(IN) :: phis0(ijb_u:ije_u)        ! geopotentiat at the surface
    8594
    8695      real zqmin,zqmax
    87 
    88 c   variables dynamiques
    89       REAL :: vcov0(ijb_v:ije_v,llm),ucov0(ijb_u:ije_u,llm) ! vents covariants
    90       REAL :: teta0(ijb_u:ije_u,llm)                 ! temperature potentielle
    91       REAL :: q0(ijb_u:ije_u,llm,nqtot)              ! champs advectes
    92       REAL :: ps0(ijb_u:ije_u)                       ! pression  au sol
    93       REAL :: masse0(ijb_u:ije_u,llm)                ! masse d'air
    94       REAL :: phis0(ijb_u:ije_u)                     ! geopotentiel au sol
    9596
    9697!      REAL,SAVE,ALLOCATABLE :: p (:,:  )               ! pression aux interfac.des couches
     
    133134      REAL       time
    134135
    135       REAL  SSUM
    136       REAL time_0
     136      REAL  SSUM
    137137!      REAL,SAVE,ALLOCATABLE :: finvmaold(:,:)
    138138
     
    670670     
    671671      IF( forward. OR . leapf )  THEN
    672  
    673  
     672! Ehouarn: NB: fields sent to advtrac are those at the beginning of the time step
    674673         CALL caladvtrac_loc(q,pbaru,pbarv,
    675674     *        p, masse, dq,  teta,
     
    680679!      enddo
    681680
    682 c
     681! Ehouarn: Storage of mass flux for off-line tracers... not implemented...
     682
    683683      ENDIF ! of IF( forward. OR . leapf )
    684684
     
    11401140        endif
    11411141c$OMP BARRIER
     1142        CALL massdair_loc(p,masse)
     1143c$OMP BARRIER
    11421144
    11431145cc$OMP END PARALLEL
  • LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_mod.F90

    r1910 r1999  
    11MODULE leapfrog_mod
    22
    3   REAL,POINTER,SAVE :: ucov(:,:)
    4   REAL,POINTER,SAVE :: vcov(:,:)
    5   REAL,POINTER,SAVE :: teta(:,:)
    6   REAL,POINTER,SAVE :: ps(:)
    7   REAL,POINTER,SAVE :: masse(:,:)
    8   REAL,POINTER,SAVE :: phis(:)
    9   REAL,POINTER,SAVE :: q(:,:,:)
    10   REAL,POINTER,SAVE :: p(:,:)
    11   REAL,POINTER,SAVE :: pks(:)
    12   REAL,POINTER,SAVE :: pk(:,:)
    13   REAL,POINTER,SAVE :: pkf(:,:)
    14   REAL,POINTER,SAVE :: phi(:,:)
    15   REAL,POINTER,SAVE :: w(:,:)
     3  REAL,POINTER,SAVE :: ucov(:,:) ! zonal covariant wind
     4  REAL,POINTER,SAVE :: vcov(:,:) ! meridional covariant wind
     5  REAL,POINTER,SAVE :: teta(:,:) ! potential temperature
     6  REAL,POINTER,SAVE :: ps(:) ! surface pressure
     7  REAL,POINTER,SAVE :: masse(:,:) ! air mass
     8  REAL,POINTER,SAVE :: phis(:) ! geopotential at the surface
     9  REAL,POINTER,SAVE :: q(:,:,:) ! advected tracers
     10  REAL,POINTER,SAVE :: p(:,:) ! interlayer pressure
     11  REAL,POINTER,SAVE :: pks(:) ! Exner at the surface
     12  REAL,POINTER,SAVE :: pk(:,:) ! Exner at mid-layer
     13  REAL,POINTER,SAVE :: pkf(:,:) ! filtered Exner
     14  REAL,POINTER,SAVE :: phi(:,:) ! geopotential
     15  REAL,POINTER,SAVE :: w(:,:) ! vertical velocity
    1616  REAL,POINTER,SAVE :: pbaru(:,:)
    1717  REAL,POINTER,SAVE :: pbarv(:,:)
  • LMDZ5/branches/testing/libf/dyn3dmem/logic.h

    r1910 r1999  
    11!
    2 ! $Id$
     2! $Id: $
    33!
    44!
     
    1111     &  statcl,conser,apdiss,apdelq,saison,ecripar,fxyhypb,ysinus       &
    1212     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
    13      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf,hybrid
     13     &  ,ok_limit,ok_etat0,hybrid
    1414
    1515      COMMON/logici/ iflag_phys,iflag_trac
     
    1818     & apdiss,apdelq,saison,ecripar,fxyhypb,ysinus                      &
    1919     &  ,read_start,ok_guide,ok_strato,ok_gradsfile                     &
    20      &  ,ok_limit,ok_etat0,grilles_gcm_netcdf
     20     &  ,ok_limit,ok_etat0
     21     
    2122      logical hybrid ! vertical coordinate is hybrid if true (sigma otherwise)
    2223                     ! (only used if disvert_type==2)
  • LMDZ5/branches/testing/libf/dyn3dmem/mod_const_mpi.F90

    r1910 r1999  
    1717    USE ioipsl_getincom, only: getin
    1818#endif
    19 
     19! Use of Oasis-MCT coupler
     20#ifdef CPP_OMCT
     21    USE mod_prism
     22#endif
    2023    IMPLICIT NONE
    2124#ifdef CPP_MPI
  • LMDZ5/branches/testing/libf/dyn3dmem/parallel_lmdz.F90

    r1910 r1999  
    392392#endif
    393393#ifdef CPP_COUPLE
     394! Use of Oasis-MCT coupler
     395#if defined CPP_OMCT
     396    use mod_prism
     397#else
    394398    use mod_prism_proto
     399#endif
    395400! Ehouarn: surface_data module is in 'phylmd' ...
    396401      use surface_data, only : type_ocean
  • LMDZ5/branches/testing/libf/dyn3dmem/pression_loc.F

    r1910 r1999  
    11      SUBROUTINE pression_loc( ngrid, ap, bp, ps, p )
    2       USE parallel_lmdz
     2      USE parallel_lmdz, ONLY: ij_begin, ij_end, ijb_u, ije_u,
     3     &                         pole_nord, pole_sud, omp_chunk
    34c
    45
     
    1617#include "paramet.h"
    1718c
    18       INTEGER ngrid
     19      INTEGER,INTENT(IN) :: ngrid ! not used
    1920      INTEGER l,ij
    2021 
    21       REAL ap( llmp1 ), bp( llmp1 ), ps( ijb_u:ije_u )
    22       REAL p( ijb_u:ije_u,llmp1 )
     22      REAL,INTENT(IN) :: ap( llmp1 ), bp( llmp1 ), ps( ijb_u:ije_u )
     23      REAL,INTENT(OUT) :: p( ijb_u:ije_u,llmp1 )
    2324     
    2425      INTEGER ijb,ije
Note: See TracChangeset for help on using the changeset viewer.