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/phylmd/physiq.F90

    r2328 r2333  
    55     debut,lafin,jD_cur, jH_cur,pdtphys, &
    66     paprs,pplay,pphi,pphis,presnivs, &
    7      u,v,t,qx, &
     7     u,v,rot,t,qx, &
    88     flxmass_w, &
    99     d_u, d_v, d_t, d_qx, d_ps &
     
    6666  USE CFMIP_point_locations
    6767  use FLOTT_GWD_rando_m, only: FLOTT_GWD_rando
     68  use ACAMA_GWD_rando_m, only: ACAMA_GWD_rando
    6869
    6970  IMPLICIT none
     
    230231  REAL u(klon,klev)
    231232  REAL v(klon,klev)
     233
     234  REAL, intent(in):: rot(klon, klev)
     235  ! relative vorticity, in s-1, needed for frontal waves
     236
    232237  REAL t(klon,klev),thetal(klon,klev)
    233238  ! thetal: ligne suivante a decommenter si vous avez les fichiers     MPL 20130625
     
    696701  REAL zustrli(klon), zvstrli(klon)
    697702  REAL zustrph(klon), zvstrph(klon)
    698   REAL zustrhi(klon), zvstrhi(klon)
    699703  REAL aam, torsfc
    700704  !IM 141004 END
     
    38353839             d_t_lif, d_u_lif, d_v_lif)
    38363840     ENDIF
    3837      !   
    3838      !-----------------------------------------------------------------------------------------
     3841
    38393842     ! ajout des tendances de la portance de l'orographie
    3840      CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,dqi0,paprs,'lif',abortphy)
    3841      !-----------------------------------------------------------------------------------------
    3842      !
     3843     CALL add_phys_tend(d_u_lif, d_v_lif, d_t_lif, dq0, dql0, dqi0, paprs, &
     3844          'lif', abortphy)
    38433845  ENDIF ! fin de test sur ok_orolf
    3844   !  HINES GWD PARAMETRIZATION
    38453846
    38463847  IF (ok_hines) then
    3847 
    3848      CALL hines_gwd(klon,klev,dtime,paprs,pplay, &
    3849           rlat,t_seri,u_seri,v_seri, &
    3850           zustrhi,zvstrhi, &
    3851           d_t_hin, d_u_hin, d_v_hin)
    3852      !
    3853      !  ajout des tendances
    3854      CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,dqi0,paprs,'hin',abortphy)
    3855 
     3848     !  HINES GWD PARAMETRIZATION
     3849     east_gwstress=0.
     3850     west_gwstress=0.
     3851     du_gwd_hines=0.
     3852     dv_gwd_hines=0.
     3853     CALL hines_gwd(klon, klev, dtime, paprs, pplay, rlat, t_seri, u_seri, &
     3854          v_seri, zustr_gwd_hines, zvstr_gwd_hines, d_t_hin, du_gwd_hines, &
     3855          dv_gwd_hines)
     3856     zustr_gwd_hines=0.
     3857     zvstr_gwd_hines=0.
     3858     DO k = 1, klev
     3859        zustr_gwd_hines(:)=zustr_gwd_hines(:)+ du_gwd_hines(:, k)/dtime &
     3860             * (paprs(:, k)-paprs(:, k+1))/rg
     3861        zvstr_gwd_hines(:)=zvstr_gwd_hines(:)+ dv_gwd_hines(:, k)/dtime &
     3862             * (paprs(:, k)-paprs(:, k+1))/rg
     3863     ENDDO
     3864
     3865     d_t_hin(:, :)=0.
     3866     CALL add_phys_tend(du_gwd_hines, dv_gwd_hines, d_t_hin, dq0, dql0, dqi0, &
     3867          paprs, 'hin', abortphy)
     3868  ENDIF
     3869
     3870  IF (.not. ok_hines .and. ok_gwd_rando) then
     3871     CALL acama_GWD_rando(DTIME, pplay, rlat, t_seri, u_seri, v_seri, rot, &
     3872          zustr_gwd_front, zvstr_gwd_front, du_gwd_front, dv_gwd_front, &
     3873          east_gwstress, west_gwstress)
     3874     zustr_gwd_front=0.
     3875     zvstr_gwd_front=0.
     3876     DO k = 1, klev
     3877        zustr_gwd_front(:)=zustr_gwd_front(:)+ du_gwd_front(:, k)/dtime &
     3878             * (paprs(:, k)-paprs(:, k+1))/rg
     3879        zvstr_gwd_front(:)=zvstr_gwd_front(:)+ dv_gwd_front(:, k)/dtime &
     3880             * (paprs(:, k)-paprs(:, k+1))/rg
     3881     ENDDO
     3882
     3883     CALL add_phys_tend(du_gwd_front, dv_gwd_front, dt0, dq0, dql0, dqi0, &
     3884          paprs, 'front_gwd_rando', abortphy)
     3885
     3886     !  LIGNE TEMPORAIRE POUR TESTER ROT (ECRITE AUSSI AU DESSOUS!!!):
     3887     east_gwstress=rot
    38563888  ENDIF
    38573889
     
    38593891     call FLOTT_GWD_rando(DTIME, pplay, t_seri, u_seri, v_seri, &
    38603892          rain_fall + snow_fall, zustr_gwd_rando, zvstr_gwd_rando, &
    3861           du_gwd_rando, dv_gwd_rando)
    3862      CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0,dqi0,paprs, &
    3863           'flott_gwd_rando',abortphy)
     3893          du_gwd_rando, dv_gwd_rando, east_gwstress, west_gwstress)
     3894     CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, dqi0, &
     3895          paprs, 'flott_gwd_rando', abortphy)
     3896     zustr_gwd_rando=0.
     3897     zvstr_gwd_rando=0.
     3898     DO k = 1, klev
     3899        zustr_gwd_rando(:)=zustr_gwd_rando(:)+ du_gwd_rando(:, k)/dtime &
     3900             * (paprs(:, k)-paprs(:, k+1))/rg
     3901        zvstr_gwd_rando(:)=zvstr_gwd_rando(:)+ dv_gwd_rando(:, k)/dtime &
     3902             * (paprs(:, k)-paprs(:, k+1))/rg
     3903     ENDDO
     3904
     3905     !  LIGNE TEMPORAIRE POUR TESTER ROT (ECRITE AUSSI AU DESSUS!!!):
     3906     east_gwstress=rot
    38643907  end if
    38653908
     
    39153958     CALL METHOX(1,klon,klon,klev,q_seri,d_q_ch4,pplay)
    39163959  ! ajout de la tendance d'humidite due au methane
    3917      CALL add_phys_tend(du0,dv0,dt0,d_q_ch4*dtime,dql0,'q_ch4',abortphy)
     3960     CALL add_phys_tend(du0, dv0, dt0, d_q_ch4*dtime, dql0, dqi0, paprs, &
     3961          'q_ch4', abortphy)
    39183962  END IF
    39193963  !
Note: See TracChangeset for help on using the changeset viewer.