Ignore:
Timestamp:
Jul 26, 2016, 5:37:18 PM (8 years ago)
Author:
Ehouarn Millour
Message:

Add Exner function to the call_physiq arguments (not used by the Earth physics) to harmonize physics/dynamics interface.
EM

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

Legend:

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

    r2601 r2604  
    141141c
    142142      REAL zrot(iip1,jjm,llm) ! AdlC May 2014
    143       REAL zufi(ngridmx,llm), zvfi(ngridmx,llm), zrfi(ngridmx,llm)
     143      REAL zufi(ngridmx,llm), zvfi(ngridmx,llm)
     144      REAL zrfi(ngridmx,llm) ! relative wind vorticity
    144145      REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot)
     146      REAL zpk(ngridmx,llm)
    145147c
    146148      REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm)
     
    211213
    212214
    213 c   42. pression intercouches :
     215c   42. pression intercouches et fonction d'Exner:
    214216c
    215217c   -----------------------------------------------------------------
     
    222224       unskap   = 1./ kappa
    223225c
    224       DO l = 1, llmp1
     226      DO l = 1, llm
     227        zpk(   1,l ) = ppk(1,1,l)
    225228        zplev( 1,l ) = pp(1,1,l)
    226229        ig0 = 2
    227230          DO j = 2, jjm
    228231             DO i =1, iim
     232              zpk(   ig0,l ) = ppk(i,j,l)
    229233              zplev( ig0,l ) = pp(i,j,l)
    230234              ig0 = ig0 +1
    231235             ENDDO
    232236          ENDDO
     237        zpk(   ngridmx,l ) = ppk(1,jjp1,l)
    233238        zplev( ngridmx,l ) = pp(1,jjp1,l)
    234239      ENDDO
     240        zplev( 1,llmp1 ) = pp(1,1,llmp1)
     241        ig0 = 2
     242          DO j = 2, jjm
     243             DO i =1, iim
     244              zplev( ig0,llmp1 ) = pp(i,j,llmp1)
     245              ig0 = ig0 +1
     246             ENDDO
     247          ENDDO
     248        zplev( ngridmx,llmp1 ) = pp(1,jjp1,llmp1)
    235249c
    236250c
     
    471485     &                   jD_cur,jH_cur_split,zdt_split,
    472486     &                   zplev,zplay,
    473      &                   zphi,zphis,
     487     &                   zpk,zphi,zphis,
    474488     &                   presnivs,
    475489     &                   zufi,zvfi,zrfi,ztfi,zqfi,
  • LMDZ5/trunk/libf/dynphy_lonlat/calfis_loc.F

    r2601 r2604  
    162162      REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:)
    163163      REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
     164      REAL,ALLOCATABLE,SAVE ::  zpk(:,:)
    164165c
    165166      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
     
    174175      REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:)
    175176      REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:)
     177      REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:)
    176178      REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:)
    177179      REAL,ALLOCATABLE,SAVE :: zphis_omp(:)
     
    211213!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    212214
    213 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
     215c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp,
    214216c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
    215217c$OMP+                 zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp,
     
    275277      ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
    276278      ALLOCATE(flxwfi(klon,llm))
     279      ALLOCATE(zpk(klon,llm))
    277280c$OMP END MASTER
    278281c$OMP BARRIER         
     
    328331      ENDDO
    329332c$OMP END DO NOWAIT
     333
     334c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     335      DO l=1,llm
     336        do ig0=1,klon
     337          i=index_i(ig0)
     338          j=index_j(ig0)
     339          zpk(ig0,l)=ppk(i,j,l)
     340        enddo
     341      ENDDO
     342c$OMP END DO NOWAIT
     343
    330344c
    331345c
     
    571585        allocate(zplev_omp(klon,llm+1))
    572586        allocate(zplay_omp(klon,llm))
     587        allocate(zpk_omp(klon,llm))
    573588        allocate(zphi_omp(klon,llm))
    574589        allocate(zphis_omp(klon))
     
    608623      enddo
    609624       
     625       do l=1,llm
     626        do i=1,klon 
     627          zpk_omp(i,l)=zpk(offset+i,l)
     628        enddo
     629      enddo
     630       
    610631      do l=1,llm
    611632        do i=1,klon
     
    714735     &                   jD_cur,jH_cur_split,zdt_split,
    715736     &                   zplev_omp,zplay_omp,
    716      &                   zphi_omp,zphis_omp,
     737     &                   zpk_omp,zphi_omp,zphis_omp,
    717738     &                   presnivs_omp,
    718739     &                   zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp,
  • LMDZ5/trunk/libf/dynphy_lonlat/calfis_p.F

    r2601 r2604  
    162162      REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:)
    163163      REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
     164      REAL,ALLOCATABLE,SAVE ::  zpk(:,:)
    164165c
    165166      REAL,ALLOCATABLE,SAVE :: pcvgu(:,:), pcvgv(:,:)
     
    174175      REAL,ALLOCATABLE,SAVE :: zplev_omp(:,:)
    175176      REAL,ALLOCATABLE,SAVE :: zplay_omp(:,:)
     177      REAL,ALLOCATABLE,SAVE :: zpk_omp(:,:)
    176178      REAL,ALLOCATABLE,SAVE :: zphi_omp(:,:)
    177179      REAL,ALLOCATABLE,SAVE :: zphis_omp(:)
     
    211213!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    212214
    213 c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
     215c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zpk_omp,zphi_omp,zphis_omp,
    214216c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
    215217c$OMP+                 zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp,
     
    275277      ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
    276278      ALLOCATE(flxwfi(klon,llm))
     279      ALLOCATE(zpk(klon,llm))
    277280c$OMP END MASTER
    278281c$OMP BARRIER         
     
    328331      ENDDO
    329332c$OMP END DO NOWAIT
     333
     334c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     335      DO l=1,llm
     336        do ig0=1,klon
     337          i=index_i(ig0)
     338          j=index_j(ig0)
     339          zpk(ig0,l)=ppk(i,j,l)
     340        enddo
     341      ENDDO
     342c$OMP END DO NOWAIT
     343
    330344c
    331345c
     
    537551        allocate(zplev_omp(klon,llm+1))
    538552        allocate(zplay_omp(klon,llm))
     553        allocate(zpk_omp(klon,llm))
    539554        allocate(zphi_omp(klon,llm))
    540555        allocate(zphis_omp(klon))
     
    574589      enddo
    575590       
     591       do l=1,llm
     592        do i=1,klon 
     593          zpk_omp(i,l)=zpk(offset+i,l)
     594        enddo
     595      enddo
     596       
    576597      do l=1,llm
    577598        do i=1,klon
     
    680701     &                   jD_cur,jH_cur_split,zdt_split,
    681702     &                   zplev_omp,zplay_omp,
    682      &                   zphi_omp,zphis_omp,
     703     &                   zpk_omp,zphi_omp,zphis_omp,
    683704     &                   presnivs_omp,
    684705     &                   zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp,
  • LMDZ5/trunk/libf/dynphy_lonlat/phylmd/callphysiq_mod.F90

    r2422 r2604  
    1212                       jD_cur,jH_cur_split,zdt_split,                     &
    1313                       zplev_omp,zplay_omp,                               &
    14                        zphi_omp,zphis_omp,                                &
     14                       zpk_omp,zphi_omp,zphis_omp,                        &
    1515                       presnivs_omp,                                      &
    1616                       zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp,      &
     
    3535  REAL,INTENT(IN) :: zplev_omp(klon,llm+1) ! interlayer pressure (Pa)
    3636  REAL,INTENT(IN) :: zplay_omp(klon,llm) ! mid-layer pressure (Pa)
     37  REAL,INTENT(IN) :: zpk_omp(klon,llm) ! Exner function
    3738  REAL,INTENT(IN) :: zphi_omp(klon,llm) ! geopotential at midlayer
    3839  REAL,INTENT(IN) :: zphis_omp(klon) ! surface geopotential
Note: See TracChangeset for help on using the changeset viewer.