EDmodel / ED2

Ecosystem Demography Model
78 stars 112 forks source link

Canopy Air CO2 #23

Closed crollinson closed 9 years ago

crollinson commented 9 years ago

In long runs, I occasionally encounter an issue where there's a rejected step problem and the Canopy Air CO2 is off-track. I encountered this problem pre-snow fixes, but it's back in more recent runs.

STEPSIZE UNDERFLOW IN EULER_INT

crollinson commented 9 years ago

turning back on shedding seems to fix this... will close this issue once I confirm by completing the PalEON millennial runs

mdietze commented 9 years ago

In the above diagnostics where it gives the D(CAN_CO2) error it appears that CAN_CO2 is 30 ppm, which is impossible. You might want to check your drivers to make sure there are not zeros in there somewhere (e.g. accidentally padding the end of a month). That could easily explain the D(CAN_CO2), if the model's trying to do a step change from 270 ppm to 0 ppm

crollinson commented 9 years ago

After digging into the role of shedding in triggering the CO2 error a bit, it looks like the error may be stemming from how we constraining the amount of wood/leaf evaporation (wflxwc, wflxlc) around lines 1409 & 1749 in rk4_derivs.f90.

Examples shown below use wflxwc as example, but all of it applies to wflxlc too. Currently constrain on wflx to canopy: wflxwc = min(wflxwc,max_dwdt+wood_intercepted-wshed)

The CO2 error appears to be tied to the second option: max_dwdt+wood_intercepted-wshed where max_dwdt = initp%wood_water(ico)/dt wshed = max(0.d0,( (initp%wood_water(ico) + wood_intercepted*dt) - max_wood_water) / dt)

If we get rid of wood_intercepted from the wflcwc the problem seems to be resolved (at least I've gotten a couple decades past where I was so far). My rationale for trying this was that the shed calculation takes into account wood_intercepted already and so we might be double-accounting here and incorrectly constraining the leaf/wood water fluxes to the canopy.

Thoughts?

crollinson commented 9 years ago

New Update: It looks like the draw-down of Canopy CO2 is from GPP being extremely high as a result of the the vm0 I specified for my dominant PFT based on estimates from Pecan.

I think the high vm0 wouldn't be a problem if I knew how to tweak the respiration parameters accordingly. This looks like it links in to some of the other conversations happening to add some sort of sanity or balance check with the PFT parameters to make sure that the equations balance when you're modifying individual parameters.

Alternatively, we could think about implementing some sort of max GPP that would cause GPP to saturate at a given number and help prevent parameterization insanity.

mpaiao commented 9 years ago

It looks like this problem happening in a site with short vegetation, or a young patch, right? I've had similar problems with grassland sites in the past. The canopy air space may become completely "detached" from the air aloft when conditions are stable and u* is weak, and ED tends to understimate u*. In grasslands the canopy air space is thin, so this issue could cause some unrealistic properties if it lasts very long.

Which settings have you been using for the surface layer model? If you are running with ISFCLYR=3 or 4, then you could try increasing the minimum wind (1m/s) and minimum u*(~0.1m/s), and reducing the maximum bulk Richardson number (about 0.5). It's not the best solution, but it should avoid these super-stable layers.

apourmok commented 9 years ago

If the Vm0 is "extremely high", then I think you should adjust it rather than tweaking the respiration parameters since changing Vm0 affects other parameters (e.g. C/N ratio in leaf).

serbinsh commented 9 years ago

Hi @apourmok and @crollinson isn't "Vm0" the base rate (i.e. 15 degC) value of photosynthetic capacity (i.e. Vcmax)? Changing that value should change C:N ratio, for example. Also, the old way to calculate Rd0 in ED2 was:

Rd0 = dark_respiration_factor*Vm0

However, I thought we removed that old logic and went to a more appropriate approach of prescribing the Rd0 (i.e. leaf base respiration rate)? In other words, using the XML to prescribe both Vm0 and Rd0.

crollinson commented 9 years ago

@mpaiao: You're right about the age thing: it usually happens in my youngest or next-youngest stand and had previously been tied to canopy roughness and decoupling of the canopy from the atmosphere.

@serbinsh: Based on my understanding of the mainline version of ED2, Vm0 = Vcmax and Rd0 is calculated as you have stated and not prescribed in the xml. You can specify D0 (which I believe is different) and dark_respiration_factor, but not Rd0 itself. For the most part when I bumped up vm0 from PFT 8, I left respiration alone since I didn't have any estimates for that PFT from Pecan. This could be part of my problem.

It looks like each of these solutions (decrease vm0, increase dark_rep, increase wind thresholds) fixes the problem without altering the code, so now I get to figure out which combination of factors makes the most sense. Thanks for everyone's help!