Release iLand 2.1

Wednesday 23 of July, 2025

iLand Release 2.1: Forest Management, Deadwood, and More

We are excited to release iLand 2.1! Our last big release was 2.0, roughly one year ago. We will tryp to keep this cadence of releases, and release each summer a new version that includes all additions and changes that went into the model over a year. So expect 2.2 in summer 2026!

This post summarizes the major changes and new features introduced in iLand version 2.1 since version 2.0 (July 2024). This release focuses on three key areas: a powerful new forest management library, enhanced deadwood dynamics, and various other improvements.

New Forest Management Library (abe-lib)

(c30858ae). See abe-library for more details!

A major addition in this release is the abe-lib JavaScript library, which provides a flexible and powerful way to define and execute complex forest management activities. This library is designed to be used within the ABE (Agent-Based Extension) module and allows for the creation of sophisticated silvicultural treatment programs (STPs).

Key Features

Getting Started

To use the new library, you can include it in your ABE scripts. Here are some examples of how to use abe-lib to create STPs:

Example: Clearcut and Plant

// Define a clearcut harvest activity const ClearcutHarvest = lib.harvest.clearcut();

// Define a planting activity const ClearCutPlanting = lib.planting.general({species: 'piab'});

// Create an STP that combines the two activities lib.createSTP('Clearcut', ClearcutHarvest, ClearCutPlanting);

Example: Structured Thinning and Target DBH Harvest

// Define a selective thinning activity const StructureThinning = lib.thinning.selectiveThinning({mode: 'dynamic'});

// Define a target DBH harvest activity const StructureHarvest = lib.harvest.targetDBH({ dbhList: { "fasy": 65, "frex": 60, "piab": 45, "quro": 75, "pisy": 45, "lade": 65, "qupe": 75, "psme": 65, "abal": 45, "acps": 60, "pini": 45 } });

// Create the STP lib.createSTP('Structure', StructureThinning, StructureHarvest);

Available Modules

For more detailed examples, please refer to the abe-lib/example-use.js file.

Deadwood Dynamics

(4a7d19a5) See dead trees for more details!

This release introduces significant enhancements to the modeling of deadwood, allowing for individual tracking of dead trees in addition to the existing cohort/pool-based approach. This provides more detailed insights into the quantity, quality (decay class), dimension, and species of snags and downed stems, which is particularly useful for habitat quality assessments.

Trees enter the individual tracking system when their DBH at the time of death exceeds model.settings.soil.swdDBHSingle (cm). When such trees die, their biomass is separated into SWD pools (branches, foliage, fine- and coarse roots), while the stem biomass is tracked as a standing snag. If the cause of death is wind or management (e.g., cutting), the stem is immediately considered downed.

DeadTreeList Object

The DeadTreeList class in the ABE JavaScript API provides a powerful way to access, query, and analyze individual deadwood elements.

Example: Working with Deadwood

// Create a new DeadTreeList object var deadwood = new DeadTreeList();

// Load snags from resource unit 5 var numLoaded = deadwood.loadFromRU(5, DeadTreeList.Snags);

// Load downed woody debris (DWD) from resource unit 10 deadwood.loadFromRU(10, DeadTreeList.DWD, true);

// Get the total count of deadwood items console.log("Total deadwood count: " + deadwood.count);

// Filter for snags with a volume greater than 0.5 var remaining = deadwood.filter("snag=true and volume > 0.5");

// Calculate the mean DBH of DWD var meanDbhDWD = deadwood.mean("dbh", "snag=false");

// Calculate the total carbon in snags var totalCarbonSnags = deadwood.sum("carbon", "snag=true");

Snag Variables

GeoTIFF Support

(9afc3b57)

iLand now seamlessly integrates with GeoTIFF files for reading and writing most GIS data, which is more memory-efficient and faster than using ASCII based formats. This also enhances interoperability with other geospatial tools and workflows. iLand reads projection information from the *first* GeoTIFF it encounters and uses this information for files written. It is thus very important to have consistent projection in all GIS files loaded in a project!

Note also that data type support is limited, currently iLand can work with: INT16, INT32, FLOAT, DOUBLE.

macOS Support

(909c1658)

iLand now supports macOS, including ARM-based M1/M2 processors, alongside Windows and Linux. This expands iLand's accessibility to a wider range of users and computing environments. Support is a bit experimental - if you encounter problems please get in touch on Discord!

Other Changes

Minor Changes and Bug Fixes

Many smaller changes and bug fixes went into iLand over the last year. Please check out the GitHub repository for more details!


Permalink: https://iland-model.org/blogpost61-Release-iLand-2-1