Changes between Version 49 and Version 50 of Branches/MergeOCN/Goll


Ignore:
Timestamp:
2015-06-15T13:08:13+02:00 (9 years ago)
Author:
dgoll
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Branches/MergeOCN/Goll

    v49 v50  
    500500      CALL getin_p('LEAFFALL',leaffall) 
    501501}}} 
     502=== 11. Mass conservation issue: stomate_turnover.f90 === 
     503The mass of biomass and circ_class_biomass starts to diverge after leaf fall in stomate_turnover.f90. I fixed this by removing repetitions in a big; I couldn't locate the precise error in the original code. 
     504{{{ 
     505!DSGdebug_13             ! Stand level turnover (gC m-2) 
     506!DSGdebug_13             ! Leaves 
     507!DSGdebug_13             dturnover(:) = biomass(:,ivm,ileaf,icarbon) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     508!DSGdebug_13             biomass(:,ivm,ileaf,icarbon) = biomass(:,ivm,ileaf,icarbon) - dturnover(:) 
     509!DSGdebug_13             turnover(:,ivm,ileaf,icarbon) = turnover(:,ivm,ileaf,icarbon) + dturnover(:) 
     510!DSGdebug_13              
     511!DSGdebug_13             ! save leaf mass change 
     512!DSGdebug_13             delta_lm(:,ilage) = - dturnover(:) 
     513!DSGdebug_13 
     514!DSGdebug_13             ! Roots 
     515!DSGdebug_13             dturnover(:) = biomass(:,ivm,iroot,icarbon) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     516!DSGdebug_13             biomass(:,ivm,iroot,icarbon) = biomass(:,ivm,iroot,icarbon) - dturnover(:) 
     517!DSGdebug_13             turnover(:,ivm,iroot,icarbon) = turnover(:,ivm,iroot,icarbon) + dturnover(:) 
     518!DSGdebug_13              
     519!DSGdebug_13             ! Fruit 
     520!DSGdebug_13             dturnover(:) = biomass(:,ivm,ifruit,icarbon) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     521!DSGdebug_13             biomass(:,ivm,ifruit,icarbon) = biomass(:,ivm,ifruit,icarbon) - dturnover(:) 
     522!DSGdebug_13             turnover(:,ivm,ifruit,icarbon) = turnover(:,ivm,ifruit,icarbon) + dturnover(:) 
     523!DSGdebug_13  
     524!DSGdebug_13       
     525!DSGdebug_13             ! Stand level turnover (gC m-2) 
     526!DSGdebug_13             ! Leaves 
     527!DSGdebug_13             dturnover(:) = biomass(:,ivm,ileaf,initrogen) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     528!DSGdebug_13             biomass(:,ivm,ilabile,initrogen) = biomass(:,ivm,ilabile,initrogen) + & 
     529!DSGdebug_13                  recycle_leaf(ivm) * dturnover(:)  
     530!DSGdebug_13 
     531!DSGdebug_13             biomass(:,ivm,ileaf,initrogen) = biomass(:,ivm,ileaf,initrogen) - dturnover(:) 
     532!DSGdebug_13             turnover(:,ivm,ileaf,initrogen) = turnover(:,ivm,ileaf,initrogen) + dturnover(:) *  (1. - recycle_leaf(ivm)) 
     533!DSGdebug_13              
     534!DSGdebug_13 
     535!DSGdebug_13             ! Roots 
     536!DSGdebug_13             dturnover(:) = biomass(:,ivm,iroot,initrogen) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     537!DSGdebug_13             biomass(:,ivm,ilabile,initrogen) = biomass(:,ivm,ilabile,initrogen) + & 
     538!DSGdebug_13                  recycle_root(ivm) * dturnover(:)  
     539!DSGdebug_13 
     540!DSGdebug_13             biomass(:,ivm,iroot,initrogen) = biomass(:,ivm,iroot,initrogen) - dturnover(:) 
     541!DSGdebug_13             turnover(:,ivm,iroot,initrogen) = turnover(:,ivm,iroot,initrogen) + dturnover(:) *  (1. - recycle_root(ivm)) 
     542!DSGdebug_13              
     543!DSGdebug_13 
     544!DSGdebug_13 
     545!DSGdebug_13             ! Fruit 
     546!DSGdebug_13             dturnover(:) = biomass(:,ivm,ifruit,initrogen) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     547!DSGdebug_13             biomass(:,ivm,ifruit,initrogen) = biomass(:,ivm,ifruit,initrogen) - dturnover(:) 
     548!DSGdebug_13             turnover(:,ivm,ifruit,initrogen) = turnover(:,ivm,ifruit,initrogen) + dturnover(:) 
     549!DSGdebug_13 
     550 
     551 
     552}}} 
     553by  
     554{{{ 
     555   IF (is_tree(ivm)) THEN 
     556             !DSGsimplify 
     557             DO ielem = 1,nelements 
     558                 ! leaves 
     559                 dturnover(:) = biomass(:,ivm,ileaf,ielem) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     560                 biomass(:,ivm,ileaf,ielem)  = biomass(:,ivm,ileaf,ielem) - dturnover(:) 
     561                  
     562                 IF (ielem == icarbon) THEN ! no recycling 
     563                     turnover(:,ivm,ileaf,ielem) = turnover(:,ivm,ileaf,ielem) + dturnover(:) 
     564                     ! save leaf mass change; carbon only 
     565                     delta_lm(:,ilage) = - dturnover(:) 
     566                 ELSEIF (ielem == initrogen) THEN ! recycle 
     567                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + recycle_leaf(ivm) * dturnover(:) 
     568                     turnover(:,ivm,ileaf, ielem) = turnover(:,ivm,ileaf, ielem) + ( un - recycle_leaf(ivm) ) * dturnover(:) 
     569                 ELSEIF (ielem == iphosphorus) THEN ! recycle 
     570                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + p_recycle_leaf(ivm) * dturnover(:) 
     571                     turnover(:,ivm,ileaf, ielem) = turnover(:,ivm,ileaf, ielem) + ( un - p_recycle_leaf(ivm) ) * dturnover(:) 
     572                 ELSE  
     573                     STOP   
     574                 END IF 
     575                  
     576                 ! roots   
     577                 dturnover(:) = biomass(:,ivm,iroot,ielem) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     578                 biomass(:,ivm,iroot,ielem)  = biomass(:,ivm,iroot,ielem) - dturnover(:) 
     579                  
     580                 IF (ielem == icarbon) THEN ! no recycling 
     581                     turnover(:,ivm,iroot,ielem) = turnover(:,ivm,iroot,ielem) + dturnover(:) 
     582                     ! save root mass change; carbon only 
     583                     delta_lm(:,ilage) = - dturnover(:) 
     584                 ELSEIF (ielem == initrogen) THEN ! recycle 
     585                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + recycle_root(ivm) * dturnover(:) 
     586                     turnover(:,ivm,iroot, ielem) = turnover(:,ivm,iroot, ielem) + ( un - recycle_root(ivm) ) * dturnover(:) 
     587                 ELSEIF (ielem == iphosphorus) THEN ! recycle 
     588                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + p_recycle_root(ivm) * dturnover(:) 
     589                     turnover(:,ivm,iroot, ielem) = turnover(:,ivm,iroot, ielem) + ( un - p_recycle_root(ivm) ) * dturnover(:) 
     590                 ELSE 
     591                     STOP 
     592                 END IF 
     593 
     594                 ! roots   
     595                 dturnover(:) = biomass(:,ivm,iroot,ielem) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     596                 biomass(:,ivm,iroot,ielem)  = biomass(:,ivm,iroot,ielem) - dturnover(:) 
     597                  
     598                 IF (ielem == icarbon) THEN ! no recycling 
     599                     turnover(:,ivm,iroot,ielem) = turnover(:,ivm,iroot,ielem) + dturnover(:) 
     600                     ! save root mass change; carbon only 
     601                     delta_lm(:,ilage) = - dturnover(:) 
     602                 ELSEIF (ielem == initrogen) THEN ! recycle 
     603                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + recycle_root(ivm) * dturnover(:) 
     604                     turnover(:,ivm,iroot, ielem) = turnover(:,ivm,iroot, ielem) + ( un - recycle_root(ivm) ) * dturnover(:) 
     605                 ELSEIF (ielem == iphosphorus) THEN ! recycle 
     606                     biomass(:,ivm,ilabile,ielem) = biomass(:,ivm,ilabile,ielem) + p_recycle_root(ivm) * dturnover(:) 
     607                     turnover(:,ivm,iroot, ielem) = turnover(:,ivm,iroot, ielem) + ( un - p_recycle_root(ivm) ) * dturnover(:) 
     608                 ELSE 
     609                     STOP 
     610                 END IF 
     611 
     612                 ! Fruits 
     613                 dturnover(:) = biomass(:,ivm,ifruit,ielem) * leaf_frac(:,ivm,ilage) * turnover_rate(:) 
     614                 biomass(:,ivm,ifruit,ielem) = biomass(:,ivm,ifruit,ielem) - dturnover(:) 
     615                 turnover(:,ivm,ifruit,ielem) = turnover(:,ivm,ifruit,ielem) + dturnover(:) 
     616 
     617             ENDDO 
     618             !DSGsimplify 
     619 
     620}}} 
     621 
    502622 
    503623