Changeset 2109


Ignore:
Timestamp:
Mar 4, 2019, 4:03:08 PM (6 years ago)
Author:
jvatant
Message:

Fix some problems for the microphysics :
+ Altitude of the last level at 1e7m from physics was certainly source of divergence
+ Sanity check for negative is moved from within mm_microphysic to the end of calmufi avoiding rounding pbs
--JVO

Location:
trunk/LMDZ.TITAN
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/README

    r2099 r2109  
    15521552Fix a problem of interoperability C-Fortran for picky compilers.
    15531553Using iso_c_binding could be a smart future improvement to bring.
     1554
     1555== 04/03/19 == JVO (r2109)
     1556Fix some problems for the microphysics :
     1557+ Altitude of the last level at 1e7m from physics was certainly source of divergence
     1558+ Sanity check for negative is moved from within mm_microphysic to the end of calmufi avoiding rounding pbs
  • trunk/LMDZ.TITAN/libf/muphytitan/mm_haze.f90

    r1897 r2109  
    126126    IF (mm_w_haze_prod) THEN
    127127      call mm_haze_production(zdm0as,zdm3as)
    128       ! We only produce fractal aerosols
     128      ! We only produce spherical aerosols
    129129      dm0a_s=dm0a_s+zdm0as ; dm3a_s=dm3a_s+zdm3as
    130130    ENDIF
  • trunk/LMDZ.TITAN/libf/muphytitan/mm_microphysic.f90

    r1926 r2109  
    111111      ! add temporary aerosols tendencies (-> m-3)
    112112      dm0a_f = dm0a_f + zdm0a_f  ; dm3a_f = dm3a_f + zdm3a_f
    113       ! reverse directly clouds tendencies (-> m-2)
     113      ! reverse clouds tendencies (-> m-2)
    114114      dm0n   = dm0n(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    115115      dm3n   = dm3n(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    116       ! sanity check for clouds tendencies
    117       WHERE (mm_m0ccn+dm0n < 0) ; dm0n = -mm_m0ccn ; END WHERE
    118       WHERE (mm_m3ccn+dm3n < 0) ; dm3n = -mm_m3ccn ; END WHERE
    119116      DO i=1,mm_nesp
    120117        dm3i(:,i)  = dm3i(mm_nla:1:-1,i)  * mm_dzlev(mm_nla:1:-1)
    121         WHERE (mm_m3ice+dm3i < 0) ; dm3i = -mm_m3ice ; END WHERE
    122118        dgazs(:,i) = dgazs(mm_nla:1:-1,i)
    123         ! no sanity check for gazs, let's prey.
    124119      ENDDO
    125120    ELSE
     
    131126    dm0a_f = dm0a_f(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    132127    dm3a_f = dm3a_f(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    133     ! sanity check
    134     WHERE (mm_m0aer_s+dm0a_s < 0) ; dm0a_s = -mm_m0aer_s ; END WHERE
    135     WHERE (mm_m3aer_s+dm3a_f < 0) ; dm3a_s = -mm_m3aer_s ; END WHERE
    136     WHERE (mm_m0aer_f+dm0a_f < 0) ; dm0a_f = -mm_m0aer_f ; END WHERE
    137     WHERE (mm_m3aer_f+dm3a_f < 0) ; dm3a_f = -mm_m3aer_f ; END WHERE
    138128   
    139129    RETURN
     
    170160    dm0a_f = dm0a_f(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    171161    dm3a_f = dm3a_f(mm_nla:1:-1) * mm_dzlev(mm_nla:1:-1)
    172     ! sanity check
    173     WHERE (mm_m0aer_s+dm0a_s < 0) ; dm0a_s = -mm_m0aer_s ; END WHERE
    174     WHERE (mm_m3aer_s+dm3a_f < 0) ; dm3a_s = -mm_m3aer_s ; END WHERE
    175     WHERE (mm_m0aer_f+dm0a_f < 0) ; dm0a_f = -mm_m0aer_f ; END WHERE
    176     WHERE (mm_m3aer_f+dm3a_f < 0) ; dm3a_f = -mm_m3aer_f ; END WHERE
    177162    RETURN
    178163  END FUNCTION muphys_nocld
  • trunk/LMDZ.TITAN/libf/phytitan/calmufi.F90

    r1947 r2109  
    3131  REAL(kind=8), DIMENSION(:,:), INTENT(IN) :: temp  !! Temperature at the center of each layer (K).
    3232
    33   REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: pq    !! Tracers (\(kg.kg^{-1}}\)).
    34   REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: zdqfi !! Tendency from former processes for tracers (\(kg.kg^{-1}}\)).
    35   REAL(kind=8), DIMENSION(:,:,:), INTENT(OUT) :: zdq   !! Microphysical tendency for tracers (\(kg.kg^{-1}}\)).
     33  REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: pq    !! Tracers (\(X.kg^{-1}}\)).
     34  REAL(kind=8), DIMENSION(:,:,:), INTENT(IN)  :: zdqfi !! Tendency from former processes for tracers (\(X.kg^{-1}}\)).
     35  REAL(kind=8), DIMENSION(:,:,:), INTENT(OUT) :: zdq   !! Microphysical tendency for tracers (\(X.kg^{-1}}\)).
    3636 
    37   REAL(kind=8), DIMENSION(:,:,:), ALLOCATABLE :: zq !! Local tracers updated from former processes (\(kg.kg^{-1}}\)).
     37  REAL(kind=8), DIMENSION(:,:,:), ALLOCATABLE :: zq !! Local tracers updated from former processes (\(X.kg^{-1}}\)).
    3838 
    3939  REAL(kind=8), DIMENSION(:), ALLOCATABLE :: m0as !! 0th order moment of the spherical mode (\(m^{-2}\)).
     
    5656  REAL(kind=8), DIMENSION(:,:), ALLOCATABLE :: dgazs !! Tendencies of each condensible gaz species !(\(mol.mol^{-1}\)).
    5757
    58   REAL(kind=8), DIMENSION(:,:), ALLOCATABLE ::  int2ext
     58  REAL(kind=8), DIMENSION(:,:), ALLOCATABLE ::  int2ext !! (\(m^{-2}\)).
    5959  TYPE(error) :: err
    6060
     
    165165      enddo
    166166    endif
     167
     168    ! Sanity check ( way safer to be done here rather than within YAMMS )
     169    WHERE (zq+zdq < 0.0) ; zdq = -zq ; END WHERE
     170
    167171  END DO ! loop on ilon
    168172
  • trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F90

    r2098 r2109  
    10821082 
    10831083         if (callmufi) then
     1084            zzlev(:,nlayer+1)=zzlay(:,nlayer)+(zzlay(:,nlayer)-zzlev(:,nlayer)) ! JVO 19 : We assume zzlev isn't reused later on
    10841085#ifdef USE_QTEST
    10851086            dtpq(:,:,:) = 0.0 ! we want tpq to go only through mufi
     
    10871088            tpq(:,:,:) = tpq(:,:,:) + zdqmufi(:,:,:)*ptimestep ! only manipulation of tpq->*ptimestep here
    10881089#else
    1089             call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,zdqmufi) ! JVO 19 : To be fixed, what altitude do we need ?
     1090            call calmufi(ptimestep,pplev,zzlev,pplay,zzlay,gzlat,pt,pq,pdq,zdqmufi)
    10901091            pdq(:,:,:) = pdq(:,:,:) + zdqmufi(:,:,:)
    10911092#endif
Note: See TracChangeset for help on using the changeset viewer.