Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

potential disconnect between disturbance and litter fluxes #266

Closed
rgknox opened this issue Aug 30, 2017 · 7 comments
Closed

potential disconnect between disturbance and litter fluxes #266

rgknox opened this issue Aug 30, 2017 · 7 comments

Comments

@rgknox
Copy link
Contributor

rgknox commented Aug 30, 2017

In subroutine spawn_patches(), we are looping through the existing patches on the site, and then based on the rate of disturbance on the existing patches, litter fluxes between the existing patches and the donor patch are calculated.

if (currentSite%disturbance_mortality > currentSite%disturbance_fire) then !mortality is dominant disturbance
             call mortality_litter_fluxes(currentSite, currentPatch, new_patch, patch_site_areadis)
          else
             call fire_litter_fluxes(currentSite, currentPatch, new_patch, patch_site_areadis)  
          endif

The problem is that we have different fluxes associated with the different dominant modes. Each patch has its own dominant mode which defines the mortality rates and area change rates. But, as you see above, we are deciding which litter flux mode to use based on the which is the dominant mode for the site. But a site could have patches with different modes. And in that case, we will have some patches which are producing mortality, area changes and donating to other patches based on their patch defined dominant mode, yet the litter fluxes won't be included because a different site disturbance was dominant.

@ckoven
Copy link
Contributor

ckoven commented Aug 31, 2017

@rgknox and I are chatting about this. we both agree that the disturbance decision ought to be handled at the patch rather than the site level. The question is whether its as simple as just changing that line or whether other things need to be done too.

@rosiealice
Copy link
Contributor

rosiealice commented Aug 31, 2017 via email

@ckoven
Copy link
Contributor

ckoven commented Aug 31, 2017

@rosiealice yes, I've been thinking for a while that we ought to move towards a unified disturbance scheme ("unisturb"?) that handles the various disturbance routines at once and simultaneously rather than piecemeal and alternately; and @rgknox and I were just talking about this too. I think a plan is that once Yi's code is integrated into master, we could then proceed to refactor all the disturbance code to avoid the one-or-the-other issue.

@rgknox
Copy link
Contributor Author

rgknox commented Aug 31, 2017

How about we let the disturbance areas co-exist, generating a separate new patch for each disturbance mode. Patch fusion will kick in anyway after everything is done.

In the case that the total disturbed area is greater than something like 1, or close to 1:

We could do map the multiple rates unto 2 and 3 dimensional spaces.

For instance if fire rate is 0.25, and treefall is 0.45

Project those two rates onto a square as the margins.

Area that suffers from both simultaneously (we will have to figure out how that is applied) =  0.25*0.45
Area that suffers from just fire =  0.25*(1-0.45)
Area that suffers from just tree-fall = 0.45*(1-0.25)
Total area disturbed = sum of the three
``
As how to handle the  "simultaneous portion": we could assign a priority.  Simultaneous fire and treefall acts like fire, simultaneous logging and treefall acts like treefall, simultaneous logging and fire acts like logging, or something like that.   

@rosiealice
Copy link
Contributor

rosiealice commented Sep 2, 2017 via email

@rgknox
Copy link
Contributor Author

rgknox commented Sep 5, 2017

I'm fine with that approach Rosie. I think that also makes sense given that, if we need to cap, it is surely fire that has a wayyy higher rate than treefall.

However, what is the reduction priority if logging is involved? Or do we simply reduce whatever is the highest rate to get to 1.0?

@rgknox
Copy link
Contributor Author

rgknox commented Sep 22, 2017

The filtering for which litter flux case to implement has been brought to the patch level in #264.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants