Changeset 3150 for LMDZ6/trunk/libf


Ignore:
Timestamp:
Jan 15, 2018, 6:25:50 PM (7 years ago)
Author:
jyg
Message:

Introducing upper bounds on the convective
tendencies above which convection scheme is called
every time step.

Location:
LMDZ6/trunk/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r3106 r3150  
    1616      INTEGER, PARAMETER :: nout=3
    1717      INTEGER, PARAMETER :: napisccp=1
    18       INTEGER, SAVE :: radpas
    19       INTEGER, SAVE :: cvpas
    20       INTEGER, SAVE :: wkpas
     18      INTEGER, SAVE :: radpas  ! radiation is called every "radpas" step
     19      INTEGER, SAVE :: cvpas   ! convection is called every "cvpas" step
     20      INTEGER, SAVE :: cvpas_0 ! reference value for cvpas
     21      INTEGER, SAVE :: wkpas   ! wake scheme is called every "wkpas" step
    2122      REAL, PARAMETER :: missing_val_nf90=nf90_fill_real
    2223!$OMP THREADPRIVATE(radpas)
    2324!$OMP THREADPRIVATE(cvpas)
     25!$OMP THREADPRIVATE(cvpas_0)
    2426!$OMP THREADPRIVATE(wkpas)
    2527      REAL, SAVE :: dtime, solaire_etat0
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r3149 r3150  
    634634    REAL, SAVE :: alp_offset
    635635    !$OMP THREADPRIVATE(alp_offset)
     636    REAL, SAVE :: dtcon_multistep_max=1.e6
     637    !$OMP THREADPRIVATE(dtcon_multistep_max)
     638    REAL, SAVE :: dqcon_multistep_max=1.e6
     639    !$OMP THREADPRIVATE(dqcon_multistep_max)
     640
    636641 
    637642    !
     
    12601265                      ! 2 => convective adjustment and state variables are changed
    12611266       CALL getin_p('iflag_adjwk',iflag_adjwk)
     1267       CALL getin_p('dtcon_multistep_max',dtcon_multistep_max)
     1268       CALL getin_p('dqcon_multistep_max',dqcon_multistep_max)
    12621269       CALL getin_p('oliqmax',oliqmax)
    12631270       CALL getin_p('oicemax',oicemax)
     
    13971404       print *,'physiq, nbapp_cv, nbapp_wk ',nbapp_cv,nbapp_wk
    13981405       IF (MOD(NINT(86400./dtime),nbapp_cv).EQ.0) THEN
    1399           cvpas = NINT( 86400./dtime)/nbapp_cv
     1406          cvpas_0 = NINT( 86400./dtime)/nbapp_cv
     1407          cvpas = cvpas_0
    14001408       print *,'physiq, cvpas ',cvpas
    14011409       ELSE
     
    24862494    ! Appel de la convection tous les "cvpas"
    24872495    !
    2488     IF (MOD(itapcv,cvpas).EQ.0) THEN
     2496!!jyg    IF (MOD(itapcv,cvpas).EQ.0) THEN
     2497    print *,' physiq : itapcv, cvpas, itap-1, cvpas_0 ', &
     2498                       itapcv, cvpas, itap-1, cvpas_0
     2499    IF (MOD(itapcv,cvpas).EQ.0 .OR. MOD(itap-1,cvpas_0).EQ.0) THEN
    24892500
    24902501    !
     
    26602671          clwcon0=qcondc
    26612672          pmfu(:,:)=upwd(:,:)+dnwd(:,:)
    2662 
     2673          !
     2674          !jyg<
     2675          ! If convective tendencies are too large, then call convection
     2676          !  every time step
     2677          cvpas = cvpas_0
     2678          DO k=1,k_upper_cv
     2679             DO i=1,klon
     2680!!               IF (abs(d_t_con(i,k)) > 0.24 .OR. &
     2681!!                   abs(d_q_con(i,k)) > 2.e-2) THEN
     2682               IF (abs(d_t_con(i,k)) > dtcon_multistep_max .OR. &
     2683                   abs(d_q_con(i,k)) > dqcon_multistep_max) THEN
     2684                 cvpas = 1
     2685!!                 print *,'physiq1, i,k,d_t_con(i,k),d_q_con(i,k) ', &
     2686!!                                   i,k,d_t_con(i,k),d_q_con(i,k)
     2687               ENDIF
     2688             ENDDO
     2689          ENDDO
     2690          call bcast(cvpas)
     2691          !>jyg
     2692          !
    26632693          DO i = 1, klon
    26642694             IF (iflagctrl(i).le.1) itau_con(i)=itau_con(i)+cvpas
     
    27702800    proba_notrig(:) = 1.
    27712801    itapcv = 0
    2772     ENDIF !  (MOD(itapcv,cvpas).EQ.0)
     2802    ENDIF !  (MOD(itapcv,cvpas).EQ.0 .OR. MOD(itapcv,cvpas_0).EQ.0)
    27732803!
    27742804    itapcv = itapcv+1
Note: See TracChangeset for help on using the changeset viewer.