Source code for openalea.colzette.light


from openalea.caribu.CaribuScene import CaribuScene

[docs] def light_interception(final_scene, shapes_indexer, list_of_MTGs, RG_daily, domain, light_direction = (0, 0, -1)): zenith = [(RG_daily, light_direction)] cs = CaribuScene(scene=final_scene, light=zenith, scene_unit='cm', pattern=domain) raw, agg = cs.run(infinite=True, simplify=True, direct=True) Eabs = agg["Eabs"] area = agg["area"] vec_Eabs = [] for plant_index in range(0, len(list_of_MTGs)): g = list_of_MTGs[plant_index] shapes_plant = shapes_indexer[plant_index] g_indices = g.properties()['label'] g_indices_leaf = [k for k, v in g_indices.items() if v == 'Leaf'] new_indices_leaf = [k for k, v in shapes_plant.items() if v in g_indices_leaf] new_indices_plant = shapes_plant.keys() Eabs_plant = {k: v for k, v in Eabs.items() if k in new_indices_plant} Eabs_leaves = {k: v for k, v in Eabs_plant.items() if k in new_indices_leaf} area_plant = {k: v for k, v in area.items() if k in new_indices_plant} area_leaves = {k: v for k, v in area_plant.items() if k in new_indices_leaf} intercepted_light = sum([Eabs_leaves[k] * area_leaves[k] for k in Eabs_leaves]) # in J/cm2 vec_Eabs.append(intercepted_light) return cs, vec_Eabs, raw, agg