-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path09-climatespace.Rmd
1602 lines (1226 loc) · 110 KB
/
09-climatespace.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
---
pagetitle: Climate Space
output:
pdf_document: default
html_document: default
---
# The Climate Space Concept {#climatespace}
The Climate Space Concept: Analysis of the Steady State Heat Energy Budget of Animals.
author: Stevenson, R. D., R code and example by Kearney, M. R.
## Preface {#climatespace-preface}
Several modules in the thermodynamic series considered the application of the First Law to biological systems and the heat transfer processes that govern the energy balance of organisms. This module discusses a model for which the animal's temperature is not changing with time. The concept 'climate space' is used as a means for quantifying the limits of an animal's thermal environment. These limits are discussed in detail and methods for calculating these limits are described. A problem set is used to check the assumptions of the climate space model as well as to extend it. A background in heat transfer processes is recommended.
## Introduction {#climatespace-intro}
In earlier modules of the thermodynamics series, we considered the application of the First Law to biological systems (Stevenson 1977a and b) and the heat transfer processes which govern the energy balance of organisms (Stevenson 1978). The general heat budget equation for animals is
\begin{equation}
\Delta U = M + Q_a - Q_e - LE - C - G
(\#eq:climatespace-1)
\end{equation}
where ^[In some of the biological literature the units of Equation \@ref(eq:climatespace-1) are cal cm^-2^ min^-1^, but we have adopted the mks system here.]
<ul class="list-unstyled">
<li> $\Delta U$ = change in internal energy ($W m^{-2}$), </li>
<li> $M$ = metabolism ($W m^{-2}$ ), </li>
<li> $Q_a$ = radiation absorbed ($W m^{-2}$), </li>
<li> $Q_e$ = radiation emitted ($W m^{-2}$), </li>
<li> $LE$= water vapor losses ($W m^{-2}$), </li>
<li> $C$ = convection flux ($W m^{-2}$), </li>
<li> $G$ = conduction flux ($W m^{-2}$). </li>
</ul>
Equation \@ref(eq:climatespace-1) is a complicated expression with many independent variables. Because biologists are interested in how animals modify their heat balance and why any particular behavior or physical characteristic of an animal influences this balance, they must find ways of analyzing the heat energy balance equation.
In this module we will discuss a model for which the animal's temperature is not changing with time, that is the steady state assumption that $\Delta U = 0$. Porter and Gates (1969) presented the "climate space diagram" to visually display the range of environmental conditions an organism could survive. Subsequently, Monteith (1973) proposed another graphical method to represent the energy balance which we will consider briefly. The works of Hatheway (1978) and Porter et al. (1973) offer alternative methods for understanding an animal's relationship to the physical environment.
## The Thermal Environment: Basis for the Climate Space {#climatespace-thermalenv}
To describe the physical heat energy limits that an organism can tolerate, Porter and Gates (1969) began by examining the abiotic components of the environment. Four climatic factors -- radiation, air temperature, wind speed and humidity -- were recognized as affecting an animal's thermal balance. The authors decided that evaporative losses would be small for many organisms and could be included as maximum and minimum rates without making the losses a function of the humidity.
Tracy (1976) has, however, shown that when investigating the thermal and mass balance of wet-skinned animals such as slugs, frogs and salamanders, the water vapor concentration of the soil and the air must be known to accurately quantify these exchanges. The climate space concept has generally not been extended to include the environmental variable of water vapor concentration. Likewise, the formulation of Porter and Gates (1969) does not consider the effects of wind direction. Nor is surface temperature of the ground explicitly indicated (but see Equation \@ref(eq:climatespace-3) and Appendix I for calculation of $Q_a$). Radiation, air temperature and wind speed, though, which are the physical factors included in the climate space concept, are the most important abiotic variables for the thermal heat balance of most terrestrial animals.
### Absorbed radiation {#climatespace-absorbed}
The most complex of the factors Porter and Gates (1969) considered is the absorbed radiation because it is composed of several shortwave and longwave components. In general, $Q_a$ is the product of surface absorptivity, the surface area exposed to a particular source of radiation, and the intensity of that source. This can be written:
\begin{equation}
Q_a = \bar{a}_1 A_1 S + \bar{a}_2 A_2 s + \bar{a}_3 A_3 r (S + s) + \bar{a}_4 A_4 R_g + \bar{a}_5 A_5 R_a
(\#eq:climatespace-2)
\end{equation}
where
<ul class="list-unstyled">
<li> $S$ is the radiation from direct sunlight ($W m^{-2}$), </li>
<li> $s$ is the radiation from scattered sunlight ($W m^{-2}$), </li>
<li> $R_g$ is infrared thermal radiation from the ground ($W m^{-2}$), </li>
<li> $R_a$ is infrared thermal radiation from the atmosphere ($W m^{-2}$), </li>
<li> $r$ is the reflectivity of the ground. </li>
</ul>
Since we wish to consider the average flux per unit surface area, the $A_i$'s are the proportions of the total surface area exposed to each kind of radiation. The $a_i$s are the mean absorptivities to each kind of radiation. Roseman (197, module 8) discusses absorption, reflection and transmission. In their original paper, Porter and Gates assumed that their animal was a cylinder. Equation \@ref(eq:climatespace-2) can then be rewritten as:
\begin{equation}
Q_a = \frac{1}{\pi} \bar{a} S + 0.5 [\bar{a}s + \bar{a}r(s+S) + R_g + R_a]
(\#eq:climatespace-3)
\end{equation}
Here it is assumed that: 1) $A_1 = 1/\pi$; 2) scattered sunlight, reflected sunlight, reflected scattered sunlight, ground radiation, and atmospheric radiation strike half the animal (see Siegel and Howell 1972 for calculation of shape factors); 3) the mean absorptivities of the sunlight, scattered sunlight and reflected light are equal to $\bar{a}$; and 4) that the mean absorptivities of the infrared sources are 1.0.
### Environmental Constraints {#climatespace-constraints}
The climate space concept derives from the fact that there is a relation between the average incident radiation and the air temperature independent of the organism. It is generally true that warmer air temperatures occur with high radiation levels, i.e., summer or tropical conditions. Likewise colder air temperatures are usually correlated with lower radiation loadings. (Exceptions to this generalization are the high radiation levels in the mountainous regions of lower and middle latitudes during the summer when air temperatures can be low (Porter and Gates 1969).) Thus, we expect a positive correlation between the air temperature $T_a$ and the absorbed radiation $Q_a$ that the organism is exposed to in any given habitat. Initially, Porter and Gates considered a blackbody environment such as a cave or sheltered spot in thick vegetation. The relation between absorbed radiation and air temperature is given by the Stefan-Boltzmann Law and is plotted as the centerline in Figure \@ref(fig:fig-climatespace-1). Next they asked what is the relationship between these two variables when an animal is exposed to a clear sky at night. Under these conditions an object will be receiving energy from the atmosphere which is at a lower temperature than the surrounding air.
Gates (1978), using an empirical relationship from Swinbank (1963) for sky radiation, shows that the total radiation absorbed by the organism is
\begin{equation}
Q_a = \frac{\bar{a}_L (R_g + R_a)}{2} = \frac{\bar{a}_L \sigma [T_g + 273]^4 + 1.22 \bar{a}_L \sigma [T_a + 273]^4 - 171 }{2}
(\#eq:climatespace-4)
\end{equation}
where
<ul class="list-unstyled">
<li> $\bar{a}_L$ = mean absorptivity to longwave radiation, </li>
<li> $\sigma$ = Stefan-Boltzmann's constant 5.67x10^-8^ ($W m^{-2} K^{-4}$), </li>
<li> $T_g$ = ground temperature ($^{\circ}C$), </li>
<li> $T_a$ = air temperature ($^{\circ}C$), </li>
</ul>
and the other symbols are as in Equation \@ref(eq:climatespace-2). Gates has assumed that the $A_i$s are one-half in each case (Siegel and Howell 1972 show how this can be derived). As before, we will let $\bar{a}_L = 1.0$. It is also convenient to approximate the ground temperature with the air temperature. In the early evening $T_g > T_a$, but several hours before sunrise the reverse is true. Equation \@ref(eq:climatespace-4) with the aforementioned assumptions is the leftmost line plotted in Figure \@ref(fig:fig-climatespace-1). This means that if an animal were out foraging under a clear sky at night at an air temperature of $20^{\circ}C$, it would receive $50 W m^{-2}$ less than if it were resting in a burrow.
Finally, we consider the condition when an organism is exposed to full sunlight with an absorptivity to shortwave radiation of 0.8. In this case, the radiation as a function of air temperature is given by the line to the right of the blackbody line. This line is "fuzzy" to remind us that this relationship is less well-defined than the other curves. The assumptions and calculations necessary to plot this line are discussed in Appendix I. If we now consider the difference between a blackbody and a full sunlight habitat, both at $20^{\circ}C$ air temperature, we see that the latter would receive $300 W m^{-2}$ more radiation.
The importance of Figure \@ref(fig:fig-climatespace-1) is that we have established a region bounded by the clear sky, plus ground radiation line and the 0.8 absorptivity line that limits the combinations of $Q_a$ and $T_a$ found in the natural environment. This region can be divided into areas: one between the clear sky at night and blackbody line which governs the range of all nighttime conditions ($S$ and $s$ of Equation \@ref(eq:climatespace-2) are zero), and a second area enclosed by the blackbody and the 0.8 absorptivity lines which gives the range of most daytime conditions. The average radiation intensity can be less than blackbody levels during the day when clouds prevent the surface from receiving shortwave radiation. To see this we need to compute the absorbed radiation in the open, $Q_{a0}$, and compare it to that absorbed in a blackbody cavity, $Q_{ac}$. If solar radiation is zero ($S = s = 0$) then Equation \@ref(eq:climatespace-3) reduces to $Q_{a0} = \frac{(R_a + R_g)}{2}$. We assume that the surface temperature is equal to the air temperature and the temperature at the base of the clouds is less than air temperature so $R_a < R_g$ and $Q_{a0} < Q_{ac}$. In this case, the higher the clouds the cooler the radiating surface of their bases. This radiation, however, will always be greater than the radiation from a clear sky at night.
```{r fig-climatespace-1, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "75%", fig.align = "default", fig.cap='Relationship between the total amount of radiation flux incident on an object as a function of the air temperature. At night the object receives thermal radiation from the ground and atmosphere. In the daytime the object receives direct, reflected and scattered sunlight, in addition to the thermal radiation from the ground and atmosphere. The absorptivity to sunlight is 0.8. The right-hand boundary line is fuzzy to remind us that it is an average value. From Porter, W. P. and D. M. Gates. 1969. p. 234.'}
knitr::include_graphics('figures/fig-climatespace-1.png')
```
```{r fig-climatespace-2, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "70%", fig.align = "default", fig.cap='Daily variation in the radiant environment in different microhabitats under different general weather conditions. The upper portion of the figure describes daily fluctuations of air temperature ($T_a$) and temperature of the surface of the substrate ($T_g$). From Morhardt, S. S. and D. M. Gates. 1974. P. 20.'}
knitr::include_graphics('figures/fig-climatespace-2.png')
```
```{r fig-climatespace-3, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "75%", fig.align = "default", fig.cap='Climate diagram for the habitat. Data on these diagrams indicate the total amount of radiation that is absorbed by a geometrical model of a ground squirrel under conditons of air temperature and radiation shown in Figure 9.2. The model is oriented in two ways with respect to direct solar radiation to show how absorbed radiation differs at the same air temperature and thesame time of day with differences in orientation toward the sun. The amount of radiation absorbed is greatest ($Q_{abs-maximum}$) when the long axis of the model is normal to the direction of the sun and least ($Q_{abs-minimum}$) when the hemispherical end of the model is toward the sun. All other orientations would be intermediate between these extremes. Data points are taken directly from Figure 9.2 at hourly or half-hourly intervals and are identified at selected points by showing the hour of the day in solar time adjacent to the points. The line for sunlight 74 percent absorbed represents the maximum amount of radiation that could be absorbed by the model in direct sunlight at any air temperature. The blackbody curve-indicates the intensity of radiation from a blackbody at any air temperature, and the curve labeled \"night time average of clear sky plus ground\" indicates the minimum energy likely to be absorbed by the model when exposed to a night. sky radiating at a temperature which is cooler than the air. From Morhardt, S. S. and D. M. Gates. 1974. P. 25.'}
knitr::include_graphics('figures/fig-climatespace-3.png')
```
Morhardt and Gates (1974) have considered the temporal variation of $Q_a$ and $T_a$ more carefully. They measured $T_g$, $T_a$, $R_p$ ($= S + s$ on a horizontal surface), $R_g$ and $R_a$ hourly for a summer's day in the Colorado mountains shown as in Figure \@ref(fig:fig-climatespace-2). These values were used to calculate $Q_a$ for the Belding ground squirrel (*Citellus beldingi beldingi*) from an equation similar to Equation \@ref(eq:climatespace-3). In Figure \@ref(fig:fig-climatespace-3), pairs of $Q_a$ and $T_a$ are plotted as a function of time. Morhardt and Gates made similar calculations for several different microhabitats. Although there were no startling conclusions about how the animal was being influenced by thermal environment, we will consider their study further in the exercises. The next step in constructing the climate space diagram is to see how the animal is influenced by radiation, air temperature, and wind speed.
## Physiological Constraints of the Organism {#climatespace-physiological}
We expect two kinds of limits under steady state assumptions: one area where the environmental conditions make the organism too hot and conversely another area where it would be too cold. Furthermore, we expect an inverse relationship between air temperature and absorbed radiation because the organism must maintain an energy balance. The reader should pause here to make sure that these ideas are intuitive, as shown graphically in Figure \@ref(fig:fig-climatespace-4). Common experience suggests that increasing the air temperature will make the environment hotter, but increasing the absorbed radiation is not as obvious. Most of us, however, are familiar with the midday heat stress common in many areas on a clear summer day. Later in the afternoon when the sun is lower in the sky $Q_a$ will be reduced. Air temperature will also be dropping so that the transition that has occurred can be represented by the arrow labeled 2 in Figure \@ref(fig:fig-climatespace-4). In the wintertime or early morning the reverse is true; the sun will often feel good because it provides the extra energy to move you into the acceptable region as shown with the first arrow. The exact slope and position of these limits will depend on other environmental conditions such as wind speed and characteristics of the organism such as size and insulation. One can think of the limits as the combination of physiological factors that will allow the organism to exist in that environment. For the lower limit of the energy budget calculation of an endotherm we would assume a high metabolic rate and thick insulation.
If we superimpose Figure \@ref(fig:fig-climatespace-4) on Figure \@ref(fig:fig-climatespace-1), the intersection or shaded region of Figure \@ref(fig:fig-climatespace-5) is the **climate space** of the organism. It should be clear to the reader that the northwest and southeast boundaries are the results of environmental constraints while the northeast and southwest limits are the result of the organism's need for homeostasis. The physiological limits can be calculated explicitly using the First Law of Thermodynamics. This is the task of the next section.
```{r fig-climatespace-4, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "75%", fig.align = "default", fig.cap='In Region I the animal is too cold. In Region II the animal can maintain thermal equilibrium. In Region III the animal will become overheated. Arrow 1 indicates the change in environmental conditions that takes place early in the morning. The added warmth of the sun makes the environment more \'comfortable\'. Arrow 2 refers to the change in $Q_a$ and $T_a$ in the mid-afternoon on a clear summer day.'}
knitr::include_graphics('figures/fig-climatespace-4.png')
```
```{r fig-climatespace-5, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "75%", fig.align = "default", fig.cap='If we superimpose Figure 1 on Figure 4 the result is the crossin the diagram called the climate space of the organism. The northwest ($E_1$) hatched region and southeast ($E_2$) boundaries are due to the physical environment. The shouthwest ($P_1$) and northeast ($P_2$) boundaries are due to the physiology of the organism.'}
knitr::include_graphics('figures/fig-climatespace-5.png')
```
We will make a climate space diagram for the survivable body temperature limits of two arid-adapted species, a lizard, the Desert Iguana *Dipsosaurus dorsalis* and a bird, the *Zebra Finch Taeniopygia guttata*.
We will use a slightly different version of the calculations above to plot the environmental constraints in R.
### Bounding Air Temperature/Radiation {#climatespace-bounds}
The first thing we will do is define a function that computes the bounding combinations of air temperature and radiation that a cylindrical object would absorb on earth. These are to be found in Figure 12 of Porter and Gates (1969). As above, the idea is to provide a range of air temperatures and compute an associated range of radiation levels for three different types of environmental scenarios - 1) the blackbody environment, as approximated in a cave, very deep shade or a room, 2) outdoors at night under a clear sky, and 3) outdoors in full sun.
For the first, blackbody scenario, we just use the standard equation for infrared radiation emitted by an object at air temperature (in Kelvin), assuming an emissivity of one, i.e.
$$Q_{blackbody} = \sigma T_{air}^4$$
For the second scenario of a clear sky at night, we need to compute the radiation coming down from the sky and the radiation coming up from the ground, and assume half the object is exposed to each of these radiant sources. To compute the sky radiation, we can use Swinbank's (1963) relationship which is formulated in SI units in Gates (1980), equation 7.1, as
$$Q_{sky} = 1.22 \sigma T_{air}^4 - 171$$
where, again, $T_{air}$ is in Kelvin. If we assume that ground temperature is equal to air temperature, as Porter and Gates (1969) did, we simply take the average of the sky and blackbody radiation values and that then becomes the night sky radiation for a given air temperature. Note, however, that the clear sky night sky radiation in Porter and Gates (1969) is not what you would predict from the Swinbank formulation and appears to be erroneous - it seems like they subtracted 20 °C from the air temperature when computing the radiation emitted by the ground.
The third and most involved computation is the radiation environment outdoors in full sun, which combines the longwave radiation plus the direct and diffuse solar radiation from above, $_hS$ and $_hD$, and the reflected radiation from the ground $_hG$. The longwave radiation component we obtain as above. To get a rough approximation of the direct solar radiation we first take the solar constant $\overline S_o$, which is the average radiation flux hitting a horizontal plane on the outer edge of the earth's atmosphere over a year, and multiply it by a correction factor accounting for the distance between the earth and sun at the time of year of interest $(\overline d / d)^2$ where $\overline d$ is the average distance between the earth and the sun and $d$ is the actual distance. This gives us the extra-terrestrial radiation $S_o$. Then we need to account for the attenuation due to the depth of atmosphere the beams of sunlight are travelling through before hitting the ground, which depends in part on the angle of the sun $z$ (in radians). For example, at sunrise the rays are passing through more atmosphere than at midday. To compute this we need the optical air mass $m = sec(z) = 1/\cos(z)$ and the transmittance of the atmosphere $\tau$ (around 0.6), which can then be used in equation 6.36 from Gates (1980)
$$_hS = S_o \tau ^ m \cos(z)$$
We can then obtain an estimate of the diffuse radiation, i.e. the sunlight scattered by the atmosphere, using equation 6.36 of Gates (1980)
$$_hD = S_o (0.271 - 0.294 \tau ^ m) \cos(z)$$
Finally, if we know the solar absorptivity of the ground $\alpha_g$ we can multiply the amount of direct and diffuse solar radiation hitting the ground by $1-\alpha_g$, i.e. by the solar reflectance of the ground, to get the solar radiation reflected up at the object from the ground
$$_hG = (1-\alpha_g) (_hS + _hD)$$
Since we can assume that the object receives half of all of these fluxes, the total radiation experienced during the day can be computed as
$$Q_{day} = \frac{\alpha_s {_{h}S} (2 / \pi) + \alpha_s {_{h}DS} + \alpha _s (1- \alpha_g) {_{h}G} + Q_{sky} + Q_{ground}}{2}$$
which is equivalent to equation 13 of Porter and Gates (1969). Note that by multiplying the direct solar component ${_{h}S}$ by $2/ \pi$ we are accounting for the silhouette area of a cylinder being less than the total area. This is the part of the code making it specific to a cylindrical shape.
The R function `Qbound` below makes all of these calculations as a function of air temperature, substrate temperature, zenith angle (in degrees), solar absorptivity of the object and the ground, and the factor representing where the earth is in its orbit around the sun.
```{r}
# Computes climate space following the equations of Porter and
# Gates (1969) and Gates (1980)
# inputs
# Tair, A value, or vector of values, of air temperatures, °C
# Tsub, A value, or vector of values (for each air temperature),
# of substrate temperatures, °C
# Zenith, A value, or vector of values (for each air temperature),
# of the Zenith angle of the sun, degrees
# tau, Transmittance of the atmosphere, decimal percent
# alpha_s, Solar absorptivity of object, decimal percent
# alpha_g, Solar absorptivity of the ground, decimal percent
# d_bar_d2, Square of the ratio of the mean distance of the earth
# from the sun and the current distance of the earth to the sun
# outputs
# Q_blackbody, Blackbody radiation environment, W/m2
# Q_sky, Sky thermal radiation, W/m2
# Q_night, Radiation load on clear night, W/m2
# Q_day, Radiation load on sunny day, W/m2
Qbound <- function(Tair = 20, Tsub = Tair, Zenith = 0, tau = 0.6,
alpha_s = 0.8, alpha_g = 0.8, d_bar_d2 = 1) {
sigma <- 5.670373e-8 # W/m2/k4 Stephan-Boltzman constant
Q_blackbody <- (1*sigma*(Tair+273.15)^4) # black body radiation
Q_ground <- (1*sigma*(Tsub+273.15)^4) # ground radiation
Q_sky <- (1.22*sigma*(Tair+273.15)^4-171) # sky thermal
# radiation, from Swinbank equation, eq. 7.1 of Gates 1980
Q_night <- (Q_sky+Q_ground)/2
# average radiation from sky and ground
z <- Zenith * (pi / 180) # convert degres to radians
So_bar <- 1360 # solar constant, W/m2 (value from Gates p. 160)
# - average solar radiation reaching a horizontal plan on the
# outer edge of the earth's atmosphere
So <- So_bar * d_bar_d2 # extra-terrestrial radiaton, W/m2
# (Gates p. 160) - instantaneous solar radiation reaching a
# horizontal plan on the outer edge of the earth's atmosphere
m <- 1 / cos(z) # or sec z, air mass (dimensionless)
hS <- So*tau^m*cos(z)
# direct radiation on horizontal ground eq. 6.36/7.13
hd <- So*(0.271-0.294*tau^m)*cos(z) # diffuse radiation on
# horizontal ground, eq. 6.36/7.13 of Gates 1980
hg <- hd + hS # direct plus diffuse solar on horizontal ground
r <- 1 - alpha_g # ground solar reflectance
Q_day <- (alpha_s * hS * (2 / pi) + alpha_s * hd +
alpha_s * r * hg + Q_sky + Q_ground) / 2
# eq. 13 of Porter and Gates 1969
return(list(Q_blackbody = Q_blackbody, Q_sky = Q_sky, Q_night =
Q_night, Q_day = Q_day))
}
```
### Plotting Climate Space Boundaries {#climatespace-plotting}
Now that we have defined the equation for computing bounding values of radiation to go with air temperature under different scenarios, we are ready to make a figure showing these boundary conditions. The figure will be similar to Figure 12 of Porter an Gates (1969) but will be in SI units with a slightly different line for clear night sky conditions (due to the apparent error in Porter and Gates discussed above).
The next chunk of R code defines a sequence of air temperatures between -60 and 60 °C in 0.1 degree intervals. It also defines a set of zenith angles (in degrees, not radians) from 60 (low sun angle) to 0 (directly overhead). This is to roughly account for the fact that, in places with low air temperature, we are typically at high latitude and thus have low sun angles, as discussed just after equation 13 in Porter and Gates (1969).
```{r}
T_air <- seq(-60,60,0.1) # air temperature range to consider, °C
Zenith <- seq(60,0,-0.05) # zenith angles to go with air
# temperatures, degrees
```
Now we can define our environmental parameters, assuming the ground absorbs 80% of the solar radiation (and hence reflects 20%), that we are at the mean distance between the earth and sun over a year, and that atmospheric transmittance is a typical value of 0.6.
```{r}
alpha_g <- 0.80 # solar absorptance of ground (decimal %)
d_bar_d2 <- 1 # square of ratio of mean to current distance from
# sun to earth
tau <- 0.6 # transmittance (decimal %)
```
Finally, we will use a solar absorptivity for our cylindrical object of 1, i.e. a completely black object that absorbs all solar radiation (e.g. something covered in soot), and then pass these variables to the `Qbound` function and retrieve the results.
```{r}
alpha_s <- 1 # object solar absorptitivty
# run the Qbound function
climspace <- Qbound(Tair = T_air, Tsub = T_air, Zenith = Zenith,
tau = tau, alpha_s = alpha_s, alpha_g = alpha_g)
Q_day <- climspace$Q_day
Q_night <- climspace$Q_night
Q_blackbody <- climspace$Q_blackbody
Q_sky <- climspace$Q_sky
```
Now we can plot the results, first plotting the blackbody relationship as a dotted curve. This is the radiation load on an object in a cave or room or deep shade, where the wall/foliage temperature is equal to the air temperature.
```{r, fig.width=7, fig.height=6}
plot(Q_blackbody, T_air, ylim = c(-40,50), xlim = c(0,1300),
type = 'l', col = 'black', lwd = 2, lty = 2,
xlab = expression("radiation," ~ W/ ~ m^2),
ylab = 'air temperature, °C',
main = "Porter and Gates Figure 12")
```
This shows, for example that if the object was in a cave at an air temperature of 2 °C it would experience a load of 325 $W\:m^{-2}$. You can compute this exactly by typing `Qbound(Tair = 2)$Q_blackbody`.
Now let's add the clear night sky curve.
```{r, fig.width = 7, fig.height = 6, echo = 2:2}
plot(Q_blackbody, T_air, ylim = c(-40,50), xlim = c(0,1300), type='l', col='black', lwd=2, lty = 2, xlab=expression("radiation," ~ W/ ~ m^2), ylab='Air temperature, °C', main = "Porter and Gates Figure 12")
points(Q_night, T_air, type = 'l',col = 'blue',lwd = 2)
```
You can see now that, on a night where the air temperature is 2 degrees, the object would now have a lower radiation load of 275 $W\:m^{-2}$ because of the reduced downward flux of radiation from the cold night sky. In fact, this reduced radiation load is enough to drop the ground temperature to zero degrees and cause a frost - i.e. frosts often happen on clear nights when the air temperature measured by a weather station (1-2m above the ground) is 2 °C or lower.
Finally, let's add the sunny day curve.
```{r, fig.width = 7, fig.height = 6, echo = 3:3}
plot(Q_blackbody, T_air, ylim = c(-40,50), xlim = c(0,1300), type='l', col='black', lwd=2, lty = 2, xlab=expression("radiation," ~ W/ ~ m^2), ylab='air temperature, °C', main = "Porter and Gates Figure 12")
points(Q_night, T_air, type = 'l',col = 'blue',lwd = 2)
points(Q_day, T_air, type = 'l',col = 'red',lwd = 2)
```
Now, on a day of 2 °C in the sunshine an object would have a radiation load of around 610 $W\:m^{-2}$, if it absorbed all the solar radiation hitting it.
The next code chunk loops through a sequence of object absorptivities from 0.2 to 0.8, computes the daytime solar load and plots the results as orange lines on the graph, so we have a figure equivalent to Figure 12 in Porter and Gates (1969).
```{r, fig.width = 7, fig.height = 6, echo = 4:10}
plot(Q_blackbody, T_air, ylim = c(-40,50), xlim = c(0,1300), type='l', col='black', lwd=2, lty = 2, xlab=expression("radiation," ~ W/ ~ m^2), ylab='air temperature, °C', main = "Porter and Gates Figure 12")
points(Q_night, T_air, type = 'l',col = 'blue',lwd = 2)
points(Q_day, T_air, type = 'l',col = 'red',lwd = 2)
alphas <- seq(0.2, 0.8, 0.2)
for(i in 1:length(alphas)){
alpha_s <- alphas[i]
climspace <- Qbound(Tair = T_air, Tsub = T_air, Zenith = Zenith,
tau = tau, alpha_s = alpha_s, alpha_g = alpha_g)
Q_day <- climspace$Q_day
points(Q_day, T_air, type = 'l', col = 'orange', lwd = 2)
}
```
### Desert Iguana Climate Space {#climatespace-desertiguana}
The diagram we just plotted shows the range of available combinations of air temperature and radiation available to a cylindrical object on earth. Environments within this subset of environmental space will of course have very different ecological implications for different organisms, depending on their physiology and other environmental conditions (wind speed and humidity in particular).
Our next task is to work out the climate space within which survival is possible, in terms of body temperature, for the Desert Iguana. To do this, we need to solve a heat budget equation for the lizard at its body temperature limits, as shown in Figure 13 of Porter and Gates (1969).
The csv file 'climate\_space\_pars.csv' contains all the data found on the climate space figures of the seven animals considered in Porter and Gates (1969). Read it in and take a look at the first 6 lines with the `head` function.
```{r}
climate_space_pars <-
as.data.frame(read.csv("data/climate_space_pars.csv"))
head(climate_space_pars)[,c(1:8)]
head(climate_space_pars)[,c(9:16)]
```
You can see it has the metabolic rate, $M$ and evaporative heat lost by breathing $E_ex$ and sweating $E_sw$, in units of $cal\:cm^{-2}\:min^{-1}$ for different body temperatures $T_b$. There are also columns for the depth of the fat layer of the body $d_b$ and the fur layer $d_f$, as well as the diameter of the body $D$, all in cm. The conductivity of the fat and fur are $k_b$ and $k_f$, respectively, in cal min^-1^ cm^-1^ °C^-1^), the maximum and minimum solar absorptivity $abs_{max}$ and $abs_{min}$ and the height of the midpoint of the animal above the ground, $hgt$.
Let's subset this to just the Desert Iguana, using the `subset` function.
```{r}
pars <- subset(climate_space_pars, Name=="Desert Iguana")
```
Next, we need to convert this data into SI units.
```{r}
pars[,4:6] <- pars[,4:6] * (4.185 / 60 * 10000)
# convert heat flows from cal/min/cm2 to J/s/m2 = W/m2
pars[,14:15] <- pars[,14:15] * (4.185 / 60 * 100)
# convert thermal conductivities from cal/(min cm °C)
# to J/(s m °C) = W/(m °C)
pars[,c(7:8,11,16)] <- pars[,c(7:8,11,16)] / 100
# convert cm to m
```
Now, we need an equation for the heat budget - a version of equation 9 in Porter and Gates (1969) - that gives us the radiation values that go with a set of air temperatures to produce a particular body temperature. That equation is
$$Q_{abs} = \epsilon \sigma T_{r}^4 + h_c (T_r - T_{air}) + E_{ex} + E_{sw} - M$$
As in Porter and Gates (1969) p. 235, we can substitute $T_r$ with
$$T_b - (M - E_{ex} - E_{sw}) / K_b + 273.15$$
with $T_b$ in °C and where the skin's thermal conductance $K_b = k_b/d_b$, where $k_b$ is the conductivity of the skin and $d_b$ is the thickness of the skin.
Also, to compute the convection coefficient $h_c$ we deviate slightly from Porter and Gates (1969) and instead follow the recommendation of Gates (1980) (equation 12.52, p. 422) where
$$h_c = 3.49 (V^\frac{1}{2} / D^\frac{1}{2})$$.
Here is the code to create this function.
```{r}
# Computes absorbed radiation required to produce a specified core
# temperature for a value (or a range of values) of air
# temperature at a given wind speed, based on equation of Porter
# and Gates (1969) and Gates (1980)
# organism inputs
# D, organism diameter, m
# T_b, body temperature at which calculation is to be made, °C
# M, metabolic rate, W/m^2
# E_ex, evaporative heat loss through respiration, W/m^2
# E_sw, evaporative heat loss through sweating, W/m^2
# K_b, thermal conductance of the skin, W/m^2/°C
# epsilon, emissivity of the skin, -
# environmental inputs
# Tair, A value, or vector of values, of air temperatures, °C
# V, wind speed, m/s
# output
# Q_abs, predicted radiation absorbed, W/m^2
Qabs_ecto <-
function(D, T_b, M, E_ex, E_sw, K_b, epsilon, T_air, V) {
sigma <- 5.670373e-8 # W/m2/k4 Stephan-Boltzman constant
T_r <- T_b - (M - E_ex - E_sw) / K_b
h_c <- 3.49 * (V^(1/2) / D^(1/2))
Q_abs <- epsilon * sigma * (T_r + 273.15)^4 + h_c *
(T_r - T_air) - M + E_ex + E_sw
return(Q_abs)
}
```
Now let's plot the boundaries of the climate space diagram for this particular case, using the maximum solar absorptivity from the table of parameters for the Desert Iguana.
```{r, fig.width = 7, fig.height = 6}
a_max <- pars$abs_max[1] # get the maximum solar absorptivity
# value, choosing row 1
# cal Qbound to get available radiation/air temp combinations
climspace <- Qbound(Tair = T_air, Tsub = T_air, Zenith = Zenith,
tau = tau, alpha_s = a_max, alpha_g = alpha_g)
Q_day <- climspace$Q_day
Q_night <- climspace$Q_night
Q_blackbody <- climspace$Q_blackbody
# plot the bounding lines
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',
col='black',lwd=2, lty = 2, xlab='radiation, W/m2',
ylab='air temperature, deg C', main = "Desert Iguana")
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
```
Next, we will get the input data for the `Qabs_ecto` function we just created from the 'pars' table for the situation where a Desert Iguana has a body temperature of 3 °C, its lower survivable limit.
```{r}
# choose data for the first row of the 'pars' table, which are
# the values for when T_b is 3 °C
D <- pars$D[1] # diameter, m
T_b_lower <- pars$T_b[1] # body temperature, °C
M <- pars$M[1] # metabolic rate, W/m^2
E_ex <- pars$E_ex[1] # evaporative heat loss from respiration,
# W/m^2
E_sw <- pars$E_sw[1] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[1] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[1] # thermal conductance of the skin,
# W/(m^2 °C)
epsilon <- 1 # emissivity, -
```
Finally, we need to choose a wind speed and set of air temperatures at which to make the calculation, and then run the `Qabs_ecto` function.
```{r}
V <- 0.1 # wind speed, m/s
T_air<-seq(-60,60,0.1) # air temperature range to consider, °C
Q_abs_lower <- Qabs_ecto(D = D, T_b = T_b_lower, M = M,
E_ex = E_ex, E_sw = E_sw, K_b = K_b,
epsilon = epsilon, T_air = T_air, V = V)
```
Now, in the 'Q_abs_lower' variable we have a vector of amounts of absorbed radiation corresponding to each air temperature in our 'T_air' variable that would result in a 'T_b' of 3 °C if the wind speed was 0.1 m/s. We will now plot this result on our climate space diagram.
```{r, fig.width = 7, fig.height = 6, echo = 4:4}
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',col='black',lwd=2, lty = 2, xlab='radiation, W/m2', ylab='air temperature, deg C', main = paste0("Desert Iguana, T_b ",T_b_lower," °C, wind ", V, " m/s"))
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
points(Q_abs_lower, T_air, type = 'l', lwd = 2)
```
Let's now repeat the calculation but for the case of the extreme upper 'T_b' of 45 °C.
```{r, fig.width = 7, fig.height = 6, echo = c(1:11,17)}
# choose data for the fifth row of the 'pars' table, which are
# the vales for when T_b is 45 °C
D <- pars$D[5] # diameter, m
T_b_upper <- pars$T_b[5] # body temperature, °C
M <- pars$M[5] # metabolic rate, W/m2
E_ex <- pars$E_ex[5] # evaporative heat loss from respiration,
# W/m^2
E_sw <- pars$E_sw[5] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[5] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[5] # thermal conductance of the skin,
# W/(m^2 °C)
epsilon <- 1 # emissivity, -
Q_abs_upper <- Qabs_ecto(D = D, T_b = T_b_upper, M = M,
E_ex = E_ex, E_sw = E_sw, K_b = K_b,
epsilon = epsilon, T_air = T_air, V = V)
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',col='black',lwd=2, lty = 2, xlab= expression('radiation,' ~ W/ ~ m^2), ylab='air temperature, °C', main = paste0("Desert Iguana, T_b ",T_b_lower,"-",T_b_upper," °C, wind ", V, " m/s"))
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
points(Q_abs_lower, T_air, type = 'l', lwd = 2)
points(Q_abs_upper, T_air, type = 'l', lwd = 2)
```
The parts of these two lines in between the blue clear night and red sunny day lines are the boundaries within the actual air temperature and radiation climate space on planet earth where the Desert Iguana would be either 3 or 45 °C, and the area within all of these lines is the survivable set of combinations of air temperature and radiation on earth leading to a body temperature at or within these lethal limits.
Here is some code to find the corners of the climate space and to tidy up the plot so that we only see the relevant parts of the lines and thus depict an area in this two-dimensional space, as in the diagrams of Porter and Gates (1969). A more elegant approach would be to solve the relevant equations for where they intersect, but the code below will suffice for our purposes.
```{r, fig.width = 7, fig.height = 6}
# first make a table that has air temperature, corresponding
# radiation absorbed for a body temperature of 3 and 45 °C,
# and the clear night and sunny day conditions
climate_space <- as.data.frame(cbind(T_air, Q_abs_lower,
Q_abs_upper, Q_night, Q_day))
#now get the differences between the radiation levels for the
#night and day radiation bounding curves and the 3 and 45 °C lines
climate_space$min_lower <-
climate_space$Q_abs_lower-climate_space$Q_night
climate_space$max_lower <-
climate_space$Q_abs_lower-climate_space$Q_day
climate_space$min_upper <-
climate_space$Q_abs_upper-climate_space$Q_night
climate_space$max_upper <-
climate_space$Q_abs_upper-climate_space$Q_day
# find the row positions in the climate_space table where the
# square of the differences is minimised for the night and day
# bounding curves for each threshold
mx_lower <- which.min(climate_space$min_lower^2)
mn_lower <- which.min(climate_space$max_lower^2)
mx_upper <- which.min(climate_space$min_upper^2)
mn_upper <- which.min(climate_space$max_upper^2)
# use these row position limits to extract only the radiation/air
# temperature combinations within the clear night and sunny day
# bounds
limits_lower <- cbind(Q_abs_lower[mn_lower:mx_lower],
T_air[mn_lower:mx_lower])
limits_lower <- as.data.frame(limits_lower)
colnames(limits_lower) <- c("Q_abs", "T_air")
limits_upper <- cbind(Q_abs_upper[mn_upper:mx_upper],
T_air[mn_upper:mx_upper])
limits_upper <- as.data.frame(limits_upper)
colnames(limits_upper) <- c("Q_abs", "T_air")
# get the corners of the climate space diagram - i.e. the limiting
# combinations of radiation and air temperature for night and day
# at each thermal limit
night_cold <- limits_lower[nrow(limits_lower),]
# cold clear sky limit (in the open)
day_cold <- limits_lower[1,] # cold clear sky limit (in the sun)
day_hot <- limits_upper[1,]
# hot clear sky day limit (in the open)
night_hot <- limits_upper[nrow(limits_upper),]
# hot clear sky night limit (in the open)
# create limited bounding night and day curves
night <- cbind (Q_night, T_air)
day <- cbind (Q_day, T_air)
limits_night <- subset(night,Q_night > as.numeric(night_cold[1]) &
Q_night < as.numeric(night_hot[1]))
limits_day <- subset(day,Q_day > as.numeric(day_cold[1]) & Q_day <
as.numeric(day_hot[1]))
# plot the final subsetted data
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',
col='black',lwd=2,lty=2,xlab=expression('radiation,'~W/~m^2),
ylab='air temperature, °C', main = paste0("Desert Iguana,
T_b", T_b_lower,"-",T_b_upper," °C, wind ", V, " m/s"))
points(limits_night[,1], limits_night[,2],type='l',col='blue',
lwd=2)
points(limits_day[,1], limits_day[,2],type='l',col='red',lwd=2)
points(limits_lower$Q_abs, limits_lower$T_air, type = 'l',
lwd = 2)
points(limits_upper$Q_abs, limits_upper$T_air, type = 'l',
lwd = 2)
# put the values of the corner air temperatures on the plot
text(night_cold$Q_abs-50,night_cold$T_air,
round(night_cold$T_air,1))
text(day_cold$Q_abs+50,day_cold$T_air, round(day_cold$T_air,1))
text(night_hot$Q_abs-50,night_hot$T_air, round(night_hot$T_air,1))
text(day_hot$Q_abs+50,day_hot$T_air, round(day_hot$T_air,1))
```
You have now computed the climate space for a dark (0.8 absorptivity) Desert Iguana at low wind speed (0.1 m/s). Now have a go at plotting the climate space of this species at different wind speeds and with the lower value for absorptivity (0.6) and higher wind speeds.
### Zebra Finch Climate Space {#climatespace-zebrafinch}
Next we will plot the climate space of an desert endotherm, the Zebra Finch (from Australia), and contrast it with the Desert Iguana. The procedure is almost the same. First, subset the data for the Zebra Finch from the 'climate\_space\_pars' table and convert to SI units as before.
```{r}
pars <- subset(climate_space_pars, Name=="Zebra Finch")
pars[,4:6] <- pars[,4:6] * (4.185 / 60 * 10000)
# convert heat flows from cal/min/cm2 to J/s/m2 = W/m2
pars[,14:15] <- pars[,14:15] * (4.185 / 60 * 100)
# convert thermal conductivities from cal/(min cm °C)
# to J/(s m °C) = W/(m °C)
pars[,c(7:8,11,16)] <- pars[,c(7:8,11,16)] / 100
# convert cm to m
```
The equation for the heat budget of this endothermic organism with insulation is a little different, since it includes an insulation layer. This makes the calculation for $T_r$ a little different. The equation is
$$T_r = T_b - (M - E_{ex}) / K_b - (M - E_{ex} - E_{sw}) / K_f + 273.15$$
The radiant temperature is now the body temperature offset by an additional factor capturing the resistance of the fur to heat flow, and $K_f = k_f/d_f$, where $k_f$ is the conductivity of the fur and $d_f$ is the thickness of the fur.
Here is the code to create the endotherm-specific function for obtaining radiation absorbed given an air temperature, wind speed and physiological state.
```{r}
# Computes absorbed radiation required to produce a specified core
# temperature for a value (or a range of values) of air
# temperature at a given wind speed, based on equation of Porter
# and Gates (1969) and Gates (1980)
# organism inputs
# D, organism diameter, m
# T_b, body temperature at which calculation is to be made, °C
# M, metabolic rate, W/m^2
# E_ex, evaporative heat loss through respiration, W/m^2
# E_sw, evaporative heat loss through sweating, W/m^2
# K_b, thermal conductance of the skin, W/m^2/°C
# K_f, thermal conductance of the fur, W/m^2/°C
# epsilon, emissivity of the skin, -
# environmental inputs
# Tair, A value, or vector of values, of air temperatures, °C
# V, wind speed, m/s
# output
# Q_abs, predicted radiation absorbed, W/m^2
Qabs_endo <-
function(D, T_b, M, E_ex, E_sw, K_b, K_f, epsilon, T_air, V) {
sigma <- 5.670373e-8 # W/m2/k4 Stephan-Boltzman constant
T_r <- T_b - (M - E_ex) / K_b - (M - E_ex - E_sw) / K_f
h_c <- 3.49 * (V^(1/2) / D^(1/2))
Q_abs <- epsilon * sigma * (T_r + 273.15)^4 + h_c *
(T_r - T_air) - M + E_ex + E_sw
return(Q_abs)
}
```
Now let's plot the boundaries of the climate space diagram for the typical solar absorptivity of the Zebra Finch.
```{r, fig.width = 7, fig.height = 6}
a_max <- pars$abs_max[1] # get the maximum solar absorptivity
# value, choosing row 1
# call Qbound to get available radiation/air temp combinations
climspace <- Qbound(Tair = T_air, Tsub = T_air, Zenith = Zenith,
tau = tau, alpha_s = a_max, alpha_g = alpha_g)
Q_day <- climspace$Q_day
Q_night <- climspace$Q_night
Q_blackbody <- climspace$Q_blackbody
# plot the bounding lines
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',
col='black',lwd=2,lty=2,xlab=expression('radiation, W/'~m^2),
ylab='air temperature, °C', main = "Zebra Finch")
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
```
Next, we will get the input data for the `Qabs_endo` function for the situation where the Zebra Finch body temperature is 38.5 °C, its lower survivable limit (far higher than that of the Desert Iguana!).
```{r}
# choose data for the first row of the 'pars' table, which are
# the vales for when T_b is 38.5 °C
D <- pars$D[1] # diameter, m
T_b_lower <- pars$T_b[1] # body temperature, °C
M <- pars$M[1] # metabolic rate, W/m^2
E_ex <- pars$E_ex[1] # evaporative heat loss from respiration,
# W/m^2
E_sw <- pars$E_sw[1] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[1] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[1] # thermal conductance of the skin,
# W/(m^2 °C)
k_f <- pars$k_f[1] # thermal conductivity of the skin, W/(m °C)
K_f <- k_f/pars$d_f[1] # thermal conductance of the skin,
# W/(m^2 °C)
epsilon <- 1 # emissivity, -
```
And as with the Desert Iguana, again we need to choose a wind speed and set of air temperatures at which to make the calculation, but now run the `Qabs_endo` function.
```{r}
V <- 0.1 # wind speed, m/s
T_air <- seq(-60,60,0.1) # air temperature range to consider, °C
Q_abs_lower <- Qabs_endo(D = D, T_b = T_b_lower, M = M,
E_ex = E_ex, E_sw = E_sw, K_b = K_b, K_f = K_f,
epsilon = epsilon, T_air = T_air, V = V)
```
Now, in the 'Q\_abs\_lower' variable we have a vector of amounts of absorbed radiation corresponding to each air temperature in our 'T\_air' variable that would result in a 'T\_b' of 38.5 °C if the wind speed was 0.1 m/s. We will now plot this result on our climate space diagram.
```{r, fig.width = 7, fig.height = 6, echo = 4:4}
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',col='black',lwd=2, lty = 2, xlab=expression('radiation,' ~ W/ ~ m^2), ylab='air temperature, °C', main = paste0("Zebra Finch, T_b ",T_b_lower," °C, wind ", V, " m/s"))
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
points(Q_abs_lower, T_air, type = 'l', lwd = 2)
```
Let's now repeat the calculation but for the case of the extreme upper 'T_b' of 42.5 °C.
```{r}
# choose data for the third row of the 'pars' table, which are
# the vales for when T_b is 42.5 °C
D <- pars$D[3] # diameter, m
T_b_upper <- pars$T_b[3] # body temperature, °C
M = pars$M[3] # metabolic rate, W/m^2
E_ex <- pars$E_ex[3] # evaporative heat loss from respiration,
# W/m^2
E_sw <- pars$E_sw[3] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[3] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[3] # thermal conductance of the skin, W/(m^2°C)
k_f <- pars$k_f[3] # thermal conductivity of the skin, W/(m °C)
K_f <- k_f/pars$d_f[3] # thermal conductance of the skin, W/(m^2°C)
epsilon <- 1 # emissivity, -
Q_abs_upper <- Qabs_endo(D = D, T_b = T_b_lower, M = M,
E_ex = E_ex, E_sw = E_sw, K_b = K_b, K_f = K_f,
epsilon = epsilon, T_air = T_air, V = V)
```
```{r, fig.width = 7, fig.height = 6, echo = 5:5}
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',col='black',lwd=2, lty = 2, xlab=expression('radiation, W/' ~ m^2), ylab='air temperature, °C', main = paste0("Zebra Finch, T_b ",T_b_lower," °C, wind ", V, " m/s"))
points(Q_night,T_air,type='l',col='blue',lwd=2)
points(Q_day,T_air,type='l',col='red',lwd=2)
points(Q_abs_lower, T_air, type = 'l', lwd = 2)
points(Q_abs_upper, T_air, type = 'l', lwd = 2)
```
And finally, we run the code that removes the line segments outside the climate space boundaries, copied and pasted from above, to obtain our final diagram.
```{r, fig.width = 7, fig.height = 6}
# first make a table that has air temperature, corresponding
# radiation absorbed for a body temperature of 3 and 45°C,
# and the clear night and sunny day conditions
climate_space <- as.data.frame(cbind(T_air, Q_abs_lower,
Q_abs_upper, Q_night, Q_day))
# now get the differences between the radiation levels for the
# night and day radiation bounding curves and the 3 and 45 °C lines
climate_space$min_lower <-
climate_space$Q_abs_lower-climate_space$Q_night
climate_space$max_lower <-
climate_space$Q_abs_lower-climate_space$Q_day
climate_space$min_upper <-
climate_space$Q_abs_upper-climate_space$Q_night
climate_space$max_upper <-
climate_space$Q_abs_upper-climate_space$Q_day
# find the row positions in the climate_space table where the
# square of the differences is minimised for the night and day
# bounding curves for each threshold
mx_lower <- which.min(climate_space$min_lower^2)
mn_lower <- which.min(climate_space$max_lower^2)
mx_upper <- which.min(climate_space$min_upper^2)
mn_upper <- which.min(climate_space$max_upper^2)
# use these row position limits to extract only the radiation/air
# temperature combinations within the clear night and sunny day
# bounds
limits_lower <- cbind(Q_abs_lower[mn_lower:mx_lower],
T_air[mn_lower:mx_lower])
limits_lower <- as.data.frame(limits_lower)
colnames(limits_lower) <- c("Q_abs", "T_air")
limits_upper <- cbind(Q_abs_upper[mn_upper:mx_upper],
T_air[mn_upper:mx_upper])
limits_upper <- as.data.frame(limits_upper)
colnames(limits_upper) <- c("Q_abs", "T_air")
# get the corners of the climate space diagram -
# i.e. the limiting combinations of radiation and air temperature
# for night and day at each thermal limit
night_cold <- limits_lower[nrow(limits_lower),]
# cold clear sky limit (in the open)
day_cold <- limits_lower[1,] # cold clear sky limit (in the sun)
day_hot <- limits_upper[1,] #hot clear sky day limit (in the open)
night_hot <- limits_upper[nrow(limits_upper),]
# hot clear sky night limit (in the open)
# create limited bounding night and day curves
night <- cbind (Q_night, T_air)
day <- cbind (Q_day, T_air)
limits_night <- subset(night,Q_night > as.numeric(night_cold[1]) &
Q_night < as.numeric(night_hot[1]))
limits_day <- subset(day,Q_day > as.numeric(day_cold[1]) & Q_day <
as.numeric(day_hot[1]))
# plot the final subsetted data
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',
col='black',lwd=2,lty=2,xlab=expression('radiation, W/'~m^2),
ylab='air temperature, °C',main=paste0("Zebra Finch, T_b ",
T_b_lower,"-",T_b_upper," °C, wind ", V, " m/s"))
points(limits_night[,1], limits_night[,2],type='l',col='blue',
lwd=2)
points(limits_day[,1], limits_day[,2],type='l',col='red',lwd=2)
points(limits_lower$Q_abs, limits_lower$T_air, type = 'l',
lwd = 2)
points(limits_upper$Q_abs, limits_upper$T_air, type = 'l',
lwd = 2)
# put the values of the corner air temperatures on the plot
text(night_cold$Q_abs-50,night_cold$T_air,
round(night_cold$T_air,1))
text(day_cold$Q_abs+50,day_cold$T_air, round(day_cold$T_air,1))
text(night_hot$Q_abs-50,night_hot$T_air, round(night_hot$T_air,1))
text(day_hot$Q_abs+50,day_hot$T_air, round(day_hot$T_air,1))
```
Notice how strikingly similar the climate space is for the Zebra Finch and the Desert Iguana (re-plotted below), despite their extremely different body temperature limits. What are the key differences between them in the environments they can tolerate, and what is it about the physiology of these two species that makes them have such similar climate spaces? Does the similarity extend to environments of higher wind speed?
In a subsequent module you will learn now to work with gridded microclimate data and map biophysical calculations of climate spaces onto geographic spaces.
```{r, fig.width = 7, fig.height = 6, echo=FALSE}
pars <- subset(climate_space_pars, Name=="Desert Iguana")
pars[,4:6] <- pars[,4:6] * (4.185 / 60 * 10000) # convert heat flows from cal/min/cm^2 to J/s/m^2 = W/m^2
pars[,14:15] <- pars[,14:15] * (4.185 / 60 * 100)# convert thermal conductivities from cal/(min cm °C) to J/(s m °C) = W/(m °C)
pars[,c(7:8,11,16)] <- pars[,c(7:8,11,16)] / 100 # convert cm to m
# choose data for the first row of the 'pars' table, which are the vales for when T_b is 3 °C
a_max <- pars$abs_max[1] # get the maximum solar absorptivity value, choosing row 1
D <- pars$D[1] # diameter, m
T_b_lower <- pars$T_b[1] # body temperature, °C
M <- pars$M[1] # metabolic rate, W/m^2
E_ex <- pars$E_ex[1] # evaporative heat loss from respiration, W/m^2
E_sw <- pars$E_sw[1] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[1] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[1] # thermal conductance of the skin, W/(m^2 °C)
epsilon <- 1 # emissivity, -
# call the Qbound function to get available radiation/air temp combinations
climspace <- Qbound(Tair = T_air, Tsub = T_air, Zenith = Zenith, tau = tau, alpha_s = a_max, alpha_g = alpha_g)
Q_day <- climspace$Q_day
Q_night <- climspace$Q_night
Q_blackbody <- climspace$Q_blackbody
V <- 0.1 # wind speed, m/s
T_air <- seq(-60,60,0.1) # air temperature range to consider, °C
Q_abs_lower <- Qabs_ecto(D = D, T_b = T_b_lower, M = M, E_ex = E_ex, E_sw = E_sw, K_b = K_b, epsilon = epsilon, T_air = T_air, V = V)
D <- pars$D[5] # diameter, m
T_b_upper <- pars$T_b[5] # body temperature, °C
M <- pars$M[5] # metabolic rate, W/m^2
E_ex <- pars$E_ex[5] # evaporative heat loss from respiration, W/m^2
E_sw <- pars$E_sw[5] # evaporative heat loss from sweating, W/m^2
k_b <- pars$k_b[5] # thermal conductivity of the skin, W/(m °C)
K_b <- k_b/pars$d_b[5] # thermal conductance of the skin, W/(m^2 °C)
epsilon <- 1 # emissivity, -
Q_abs_upper <- Qabs_ecto(D = D, T_b = T_b_upper, M = M, E_ex = E_ex, E_sw = E_sw, K_b = K_b, epsilon = epsilon, T_air = T_air, V = V)
# first make a table that has air temperature, corresponding radiation absorbed for a body temperature of 3 and 45 degrees, and the clear night and sunny day conditions
climate_space <- as.data.frame(cbind(T_air, Q_abs_lower, Q_abs_upper, Q_night, Q_day))
# now get the differences between the radiation levels for the night and day radiation bounding curves and the 3 and 45 °C lines
climate_space$min_lower <- climate_space$Q_abs_lower-climate_space$Q_night
climate_space$max_lower <- climate_space$Q_abs_lower-climate_space$Q_day
climate_space$min_upper <- climate_space$Q_abs_upper-climate_space$Q_night
climate_space$max_upper <- climate_space$Q_abs_upper-climate_space$Q_day
# find the row positions in the climate_space table where the square of the differences is minimised for the night and day bounding curves for each threshold
mx_lower <- which.min(climate_space$min_lower^2)
mn_lower <- which.min(climate_space$max_lower^2)
mx_upper <- which.min(climate_space$min_upper^2)
mn_upper <- which.min(climate_space$max_upper^2)
# use these row position limits to extract only the radiation/air temperature combinations within the clear night and sunny day bounds
limits_lower <- cbind(Q_abs_lower[mn_lower:mx_lower],T_air[mn_lower:mx_lower])
limits_lower <- as.data.frame(limits_lower)
colnames(limits_lower) <- c("Q_abs", "T_air")
limits_upper <- cbind(Q_abs_upper[mn_upper:mx_upper],T_air[mn_upper:mx_upper])
limits_upper <- as.data.frame(limits_upper)
colnames(limits_upper) <- c("Q_abs", "T_air")
# get the corners of the climate space diagram - i.e. the limiting combinations of radiation and air temperature for night and day at each thermal limit
night_cold <- limits_lower[nrow(limits_lower),] # cold clear sky limit (in the open)
day_cold <- limits_lower[1,] # cold clear sky limit (in the sun)
day_hot <- limits_upper[1,] # hot clear sky day limit (in the open)
night_hot <- limits_upper[nrow(limits_upper),] # hot clear sky night limit (in the open)
# create limited bounding night and day curves
night <- cbind (Q_night, T_air)
day <- cbind (Q_day, T_air)
limits_night <- subset(night,Q_night > as.numeric(night_cold[1]) & Q_night < as.numeric(night_hot[1]))
limits_day <- subset(day,Q_day > as.numeric(day_cold[1]) & Q_day < as.numeric(day_hot[1]))
# plot the final subsetted data
plot(Q_blackbody,T_air,ylim=c(-40,50),xlim=c(0,1300),type='l',col='black',lwd=2, lty = 2, xlab=expression("radiation," ~ W/ ~ m^2), ylab='air temperature, °C', main = paste0("Desert Iguana, T_b ",T_b_lower,"-",T_b_upper," °C, wind ", V, " m/s"))
points(limits_night[,1], limits_night[,2],type='l',col='blue',lwd=2)
points(limits_day[,1], limits_day[,2],type='l',col='red',lwd=2)
points(limits_lower$Q_abs, limits_lower$T_air, type = 'l', lwd = 2)
points(limits_upper$Q_abs, limits_upper$T_air, type = 'l', lwd = 2)
# put the values of the corner air temperatures on the plot
text(night_cold$Q_abs-50,night_cold$T_air, round(night_cold$T_air,1))
text(day_cold$Q_abs+50,day_cold$T_air, round(day_cold$T_air,1))
text(night_hot$Q_abs-50,night_hot$T_air, round(night_hot$T_air,1))
text(day_hot$Q_abs+50,day_hot$T_air, round(day_hot$T_air,1))
```
<!--END KEARNEY TEXT -->
### The Lizard {#climatespace-lizard}
To write down the heat energy budget of a lizard we need only sum up the heat transfer components. Initially we consider only three of these components (absorbed radiation, reradiation and convection) because metabolism and water loss are small and they tend to cancel each other out (Porter et al. 1973). The energy entering the system must equal that which is leaving, so
\begin{equation}
Q_a = \varepsilon \sigma ( T_s + 273)^4 + h_c (T_s - T_a )
(\#eq:climatespace-5)
\end{equation}
where
<ul class="list-unstyled">
<li> $Q_a$ = longwave and shortwave radiation absorbed by the organism ($W m^{-2}$), </li>
<li> $\varepsilon$ = emissivity (0.96), </li>
<li> $\sigma$ = Stefan-Boltzmann constant 5.67 $\times$ 10^-8^ ($W m^{-2} K^{-4}$), </li>
<li> $T_s$ = surface temperature of the lizard ($^{\circ}C$), </li>
<li> $T_a$ = air temperature ($^{\circ}C$), </li>
<li> $h_c$ = convection coefficient ($W m^{-2} {^{\circ}C^{-1}}$), </li>
</ul>
Originally Porter and Gates (1969) suggested that the convection coefficient should take the form
\begin{equation}
h_c = k_c V^{0.33} D^{-0.67}
(\#eq:climatespace-6)
\end{equation}
where
<ul class="list-unstyled">
<li> $k_c$ = a constant 0.9274 $W m^{-2} {^{\circ}C^{-1}} (m)^{0.67} (m/s)^{-0.33}$ </li>
<li> $V$ = wind speed ($m s^{-1}$) </li>
<li> $D$ = diameter of the animal or cylinder ($m$). </li>
</ul>
Recently Mitchell (1976) found a spherical shape is the best overall model for convective transfer in the terrestrial environment. He used weight divided by density, which is equal to the volume, all to the one-third power as the characteristic dimension instead of the diameter. (Using laboratory measurements it is often possible to get better estimates of $h_c$ for a particular geometry.) Generally one would calculate the Reynolds and Nusselt numbers to find the heat transfer coefficient (Kreith 1973). This procedure is outlined in the module on heat transfer processes (Stevenson 1978). With a number of assumptions which introduce only small errors, it is possible to write Mitchell's result in the same form as that of Porter and Gates (see Appendix II). We have
\begin{equation}
h_c = k_s V^{0.60} {M_b}^{-0.133}
(\#eq:climatespace-7)
\end{equation}
where
<ul class="list-unstyled">
<li> $k_s$ = constant 17.24 $W m^{-2} {^{\circ}C} (m s^{-1})^{-0.60} (kg)^{0.133}$ </li>
<li> $M_b$ = body mass ($kg$) </li>
</ul>
and $h_c$ and $V$ are as in Equation 6. We further assume that the body temperature $T_b$ is approximately equal to the surface temperature $T_s$. (The error in this assumption will be checked in Problem 1.) The heat energy balance can now be written
\begin{equation}
Q_a = \varepsilon \sigma (T_b + 273)^4 + k_s V^{0.60} {M_b}^{-0.133} (T_b-T_a)
(\#eq:climatespace-8)
\end{equation}
We can implement this analysis in R:
```{r}
E= 0.96 #emissivity
sigma= 5.67 * 10^{-8} #Stefan-Boltzmann's constant (W m^-2K^-4)
k_s= 17.24 #W m^-2 °C (m s^-1)^-0.60 (kg)^0.133
#PLOT ENVIRONMENTAL CONSTRAINTS
Q_a = function(T_a) (a_L*sigma*(T_g + 273)^4 +
1.22*a_L*sigma*(T_a + 273)^4 - 171)/2
T_a_plot= -40:40
T_g= T_a_plot
#left line: night
a_L=1 #mean absorptivity to longwave radiation
Q_a_plot= Q_a(T_a_plot)
plot(Q_a_plot, T_a_plot, type="l", xlim=range(0,1000),
xlab=expression("Absorbed Radiation" ~ Q_a ~ (W ~ m^{-2})),
ylab= expression("Air temperature" ~ T_a ~ "(°C)"))
#right line: full sun ##see Appendix I##
a_L=0.8 #mean absorptivity to longwave radiation
Q_a_plot= Q_a(T_a_plot)
points(Q_a_plot, T_a_plot, type="l")
#PLOT ORGANISMAL CONSTRAINTS
V= 1.0 #windspeed (m s^-1)
M_b= 0.027 # body mass (kg)
T_b= 39 # (C)
Q_a= function(T_a) E*sigma*(T_b + 273)^4 +
k_s*V^{0.60}*M_b^{-0.133}*(T_b-T_a)
T_a_plot= -40:40
Q_a_plot= Q_a(T_a_plot)
#upper line
points(Q_a_plot, T_a_plot, type="l")
#lower line
T_b= 3
Q_a_plot= Q_a(T_a_plot)
points(Q_a_plot, T_a_plot, type="l")
```
To construct the climate space of the lizard, we need to make assumptions about the variables of Equation \@ref(eq:climatespace-8). If $V$, $M_b$ and $T_b$ are specified as constants, there is a linear relationship between $Q_a$ and $T_a$. We illustrate this in Figure \@ref(fig:fig-climatespace-6) by plotting the upper line for $V = 1.0 m s^{-1}$, $M_b = 0.027 kg$, and $T_b = 39°C$, and the bottom line with only $T_b$ changed to $3°C$. The shaded region in Figure \@ref(fig:fig-climatespace-6) is the climate space of the reptile if the wind speed is the average value for the microclimate that the lizard inhabits, and if the body temperatures given are the upper and lower bounds that the animal can tolerate.
Examination of the climate space diagram allows interpretation of several of the parameters of the heat energy balance model. The boundary points of the space indicate the extreme values that the lizard is likely to encounter and still survive. The lower left-hand point of the diagram tells us that if the reptile is exposed to a clear sky at night, its body temperature will remain high enough to survive as long as the air temperature is above $7°C$. The opposite corner shows that $27°C$ is the extreme air temperature that the lizard could endure if it were exposed to strong sunlight.
The effect of changing color is also illustrated in Figure \@ref(fig:fig-climatespace-6). In desert environments lizards often lighten their color which lowers their mean absorptivity. For example, lowering the mean absorptivity from 0.8 to 0.6 in Figure \@ref(fig:fig-climatespace-6) allows the lizard to increase the air temperature that it can survive from about $30°C$ to $32°C$. Norris (1967) has extensively studied the effect of color change on the thermal adaptations of desert lizards.
Increased wind speed increases the relative importance of the convective term and couples the body temperature of the animal more closely to the air temperature. Figure \@ref(fig:fig-climatespace-7) shows the influence of wind speed on the energy balance. As the wind speed increases from $0.1 m s^{-1}$ to $10.0 m s^{-1}$ the physiological line becomes more horizontal.
We can visualize the effect of size by picking body masses of 0.001, 0.10, 10.0 and 100.0 kg to insert in Equation \@ref(eq:climatespace-8) and plotting the lines in Figure \@ref(fig:fig-climatespace-8). As size or weight increases, the boundary layer thickens, decreasing the rate of convective exchange (a smaller component of the heat balance). This is readily seen algebraically by re-examining the convection term. We conclude that increasing size has the same effect as decreasing wind speed. It is also clear from Figure \@ref(fig:fig-climatespace-8) that most lizards (less than 1.0 kg) are closely tied to the air temperature.
```{r fig-climatespace-6, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "100%", fig.align = "default", fig.cap='The hatched area is the climate space of a lizard with absorptivity to sunlight of 0.8. If the animal decreases its absorptivity to 0.6 it can increase the air temperature it can withstand from 30 to 32.5 °C. The darkened areas refer to problem 4.'}
knitr::include_graphics('figures/fig-climatespace-6.png')
```
There are several observations which suggest that the thermoregulation behaviors we might predict from considering this model indeed occur. Porter and Gates (1969) observed that the small lizard (*Uta stansburiana*) (0.004 kg approximately) which is tightly coupled to the air temperature climbs rocks early in the morning. They hypothesized that this behavior was taken to avoid the cold layer of air at the ground surface. Alternatively we might ask what options are available if the lizard does not want to become too hot. From Equation \@ref(eq:climatespace-8) we see that there are at least two strategies. The animal can reduce the absorbed radiation $Q_a$ by going to a shaded environment or it can increase its convective heat loss by climbing bushes where the wind speed is greater and $T_a$ is lower. Descriptions of the daily activity patterns of the desert iguana (*Dipsosaurus dorsalis*) from field observations, show that both these options are used. The lizard emerges from its burrow in the morning. As $T_a$ and $Q_a$ increase, the animals move into the shade, then higher into the shrubs, and finally retreat Porter et al. (1973) found good agreement between the predicted behavior from their heat transfer model and the morning activity pattern of this species.
```{r fig-climatespace-7, echo=FALSE, fig.cap='To investigate the effect of windspeed on the thermal balance', fig.show = "hold", out.width = "100%", fig.align = "default", fig.height=4}
knitr::include_graphics('figures/fig-climatespace-7.png')
```
```{r fig-climatespace-8, echo=FALSE, fig.height=4, fig.show = "hold", out.width = "100%", fig.align = "default", fig.cap='To illustrate the effect of size, values of weight, Mb, from 0.001 to 100 kg were substituted into equation 8 and plotted here.'}
knitr::include_graphics('figures/fig-climatespace-8.png')
```
### The Cardinal {#climatespace-cardinal}
Our second and final example is the climate space diagram of the cardinal (*Richmnondena cardinalis*). Several additional terms of the heat energy balance are important here. As in all homeotherms metabolism and water loss are significant sources of heat production and loss which cannot be neglected in the thermal budget. The food necessary to produce metabolic heat energy for thermoregulation is about 85% of the animal's total requirements (Bartholomew 1977). The benefits for this energetic cost probably include both the ability to process food faster and more efficiently and greater independence from the unpredictable patterns of the weather than ectotherms. The cardinal loses the majority of its water by exhaling air saturated with water vapor, although other species of birds may lose up to 50% of their water through their skin (Lasiewski et al. 1966).
The energy balance must now be written
\begin{equation}
M + Q_a = \varepsilon \sigma (T_r + 273)^4 + h_c (T_r - T_a) + E_{ex}