Opened 9 years ago

Closed 4 years ago

#7 closed enhancement (fixed)

DGVM problems

Reported by: dsolyga Owned by: nicolasviovy
Priority: major Milestone: ORCHIDEE 2.0
Component: Biogeochemical processes Version: orchidee_1_9_5_2
Keywords: DGVM Cc:

Description

Here a list of the problems found recently :

lpj_establish :


 sm2(:) = biomass(:,j,isapabove) + biomass(:,j,isapbelow)

 WHERE ( ( d_ind(:,j) .GT. min_stomate ) .AND. &
 ( biomass(:,j,isapabove) + biomass(:,j,isapbelow) ) .GT. sm2(:) )

because we have

   sm2(:) > sm2(:) !!!

lpj_light

  • this module should be called also when ok_dgvm or (.NOT.lpj_gap_const_mort). We should add in stomate_lpj.f90 (found

by Sebastiaan Luyssaert and Nicolas Viovy):

   IF ( control%ok_dgvm  .OR. .NOT.(lpj_gap_const_mort)) THEN

       !
       ! 11.1 do light competition
       !

       CALL light (npts, dt_days, &
         veget_max, fpc_max, PFTpresent, cn_ind, lai,     maxfpc_lastyear, &
            lm_lastyearmax, ind, biomass, veget_lastlight, bm_to_litter, mortality)
  • fpc_max should be calculated when we have a static vegetation. For the moment, fpc_max = 0 in stomate_lpj so we have always light_death equals to 1! This problem is counter-balanced by the previous point.(found by Sebastiaan Luyssaert-Nicolas Viovy)
     light_death(:,j) = MIN(un, un - fpc_max(:,j)/fpc_nat(:,j))
    


  • mortality is not used in this routine. Is this important? (Didier Solyga)
  • At the beginning of the module, the calculations of fpc_nat for trees and grasses are the same : (found by Nicolas Vuichard - Didier Solyga)
    IF ( tree(j) ) THEN
    
                    ! 2.1.1.1 trees: minimum cover due to stems, branches etc.
    
                    !          DO i = 1, npts
                    !             IF (lai(i,j) == val_exp) THEN
                    !                fpc_nat(i,j) = cn_ind(i,j) * ind(i,j)
                    !             ELSE
                    !                fpc_nat(i,j) = cn_ind(i,j) * ind(i,j) * &
                    !                     MAX( ( 1._r_std - exp( -lai(i,j) * ext_coeff(j) ) ), min_cover )
                    !             ENDIF
                    !          ENDDO
    
                    !NV : modif from SZ version : fpc is based on veget_max, not veget.
                    WHERE(fracnat(:).GE.min_stomate)
                       !            WHERE(LAI(:,j) == val_exp)
                       !               fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:)
                       !            ELSEWHERE
                       !               fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:) * &
                       !                    MAX( ( 1._r_std - exp( - lm_lastyearmax(:,j) * sla(j) * ext_coeff(j) ) ), min_cover )
                       !            ENDWHERE
                       fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:)
                    ENDWHERE
    
                 ELSE
    
                    !NV : modif from SZ version : fpc is based on veget_max, not veget.
                    WHERE(fracnat(:).GE.min_stomate)
                       !            WHERE(LAI(:,j) == val_exp)
                       !               fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:)
                       !            ELSEWHERE
                       !               fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:) * &
                       !                    ( 1._r_std - exp( - lm_lastyearmax(:,j) * sla(j) * ext_coeff(j) ) )
                       !            ENDWHERE
                       fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) / fracnat(:)
                    ENDWHERE
    
    !!$                ! 2.1.1.2 bare ground 
    !!$                IF (j == ibare_sechiba) THEN
    !!$                   fpc_nat(:,j) = cn_ind(:,j) * ind(:,j) 
    !!$
    !!$                   ! 2.1.1.3 grasses
    !!$                ELSE
    !!$                   DO i = 1, npts
    !!$                      IF (lai(i,j) == val_exp) THEN
    !!$                         fpc_nat(i,j) = cn_ind(i,j) * ind(i,j)
    !!$                      ELSE
    !!$                         fpc_nat(i,j) = cn_ind(i,j) * ind(i,j) * &
    !!$                              ( 1._r_std - exp( -lai(i,j) * ext_coeff(j) ) )
    !!$                      ENDIF
    !!$                   ENDDO
    !!$                ENDIF
    
                 ENDIF  ! tree/grass
    
    

stomate_lpj

  • the argument EndOfMonth? is not used : it was added in the last tag (1.9.5.2). Important ? (Didier Solyga)

Change History (4)

comment:1 Changed 9 years ago by dsolyga

  • Milestone changed from orchidee_1_9_6 to ORCHIDEE 2.0

comment:2 Changed 7 years ago by jgipsl

lpj_established : commit done in rev [1890]

comment:3 Changed 7 years ago by peylin

To be treated with all DGVM ticket summer 2014

comment:4 Changed 4 years ago by nicolasviovy

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.