Error message
Deprecated function: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in Drupal\Component\Utility\Unicode::validateUtf8() (line 395 of core/lib/Drupal/Component/Utility/Unicode.php).
Drupal\Component\Utility\Unicode::validateUtf8() (Line: 65) Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
Deprecated function: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in Drupal\Component\Utility\Xss::filter() (line 69 of core/lib/Drupal/Component/Utility/Xss.php).
Drupal\Component\Utility\Xss::filter() (Line: 351) _colorbox_formatter_get_caption() (Line: 140) template_preprocess_colorbox_formatter() call_user_func_array() (Line: 261) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 45) __TwigTemplate_29a6bd8ca064d68d79a709de008b1300->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 504) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 224) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->Drupal\entity_embed\Plugin\Filter\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 223) Drupal\entity_embed\Plugin\Filter\EntityEmbedFilter->process() (Line: 118) Drupal\filter\Element\ProcessedText::preRenderText() call_user_func_array() (Line: 113) Drupal\Core\Render\Renderer->doTrustedCallback() (Line: 870) Drupal\Core\Render\Renderer->doCallback() (Line: 432) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 254) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->{closure}() (Line: 2061) Twig\Extension\CoreExtension::captureOutput() (Line: 44) __TwigTemplate_e65ca13bf6eca804de0e3b2c94cbf463->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 484) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 423) __TwigTemplate_bcdae20cc74e927d9ce983809150de87->doDisplay() (Line: 387) Twig\Template->yield() (Line: 343) Twig\Template->display() (Line: 358) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 231) Drupal\Core\Render\MainContent\HtmlRenderer->prepare() (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch() (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 50) Drupal\ban\BanMiddleware->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
As anyone who lives in Michigan knows, March and April are the wet months, with puddles in lawns and fields and rivers overflowing their banks, while August, with corn wilting in the fields and lawns a crispy brown, is the driest. But like so many things that Anyone knows, this is only about half true. Yes, we can expect puddles in April and wilting corn in August, but not because it’s rainier in April than in August. Instead, our feeling about how dry a month is has little to do with how the supply of water changes from month to month, and everything to do with how the demand for water changes through the year.
The amount of precipitation (the water in rain and snow) doesn’t change much from month to month in Michigan. The first graph pictured below shows how much precipitation falls each month in an average year in Lansing. The wettest month (June) gets only about twice as much water as the driest (February). And surprisingly, August (the brown bar in the graph) is the 3rd-wettest month of the year, and actually gets a little more precipitation than April (the blue bar).
Average monthly rainfall at Lansing during 1991-2020, from NOAA records. Rather than being dry, August (brown bar) typically is one of the rainiest months of the year, and receives a little more rain than the “wet” month of April (blue bar).
If we get so much rain in August, why is it so dry? The answer is that the demand for water from evaporation and especially from plants changes a LOT from month to month. In the winter, plants use almost no water and evaporation rates are low. As a result, precipitation that falls in these months can built up in soils and aquifers, accumulate as snowpack, or run off into lakes and streams. So these months are wet, even though there isn’t a lot of precipitation.
The amount of evaporation plus plant water use (which is called “potential evapotranspiration”) that would occur if unlimited water were supplied in an average year near Lansing, from USDA. Note how much higher evapotranspiration is during August (the brown bar) than April (the blue bar).
Once spring really gets going, plants start to use a lot of water, and evaporation increases. By summer, demand for water outstrips supply by precipitation, and soils dry out, plants wilt, and streams wither. This drying trend continues until September or October, when plant growth and water demand slow.
Streams are fed by water that is left over after plants and evaporation take their first dibs on any precipitation that falls, so any water that falls during the summer goes first to the thirsty plants, and only what is left over gets to the poor fishes. As a result, streams can shrink dramatically, exposing their inhabitants to mortal peril.
As an example, the next graph shows how much water flows down the East Branch of Coon Creek in an average year. This graph doesn’t look at all like the first graph showing the seasonal pattern of precipitation; instead, March and April are wet and July and August are dry. The huge difference between the precipitation graph and the streamflow graph shows how plant demand for water and evaporation control streamflow (and our perception of which months are wet and which are dry).
Average monthly streamflow in the East Branch of Coon Creek, a small stream in Macomb County that drains heavy clay soils. Streamflow is far higher in April (the blue bar) than in August (the brown bar). Data from USGS records.
When I visited the East Branch of Coon Creek one dry August day, the stream had stopped flowing altogether, and the “creek” had shrunken to muddy pools separated by long stretches of damp “streambed”. And everywhere there were signs of the deadly effects of the dry season. The dry streambed was littered with shells of crayfish, mussels, and snails killed in place when the water disappeared. Decaying fish floated on the surface of the smaller pools, victims of the heat or suffocation. The larger pools were ringed by the tracks of raccoons, herons, and other predators drawn to the bonanza of fish and shellfish trapped in their dwindling refuges.
If water demand by plants and evaporation exceeds rainfall in most Michigan summers, why is there any water at all in our streams in August? The answer is that a lot of water makes it past the plants and evaporation to reach deeper layers of the earth, especially in October through April (when plant demand is low). The water held in these deeper layers of the earth (called aquifers) is gradually released through the year, feeding streams even in dry periods.
The more water in the aquifer, the more water in the stream during August. Landscapes where the water soaks in slowly or not at all (clay soils or pavement) or with shallow soils on top of the bedrock typically store only a little water in aquifers, whereas landscapes with deep deposits of sand or gravel store a lot of water.
It’s easy to see the importance of aquifers by comparing summer streamflow in the East Branch of Coon Creek, which flows through clay soils, with the nearby Huron River (the graph below), which flows through deep sand and gravel, with many water-storing lakes and wetlands. There is plenty of water in the Huron River even during the hot days of August, and its fish and shellfish never face the deadly perils of a withering stream.
Average monthly streamflow in the Huron River in Livingston County, which drains sandy soils, wetlands, and lakes. Streamflow in August (the brown bar) is only a little less than in April (the blue bar). Data from USGS records.
So although Anyone knows that Michigan’s streams dry up in the summer because we don’t get much rain, the truth is that streams dry up mostly because the plants (and evaporation) hog all of the water, and because aquifers in some parts of the state are too small to keep feeding the streams. Most of these aquifers are deep deposits of sand and gravel left by the glaciers, so once again we are reminded of the long shadows that the Ice Age still casts here in Michigan.