You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This warning has re-appeared in the logfile for some simulations run by @MartinHoldrege for our 200 big sagebrush sites.
The weather inputs have been altered to represent intensification of the hydrological cycle - increased precipitation intensity along with more dry days (no changes to mean annual precipitation).
This occurred very rarely - 60 times for simulations run for 200 sites, 200 iterations, and 150 years (6,000,000 simulated years) - 0.001%
The plant functional types it occurred for:
a.cool.forb
a.warm.forb
a.cool.grass
succulents
p.cool.forb
This warning is thrown when each of the above plant functional types has biomass > 0 in the given year, but roots_active_rel do not match where (depth) and when (month) total transpiration is available. The active roots of the functional type do not overlap with any available soil water for transpiration. Hence 0 is returned for use_by_group in function _transp_contribution_by_group and ultimately for res_avail downstream.
Here is an example for site 188, seed=15, problem occurs in year 153 for a.warm.forb and succulents.
There are several soil layer/period combinations for which roots_active_rel > 0 but they do not coincide with transp across any soil layers or months, hence use_by_group is 0.
I do not believe this is a bug, rather, I think it is the result of very dry soil conditions and no water available for transpiration in those layers for a very small handful of years.
use_by_group is reset to _resource_cur in function _sxw_update_resource and then _resource_cur is set to res_avail by function SXW_GetTranspiration
Thereafter, there is a check in rgroup_PartResources which results in the generation of the warning in the logfile and resets both res_avail and res_required:
if (ZRO(g->res_avail) && g->res_required > 0) {
g->res_required = 0.0;
Int i;
ForEachEstSpp2(rg, i) {
g->res_required += Species[g->est_spp[i]]->est_count;
}
g->res_avail = 1;
LogError(logfp, LOGWARN, "RGroup %s : res_avail is Zero and res_required > 0 in year %d", g->name, Globals->currYear);
}
I do not think this is an appropriate solution for the current situation. If there is one established individual (Species[g->est_spp[i]]->est_count), this will result in a PR of 1, and no resource limitation. This happens in all cases I have debugged for succulents thus far. Clearly this individual is resource limited.
@MartinHoldrege and I discussed potentially altering this check to force PR to number well above 1, such that mortality would occur (at least for some individuals) in function _no_resources via:
nk = (IntS) ( (n * (1.0 - 1.0/RGroup[rg]->pr)));
where nk is number of individuals to be killed and n is number of established individuals
More details and final solution to follow...
@dschlaep tagging you to make you aware of this situation
The text was updated successfully, but these errors were encountered:
This warning has re-appeared in the logfile for some simulations run by @MartinHoldrege for our 200 big sagebrush sites.
The weather inputs have been altered to represent intensification of the hydrological cycle - increased precipitation intensity along with more dry days (no changes to mean annual precipitation).
This occurred very rarely - 60 times for simulations run for 200 sites, 200 iterations, and 150 years (6,000,000 simulated years) - 0.001%
The plant functional types it occurred for:
a.cool.forb
a.warm.forb
a.cool.grass
succulents
p.cool.forb
This warning is thrown when each of the above plant functional types has biomass > 0 in the given year, but
roots_active_rel
do not match where (depth) and when (month) total transpiration is available. The active roots of the functional type do not overlap with any available soil water for transpiration. Hence 0 is returned foruse_by_group
in function_transp_contribution_by_group
and ultimately forres_avail
downstream.Here is an example for site 188, seed=15, problem occurs in year 153 for a.warm.forb and succulents.
------------------------Repetition/year = 1 / 153
sagebrush: biomass = 401.348816.
a.cool.forb: biomass = 0.000000.
a.warm.forb: biomass = 3.321000.
p.cool.forb: biomass = 0.000000.
p.warm.forb: biomass = 4.724042.
a.cool.grass: biomass = 25.000000.
p.cool.grass: biomass = 37.961628.
p.warm.grass: biomass = 0.000000.
shrub: biomass = 18.845034.
succulents: biomass = 3.396019.
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00007650, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00007029, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00458303, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00378436, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00268134, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00034791, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00007291, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.01258775, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.01039324, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00743131, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00101418, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00006724, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.01143053, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00928579, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00643927, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00080904, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00006454, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.01523113, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.01235301, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00850667, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00104743, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00005588, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00517544, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00420921, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00286073, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00032664, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00004869, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00203224, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00164795, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00111882, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00012346, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00003675, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00366312, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00299827, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00201787, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00022183, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00002116, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00577687, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00473093, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00322396, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00036632, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000455, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00230838, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00003693, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
a.warm.forb: transp=0.00000000, roots_active_rel=0.00000000, use_by_group=0.00000000
There are several soil layer/period combinations for which
roots_active_rel
> 0 but they do not coincide with transp across any soil layers or months, henceuse_by_group
is 0.I do not believe this is a bug, rather, I think it is the result of very dry soil conditions and no water available for transpiration in those layers for a very small handful of years.
use_by_group
is reset to_resource_cur
in function_sxw_update_resource
and then_resource_cur
is set tores_avail
by functionSXW_GetTranspiration
Thereafter, there is a check in
rgroup_PartResources
which results in the generation of the warning in the logfile and resets bothres_avail
andres_required
:I do not think this is an appropriate solution for the current situation. If there is one established individual (
Species[g->est_spp[i]]->est_count
), this will result in a PR of 1, and no resource limitation. This happens in all cases I have debugged for succulents thus far. Clearly this individual is resource limited.@MartinHoldrege and I discussed potentially altering this check to force PR to number well above 1, such that mortality would occur (at least for some individuals) in function
_no_resources
via:nk = (IntS) ( (n * (1.0 - 1.0/RGroup[rg]->pr)));
where
nk
is number of individuals to be killed andn
is number of established individualsMore details and final solution to follow...
@dschlaep tagging you to make you aware of this situation
The text was updated successfully, but these errors were encountered: