ecosim-vegetation-code
Map observed site vegetation, species lists, land-cover descriptions, or plant management PFTs to EcoSIM vegetation codes using templates/ecosim_pftpar_20260303.nc.cdl. Use when choosing or validating
SKILL.md.agents/skills/ecosim-vegetation-code/SKILL.md
GitHubEcoSIM Vegetation Code
Overview
Use this skill to translate real site vegetation into the six-character EcoSIM vegetation/PFT code used in plant management data. The authoritative code scheme is the EcoSIM PFT parameter CDL, especially variables pfts, pfts_short, pfts_long, koppen_clim_no, koppen_clim_short, and koppen_clim_long.
Workflow
- Locate the scheme file. Prefer the user's requested CDL; otherwise use
templates/ecosim_pftpar_20260303.nc.cdlfrom the EcoSIM workspace. If the file is missing, ask for the current PFT parameter CDL. - Identify the site vegetation. Extract growth form, dominant taxa, crop identity, leaf type, life cycle, wetland status, N fixation, and whether the vegetation is C3/C4 or annual/perennial when applicable.
- Map the vegetation to
pfts_shortusingpfts_longas the meaning of each short code. Readreferences/pft_mapping_reference.mdwhen the mapping is not obvious. - Determine the Koppen numerical code. Use a provided EcoSIM grid/Koppen code if available. If the user provides a Koppen class like
Cfb, map it throughkoppen_clim_short; if they provide only coordinates or a place name, use project data first and ask before relying on external climate lookup. - Compose the candidate code as
<pfts_short><koppen_clim_no>, such asndlf34orgr3s62. - Validate the exact six-character code against
pfts. Never invent a code that is not present inpfts; if the exact candidate is missing, report the closest available codes for the selectedpfts_shortand say that adding a PFT parameter record may be required. - Return a compact table with site vegetation, selected
pfts_short,pfts_long, Koppen class/number, final EcoSIM code, and any uncertainty.
Lookup Script
Use scripts/ecosim_pft_lookup.py to validate the current CDL rather than copying tables by hand.
Examples from an EcoSIM repository root:
python3 /path/to/skill/scripts/ecosim_pft_lookup.py --cdl templates/ecosim_pftpar_20260303.nc.cdl --search spruce
python3 /path/to/skill/scripts/ecosim_pft_lookup.py --cdl templates/ecosim_pftpar_20260303.nc.cdl --short ndlf --koppen Csa
python3 /path/to/skill/scripts/ecosim_pft_lookup.py --cdl templates/ecosim_pftpar_20260303.nc.cdl --list-koppen
EcoSIM Input Note
When preparing pft_type in plant management input, remember that PlantInfoMod.F90 reads the PFT string and, when KoppenClimZone_col > 0, uses the first four characters of pft_type plus the grid's two-digit Koppen climate code. If KoppenClimZone_col == 0, the code path preserves the characters provided in pft_type. Still validate the final six-character code against pfts.
Mapping Guidance
- Use specific crop codes when the site vegetation is a crop:
maiz,rice,soyb,swhe,barl,oats,alfa,clva, orclvs. - Use tree codes by leaf type and special taxa: broadleaf general
bdlf, broadleaf wetlandbdlw, N-fixing broadleafbdln, evergreen needleleafndlf, deciduous needleleafndld, Douglas firdfir, jack pinejpin, loblolly pinelpin, black sprucebspr, aspentasp, oakwoak. - Use herbaceous codes by functional group: perennial C3 grass
gr3s, perennial C4 grassgr4s, annual C3 grassgr3a, sedgesedg, bromebrom, deer grassdgra, wild oatswoat. - Use lower plant codes directly when observed: lichen
lich, sphagnum mossmoss, feather moss variantsmosforfmos, sphagnum near sedgesmos. - For ambiguous shrub/bush descriptions, present candidates rather than forcing one code:
shru,bush, or N-fixingbusn.