Canopy module not fail safe against wrong import values
The Canopy module is not fail safe against wrong input. For example, if LAI==0, than the program will abort because of a division by zero. So the checks on input values in Canopy.cc:1438-1440, for example:
if ( Xdata->Cdata.lai <= 0.0 ) { Xdata->Cdata.lai = 0.0; }
is not helping much, because setting LAI to 0 makes the program crash. I would suggest throwing exceptions with some useful information.