Explore. Learn. Protect.
A forest lake in Ukraine is a home to many species. Clean water, healthy forests and balanced ecosystems keep nature alive and support biodiversity.
High is the default on every device. ?q=low forces Low.
Sun and moon follow the solar position at 48.5° N.
Water temperature vs depth (mixed layer + thermocline) and light left (Beer–Lambert), selected day.
Dissolved-oxygen saturation vs temperature (Benson–Krause, sea level and 312 m) and Fresnel reflectance of the surface vs incidence angle (exact and Schlick).
Food-web population through the year (illustrative individuals per hectare) with the water temperature.
NOAA fractional-year series for declination and equation of time; clock time includes the Ukrainian summer-time shift (UTC+3 from late March to late October). Independent check: Julian date, Meeus mean longitude, GMST and hour angle. At 07:24 on 16 May the sun is . The design picture shows a lower sun (≈ 6–8°), which in reality occurs at about 06:40 local time; use the time slider.
A one-layer mixed-layer slab: absorbed sunlight (clear-sky transmittance 0.76^airmass, cloud factor 1-0.75 c^3.4, Fresnel loss R_F) heats it, Newton cooling to the air cools it. Mixed-layer depth h(day) follows an illustrative seasonal curve (full mixing in winter, 2.4–4.4 m in summer). The model is spun up from 1 January (2 °C) with climatological weather, then today's weather is applied from 00:00. Constants (45, 5, air-temperature curve, +1.8 K warm-year offset) are illustrative, tuned so the default scenario gives the design value of about 18.4 °C; they are not a calibration to a real lake. Below the mixed layer the profile is a logistic thermocline.
Chlorophyll follows an illustrative spring and autumn bloom curve; rain adds turbidity. Poole–Atkins is an empirical rule, accurate to about 30 %.
Benson & Krause (1984), fresh water, mg/L at 1 atm, with the pressure and vapour-pressure correction for 312 m (about 0.96 atm). Saturation only: real oxygen also depends on photosynthesis, respiration and mixing.
The water shader uses the exact unpolarised Fresnel reflectance (n = 1.333) to blend a planar reflection of the scene with the transmitted light, which is attenuated by exp(-k d) over the real lake depth read from the height map. Schlick's approximation is shown for comparison: it overestimates reflectance by about 10 % at grazing angles.
Generalised Lotka–Volterra with a Holling type II functional response, one prey pool (aquatic invertebrates), four consumers (fish, frogs, dragonflies, ducks) with self-limitation, forced by the modelled water temperature through a Q10 = 2 growth factor and cold-season inactivity. The parameters are made up to give a bounded seasonal cycle, not fitted to data; counts are illustrative. Biodiversity is the Shannon index over six functional groups (the four consumers, aquatic insects and water plants): High above 1.0, Moderate above 0.6.
3D animals (heron, eagle, mallards, frog, dragonfly) were generated with Meshy AI and cleaned, retopologised, scaled and re-packed in Blender 5.2. Terrain, trees, rocks, cabin, pier, boat, fish and plants were modelled and texture-baked procedurally in Blender 5.2 (Cycles); rendering and physics in Three.js r160 / WebGL. Real places and species are only suggested: this is an educational sketch, not a survey. Not affiliated with any organisation.