Ignore:
Timestamp:
Jul 22, 2015, 4:14:51 PM (10 years ago)
Author:
lguez
Message:

New parameterization of gravity wave drag due to front/jet systems, by

  1. de la Camara and F. Lott. The new Camara-Lott parameterization

replaces the Hines parameterization so it is activated if not ok_hines
and ok_gwd_rando.

Also changed distribution of phase speeds in FLOTT_GWD_rando, from
uniform to Gaussian. Bug fix in sugwd_strato. Bug fix in the arguments
of the call to add_phys_tend for methane oxydation.

For the new Camara-Lott parameterization, we need to compute relative
vorticity in calfis and pass it as a new argument "rot" to
physiq. Interpolation of relative vorticity to the physics grid is not
optimal for now: it is not weighted by cell areas.

Alvaro de la Camara, Fran\c{}cois Lott

Location:
LMDZ5/trunk/libf/dynlonlat_phylonlat
Files:
2 edited

Legend:

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

    r2239 r2333  
    139139      REAL zphi(ngridmx,llm),zphis(ngridmx)
    140140c
    141       REAL zufi(ngridmx,llm), zvfi(ngridmx,llm)
     141      REAL zrot(iip1,jjm,llm) ! AdlC May 2014
     142      REAL zufi(ngridmx,llm), zvfi(ngridmx,llm), zrfi(ngridmx,llm)
    142143      REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot)
    143144c
     
    350351
    351352
     353C  Alvaro de la Camara (May 2014)
     354C  46.1 Calcul de la vorticite et passage sur la grille physique
     355C  --------------------------------------------------------------
     356      DO l=1,llm
     357        do i=1,iim
     358          do j=1,jjm
     359            zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l)
     360     $                   + pucov(i,j+1,l) - pucov(i,j,l))
     361     $                   / (cu(i,j)+cu(i,j+1))
     362     $                   / (cv(i+1,j)+cv(i,j)) *4
     363          enddo
     364        enddo
     365      ENDDO
     366
    352367c   46.champ v:
    353368c   -----------
     
    362377     $         ( pdvcov(i,j-1,l)/cv(i,j-1) + pdvcov(i,j,l)/cv(i,j) )
    363378            ENDDO
     379               zrfi(ig0 + 1,l)= 0.25 *(zrot(iim,j-1,l)+zrot(iim,j,l)
     380     &                                +zrot(1,j-1,l)+zrot(1,j,l))
     381            DO i=2,iim
     382               zrfi(ig0 + i,l)= 0.25 *(zrot(i-1,j-1,l)+zrot(i-1,j,l)
     383     $                   +zrot(i,j-1,l)+zrot(i,j,l))   !  AdlC MAY 2014
     384            ENDDO
    364385         ENDDO
    365386      ENDDO
     
    391412         zvfi(1,l)  = SSUM(iim,zsin,1)/pi
    392413         pcvgv(1,l) = SSUM(iim,zsinbis,1)/pi
    393 
     414         zrfi(1, l) = 0.
    394415      ENDDO
    395416
     
    420441         zvfi(ngridmx,l)  = SSUM(iim,zsin,1)/pi
    421442         pcvgv(ngridmx,l) = SSUM(iim,zsinbis,1)/pi
    422 
     443         zrfi(ngridmx, l) = 0.
    423444      ENDDO
    424445c
     
    462483     .             presnivs,
    463484     .             zufi,
    464      .             zvfi,
     485     .             zvfi, zrfi,
    465486     .             ztfi,
    466487     .             zqfi,
  • LMDZ5/trunk/libf/dynlonlat_phylonlat/calfis_loc.F

    r2239 r2333  
    3838#ifdef CPP_PARA
    3939      USE parallel_lmdz,ONLY:omp_chunk,using_mpi,jjb_u,jje_u,jjb_v,jje_v
     40     $                        ,jj_begin_dyn=>jj_begin,jj_end_dyn=>jj_end
    4041      USE Write_Field
    4142      Use Write_field_p
     
    154155      REAL,ALLOCATABLE,SAVE :: zphi(:,:),zphis(:)
    155156c
    156       REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:)
     157      REAL zrot(iip1,jjb_v:jje_v,llm) ! AdlC May 2014
     158      REAL,ALLOCATABLE,SAVE :: zufi(:,:), zvfi(:,:), zrfi(:,:)
    157159      REAL,ALLOCATABLE,SAVE :: ztfi(:,:),zqfi(:,:,:)
    158160c
     
    173175      REAL,ALLOCATABLE,SAVE :: zufi_omp(:,:)
    174176      REAL,ALLOCATABLE,SAVE :: zvfi_omp(:,:)
     177      REAL,ALLOCATABLE,SAVE :: zrfi_omp(:,:)
    175178      REAL,ALLOCATABLE,SAVE :: ztfi_omp(:,:)
    176179      REAL,ALLOCATABLE,SAVE :: zqfi_omp(:,:,:)
     
    206209c$OMP THREADPRIVATE(zplev_omp,zplay_omp,zphi_omp,zphis_omp,
    207210c$OMP+                 presnivs_omp,zufi_omp,zvfi_omp,ztfi_omp,
    208 c$OMP+                 zqfi_omp,zdufi_omp,zdvfi_omp,
     211c$OMP+                 zrfi_omp,zqfi_omp,zdufi_omp,zdvfi_omp,
    209212c$OMP+                 zdtfi_omp,zdqfi_omp,zdpsrf_omp,flxwfi_omp,
    210213c$OMP+                 zdufic_omp,zdvfic_omp,zdtfic_omp,zdqfic_omp)       
     
    233236      integer :: k,kstart,kend
    234237      INTEGER :: offset
     238      INTEGER :: jjb,jje
    235239
    236240      LOGICAL tracerdyn 
     
    259263      ALLOCATE(zplev(klon,llm+1),zplay(klon,llm))
    260264      ALLOCATE(zphi(klon,llm),zphis(klon))
    261       ALLOCATE(zufi(klon,llm), zvfi(klon,llm))
     265      ALLOCATE(zufi(klon,llm), zvfi(klon,llm),zrfi(klon,llm))
    262266      ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))
    263267      ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
     
    431435c$OMP END DO NOWAIT
    432436
    433 c   46.champ v:
     437c
     438C  Alvaro de la Camara (May 2014)
     439C  46.1 Calcul de la vorticite et passage sur la grille physique
     440C  --------------------------------------------------------------
     441
     442      jjb=jj_begin_dyn-1
     443      jje=jj_end_dyn+1
     444      if (is_north_pole) jjb=1
     445      if (is_south_pole) jje=jjm
     446
     447c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     448
     449      DO l=1,llm
     450        do i=1,iim
     451          do j=jjb,jje
     452            zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l)
     453     $                   + pucov(i,j+1,l) - pucov(i,j,l))
     454     $                   / (cu(i,j)+cu(i,j+1))
     455     $                   / (cv(i+1,j)+cv(i,j)) *4
     456          enddo
     457        enddo
     458      ENDDO
     459
     460
     461c   46.2champ v:
    434462c   -----------
    435463
     
    443471          zvfi(ig0,l)= 0.5 *(  pvcov(i,j-1,l)/cv(i,j-1)
    444472     $                       + pvcov(i,j,l)/cv(i,j) )
     473          if (j==1 .OR. j==jjp1) then !  AdlC MAY 2014
     474            zrfi(ig0,l) = 0 !  AdlC MAY 2014
     475          else
     476            if(i==1)then
     477            zrfi(ig0,l)= 0.25 *(zrot(iim,j-1,l)+zrot(iim,j,l)
     478     $                   +zrot(1,j-1,l)+zrot(1,j,l))   !  AdlC MAY 2014
     479            else
     480            zrfi(ig0,l)= 0.25 *(zrot(i-1,j-1,l)+zrot(i-1,j,l)
     481     $                   +zrot(i,j-1,l)+zrot(i,j,l))   !  AdlC MAY 2014
     482            endif
     483          endif
     484
    445485   
    446486         ENDDO
     
    469509           zufi(1,l)  = SSUM(iim,zcos,1)/pi
    470510           zvfi(1,l)  = SSUM(iim,zsin,1)/pi
     511           zrfi(1,l)  = 0.
    471512 
    472513        ENDDO
     
    496537           zufi(klon,l)  = SSUM(iim,zcos,1)/pi
    497538           zvfi(klon,l)  = SSUM(iim,zsin,1)/pi
     539           zrfi(klon,l)  = 0.
    498540        ENDDO
    499541c$OMP END DO NOWAIT       
     
    531573        allocate(zufi_omp(klon,llm))
    532574        allocate(zvfi_omp(klon,llm))
     575        allocate(zrfi_omp(klon,llm))  ! LG Ari 2014
    533576        allocate(ztfi_omp(klon,llm))
    534577        allocate(zqfi_omp(klon,llm,nqtot))
     
    591634      do l=1,llm
    592635        do i=1,klon
     636          zrfi_omp(i,l)=zrfi(offset+i,l)
     637        enddo
     638      enddo
     639       
     640      do l=1,llm
     641        do i=1,klon
    593642          ztfi_omp(i,l)=ztfi(offset+i,l)
    594643        enddo
     
    674723     .             zufi_omp,
    675724     .             zvfi_omp,
     725     .             zrfi_omp,
    676726     .             ztfi_omp,
    677727     .             zqfi_omp,
Note: See TracChangeset for help on using the changeset viewer.