Ignore:
Timestamp:
Jul 22, 2015, 4:14:51 PM (9 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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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.