Leaf Energy Balance Tutorial

Predicting a leaf’s long-term temperature based on eco-evolutionary optimality principles


Pascal Schneider


August 23, 2023


The field of thermoregulation is fundamental to photosynthesis but the lack of understanding and process-based modelling of leaf temperature regulation creates a knowledge gap worthy of investigation. Moreover, by exploiting EEO principles, we can create a model that accounts for the interplay of thermal acclimation and thermoregulation. Understanding this interplay is an unresolved but highly relevant question because it gives insights into the processes a plant may use to cope with a rising temperatures (Cavaleri, 2020).

This tutorial provides the scientific basis and code implementation to model a leaf’s temperature based on thermodynamic theory and eco-evolutionary optimality theory. Chapter 1 gives insight into the current debate on leaf thermoregulation and makes the statement how eco-evolutionary optimality theory may provide a solution to this issue. In Chapter 3, a numerical algorithm is presented alongside a sensitivity analysis showing the strengths and weaknesses of the current implemenation. In Chapter 4, further improvements of the algorithm and ideas for potential test-cases to evaluate the model are provided.


R version 4.3.1 (2023-06-16)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.4.1

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Europe/Zurich
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] conflicted_1.2.0 quarto_1.2       rpmodel_1.2.0    patchwork_1.1.3 
 [5] lubridate_1.9.2  forcats_1.0.0    stringr_1.5.0    dplyr_1.1.2     
 [9] purrr_1.0.2      readr_2.1.4      tidyr_1.3.0      tibble_3.2.1    
[13] ggplot2_3.4.3    tidyverse_2.0.0  here_1.0.1      

loaded via a namespace (and not attached):
 [1] utf8_1.2.3        generics_0.1.3    renv_0.17.3       stringi_1.7.12   
 [5] hms_1.1.3         digest_0.6.33     magrittr_2.0.3    evaluate_0.21    
 [9] grid_4.3.1        timechange_0.2.0  fastmap_1.1.1     rprojroot_2.0.3  
[13] jsonlite_1.8.7    processx_3.8.2    ps_1.7.5          fansi_1.0.4      
[17] scales_1.2.1      cli_3.6.1         rlang_1.1.1       munsell_0.5.0    
[21] cachem_1.0.8      withr_2.5.0       yaml_2.3.7        tools_4.3.1      
[25] tzdb_0.4.0        memoise_2.0.1     colorspace_2.1-0  vctrs_0.6.3      
[29] R6_2.5.1          lifecycle_1.0.3   pkgconfig_2.0.3   pillar_1.9.0     
[33] later_1.3.1       gtable_0.3.3      glue_1.6.2        Rcpp_1.0.11      
[37] xfun_0.40         tidyselect_1.2.0  rstudioapi_0.15.0 knitr_1.43       
[41] htmltools_0.5.6   rmarkdown_2.24    compiler_4.3.1