Changeset 2707 for LMDZ5/trunk


Ignore:
Timestamp:
Nov 21, 2016, 5:44:17 PM (8 years ago)
Author:
jyg
Message:

New input parameter: nbapp_cv = number of calls to
convection (and wake) routines per day. If =0,
call at every physic time step.

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

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/clesphys.h

    r2580 r2707  
    1313       LOGICAL ok_limitvrai
    1414       LOGICAL ok_all_xml
    15        INTEGER nbapp_rad, iflag_con,iflag_ener_conserv
     15       INTEGER nbapp_rad, iflag_con, nbapp_cv, iflag_ener_conserv
    1616       REAL co2_ppm, co2_ppm0, solaire
    1717       LOGICAL ok_suntime_rrtm
     
    113113     &     , top_height                                                 &
    114114     &     , cycle_diurne, soil_model, new_oliq                         &
    115      &     , ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad, iflag_con     &
     115     &     , ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad                &
     116     &     , iflag_con, nbapp_cv                                        &
    116117     &     , iflag_ener_conserv                                         &
    117118     &     , ok_4xCO2atm                                                &
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r2704 r2707  
    207207    LOGICAL,SAVE  :: ok_orodr_omp, ok_orolf_omp, ok_limitvrai_omp
    208208    INTEGER, SAVE :: nbapp_rad_omp, iflag_con_omp
     209    INTEGER, SAVE :: nbapp_cv_omp
    209210    INTEGER, SAVE :: iflag_ener_conserv_omp
    210211    LOGICAL, SAVE :: ok_conserv_q_omp
     
    776777    iflag_con_omp = 2
    777778    CALL getin('iflag_con',iflag_con_omp)
     779
     780    !Config  Key  = nbapp_cv
     781    !Config  Desc = Frequence d'appel a la convection
     782    !Config  Def  = 0
     783    !Config  Help = Nombre  d'appels des routines de convection
     784    !Config         par jour. Si =0, appel a chaque pas de temps physique.
     785    nbapp_cv_omp = 0
     786    CALL getin('nbapp_cv',nbapp_cv_omp)
    778787
    779788    !Config  Key  = iflag_ener_conserv
     
    20522061    nbapp_rad = nbapp_rad_omp
    20532062    iflag_con = iflag_con_omp
     2063    nbapp_cv = nbapp_cv_omp
    20542064    iflag_ener_conserv = iflag_ener_conserv_omp
    20552065    ok_conserv_q = ok_conserv_q_omp
     
    23852395    write(lunout,*)'nbapp_rad=',nbapp_rad
    23862396    write(lunout,*)'iflag_con=',iflag_con
     2397    write(lunout,*)'nbapp_cv=',nbapp_cv
    23872398    write(lunout,*)'iflag_ener_conserv=',iflag_ener_conserv
    23882399    write(lunout,*)'ok_conserv_q=',ok_conserv_q
  • LMDZ5/trunk/libf/phylmd/phys_state_var_mod.F90

    r2635 r2707  
    1717      INTEGER, PARAMETER :: napisccp=1
    1818      INTEGER, SAVE :: radpas
     19      INTEGER, SAVE :: cvpas
    1920      REAL, PARAMETER :: missing_val_nf90=nf90_fill_real
    2021!$OMP THREADPRIVATE(radpas)
     22!$OMP THREADPRIVATE(cvpas)
    2123      REAL, SAVE :: dtime, solaire_etat0
    2224!$OMP THREADPRIVATE(dtime, solaire_etat0)
  • LMDZ5/trunk/libf/phylmd/physiq_mod.F90

    r2705 r2707  
    775775    REAL s_trmb1(klon), s_trmb2(klon)
    776776    REAL s_trmb3(klon)
     777
     778    ! La convection n'est pas calculee tous les pas, il faut donc
     779    !                      sauvegarder les sorties de la convection
     780    !ym      SAVE 
     781    !ym      SAVE 
     782    !ym      SAVE 
     783    !
     784    INTEGER itapcv
     785    SAVE itapcv
     786    !$OMP THREADPRIVATE(itapcv)
     787
    777788    !KE43
    778789    ! Variables locales pour la convection de K. Emanuel (sb):
     
    12731284       itap    = 0
    12741285       itaprad = 0
     1286       itapcv = 0
    12751287
    12761288       ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    12991311               // 'de nbapp_rad'
    13001312          CALL abort_physic(modname,abort_message,1)
     1313       ENDIF
     1314       IF (nbapp_cv .EQ. 0) nbapp_cv=86400./dtime
     1315       print *,'physiq, nbapp_cv ',nbapp_cv
     1316       IF (MOD(INT(86400./dtime),nbapp_cv).EQ.0) THEN
     1317          cvpas = NINT( 86400./dtime/nbapp_cv)
     1318       print *,'physiq, cvpas ',cvpas
     1319       ELSE
     1320          WRITE(lunout,*) 'le nombre de pas de temps physique doit etre un ', &
     1321               'multiple de nbapp_cv'
     1322          WRITE(lunout,*) 'changer nbapp_cv ou alors commenter ce test ', &
     1323               'mais 1+1<>2'
     1324          abort_message='nbre de pas de temps physique n est pas multiple ' &
     1325               // 'de nbapp_cv'
     1326          call abort_physic(modname,abort_message,1)
    13011327       ENDIF
    13021328       ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    23352361         omega(igout, :)
    23362362
     2363    !
     2364    ! Appel de la convection tous les "cvpas"
     2365    !
     2366    IF (MOD(itapcv,cvpas).EQ.0) THEN
     2367
    23372368    IF (iflag_con.EQ.1) THEN
    23382369       abort_message ='reactiver le call conlmd dans physiq.F'
     
    25862617    !    .              d_u_con, d_v_con)
    25872618
     2619    itapcv = 0
     2620    ENDIF !  (MOD(itapcv,cvpas).EQ.0)
     2621    itapcv = itapcv+1
     2622
    25882623    CALL add_phys_tend(d_u_con, d_v_con, d_t_con, d_q_con, dql0, dqi0, paprs, &
    25892624         'convection',abortphy,flag_inhib_tend)
     
    26602695    !
    26612696    IF (iflag_wake>=1) THEN
     2697       !
     2698       !  Call wakes only when convection has been called
     2699       IF (itapcv .EQ. 1) THEN
     2700       !
    26622701       DO k=1,klev
    26632702          DO i=1,klon
     
    27132752            wake_spread, wake_Cstar, d_deltat_wk_gw,  &
    27142753            d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk)
     2754         !
     2755       ENDIF  ! (mod(itapcv,cvpas) .EQ. 1)
    27152756       !
    27162757       !-----------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.