> ## Documentation Index
> Fetch the complete documentation index at: https://pyfia.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Biomass & carbon

> Species-specific biomass with moisture content and specific-gravity adjustments, matching EVALIDator.

Biomass queries apply species-specific wood and bark properties (specific gravity, moisture content, bark volume) to convert tree measurements into dry or green weight.

## Colorado — above-ground dry biomass by species group

<Info>**EVALID:** 82101 (Colorado 2021) · **Result:** 1.096 billion tons across 10 species groups (spruce 26.4%, aspen 22.6%) · [source](https://github.com/mihiarc/pyfia/blob/main/reference/queries/biomass_carbon/colorado_biomass_by_species_group.sql)</Info>

Uses `DRYBIO_AG` with a species-specific green-to-dry conversion, grouped by `SPGRPCD`.

<Accordion title="View SQL">
  ```sql theme={null}
  SELECT
      SPGRPCD,
      species_group_name,
      SUM(ESTIMATED_VALUE * EXPNS) AS total_biomass_tons
  FROM (
      SELECT
          pop_stratum.EXPNS,
          REF_SPECIES_GROUP_TREE.SPGRPCD,
          REF_SPECIES_GROUP_TREE.NAME AS species_group_name,
          SUM(
              TREE.TPA_UNADJ *
              COALESCE(
                  (
                      (1 - (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT))) *
                      REF_SPECIES.WOOD_SPGR_GREENVOL_DRYWT /
                      (
                          (1 - (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT))) *
                          REF_SPECIES.WOOD_SPGR_GREENVOL_DRYWT +
                          (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT)) *
                          REF_SPECIES.BARK_SPGR_GREENVOL_DRYWT
                      ) *
                      (1.0 + REF_SPECIES.MC_PCT_GREEN_WOOD * 0.01) +
                      (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT)) *
                      REF_SPECIES.BARK_SPGR_GREENVOL_DRYWT /
                      (
                          (1 - (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT))) *
                          REF_SPECIES.WOOD_SPGR_GREENVOL_DRYWT +
                          (REF_SPECIES.BARK_VOL_PCT / (100 + REF_SPECIES.BARK_VOL_PCT)) *
                          REF_SPECIES.BARK_SPGR_GREENVOL_DRYWT
                      ) *
                      (1.0 + REF_SPECIES.MC_PCT_GREEN_BARK * 0.01)
                  ),
                  1.76  -- Default specific gravity when species data unavailable
              ) *
              CASE
                  WHEN TREE.DIA IS NULL THEN POP_STRATUM.ADJ_FACTOR_SUBP
                  ELSE
                      CASE LEAST(TREE.DIA, 5 - 0.001)
                          WHEN TREE.DIA THEN POP_STRATUM.ADJ_FACTOR_MICR
                          ELSE
                              CASE LEAST(TREE.DIA, COALESCE(CAST(PLOT.MACRO_BREAKPOINT_DIA AS DECIMAL), 9999) - 0.001)
                                  WHEN TREE.DIA THEN POP_STRATUM.ADJ_FACTOR_SUBP
                                  ELSE POP_STRATUM.ADJ_FACTOR_MACR
                              END
                      END
              END *
              COALESCE(TREE.DRYBIO_AG / 2000, 0)  -- pounds to tons
          ) AS ESTIMATED_VALUE
      FROM POP_STRATUM
      JOIN POP_PLOT_STRATUM_ASSGN ON (POP_PLOT_STRATUM_ASSGN.STRATUM_CN = POP_STRATUM.CN)
      JOIN PLOT ON (POP_PLOT_STRATUM_ASSGN.PLT_CN = PLOT.CN)
      JOIN COND ON (COND.PLT_CN = PLOT.CN)
      JOIN TREE ON (TREE.PLT_CN = COND.PLT_CN AND TREE.CONDID = COND.CONDID)
      JOIN REF_SPECIES ON (TREE.SPCD = REF_SPECIES.SPCD)
      LEFT OUTER JOIN REF_SPECIES_GROUP REF_SPECIES_GROUP_TREE ON (
          REF_SPECIES_GROUP_TREE.SPGRPCD = CASE
              WHEN TREE.STATECD IN (46, 38, 31, 20) AND TREE.SPCD = 122 THEN 11
              ELSE TREE.SPGRPCD
          END
      )
      WHERE
          TREE.STATUSCD = 1
          AND COND.COND_STATUS_CD = 1
          AND pop_stratum.RSCD = 22 AND pop_stratum.EVALID = 82101  -- Colorado 2021
      GROUP BY
          pop_stratum.ESTN_UNIT_CN, pop_stratum.CN, plot.CN, plot.PREV_PLT_CN,
          cond.CN, plot.LAT, plot.LON, pop_stratum.EXPNS,
          REF_SPECIES_GROUP_TREE.SPGRPCD, REF_SPECIES_GROUP_TREE.NAME
  )
  GROUP BY SPGRPCD, species_group_name
  ORDER BY total_biomass_tons DESC;
  ```
</Accordion>

## North Carolina — merchantable bole biomass

<Info>**EVALID:** 372301 (North Carolina 2023) · **Result:** 1.56 billion green short tons (live timber species ≥5" DBH), by diameter class and species · [source](https://github.com/mihiarc/pyfia/blob/main/reference/queries/biomass_carbon/north_carolina_merchantable_biomass.sql)</Info>

Sums the merchantable bole (`DRYBIO_BOLE + DRYBIO_BOLE_BARK`) on a green-weight basis, broken out by diameter class and species. See the [source file](https://github.com/mihiarc/pyfia/blob/main/reference/queries/biomass_carbon/north_carolina_merchantable_biomass.sql) for the full diameter-class formatting.

<Tip>The Python equivalent is [`biomass()`](/api/pyfia-estimation-estimators-biomass), which returns biomass and carbon columns and applies the carbon fraction for you.</Tip>
